From 8f2301aba41bf1ccaf661e8eb4929b077d6517f3 Mon Sep 17 00:00:00 2001 From: liamfallon Date: Mon, 17 Aug 2020 13:49:06 +0100 Subject: [PATCH] Remove apex policy editor gui The apex policy editor has been moved to policy-gui. This review removes the code from the apex-pdp repo. Issue-ID: POLICY-2621 Change-Id: Ib5b90386d0da8af6eec8870fbcaf01b94975d5c6 Signed-off-by: liamfallon --- client/client-editor/pom.xml | 170 - .../client-editor/src/main/assembly/resources.xml | 32 - .../policy/apex/client/editor/rest/ApexEditor.java | 81 - .../client/editor/rest/ApexEditorException.java | 73 - .../apex/client/editor/rest/ApexEditorMain.java | 211 - .../editor/rest/ApexEditorParameterException.java | 49 - .../editor/rest/ApexEditorParameterParser.java | 129 - .../client/editor/rest/ApexEditorParameters.java | 229 - .../rest/handling/ApexEditorRestResource.java | 815 - .../editor/rest/handling/ContextAlbumHandler.java | 211 - .../editor/rest/handling/ContextSchemaHandler.java | 198 - .../client/editor/rest/handling/EventHandler.java | 265 - .../editor/rest/handling/KeyInfoHandler.java | 71 - .../client/editor/rest/handling/ModelHandler.java | 453 - .../client/editor/rest/handling/PolicyHandler.java | 580 - .../client/editor/rest/handling/RestCommand.java | 64 - .../editor/rest/handling/RestCommandHandler.java | 101 - .../editor/rest/handling/RestCommandType.java | 56 - .../client/editor/rest/handling/RestSession.java | 124 - .../editor/rest/handling/RestSessionHandler.java | 109 - .../client/editor/rest/handling/RestUtils.java | 181 - .../client/editor/rest/handling/TaskHandler.java | 462 - .../client/editor/rest/handling/bean/BeanBase.java | 81 - .../rest/handling/bean/BeanContextAlbum.java | 109 - .../rest/handling/bean/BeanContextSchema.java | 99 - .../editor/rest/handling/bean/BeanEvent.java | 135 - .../editor/rest/handling/bean/BeanField.java | 61 - .../editor/rest/handling/bean/BeanKeyRef.java | 59 - .../editor/rest/handling/bean/BeanLogic.java | 58 - .../editor/rest/handling/bean/BeanModel.java | 80 - .../editor/rest/handling/bean/BeanPolicy.java | 111 - .../editor/rest/handling/bean/BeanState.java | 133 - .../editor/rest/handling/bean/BeanStateOutput.java | 60 - .../rest/handling/bean/BeanStateTaskRef.java | 69 - .../client/editor/rest/handling/bean/BeanTask.java | 132 - .../rest/handling/bean/BeanTaskParameter.java | 60 - .../editor/rest/handling/bean/package-info.java | 27 - .../apex/client/editor/rest/package-info.java | 29 - .../resources/templates/PeriodicEventTemplate.json | 11 - .../src/main/resources/webapp/WEB-INF/web.xml | 42 - .../src/main/resources/webapp/close.html | 44 - .../src/main/resources/webapp/css/close.css | 47 - .../src/main/resources/webapp/css/contextMenu.css | 110 - .../src/main/resources/webapp/css/dropdownList.css | 133 - .../src/main/resources/webapp/css/fileMenu.css | 194 - .../main/resources/webapp/css/interfaceAssets.css | 2807 --- .../main/resources/webapp/css/showhideTextarea.css | 133 - .../src/main/resources/webapp/css/styles.css | 555 - .../src/main/resources/webapp/images/Apex.png | Bin 161205 -> 0 bytes .../src/main/resources/webapp/images/logo_onap.png | Bin 21360 -> 0 bytes .../src/main/resources/webapp/index.html | 239 - .../src/main/resources/webapp/js/ApexAjax.js | 123 - .../webapp/js/ApexContextAlbumEditForm.js | 475 - .../resources/webapp/js/ApexContextAlbumTab.js | 115 - .../webapp/js/ApexContextSchemaEditForm.js | 369 - .../resources/webapp/js/ApexContextSchemaTab.js | 104 - .../main/resources/webapp/js/ApexEventEditForm.js | 566 - .../src/main/resources/webapp/js/ApexEventTab.js | 138 - .../src/main/resources/webapp/js/ApexFiles.js | 50 - .../src/main/resources/webapp/js/ApexFormUtils.js | 47 - .../resources/webapp/js/ApexKeyInformationTab.js | 104 - .../src/main/resources/webapp/js/ApexMain.js | 169 - .../main/resources/webapp/js/ApexModelHandling.js | 39 - .../main/resources/webapp/js/ApexNewModelForm.js | 226 - .../main/resources/webapp/js/ApexPageControl.js | 253 - .../main/resources/webapp/js/ApexPolicyEditForm.js | 802 - .../webapp/js/ApexPolicyEditForm_State.js | 1128 -- .../src/main/resources/webapp/js/ApexPolicyTab.js | 210 - .../src/main/resources/webapp/js/ApexResultForm.js | 88 - .../src/main/resources/webapp/js/ApexTable.js | 36 - .../main/resources/webapp/js/ApexTaskEditForm.js | 1003 - .../src/main/resources/webapp/js/ApexTaskTab.js | 175 - .../src/main/resources/webapp/js/ApexUtils.js | 126 - .../src/main/resources/webapp/js/contextMenu.js | 198 - .../src/main/resources/webapp/js/dropdownList.js | 200 - .../webapp/js/edit_area/edit_area_full.js | 1235 -- .../webapp/js/edit_area/images/autocompletion.gif | Bin 359 -> 0 bytes .../resources/webapp/js/edit_area/images/close.gif | Bin 102 -> 0 bytes .../webapp/js/edit_area/images/fullscreen.gif | Bin 198 -> 0 bytes .../webapp/js/edit_area/images/go_to_line.gif | Bin 1053 -> 0 bytes .../resources/webapp/js/edit_area/images/help.gif | Bin 295 -> 0 bytes .../webapp/js/edit_area/images/highlight.gif | Bin 256 -> 0 bytes .../resources/webapp/js/edit_area/images/load.gif | Bin 1041 -> 0 bytes .../resources/webapp/js/edit_area/images/move.gif | Bin 257 -> 0 bytes .../webapp/js/edit_area/images/newdocument.gif | Bin 170 -> 0 bytes .../webapp/js/edit_area/images/opacity.png | Bin 147 -> 0 bytes .../webapp/js/edit_area/images/processing.gif | Bin 825 -> 0 bytes .../resources/webapp/js/edit_area/images/redo.gif | Bin 169 -> 0 bytes .../webapp/js/edit_area/images/reset_highlight.gif | Bin 168 -> 0 bytes .../resources/webapp/js/edit_area/images/save.gif | Bin 285 -> 0 bytes .../webapp/js/edit_area/images/search.gif | Bin 191 -> 0 bytes .../js/edit_area/images/smooth_selection.gif | Bin 174 -> 0 bytes .../webapp/js/edit_area/images/spacer.gif | Bin 43 -> 0 bytes .../js/edit_area/images/statusbar_resize.gif | Bin 79 -> 0 bytes .../resources/webapp/js/edit_area/images/undo.gif | Bin 175 -> 0 bytes .../webapp/js/edit_area/images/word_wrap.gif | Bin 951 -> 0 bytes .../main/resources/webapp/js/edit_area/langs/bg.js | 54 - .../main/resources/webapp/js/edit_area/langs/cs.js | 48 - .../main/resources/webapp/js/edit_area/langs/de.js | 48 - .../main/resources/webapp/js/edit_area/langs/dk.js | 48 - .../main/resources/webapp/js/edit_area/langs/en.js | 48 - .../main/resources/webapp/js/edit_area/langs/eo.js | 48 - .../main/resources/webapp/js/edit_area/langs/es.js | 48 - .../main/resources/webapp/js/edit_area/langs/fi.js | 48 - .../main/resources/webapp/js/edit_area/langs/fr.js | 48 - .../main/resources/webapp/js/edit_area/langs/hr.js | 48 - .../main/resources/webapp/js/edit_area/langs/it.js | 48 - .../main/resources/webapp/js/edit_area/langs/ja.js | 48 - .../main/resources/webapp/js/edit_area/langs/mk.js | 48 - .../main/resources/webapp/js/edit_area/langs/nl.js | 48 - .../main/resources/webapp/js/edit_area/langs/pl.js | 48 - .../main/resources/webapp/js/edit_area/langs/pt.js | 48 - .../main/resources/webapp/js/edit_area/langs/ru.js | 48 - .../main/resources/webapp/js/edit_area/langs/sk.js | 48 - .../main/resources/webapp/js/edit_area/langs/zh.js | 48 - .../webapp/js/edit_area/license_apache.txt | 7 - .../webapp/js/edit_area/reg_syntax/basic.js | 70 - .../webapp/js/edit_area/reg_syntax/brainfuck.js | 45 - .../resources/webapp/js/edit_area/reg_syntax/c.js | 63 - .../webapp/js/edit_area/reg_syntax/coldfusion.js | 120 - .../webapp/js/edit_area/reg_syntax/cpp.js | 66 - .../webapp/js/edit_area/reg_syntax/css.js | 85 - .../webapp/js/edit_area/reg_syntax/html.js | 51 - .../webapp/js/edit_area/reg_syntax/java.js | 57 - .../resources/webapp/js/edit_area/reg_syntax/js.js | 94 - .../webapp/js/edit_area/reg_syntax/pas.js | 83 - .../webapp/js/edit_area/reg_syntax/perl.js | 88 - .../webapp/js/edit_area/reg_syntax/php.js | 157 - .../webapp/js/edit_area/reg_syntax/python.js | 145 - .../webapp/js/edit_area/reg_syntax/robotstxt.js | 25 - .../webapp/js/edit_area/reg_syntax/ruby.js | 68 - .../webapp/js/edit_area/reg_syntax/sql.js | 56 - .../webapp/js/edit_area/reg_syntax/tsql.js | 88 - .../resources/webapp/js/edit_area/reg_syntax/vb.js | 53 - .../webapp/js/edit_area/reg_syntax/xml.js | 57 - .../src/main/resources/webapp/js/fileMenu.js | 145 - .../webapp/js/jquery-ui-1.12.1/AUTHORS.txt | 337 - .../webapp/js/jquery-ui-1.12.1/LICENSE.txt | 43 - .../js/jquery-ui-1.12.1/external/jquery/jquery.js | 2 - .../images/ui-icons_444444_256x240.png | Bin 7006 -> 0 bytes .../images/ui-icons_555555_256x240.png | Bin 7074 -> 0 bytes .../images/ui-icons_777620_256x240.png | Bin 4676 -> 0 bytes .../images/ui-icons_777777_256x240.png | Bin 7013 -> 0 bytes .../images/ui-icons_cc0000_256x240.png | Bin 4632 -> 0 bytes .../images/ui-icons_ffffff_256x240.png | Bin 6313 -> 0 bytes .../webapp/js/jquery-ui-1.12.1/index.html | 565 - .../webapp/js/jquery-ui-1.12.1/jquery-ui.css | 1312 -- .../webapp/js/jquery-ui-1.12.1/jquery-ui.js | 18706 ------------------- .../webapp/js/jquery-ui-1.12.1/jquery-ui.min.css | 7 - .../webapp/js/jquery-ui-1.12.1/jquery-ui.min.js | 13 - .../js/jquery-ui-1.12.1/jquery-ui.structure.css | 886 - .../jquery-ui-1.12.1/jquery-ui.structure.min.css | 5 - .../webapp/js/jquery-ui-1.12.1/jquery-ui.theme.css | 443 - .../js/jquery-ui-1.12.1/jquery-ui.theme.min.css | 5 - .../webapp/js/jquery-ui-1.12.1/package.json | 74 - .../main/resources/webapp/js/showhideElement.js | 60 - .../main/resources/webapp/js/showhideTextarea.js | 125 - .../10px/ArrowDoubleLeftSmall_black_10px.svg | 16 - .../10px/ArrowDoubleRightSmall_black_10px.svg | 16 - .../resources/10px/ArrowDownSmall_black_10px.svg | 14 - .../resources/10px/ArrowLeftSmall_black_10px.svg | 14 - .../resources/10px/ArrowRightSmall_black_10px.svg | 14 - .../resources/10px/ArrowUpSmall_black_10px.svg | 14 - .../16px/ArrowDoubleLeftSmall_black_16px.svg | 20 - .../16px/ArrowDoubleRightSmall_black_16px.svg | 20 - .../resources/16px/ArrowDownSmall_black_16px.svg | 17 - .../resources/16px/ArrowDownSmall_blue_16px.svg | 14 - .../resources/16px/ArrowDownSmall_white_16px.svg | 14 - .../webapp/resources/16px/ArrowDown_black_16px.svg | 18 - .../webapp/resources/16px/ArrowDown_blue_16px.svg | 14 - .../webapp/resources/16px/ArrowDown_white_16px.svg | 16 - .../resources/16px/ArrowLeftSmall_black_16px.svg | 17 - .../resources/16px/ArrowLeftSmall_white_16px.svg | 14 - .../webapp/resources/16px/ArrowLeft_black_16px.svg | 18 - .../webapp/resources/16px/ArrowLeft_white_16px.svg | 15 - .../resources/16px/ArrowRightSmall_black_16px.svg | 17 - .../resources/16px/ArrowRightSmall_white_16px.svg | 14 - .../resources/16px/ArrowRight_black_16px.svg | 18 - .../resources/16px/ArrowRight_white_16px.svg | 16 - .../resources/16px/ArrowUpSmall_black_16px.svg | 17 - .../webapp/resources/16px/ArrowUp_black_16px.svg | 17 - .../webapp/resources/16px/ArrowUp_white_16px.svg | 16 - .../resources/16px/BSCFunction_Yellow_16px.svg | 22 - .../resources/16px/BSCFunction_black_16px.svg | 22 - .../webapp/resources/16px/BSC_Yellow_16px.svg | 21 - .../webapp/resources/16px/BSC_black_16px.svg | 19 - .../webapp/resources/16px/Cancelled_Black_16px.svg | 7 - .../16px/CommandLineInterface_black_16px.svg | 14 - .../16px/CommandLineInterface_white_16px.svg | 14 - .../webapp/resources/16px/Comment_black_16px.svg | 13 - .../webapp/resources/16px/Link_black_16px.svg | 1 - .../webapp/resources/16px/RBS_black_16px.svg | 32 - .../webapp/resources/16px/RBS_white_16px.svg | 36 - .../webapp/resources/16px/SyncError_16px.svg | 22 - .../resources/webapp/resources/16px/Syncd_16px.svg | 24 - .../resources/16px/Syncing_Animated_16px.svg | 69 - .../webapp/resources/16px/Syncing_Static_16px.svg | 20 - .../resources/16px/WindowMaximize_black_16px.svg | 16 - .../resources/16px/WindowMinimize_black_16px.svg | 16 - .../webapp/resources/16px/X_black_16px.svg | 18 - .../webapp/resources/16px/X_blue_16px.svg | 9 - .../webapp/resources/16px/X_green_16px.svg | 18 - .../webapp/resources/16px/X_orange_16px.svg | 18 - .../webapp/resources/16px/X_paleBlue_16px.svg | 18 - .../resources/webapp/resources/16px/X_red_16px.svg | 18 - .../webapp/resources/16px/X_yellow_16px.svg | 18 - .../resources/16px/accessSettings_black_16px.svg | 31 - .../resources/16px/accessSettings_white_16px.svg | 26 - .../webapp/resources/16px/access_black_16px.svg | 12 - .../webapp/resources/16px/access_white_16px.svg | 15 - .../webapp/resources/16px/acknowledgeAlarm.svg | 13 - .../resources/16px/acknowledgeAlarm_white.svg | 1 - .../webapp/resources/16px/activate_black_16px.svg | 36 - .../webapp/resources/16px/activate_white.svg | 1 - .../webapp/resources/16px/activity_16px_black.svg | 20 - .../webapp/resources/16px/addToFolder_black.svg | 16 - .../webapp/resources/16px/addToFolder_white.svg | 1 - .../webapp/resources/16px/add_black_16px.svg | 55 - .../webapp/resources/16px/add_white_16px.svg | 11 - .../resources/16px/advanced_search_black_16px.svg | 15 - .../resources/16px/advanced_search_white_16px.svg | 20 - .../webapp/resources/16px/alarmCleared_16px.svg | 15 - .../resources/16px/alarmCleared_white_16px.svg | 12 - .../webapp/resources/16px/alarmCritical_16px.svg | 17 - .../resources/16px/alarmCritical_white_16px.svg | 14 - .../webapp/resources/16px/alarmHeartbeat_16px.svg | 16 - .../resources/16px/alarmIndeterminate_16px.svg | 16 - .../16px/alarmIndeterminate_white_16px.svg | 14 - .../webapp/resources/16px/alarmMajor_16px.svg | 17 - .../resources/16px/alarmMajor_white_16px.svg | 13 - .../webapp/resources/16px/alarmMinor_16px.svg | 17 - .../resources/16px/alarmMinor_white_16px.svg | 13 - .../resources/16px/alarmOtherGrouping_16px.svg | 25 - .../webapp/resources/16px/alarmUnacknowledged.svg | 18 - .../resources/16px/alarmUnacknowledged_white.svg | 1 - .../resources/16px/alarmUnspecified_16px.svg | 13 - .../webapp/resources/16px/alarmWarning_16px.svg | 11 - .../resources/16px/alarmWarning_white_16px.svg | 14 - .../resources/16px/alignCenter_black_16px.svg | 19 - .../webapp/resources/16px/alignCenter_white.svg | 1 - .../webapp/resources/16px/alignLeft_black_16px.svg | 19 - .../webapp/resources/16px/alignLeft_white.svg | 1 - .../resources/16px/alignRight_black_16px.svg | 19 - .../webapp/resources/16px/alignRight_white.svg | 1 - .../resources/16px/arrowUpSmall_white_16px.svg | 14 - .../webapp/resources/16px/attach_black_16px.svg | 11 - .../webapp/resources/16px/attach_white.svg | 1 - .../webapp/resources/16px/baseStation.svg | 35 - .../webapp/resources/16px/cabinet_black_16px.svg | 18 - .../webapp/resources/16px/calendar_black_16px.svg | 13 - .../webapp/resources/16px/calendar_white_16px.svg | 16 - .../webapp/resources/16px/cellAdjacent_16px.svg | 20 - .../webapp/resources/16px/cellExternal_16px.svg | 20 - .../webapp/resources/16px/cell_gray_16px.svg | 15 - .../webapp/resources/16px/cell_green_16px.svg | 15 - .../webapp/resources/16px/cell_red_16px.svg | 15 - .../webapp/resources/16px/charging_black.svg | 25 - .../webapp/resources/16px/charging_white.svg | 1 - .../resources/16px/circleArrowDown_black_16px.svg | 19 - .../resources/16px/circleArrowDown_white_16px.svg | 17 - .../resources/16px/circleArrowLeft_black_16px.svg | 19 - .../resources/16px/circleArrowLeft_white_16px.svg | 17 - .../resources/16px/circleArrowRight_black_16px.svg | 19 - .../resources/16px/circleArrowRight_white_16px.svg | 17 - .../resources/16px/circleArrowUp_black_16px.svg | 19 - .../resources/16px/circleArrowUp_white_16px.svg | 17 - .../resources/16px/circleCaretDown_black_16px.svg | 18 - .../resources/16px/circleCaretDown_white_16px.svg | 15 - .../resources/16px/circleCaretLeft_black_16px.svg | 18 - .../resources/16px/circleCaretLeft_white_16px.svg | 15 - .../resources/16px/circleCaretRight_black_16px.svg | 18 - .../resources/16px/circleCaretRight_white_16px.svg | 15 - .../resources/16px/circleCaretUp_black_16px.svg | 18 - .../resources/16px/circleCaretUp_white_16px.svg | 15 - .../resources/webapp/resources/16px/clearAlarm.svg | 34 - .../webapp/resources/16px/clearAlarm_white.svg | 1 - .../webapp/resources/16px/clock_black_16px.svg | 14 - .../webapp/resources/16px/clock_white_16px.svg | 14 - .../webapp/resources/16px/close_white_16px.svg | 15 - .../webapp/resources/16px/comment_white.svg | 1 - .../webapp/resources/16px/connected_black_16px.svg | 20 - .../resources/16px/connectionError_black_16px.svg | 31 - .../webapp/resources/16px/controllingNode.svg | 17 - .../webapp/resources/16px/copy_black_16px.svg | 22 - .../webapp/resources/16px/copy_white_16px.svg | 18 - .../resources/16px/coreSubscriber_black_16px.svg | 29 - .../webapp/resources/16px/core_black_16px.svg | 19 - .../resources/webapp/resources/16px/cut_black.svg | 35 - .../resources/webapp/resources/16px/cut_white.svg | 22 - .../webapp/resources/16px/database_black_16px.svg | 22 - .../resources/16px/deactivate_black_16px.svg | 34 - .../webapp/resources/16px/deactivate_white.svg | 1 - .../webapp/resources/16px/delete_black_16px.svg | 23 - .../webapp/resources/16px/delete_white_16px.svg | 20 - .../webapp/resources/16px/deprecated_16px.svg | 17 - .../webapp/resources/16px/detach_black_16px.svg | 12 - .../webapp/resources/16px/detach_white.svg | 1 - .../webapp/resources/16px/dialogInfo_blue.svg | 18 - .../webapp/resources/16px/dialogInfo_white.svg | 1 - .../resources/16px/disconnected_black_16px.svg | 26 - .../webapp/resources/16px/document_white_16px.svg | 17 - .../webapp/resources/16px/download_black.svg | 18 - .../webapp/resources/16px/download_white.svg | 10 - .../webapp/resources/16px/download_white_16px.svg | 16 - .../main/resources/webapp/resources/16px/draft.svg | 11 - .../webapp/resources/16px/duplicate_black_16px.svg | 19 - .../webapp/resources/16px/duplicate_white_16px.svg | 16 - .../webapp/resources/16px/edit_black_16px.svg | 22 - .../webapp/resources/16px/edit_white_16px.svg | 20 - .../webapp/resources/16px/error_red_16px.svg | 19 - .../webapp/resources/16px/expand_black_16px.svg | 18 - .../webapp/resources/16px/export_black_16px.svg | 19 - .../webapp/resources/16px/export_white.svg | 1 - .../resources/16px/externalApp_black_16px.svg | 15 - .../resources/16px/externalApp_white_16px.svg | 16 - .../webapp/resources/16px/eyeLine_black_16px.svg | 17 - .../webapp/resources/16px/eyeLine_white.svg | 1 - .../webapp/resources/16px/eye_black_16px.svg | 13 - .../webapp/resources/16px/eye_white_16px.svg | 13 - .../resources/16px/fastForward_black_16px.svg | 20 - .../resources/16px/fastRewind_black_16px.svg | 19 - .../webapp/resources/16px/filter_black_16px.svg | 19 - .../webapp/resources/16px/filter_white_16px.svg | 13 - .../webapp/resources/16px/filters_off.svg | 1 - .../resources/webapp/resources/16px/filters_on.svg | 1 - .../webapp/resources/16px/folderClosed_black.svg | 10 - .../webapp/resources/16px/folderClosed_white.svg | 17 - .../webapp/resources/16px/folder_black_16px.svg | 20 - .../webapp/resources/16px/folder_white_16px.svg | 16 - .../16px/ftpServerFunction_black_16px.svg | 31 - .../webapp/resources/16px/ftpServer_black_16px.svg | 18 - .../16px/fullscreenMinimise_black_16px.svg | 22 - .../resources/16px/fullscreen_black_16px.svg | 22 - .../resources/16px/gatewayFunction_black_16px.svg | 35 - .../resources/16px/grabHandle_black_16px.svg | 14 - .../webapp/resources/16px/grabHandle_white.svg | 13 - .../webapp/resources/16px/grid3X3_black_16px.svg | 38 - .../webapp/resources/16px/grid3x3_white.svg | 1 - .../webapp/resources/16px/grid4X4_black_16px.svg | 26 - .../webapp/resources/16px/grid4x4_white.svg | 1 - .../webapp/resources/16px/gridView_black_16px.svg | 26 - .../webapp/resources/16px/gridView_white.svg | 1 - .../webapp/resources/16px/help_black_16px.svg | 20 - .../resources/webapp/resources/16px/help_white.svg | 1 - .../webapp/resources/16px/import_black.svg | 19 - .../webapp/resources/16px/import_export.svg | 1 - .../webapp/resources/16px/import_white.svg | 1 - .../resources/16px/infoMsgIndicator_16px.svg | 167 - .../resources/webapp/resources/16px/info_black.svg | 27 - .../resources/webapp/resources/16px/info_white.svg | 1 - .../webapp/resources/16px/invalid_icon.svg | 16 - .../webapp/resources/16px/jumpTo_black_16px.svg | 17 - .../webapp/resources/16px/lock_black_16px.svg | 17 - .../webapp/resources/16px/lock_white_16px.svg | 14 - .../main/resources/webapp/resources/16px/login.svg | 1 - .../webapp/resources/16px/logout_black_16px.svg | 22 - .../webapp/resources/16px/mailRead_black_16px.svg | 22 - .../webapp/resources/16px/mailRead_white_16px.svg | 19 - .../webapp/resources/16px/mail_black_16px.svg | 22 - .../webapp/resources/16px/mail_white_16px.svg | 18 - .../resources/16px/managedFunction_black_16px.svg | 28 - .../resources/16px/managedGroup_black_16px.svg | 31 - .../resources/16px/managementNode_black_16px.svg | 34 - .../webapp/resources/16px/menu_black_16px.svg | 20 - .../webapp/resources/16px/menu_white_16px.svg | 20 - .../resources/webapp/resources/16px/microwave.svg | 28 - .../16px/minimiseFullscreen_black_16px.svg | 19 - .../webapp/resources/16px/minus_black_16px.svg | 15 - .../main/resources/webapp/resources/16px/mo.svg | 18 - .../main/resources/webapp/resources/16px/move.svg | 1 - .../resources/webapp/resources/16px/multi-sort.svg | 1 - .../webapp/resources/16px/multi-sort_white.svg | 1 - .../resources/16px/multiSelect_black_16px.svg | 24 - .../webapp/resources/16px/multiSelect_white.svg | 1 - .../resources/16px/networkElement_black_16px.svg | 19 - .../resources/16px/networkElement_white_16px.svg | 19 - .../webapp/resources/16px/network_black_16px.svg | 26 - .../webapp/resources/16px/newFile_black_16px.svg | 16 - .../webapp/resources/16px/newFile_white_16px.svg | 14 - .../webapp/resources/16px/newStatus_blue_16px.svg | 19 - .../webapp/resources/16px/newStatus_green_16px.svg | 19 - .../webapp/resources/16px/note_black_16px.svg | 17 - .../webapp/resources/16px/note_white_16px.svg | 1 - .../webapp/resources/16px/obsolete_16px.svg | 16 - .../webapp/resources/16px/pause_black_16px.svg | 12 - .../webapp/resources/16px/play_black_16px.svg | 9 - .../webapp/resources/16px/plus_black_16px.svg | 16 - .../webapp/resources/16px/print_black_16px.svg | 18 - .../webapp/resources/16px/print_white_16px.svg | 15 - .../webapp/resources/16px/refresh_black_16px.svg | 22 - .../webapp/resources/16px/refresh_white_16px.svg | 19 - .../resources/webapp/resources/16px/remove.svg | 1 - .../webapp/resources/16px/resume_black_16px.svg | 76 - .../webapp/resources/16px/routeSwitch.svg | 23 - .../resources/16px/rowCollapsed_black_16px.svg | 19 - .../resources/16px/rowExpanded_black_16px.svg | 18 - .../webapp/resources/16px/rowView_black_16px.svg | 29 - .../webapp/resources/16px/rowView_white.svg | 1 - .../webapp/resources/16px/rxi_black_16px.svg | 26 - .../webapp/resources/16px/save_black_16px.svg | 21 - .../resources/webapp/resources/16px/save_white.svg | 1 - .../webapp/resources/16px/search_black_16px.svg | 20 - .../webapp/resources/16px/search_white_16px.svg | 17 - .../webapp/resources/16px/security_black_16px.svg | 26 - .../webapp/resources/16px/security_white_16px.svg | 19 - .../webapp/resources/16px/settings_black_16px.svg | 20 - .../webapp/resources/16px/settings_white_16px.svg | 22 - .../webapp/resources/16px/share_black_16px.svg | 19 - .../webapp/resources/16px/share_white.svg | 1 - .../webapp/resources/16px/simple_green_tick.svg | 13 - .../webapp/resources/16px/simple_tick.svg | 13 - .../resources/16px/siteManager_black_16px.svg | 29 - .../webapp/resources/16px/site_black_16px.svg | 23 - .../main/resources/webapp/resources/16px/sort.svg | 1 - .../resources/webapp/resources/16px/sort_white.svg | 1 - .../webapp/resources/16px/star_black_16px.svg | 14 - .../resources/16px/star_outline_black_16px.svg | 9 - .../resources/16px/star_outline_white_16px.svg | 9 - .../resources/16px/star_outline_yellow_16px.svg | 9 - .../webapp/resources/16px/star_white_16px.svg | 14 - .../webapp/resources/16px/star_yellow_16px.svg | 11 - .../webapp/resources/16px/stop_black_16px.svg | 9 - .../resources/webapp/resources/16px/subnetwork.svg | 24 - .../webapp/resources/16px/suspend_black_16px.svg | 150 - .../resources/webapp/resources/16px/switch.svg | 26 - .../resources/16px/switchBetween_black_16px.svg | 1 - .../resources/16px/switchBetween_white_16px.svg | 166 - .../resources/16px/switchFunction_black_16px.svg | 33 - .../webapp/resources/16px/tableView_black_16px.svg | 1 - .../webapp/resources/16px/tableView_white_16px.svg | 1 - .../resources/16px/technicianPresent_16px.svg | 20 - .../webapp/resources/16px/terminal_black_16px.svg | 11 - .../resources/webapp/resources/16px/tick_16px.svg | 18 - .../webapp/resources/16px/tick_green_16px.svg | 18 - .../webapp/resources/16px/tip_black_16px.svg | 47 - .../webapp/resources/16px/tip_white_16px.svg | 37 - .../webapp/resources/16px/topology_black_16px.svg | 19 - .../webapp/resources/16px/undo_black_16px.svg | 14 - .../webapp/resources/16px/undo_white_16px.svg | 15 - .../webapp/resources/16px/unlock_black_16px.svg | 17 - .../webapp/resources/16px/unlock_white_16px.svg | 14 - .../webapp/resources/16px/upload_black_16px.svg | 16 - .../webapp/resources/16px/user_black_16px.svg | 21 - .../webapp/resources/16px/user_white_16px.svg | 21 - .../resources/webapp/resources/16px/valid_icon.svg | 16 - .../resources/16px/warningShield_black_16px.svg | 19 - .../webapp/resources/16px/warningShield_white.svg | 1 - .../webapp/resources/16px/warning_orange_16px.svg | 21 - .../webapp/resources/16px/warning_white.svg | 16 - .../webapp/resources/16px/warning_yellow_16px.svg | 17 - .../webapp/resources/28px/error_red_28px.svg | 18 - .../resources/28px/information_blue_28px.svg | 19 - .../webapp/resources/28px/tick_green_28px.svg | 17 - .../webapp/resources/28px/warning_yellow_28px.svg | 23 - .../resources/contextMenu/menu_black_16px.svg | 18 - .../webapp/resources/controls/close_exit_icon.svg | 16 - .../webapp/resources/controls/collapse_icon.svg | 12 - .../webapp/resources/controls/down_arrow.svg | 12 - .../webapp/resources/controls/down_arrow_hit.svg | 12 - .../webapp/resources/controls/expand_icon.svg | 12 - .../webapp/resources/controls/info-black-16x16.svg | 18 - .../webapp/resources/controls/left_arrow.svg | 13 - .../webapp/resources/controls/left_arrow_.svg | 12 - .../webapp/resources/controls/left_arrow_hit.svg | 12 - .../webapp/resources/controls/magnify_black.svg | 14 - .../webapp/resources/controls/next_arrows_hit.svg | 14 - .../resources/controls/previous_arrows_hit.svg | 14 - .../webapp/resources/controls/right_arrow.svg | 13 - .../webapp/resources/controls/right_arrow_.svg | 12 - .../webapp/resources/controls/right_arrow_hit.svg | 12 - .../webapp/resources/controls/save_black.svg | 13 - .../webapp/resources/controls/up_arrow.svg | 12 - .../webapp/resources/controls/up_arrow_hit.svg | 12 - .../webapp/resources/dialogs/confirmation_icon.svg | 17 - .../webapp/resources/dialogs/error_icon.svg | 18 - .../webapp/resources/dialogs/information_icon.svg | 17 - .../webapp/resources/dialogs/warning_icon.svg | 19 - .../webapp/resources/drilldownPath/arrow.svg | 8 - .../webapp/resources/form/checkbox_tick.svg | 13 - .../webapp/resources/form/checkbox_tick_black.svg | 13 - .../webapp/resources/form/checkbox_tick_green.svg | 13 - .../webapp/resources/form/checkbox_triple.svg | 12 - .../resources/form/checkbox_triple_black.svg | 12 - .../resources/form/checkbox_triple_green.svg | 12 - .../webapp/resources/form/invalid_icon.svg | 16 - .../webapp/resources/form/radio_tick_black.svg | 16 - .../webapp/resources/form/radio_tick_green.svg | 16 - .../resources/webapp/resources/form/valid_icon.svg | 16 - .../other/ArrowDoubleLeft_black_10x8px.svg | 16 - .../other/ArrowDoubleRight_black_10x8px.svg | 16 - .../resources/other/ArrowDown_black_8x5px.svg | 14 - .../resources/other/ArrowLeft_black_5x8px.svg | 14 - .../resources/other/ArrowRight_black_5x8px.svg | 14 - .../webapp/resources/other/ArrowUp_black_8x5px.svg | 14 - .../webapp/resources/other/errorSmall_red_10px.svg | 15 - .../webapp/resources/other/tick_black_10x8px.svg | 15 - .../webapp/resources/other/tick_green_10x8px.svg | 15 - .../webapp/resources/pagination/pagination_end.svg | 8 - .../resources/pagination/pagination_next.svg | 13 - .../resources/pagination/pagination_previous.svg | 14 - .../resources/pagination/pagination_start.svg | 8 - .../webapp/resources/systemBar/help_black.svg | 19 - .../webapp/resources/systemBar/logout_black.svg | 15 - .../webapp/resources/whitelabel/button.png | Bin 44599 -> 0 bytes .../resources/whitelabel/pagecustomization.PNG | Bin 49551 -> 0 bytes .../webapp/resources/whitelabel/systembar.png | Bin 38262 -> 0 bytes .../webapp/resources/whitelabel/table.png | Bin 59715 -> 0 bytes .../webapp/resources/whitelabel/typography.png | Bin 38452 -> 0 bytes .../client/editor/rest/ApexEditorStartupTest.java | 402 - .../apex/client/editor/rest/ExceptionsTest.java | 41 - .../apex/client/editor/rest/RestInterfaceTest.java | 202 - .../rest/handling/ApexEditorRestResourceTest.java | 1374 -- .../editor/rest/handling/bean/BeansTest.java | 69 - .../editor/rest/handling/bean/DummyBeanBase.java | 49 - .../src/test/resources/models/PolicyModel.json | 708 - client/client-full/pom.xml | 5 - .../src/main/resources/webapp/index.html | 8 - client/pom.xml | 1 - 518 files changed, 52310 deletions(-) delete mode 100644 client/client-editor/pom.xml delete mode 100644 client/client-editor/src/main/assembly/resources.xml delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditor.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorException.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorMain.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorParameterException.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorParameterParser.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorParameters.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ApexEditorRestResource.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ContextAlbumHandler.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ContextSchemaHandler.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/EventHandler.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/KeyInfoHandler.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ModelHandler.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/PolicyHandler.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestCommand.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestCommandHandler.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestCommandType.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestSession.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestSessionHandler.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestUtils.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/TaskHandler.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanBase.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanContextAlbum.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanContextSchema.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanEvent.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanField.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanKeyRef.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanLogic.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanModel.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanPolicy.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanState.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanStateOutput.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanStateTaskRef.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanTask.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanTaskParameter.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/package-info.java delete mode 100644 client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/package-info.java delete mode 100644 client/client-editor/src/main/resources/templates/PeriodicEventTemplate.json delete mode 100644 client/client-editor/src/main/resources/webapp/WEB-INF/web.xml delete mode 100644 client/client-editor/src/main/resources/webapp/close.html delete mode 100644 client/client-editor/src/main/resources/webapp/css/close.css delete mode 100644 client/client-editor/src/main/resources/webapp/css/contextMenu.css delete mode 100644 client/client-editor/src/main/resources/webapp/css/dropdownList.css delete mode 100644 client/client-editor/src/main/resources/webapp/css/fileMenu.css delete mode 100644 client/client-editor/src/main/resources/webapp/css/interfaceAssets.css delete mode 100644 client/client-editor/src/main/resources/webapp/css/showhideTextarea.css delete mode 100644 client/client-editor/src/main/resources/webapp/css/styles.css delete mode 100644 client/client-editor/src/main/resources/webapp/images/Apex.png delete mode 100644 client/client-editor/src/main/resources/webapp/images/logo_onap.png delete mode 100644 client/client-editor/src/main/resources/webapp/index.html delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexAjax.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexContextAlbumEditForm.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexContextAlbumTab.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexContextSchemaEditForm.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexContextSchemaTab.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexEventEditForm.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexEventTab.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexFiles.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexFormUtils.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexKeyInformationTab.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexMain.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexModelHandling.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexNewModelForm.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexPageControl.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm_State.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexPolicyTab.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexResultForm.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexTable.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexTaskEditForm.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexTaskTab.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/ApexUtils.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/contextMenu.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/dropdownList.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/edit_area_full.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/autocompletion.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/close.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/fullscreen.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/go_to_line.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/help.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/highlight.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/load.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/move.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/newdocument.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/opacity.png delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/processing.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/redo.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/reset_highlight.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/save.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/search.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/smooth_selection.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/spacer.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/statusbar_resize.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/undo.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/images/word_wrap.gif delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/bg.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/cs.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/de.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/dk.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/en.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/eo.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/es.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/fi.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/fr.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/hr.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/it.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/ja.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/mk.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/nl.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/pl.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/pt.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/ru.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/sk.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/langs/zh.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/license_apache.txt delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/basic.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/brainfuck.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/c.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/coldfusion.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/cpp.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/css.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/html.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/java.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/js.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/pas.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/perl.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/php.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/python.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/robotstxt.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/ruby.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/sql.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/tsql.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/vb.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/xml.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/fileMenu.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/AUTHORS.txt delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/LICENSE.txt delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/external/jquery/jquery.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/images/ui-icons_444444_256x240.png delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/images/ui-icons_555555_256x240.png delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/images/ui-icons_777620_256x240.png delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/images/ui-icons_777777_256x240.png delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/images/ui-icons_cc0000_256x240.png delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/images/ui-icons_ffffff_256x240.png delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/index.html delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/jquery-ui.css delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/jquery-ui.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/jquery-ui.min.css delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/jquery-ui.min.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/jquery-ui.structure.css delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/jquery-ui.structure.min.css delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/jquery-ui.theme.css delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/jquery-ui.theme.min.css delete mode 100644 client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/package.json delete mode 100644 client/client-editor/src/main/resources/webapp/js/showhideElement.js delete mode 100644 client/client-editor/src/main/resources/webapp/js/showhideTextarea.js delete mode 100644 client/client-editor/src/main/resources/webapp/resources/10px/ArrowDoubleLeftSmall_black_10px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/10px/ArrowDoubleRightSmall_black_10px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/10px/ArrowDownSmall_black_10px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/10px/ArrowLeftSmall_black_10px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/10px/ArrowRightSmall_black_10px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/10px/ArrowUpSmall_black_10px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowDoubleLeftSmall_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowDoubleRightSmall_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowDownSmall_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowDownSmall_blue_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowDownSmall_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowDown_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowDown_blue_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowDown_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowLeftSmall_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowLeftSmall_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowLeft_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowLeft_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowRightSmall_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowRightSmall_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowRight_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowRight_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowUpSmall_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowUp_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ArrowUp_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/BSCFunction_Yellow_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/BSCFunction_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/BSC_Yellow_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/BSC_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/Cancelled_Black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/CommandLineInterface_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/CommandLineInterface_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/Comment_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/Link_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/RBS_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/RBS_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/SyncError_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/Syncd_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/Syncing_Animated_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/Syncing_Static_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/WindowMaximize_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/WindowMinimize_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/X_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/X_blue_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/X_green_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/X_orange_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/X_paleBlue_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/X_red_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/X_yellow_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/accessSettings_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/accessSettings_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/access_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/access_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/acknowledgeAlarm.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/acknowledgeAlarm_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/activate_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/activate_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/activity_16px_black.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/addToFolder_black.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/addToFolder_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/add_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/add_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/advanced_search_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/advanced_search_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmCleared_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmCleared_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmCritical_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmCritical_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmHeartbeat_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmIndeterminate_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmIndeterminate_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmMajor_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmMajor_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmMinor_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmMinor_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmOtherGrouping_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmUnacknowledged.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmUnacknowledged_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmUnspecified_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmWarning_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alarmWarning_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alignCenter_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alignCenter_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alignLeft_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alignLeft_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alignRight_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/alignRight_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/arrowUpSmall_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/attach_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/attach_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/baseStation.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/cabinet_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/calendar_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/calendar_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/cellAdjacent_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/cellExternal_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/cell_gray_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/cell_green_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/cell_red_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/charging_black.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/charging_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleArrowDown_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleArrowDown_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleArrowLeft_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleArrowLeft_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleArrowRight_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleArrowRight_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleArrowUp_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleArrowUp_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleCaretDown_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleCaretDown_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleCaretLeft_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleCaretLeft_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleCaretRight_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleCaretRight_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleCaretUp_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/circleCaretUp_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/clearAlarm.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/clearAlarm_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/clock_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/clock_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/close_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/comment_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/connected_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/connectionError_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/controllingNode.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/copy_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/copy_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/coreSubscriber_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/core_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/cut_black.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/cut_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/database_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/deactivate_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/deactivate_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/delete_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/delete_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/deprecated_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/detach_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/detach_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/dialogInfo_blue.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/dialogInfo_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/disconnected_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/document_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/download_black.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/download_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/download_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/draft.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/duplicate_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/duplicate_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/edit_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/edit_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/error_red_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/expand_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/export_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/export_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/externalApp_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/externalApp_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/eyeLine_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/eyeLine_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/eye_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/eye_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/fastForward_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/fastRewind_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/filter_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/filter_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/filters_off.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/filters_on.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/folderClosed_black.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/folderClosed_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/folder_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/folder_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ftpServerFunction_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/ftpServer_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/fullscreenMinimise_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/fullscreen_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/gatewayFunction_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/grabHandle_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/grabHandle_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/grid3X3_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/grid3x3_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/grid4X4_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/grid4x4_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/gridView_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/gridView_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/help_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/help_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/import_black.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/import_export.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/import_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/infoMsgIndicator_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/info_black.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/info_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/invalid_icon.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/jumpTo_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/lock_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/lock_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/login.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/logout_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/mailRead_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/mailRead_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/mail_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/mail_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/managedFunction_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/managedGroup_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/managementNode_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/menu_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/menu_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/microwave.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/minimiseFullscreen_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/minus_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/mo.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/move.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/multi-sort.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/multi-sort_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/multiSelect_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/multiSelect_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/networkElement_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/networkElement_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/network_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/newFile_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/newFile_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/newStatus_blue_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/newStatus_green_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/note_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/note_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/obsolete_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/pause_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/play_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/plus_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/print_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/print_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/refresh_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/refresh_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/remove.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/resume_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/routeSwitch.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/rowCollapsed_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/rowExpanded_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/rowView_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/rowView_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/rxi_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/save_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/save_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/search_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/search_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/security_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/security_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/settings_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/settings_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/share_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/share_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/simple_green_tick.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/simple_tick.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/siteManager_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/site_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/sort.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/sort_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/star_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/star_outline_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/star_outline_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/star_outline_yellow_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/star_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/star_yellow_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/stop_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/subnetwork.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/suspend_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/switch.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/switchBetween_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/switchBetween_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/switchFunction_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/tableView_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/tableView_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/technicianPresent_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/terminal_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/tick_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/tick_green_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/tip_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/tip_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/topology_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/undo_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/undo_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/unlock_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/unlock_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/upload_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/user_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/user_white_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/valid_icon.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/warningShield_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/warningShield_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/warning_orange_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/warning_white.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/16px/warning_yellow_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/28px/error_red_28px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/28px/information_blue_28px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/28px/tick_green_28px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/28px/warning_yellow_28px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/contextMenu/menu_black_16px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/close_exit_icon.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/collapse_icon.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/down_arrow.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/down_arrow_hit.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/expand_icon.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/info-black-16x16.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/left_arrow.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/left_arrow_.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/left_arrow_hit.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/magnify_black.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/next_arrows_hit.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/previous_arrows_hit.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/right_arrow.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/right_arrow_.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/right_arrow_hit.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/save_black.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/up_arrow.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/controls/up_arrow_hit.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/dialogs/confirmation_icon.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/dialogs/error_icon.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/dialogs/information_icon.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/dialogs/warning_icon.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/drilldownPath/arrow.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/form/checkbox_tick.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/form/checkbox_tick_black.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/form/checkbox_tick_green.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/form/checkbox_triple.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/form/checkbox_triple_black.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/form/checkbox_triple_green.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/form/invalid_icon.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/form/radio_tick_black.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/form/radio_tick_green.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/form/valid_icon.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/other/ArrowDoubleLeft_black_10x8px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/other/ArrowDoubleRight_black_10x8px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/other/ArrowDown_black_8x5px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/other/ArrowLeft_black_5x8px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/other/ArrowRight_black_5x8px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/other/ArrowUp_black_8x5px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/other/errorSmall_red_10px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/other/tick_black_10x8px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/other/tick_green_10x8px.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/pagination/pagination_end.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/pagination/pagination_next.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/pagination/pagination_previous.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/pagination/pagination_start.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/systemBar/help_black.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/systemBar/logout_black.svg delete mode 100644 client/client-editor/src/main/resources/webapp/resources/whitelabel/button.png delete mode 100644 client/client-editor/src/main/resources/webapp/resources/whitelabel/pagecustomization.PNG delete mode 100644 client/client-editor/src/main/resources/webapp/resources/whitelabel/systembar.png delete mode 100644 client/client-editor/src/main/resources/webapp/resources/whitelabel/table.png delete mode 100644 client/client-editor/src/main/resources/webapp/resources/whitelabel/typography.png delete mode 100644 client/client-editor/src/test/java/org/onap/policy/apex/client/editor/rest/ApexEditorStartupTest.java delete mode 100644 client/client-editor/src/test/java/org/onap/policy/apex/client/editor/rest/ExceptionsTest.java delete mode 100644 client/client-editor/src/test/java/org/onap/policy/apex/client/editor/rest/RestInterfaceTest.java delete mode 100644 client/client-editor/src/test/java/org/onap/policy/apex/client/editor/rest/handling/ApexEditorRestResourceTest.java delete mode 100644 client/client-editor/src/test/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeansTest.java delete mode 100644 client/client-editor/src/test/java/org/onap/policy/apex/client/editor/rest/handling/bean/DummyBeanBase.java delete mode 100644 client/client-editor/src/test/resources/models/PolicyModel.json diff --git a/client/client-editor/pom.xml b/client/client-editor/pom.xml deleted file mode 100644 index 4a5dcb474..000000000 --- a/client/client-editor/pom.xml +++ /dev/null @@ -1,170 +0,0 @@ - - - 4.0.0 - - org.onap.policy.apex-pdp.client - apex-client - 2.4.1-SNAPSHOT - - - apex-client-editor - ${project.artifactId} - Web client for editing Apex policies - - - - org.onap.policy.common - policy-endpoints - - - org.onap.aaf.authz - aaf-cadi-aaf - - - com.att.nsa - cambriaClient - - - org.onap.dmaap.messagerouter.dmaapclient - dmaapClient - - - - - org.onap.policy.common - utils - - - com.worldturner.medeia - medeia-validator-gson - - - - - org.onap.policy.apex-pdp.model - model-api - ${project.version} - - - org.onap.policy.apex-pdp.core - core-infrastructure - ${project.version} - - - org.glassfish.jersey.containers - jersey-container-grizzly2-http - - - org.glassfish.jersey.media - jersey-media-moxy - - - org.eclipse.persistence - org.eclipse.persistence.moxy - - - - - org.glassfish.jersey.test-framework.providers - jersey-test-framework-provider-grizzly2 - test - - - commons-cli - commons-cli - - - junit - junit - test - - - org.onap.policy.apex-pdp.client - apex-client-common - ${project.version} - resources - zip - provided - - - - - - install - ${project.build.directory}/classes - - - - - org.apache.maven.plugins - maven-dependency-plugin - - - unpack-shared-resources - - unpack-dependencies - - generate-resources - - ${project.build.directory}/classes/webapp - - apex-client-common - org.onap.policy.apex-pdp.client - true - true - jar - zip - - - - - - - org.apache.maven.plugins - maven-resources-plugin - - true - - - - org.apache.maven.plugins - maven-assembly-plugin - - - make shared resources - - single - - package - - - src/main/assembly/resources.xml - - - - - - - - diff --git a/client/client-editor/src/main/assembly/resources.xml b/client/client-editor/src/main/assembly/resources.xml deleted file mode 100644 index 0205c3d5d..000000000 --- a/client/client-editor/src/main/assembly/resources.xml +++ /dev/null @@ -1,32 +0,0 @@ - - - resources - - zip - - false - - - target/classes/webapp - editor - - - \ No newline at end of file diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditor.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditor.java deleted file mode 100644 index 20bd6c488..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditor.java +++ /dev/null @@ -1,81 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest; - -import org.glassfish.grizzly.http.server.HttpServer; -import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory; -import org.glassfish.jersey.server.ResourceConfig; -import org.onap.policy.common.utils.validation.Assertions; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * This class is used to launch the editor. It creates a Grizzly embedded web server and runs the editor. - */ -public class ApexEditor { - // Logger for this class - private static final XLogger LOGGER = XLoggerFactory.getXLogger(ApexEditor.class); - - // The HTTP server exposing JAX-RS resources defined in this application. - private final HttpServer server; - - /** - * Starts the HTTP server for the Apex editor on the default base URI and with the default REST packages. - */ - public ApexEditor() { - this(new ApexEditorParameters()); - } - - /** - * Starts the HTTP server for the Apex editor. - * - * @param parameters the parameters - */ - public ApexEditor(final ApexEditorParameters parameters) { - Assertions.argumentNotNull(parameters, "parameters may not be null"); - - LOGGER.debug("Apex RESTful editor starting . . ."); - - // Create a resource configuration that scans for JAX-RS resources and providers - // in org.onap.policy.apex.client.editor.rest package - final ResourceConfig rc = new ResourceConfig().packages(parameters.getRestPackages()); - - // create and start a new instance of grizzly http server - // exposing the Jersey application at BASE_URI - server = GrizzlyHttpServerFactory.createHttpServer(parameters.getBaseUri(), rc); - - // Add static content - server.getServerConfiguration().addHttpHandler(new org.glassfish.grizzly.http.server.CLStaticHttpHandler( - ApexEditorMain.class.getClassLoader(), "/webapp/"), parameters.getStaticPath()); - - LOGGER.debug("Apex RESTful editor started"); - } - - /** - * Shut down the web server. - */ - public void shutdown() { - LOGGER.debug("Apex RESTful editor shutting down . . ."); - server.shutdown(); - LOGGER.debug("Apex RESTful editor shut down"); - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorException.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorException.java deleted file mode 100644 index 18dcc9f99..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorException.java +++ /dev/null @@ -1,73 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest; - -import org.onap.policy.apex.model.basicmodel.concepts.ApexException; - -/** - * Exceptions from the Apex editor. - * - * @author Liam Fallon (liam.fallon@ericsson.com) - */ -public class ApexEditorException extends ApexException { - private static final long serialVersionUID = 4867385591967018254L; - - /** - * Instantiates a new apex editor exception. - * - * @param message the message on the exception - */ - public ApexEditorException(final String message) { - super(message); - } - - /** - * Instantiates a new apex editor exception. - * - * @param message the message on the exception - * @param object the object that the exception was thrown on - */ - public ApexEditorException(final String message, final Object object) { - super(message, object); - } - - /** - * Instantiates a new apex editor exception. - * - * @param message the message on the exception - * @param ex the exception that caused this Apex exception - */ - public ApexEditorException(final String message, final Exception ex) { - super(message, ex); - } - - /** - * Instantiates a new apex editor exception. - * - * @param message the message on the exception - * @param ex the exception that caused this Apex exception - * @param object the object that the exception was thrown on - */ - public ApexEditorException(final String message, final Exception ex, final Object object) { - super(message, ex, object); - } - -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorMain.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorMain.java deleted file mode 100644 index 3f728827e..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorMain.java +++ /dev/null @@ -1,211 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2019 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest; - -import java.io.PrintStream; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * This class is the main class that is used to launch the Apex editor from the command line. - * - */ -public class ApexEditorMain { - // Logger for this class - private static final XLogger LOGGER = XLoggerFactory.getXLogger(ApexEditorMain.class); - - // Recurring string constants - private static final String REST_ENDPOINT_PREFIX = "Apex Editor REST endpoint ("; - - /** - * The Enum EditorState holds the current state of the editor. - */ - // Editor state - public enum EditorState { - /** The editor is stopped. */ - STOPPED, - /** The editor is ready to run. */ - READY, - /** The editor is getting ready to run. */ - INITIALIZING, - /** The editor is running. */ - RUNNING - } - - private static final int EDITOR_RNNING_CHECK_TIMEOUT = 1000; - - private EditorState state = EditorState.STOPPED; - - // The Apex editor this class is running - private ApexEditor apexEditor = null; - - // The parameters for the editor - private ApexEditorParameters parameters = null; - - // Output and error streams for messages - private final PrintStream outStream; - - /** - * Constructor, kicks off the editor. - * - * @param args The command line arguments for the editor - * @param outStream The stream for output messages - */ - public ApexEditorMain(final String[] args, final PrintStream outStream) { - // Save the streams for output and error - this.outStream = outStream; - - // Editor parameter parsing - final ApexEditorParameterParser parser = new ApexEditorParameterParser(); - - try { - // Get and check the parameters - parameters = parser.parse(args); - } catch (final ApexEditorParameterException e) { - throw new ApexEditorParameterException(REST_ENDPOINT_PREFIX + this.toString() + ") parameter error, " - + e.getMessage() + '\n' + parser.getHelp(ApexEditorMain.class.getName()), e); - } - - if (parameters.isHelpSet()) { - throw new ApexEditorParameterException(parser.getHelp(ApexEditorMain.class.getName())); - } - - // Validate the parameters - final String validationMessage = parameters.validate(); - if (validationMessage.length() > 0) { - throw new ApexEditorParameterException(REST_ENDPOINT_PREFIX + this.toString() + ") parameters invalid, " - + validationMessage + '\n' + parser.getHelp(ApexEditorMain.class.getName())); - } - - state = EditorState.READY; - } - - /** - * Initialize the Apex editor. - */ - public void init() { - outStream.println(REST_ENDPOINT_PREFIX + this.toString() + ") starting at " + parameters.getBaseUri().toString() - + " . . ."); - - try { - state = EditorState.INITIALIZING; - - // Start the editor - apexEditor = new ApexEditor(parameters); - - // Add a shutdown hook to shut down the editor when the process is exiting - Runtime.getRuntime().addShutdownHook(new Thread(new ApexEditorShutdownHook())); - - state = EditorState.RUNNING; - - if (parameters.getTimeToLive() == ApexEditorParameters.INFINITY_TIME_TO_LIVE) { - outStream.println(REST_ENDPOINT_PREFIX + this.toString() + ") started at " - + parameters.getBaseUri().toString()); - } else { - outStream.println(REST_ENDPOINT_PREFIX + this.toString() + ") started"); - } - - // Find out how long is left to wait - long timeRemaining = parameters.getTimeToLive(); - while (timeRemaining == ApexEditorParameters.INFINITY_TIME_TO_LIVE || timeRemaining > 0) { - // decrement the time to live in the non-infinity case - if (timeRemaining > 0) { - timeRemaining--; - } - - // Wait for a second - Thread.sleep(EDITOR_RNNING_CHECK_TIMEOUT); - } - } catch (final Exception e) { - String message = REST_ENDPOINT_PREFIX + this.toString() + ") failed at with error: " + e.getMessage(); - outStream.println(message); - LOGGER.warn(message, e); - } finally { - if (apexEditor != null) { - apexEditor.shutdown(); - apexEditor = null; - } - state = EditorState.STOPPED; - } - } - - /** - * Get the editor state. - * - * @return the state - */ - public EditorState getState() { - return state; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - final StringBuilder ret = new StringBuilder(); - ret.append(this.getClass().getSimpleName()).append(": Config=[").append(parameters).append("], State=") - .append(this.getState()); - return ret.toString(); - } - - /** - * Explicitly shut down the editor. - */ - public void shutdown() { - if (apexEditor != null) { - outStream.println(REST_ENDPOINT_PREFIX + this.toString() + ") shutting down"); - apexEditor.shutdown(); - } - state = EditorState.STOPPED; - outStream.println(REST_ENDPOINT_PREFIX + this.toString() + ") shut down"); - } - - /** - * This class is a shutdown hook for the Apex editor command. - */ - private class ApexEditorShutdownHook implements Runnable { - /** - * {@inheritDoc}. - */ - @Override - public void run() { - if (apexEditor != null) { - apexEditor.shutdown(); - } - } - } - - /** - * Main method, main entry point for command. - * - * @param args The command line arguments for the editor - */ - public static void main(final String[] args) { - try { - final ApexEditorMain editorMain = new ApexEditorMain(args, System.out); - editorMain.init(); - } catch (final Exception e) { - LOGGER.error("start failed", e); - } - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorParameterException.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorParameterException.java deleted file mode 100644 index 0ba12dec6..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorParameterException.java +++ /dev/null @@ -1,49 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest; - -/** - * A run time exception used to report parsing and parameter input errors. - * - * @author Liam Fallon (liam.fallon@ericsson.com) - */ -public class ApexEditorParameterException extends IllegalArgumentException { - private static final long serialVersionUID = 6520231162404452427L; - - /** - * Create an ApexEditorParameterException with a message. - * - * @param message the message - */ - public ApexEditorParameterException(final String message) { - super(message); - } - - /** - * Create an ApexEditorParameterException with a message and an exception. - * - * @param message the message - * @param th the Throwable instance - */ - public ApexEditorParameterException(final String message, final Throwable th) { - super(message, th); - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorParameterParser.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorParameterParser.java deleted file mode 100644 index ef89945aa..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorParameterParser.java +++ /dev/null @@ -1,129 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.Arrays; -import org.apache.commons.cli.CommandLine; -import org.apache.commons.cli.DefaultParser; -import org.apache.commons.cli.HelpFormatter; -import org.apache.commons.cli.Option; -import org.apache.commons.cli.Options; -import org.apache.commons.cli.ParseException; - -/** - * This class reads and handles command line parameters to the Apex CLI editor. - * - * @author Liam Fallon (liam.fallon@ericsson.com) - */ -public class ApexEditorParameterParser { - // Apache Commons CLI options - private Options options; - - private static final int COMMAND_HELP_MAX_LINE_WIDTH = 120; - - /** - * Construct the options for the CLI editor. - */ - public ApexEditorParameterParser() { - options = new Options(); - options.addOption("h", "help", false, "outputs the usage of this command"); - options.addOption( - Option.builder("p").longOpt("port").desc("port to use for the Apex RESTful editor REST calls.").hasArg() - .argName("PORT").required(false).type(Number.class).build()); - options.addOption(Option.builder("t").longOpt("time-to-live") - .desc("the amount of time in seconds that the server will run for before terminating. " - + "Default value is " + ApexEditorParameters.INFINITY_TIME_TO_LIVE + " to run indefinitely.") - .hasArg().argName("TIME_TO_LIVE").required(false).type(Number.class).build()); - options.addOption(Option.builder("l").longOpt("listen") - .desc("the IP address to listen on. Default value is " + ApexEditorParameters.DEFAULT_SERVER_URI_ROOT - + " to restrict access to the local machine only.") - .hasArg().argName("ADDRESS").required(false).type(String.class).build()); - } - - /** - * Parse the command line options. - * - * @param args The arguments - * @return the apex editor parameters - */ - public ApexEditorParameters parse(final String[] args) { - CommandLine commandLine = null; - try { - commandLine = new DefaultParser().parse(options, args); - } catch (final ParseException e) { - throw new ApexEditorParameterException("invalid command line arguments specified : " + e.getMessage()); - } - - final ApexEditorParameters parameters = new ApexEditorParameters(); - final String[] remainingArgs = commandLine.getArgs(); - - if (commandLine.getArgs().length > 0) { - throw new ApexEditorParameterException( - "too many command line arguments specified : " + Arrays.toString(remainingArgs)); - } - - if (commandLine.hasOption('h')) { - parameters.setHelp(true); - } - try { - if (commandLine.hasOption('p')) { - parameters.setRestPort(((Number) commandLine.getParsedOptionValue("port")).intValue()); - } - } catch (final ParseException e) { - throw new ApexEditorParameterException("error parsing argument \"port\" :" + e.getMessage(), e); - } - try { - if (commandLine.hasOption('t')) { - parameters.setTimeToLive(((Number) commandLine.getParsedOptionValue("time-to-live")).longValue()); - } - } catch (final ParseException e) { - throw new ApexEditorParameterException("error parsing argument \"time-to-live\" :" + e.getMessage(), e); - } - try { - if (commandLine.hasOption('l')) { - parameters.setListenAddress(commandLine.getParsedOptionValue("listen").toString()); - } - } catch (final ParseException e) { - throw new ApexEditorParameterException("error parsing argument \"listen-address\" :" + e.getMessage(), e); - } - - return parameters; - } - - /** - * Get help information. - * - * @param mainClassName the main class name - * @return the help - */ - public String getHelp(final String mainClassName) { - final StringWriter stringWriter = new StringWriter(); - final PrintWriter stringPrintWriter = new PrintWriter(stringWriter); - - final HelpFormatter helpFormatter = new HelpFormatter(); - helpFormatter.printHelp(stringPrintWriter, COMMAND_HELP_MAX_LINE_WIDTH, mainClassName + " [options...] ", null, - options, 0, 1, ""); - - return stringWriter.toString(); - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorParameters.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorParameters.java deleted file mode 100644 index 1687c01e0..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/ApexEditorParameters.java +++ /dev/null @@ -1,229 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest; - -import java.net.URI; -import java.net.URISyntaxException; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * This class reads and handles command line parameters to the Apex CLI editor. - * - * @author Liam Fallon (liam.fallon@ericsson.com) - */ -public class ApexEditorParameters { - // Logger for this class - private static final XLogger LOGGER = XLoggerFactory.getXLogger(ApexEditorParameters.class); - - /** The default port for connecting to the Web editor on. */ - public static final int DEFAULT_REST_PORT = 18989; - - /** The connection is held up until killed on demand. */ - public static final int INFINITY_TIME_TO_LIVE = -1; - - // Base URI the HTTP server will listen on - private static final String DEFAULT_SERVER_URI_PREFIX = "http://"; - /** The server listens on localhost by default. */ - public static final String DEFAULT_SERVER_URI_ROOT = "localhost"; - private static final String DEFAULT_REST_PATH = "/apexservices/"; - private static final String DEFAULT_STATIC_PATH = "/"; - - // Constants for port checks - private static final int MIN_USER_PORT = 1024; - private static final int MAX_USER_PORT = 65535; - - - // Package that will field REST requests - private static final String[] DEFAULT_PACKAGES = new String[] { "org.onap.policy.apex.client.editor.rest" }; - - // The editor parameters - private boolean helpSet = false; - private int restPort = DEFAULT_REST_PORT; - private long timeToLive = INFINITY_TIME_TO_LIVE; - private String listenAddress = DEFAULT_SERVER_URI_ROOT; - - /** - * Validate. - * - * @return the string - */ - public String validate() { - String validationMessage = ""; - validationMessage += validatePort(); - validationMessage += validateTimeToLive(); - validationMessage += validateUrl(); - - return validationMessage; - } - - /** - * Gets the base URI. - * - * @return the base URI - */ - public URI getBaseUri() { - return URI.create(DEFAULT_SERVER_URI_PREFIX + listenAddress + ':' + restPort + DEFAULT_REST_PATH); - } - - /** - * Gets the REST packages. - * - * @return the REST packages - */ - public String[] getRestPackages() { - return DEFAULT_PACKAGES; - } - - /** - * Gets the static path. - * - * @return the static path - */ - public String getStaticPath() { - return DEFAULT_STATIC_PATH; - } - - /** - * Validate port. - * - * @return a warning string, or an empty string - */ - private String validatePort() { - if (restPort < MIN_USER_PORT || restPort > MAX_USER_PORT) { - return "port must be between " + MIN_USER_PORT + " and " + MAX_USER_PORT + "\n"; - } else { - return ""; - } - } - - /** - * Validate URL. - * - * @return a warning string, or an empty string - */ - private String validateUrl() { - try { - new URI(getBaseUri().toString()).parseServerAuthority(); - return ""; - } catch (final URISyntaxException e) { - String message = "listen address is not valid. " + e.getMessage() + "\n"; - LOGGER.warn(message, e); - return message; - } - } - - /** - * Validate time to live. - * - * @return the string - */ - private String validateTimeToLive() { - if (timeToLive < -1) { - return "time to live must be greater than -1 (set to -1 to wait forever)\n"; - } else { - return ""; - } - } - - /** - * Checks if is help set. - * - * @return true, if checks if is help set - */ - public boolean isHelpSet() { - return helpSet; - } - - /** - * Sets the help. - * - * @param help the help - */ - public void setHelp(final boolean help) { - this.helpSet = help; - } - - /** - * Gets the REST port. - * - * @return the REST port - */ - public int getRestPort() { - return restPort; - } - - /** - * Sets the REST port. - * - * @param incomingRestPort the REST port - */ - public void setRestPort(final int incomingRestPort) { - this.restPort = incomingRestPort; - } - - /** - * Gets the time to live. - * - * @return the time to live - */ - public long getTimeToLive() { - return timeToLive; - } - - /** - * Sets the time to live. - * - * @param timeToLive the time to live - */ - public void setTimeToLive(final long timeToLive) { - this.timeToLive = timeToLive; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - final StringBuilder ret = new StringBuilder(); - ret.append(this.getClass().getSimpleName()).append(": URI=").append(this.getBaseUri()).append(", TTL=") - .append(this.getTimeToLive()).append("sec"); - return ret.toString(); - } - - /** - * Gets the base address to listen on. - * - * @return the listenAddress - */ - public String getListenAddress() { - return listenAddress; - } - - /** - * Sets the base address to listen on. - * - * @param listenAddress the new listenAddress - */ - public void setListenAddress(final String listenAddress) { - this.listenAddress = listenAddress; - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ApexEditorRestResource.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ApexEditorRestResource.java deleted file mode 100644 index 9c3a3de26..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ApexEditorRestResource.java +++ /dev/null @@ -1,815 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling; - -import java.io.IOException; -import javax.ws.rs.Consumes; -import javax.ws.rs.DELETE; -import javax.ws.rs.GET; -import javax.ws.rs.POST; -import javax.ws.rs.PUT; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.QueryParam; -import javax.ws.rs.core.MediaType; -import org.onap.policy.apex.model.modelapi.ApexApiResult; -import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; -import org.onap.policy.common.utils.resources.TextFileUtils; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * The class represents the root resource exposed at the base URL
The url to access this resource would be in the - * form {@code /rest//....}
For example: a PUT request to the following URL - * {@code http://localhost:8080/apex/rest/109/ContextSchema/Update}, with a JSON string payload containing the new - * {@code Schema} in the body, can be explained as:
  • The server or servlet is running at the base URL - * {@code http://localhost:8080/apex}
  • This resource {@code ApexRestEditorResource} is used because the path - * {@code rest/109} matches the {@code Path} filter specification for this Resource ({@code @Path("rest/{session}")}), - * where the {@code int} path parameter {@code session} is assigned the {@code int} value {@code 109}
  • The path - * {@code ContextSchema/Update} redirects this call to the method {@link #updateContextSchema(String)}, which should be - * a {@link javax.ws.rs.PUT}, with a single String in the body/payload which gets mapped to the single String parameter - * for the method.
  • So, in summary, the REST request updates a {@code ContextSchema} as specified in the payload for - * {@code session} number {@code 109}
- * - * Note: An allocated {@code Session} identifier must be included in (almost) all requests. Models for different - * {@code Session} identifiers are completely isolated from one another. - * - * Note: To create a new {@code Session}, and have a new session ID allocated use {@link javax.ws.rs.GET} request - * to {@code /rest/-1/Session/Create} (for example: {@code http://localhost:8080/apex/rest/-1/Session/Create} ) - * - */ -@Path("editor/{session}") -@Produces({MediaType.APPLICATION_JSON}) -@Consumes({MediaType.APPLICATION_JSON}) - -public class ApexEditorRestResource implements RestCommandHandler { - // Get a reference to the logger - private static final XLogger LOGGER = XLoggerFactory.getXLogger(ApexEditorRestResource.class); - - // Location of the periodi event template - private static final String PERIODIC_EVENT_TEMPLATE = "src/main/resources/templates/PeriodicEventTemplate.json"; - - // Recurring string constants - private static final String NAME = "name"; - private static final String VERSION = "version"; - private static final String REST_COMMAND_NOT_RECOGNISED = "REST command not recognised"; - private static final String OK = ": OK"; - private static final String NOT_OK = ": Not OK"; - private static final String SESSION_CREATE = "Session/Create"; - private static final String SESSION_CREATE_NOT_OK = "Session/Create: Not OK"; - - // The session handler for sessions on the Apex editor - private static final RestSessionHandler SESSION_HANDLER = new RestSessionHandler(); - - // Handlers for the various parts of an Apex model - //@formatter:off - private static final ModelHandler MODEL_HANDLER = new ModelHandler(); - private static final KeyInfoHandler KEY_INFO_HANDLER = new KeyInfoHandler(); - private static final ContextSchemaHandler CONTEXT_SCHEMA_HANDLER = new ContextSchemaHandler(); - private static final ContextAlbumHandler CONTEXT_ALBUM_HANDLER = new ContextAlbumHandler(); - private static final EventHandler EVENT_HANDLER = new EventHandler(); - private static final TaskHandler TASK_HANDLER = new TaskHandler(); - private static final PolicyHandler POLICY_HANDLER = new PolicyHandler(); - //@formatter:on - - // The ID of this session. This gets injected from the URL. - @PathParam("session") - private int sessionId = -1; - - /** - * Creates a new session. Always call this method with sessionID -1, whereby a new sessionID will be allocated. If - * successful the new sessionID will be available in the first message in the result. - * - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()}. This includes the session id - * for this session. - */ - @GET - @Path("Session/Create") - public ApexApiResult createSession() { - if (sessionId != -1) { - return new ApexApiResult(Result.FAILED, "Session ID must be set to -1 to create sessions: " + sessionId); - } - - ApexApiResult result = new ApexApiResult(); - SESSION_HANDLER.createSession(result); - return result; - } - - /** - * Load the model from a JSON string for this session. - * - * @param jsonString the JSON string to be parsed. The returned value(s) will be similar to {@code AxPolicyModel}, - * with merged {@code AxKeyInfo} for the root object. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @PUT - @Path("/Model/Load") - public ApexApiResult loadFromString(final String jsonString) { - return processRestCommand(RestCommandType.MODEL, RestCommand.LOAD, jsonString); - } - - /** - * Analyse the model and return analysis results. If successful the analysis results will be available in the - * messages in the result. - * - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @GET - @Path("Model/Analyse") - public ApexApiResult analyse() { - return processRestCommand(RestCommandType.MODEL, RestCommand.ANALYSE); - } - - /** - * Validate the model and return validation results. If successful the validation results will be available in the - * messages in the result. - * - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @GET - @Path("Model/Validate") - public ApexApiResult validate() { - return processRestCommand(RestCommandType.MODEL, RestCommand.VALIDATE); - } - - /** - * Creates the new model model for this session. - * - * @param jsonString the JSON string to be parsed containing the new model. See {@code BeanModel} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @POST - @Path("Model/Create") - public ApexApiResult createModel(final String jsonString) { - return processRestCommand(RestCommandType.MODEL, RestCommand.CREATE, jsonString); - } - - /** - * Update the model for this session. - * - * @param jsonString the JSON string to be parsed containing the updated model. See {@code BeanModel} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @PUT - @Path("Model/Update") - public ApexApiResult updateModel(final String jsonString) { - return processRestCommand(RestCommandType.MODEL, RestCommand.UPDATE, jsonString); - } - - /** - * Gets the key for the model for this session. If successful the model key will be available in the first message - * in the result. See {@code AxKey} - * - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @GET - @Path("Model/GetKey") - public ApexApiResult getModelKey() { - return processRestCommand(RestCommandType.MODEL, RestCommand.GET_KEY); - } - - /** - * Retrieve the model for this session. If successful the model will be available in the first message in the - * result. The returned value will be similar to a {@code AxPolicyModel}, with merged {@code AxKeyInfo} for the root - * object. - * - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @GET - @Path("Model/Get") - public ApexApiResult listModel() { - return processRestCommand(RestCommandType.MODEL, RestCommand.LIST); - } - - /** - * Download the model for this session as a String. - * - * @return the model represented as a JSON string. See {@code AxPolicyModel} - */ - @GET - @Path("Model/Download") - public String downloadModel() { - ApexApiResult result = processRestCommand(RestCommandType.MODEL, RestCommand.DOWNLOAD); - if (result != null && result.isOk()) { - return result.getMessage(); - } else { - return null; - } - } - - /** - * Delete the model for this session. - * - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @DELETE - @Path("Model/Delete") - public ApexApiResult deleteModel() { - return processRestCommand(RestCommandType.MODEL, RestCommand.DELETE); - } - - /** - * List key information with the given key names/versions. If successful the result(s) will be available in the - * result messages. See {@code AxKeyInfo} - * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @GET - @Path("KeyInformation/Get") - public ApexApiResult listKeyInformation(@QueryParam(NAME) final String name, - @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.KEY_INFO, RestCommand.LIST, name, version); - } - - /** - * Creates a context schema with the information in the JSON string passed. - * - * @param jsonString the JSON string to be parsed. See {@code BeanContextSchema} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @POST - @Path("ContextSchema/Create") - public ApexApiResult createContextSchema(final String jsonString) { - return processRestCommand(RestCommandType.CONTEXT_SCHEMA, RestCommand.CREATE, jsonString); - } - - /** - * Update a context schema with the information in the JSON string passed. - * - * @param jsonString the JSON string to be parsed. See {@code BeanContextSchema} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @PUT - @Path("ContextSchema/Update") - public ApexApiResult updateContextSchema(final String jsonString) { - return processRestCommand(RestCommandType.CONTEXT_SCHEMA, RestCommand.UPDATE, jsonString); - } - - /** - * List context schemas with the given key names/versions. If successful the result(s) will be available in the - * result messages. The returned value(s) will be similar to {@code AxContextSchema}, with merged {@code AxKeyInfo} - * for the root object. - * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @GET - @Path("ContextSchema/Get") - public ApexApiResult listContextSchemas(@QueryParam(NAME) final String name, - @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.CONTEXT_SCHEMA, RestCommand.LIST, name, version); - } - - /** - * Delete context schemas with the given key names/versions. - * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @DELETE - @Path("ContextSchema/Delete") - public ApexApiResult deleteContextSchema(@QueryParam(NAME) final String name, - @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.CONTEXT_SCHEMA, RestCommand.DELETE, name, version); - } - - /** - * Validate context schemas with the given key names/versions. The result(s) will be available in the result - * messages. - * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @GET - @Path("Validate/ContextSchema") - public ApexApiResult validateContextSchemas(@QueryParam(NAME) final String name, - @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.CONTEXT_SCHEMA, RestCommand.VALIDATE, name, version); - } - - /** - * Creates a context album with the information in the JSON string passed. - * - * @param jsonString the JSON string to be parsed. See {@code BeanContextAlbum} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @POST - @Path("ContextAlbum/Create") - public ApexApiResult createContextAlbum(final String jsonString) { - return processRestCommand(RestCommandType.CONTEXT_ALBUM, RestCommand.CREATE, jsonString); - } - - /** - * Update a context album with the information in the JSON string passed. - * - * @param jsonString the JSON string to be parsed. See {@code BeanContextAlbum} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @PUT - @Path("ContextAlbum/Update") - public ApexApiResult updateContextAlbum(final String jsonString) { - return processRestCommand(RestCommandType.CONTEXT_ALBUM, RestCommand.UPDATE, jsonString); - } - - /** - * List context albums with the given key names/versions. If successful the result(s) will be available in the - * result messages. The returned value(s) will be similar to {@code AxContextAlbum}, with merged {@code AxKeyInfo} - * for the root object. - * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @GET - @Path("ContextAlbum/Get") - public ApexApiResult listContextAlbums(@QueryParam(NAME) final String name, - @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.CONTEXT_ALBUM, RestCommand.LIST, name, version); - } - - /** - * Delete context albums with the given key names/versions. - * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @DELETE - @Path("ContextAlbum/Delete") - public ApexApiResult deleteContextAlbum(@QueryParam(NAME) final String name, - @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.CONTEXT_ALBUM, RestCommand.DELETE, name, version); - } - - /** - * Validate context albums with the given key names/versions. The result(s) will be available in the result - * messages. - * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @GET - @Path("Validate/ContextAlbum") - public ApexApiResult validateContextAlbums(@QueryParam(NAME) final String name, - @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.CONTEXT_ALBUM, RestCommand.VALIDATE, name, version); - } - - /** - * Creates an event with the information in the JSON string passed. - * - * @param jsonString the JSON string to be parsed. See {@code BeanEvent} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @POST - @Path("Event/Create") - public ApexApiResult createEvent(final String jsonString) { - return processRestCommand(RestCommandType.EVENT, RestCommand.CREATE, jsonString); - } - - /** - * Update an event with the information in the JSON string passed. - * - * @param jsonString the JSON string to be parsed. See {@code BeanEvent} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @PUT - @Path("Event/Update") - public ApexApiResult updateEvent(final String jsonString) { - return processRestCommand(RestCommandType.EVENT, RestCommand.UPDATE, jsonString); - } - - /** - * List events with the given key names/versions. If successful the result(s) will be available in the result - * messages. The returned value(s) will be similar to {@code AxEvent}, with merged {@code AxKeyInfo} for the root - * object. - * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @GET - @Path("Event/Get") - public ApexApiResult listEvent(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.EVENT, RestCommand.LIST, name, version); - } - - /** - * Delete events with the given key names/versions. - * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @DELETE - @Path("Event/Delete") - public ApexApiResult deleteEvent(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.EVENT, RestCommand.DELETE, name, version); - } - - /** - * Validate events with the given key names/versions. The result(s) will be available in the result messages. - * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @GET - @Path("Validate/Event") - public ApexApiResult validateEvent(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.EVENT, RestCommand.VALIDATE, name, version); - } - - /** - * Creates a task with the information in the JSON string passed. - * - * @param jsonString the JSON string to be parsed. See {@code BeanTask} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @POST - @Path("Task/Create") - public ApexApiResult createTask(final String jsonString) { - return processRestCommand(RestCommandType.TASK, RestCommand.CREATE, jsonString); - } - - /** - * Update a task with the information in the JSON string passed. - * - * @param jsonString the JSON string to be parsed. See {@code BeanTask} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @PUT - @Path("Task/Update") - public ApexApiResult updateTask(final String jsonString) { - return processRestCommand(RestCommandType.TASK, RestCommand.UPDATE, jsonString); - } - - /** - * List tasks with the given key names/versions. If successful the result(s) will be available in the result - * messages. The returned value(s) will be similar to {@code AxTask}, with merged {@code AxKeyInfo} for the root - * object. - * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @GET - @Path("Task/Get") - public ApexApiResult listTask(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.TASK, RestCommand.LIST, name, version); - } - - /** - * Delete tasks with the given key names/versions. - * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @DELETE - @Path("Task/Delete") - public ApexApiResult deleteTask(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.TASK, RestCommand.DELETE, name, version); - } - - /** - * Validate tasks with the given key names/versions. The result(s) will be available in the result messages. - * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @GET - @Path("Validate/Task") - public ApexApiResult validateTask(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.TASK, RestCommand.VALIDATE, name, version); - } - - // CHECKSTYLE:OFF: MethodLength - /** - * Creates a policy with the information in the JSON string passed. - * - * @param jsonString the JSON string to be parsed See {@code BeanPolicy} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @POST - @Path("Policy/Create") - public ApexApiResult createPolicy(final String jsonString) { - return processRestCommand(RestCommandType.POLICY, RestCommand.CREATE, jsonString); - } - - /** - * Update a policy with the information in the JSON string passed. - * - * @param firstStatePeriodic indicates if periodic event should be created and added to model - * @param jsonString the JSON string to be parsed. See {@code BeanPolicy} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @PUT - @Path("Policy/Update") - public ApexApiResult updatePolicy(@QueryParam("firstStatePeriodic") final boolean firstStatePeriodic, - final String jsonString) { - - ApexApiResult result = processRestCommand(RestCommandType.POLICY, RestCommand.UPDATE, jsonString); - if (result != null && result.isOk() && firstStatePeriodic) { - result = createPeriodicEvent(); - } - return result; - } - - /** - * List policies with the given key names/versions. If successful the result(s) will be available in the result - * messages. The returned value(s) will be similar to {@code AxPolicy}, with merged {@code AxKeyInfo} for the root - * object. - * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @GET - @Path("Policy/Get") - public ApexApiResult listPolicy(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.POLICY, RestCommand.LIST, name, version); - } - - /** - * Delete policies with the given key names/versions. - * - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - @DELETE - @Path("Policy/Delete") - public ApexApiResult deletePolicy(@QueryParam(NAME) final String name, @QueryParam(VERSION) final String version) { - return processRestCommand(RestCommandType.POLICY, RestCommand.DELETE, name, version); - } - - /** - * This method routes REST commands that take no parameters to their caller. - * - * @param commandType the type of REST command to process - * @param command the REST command to process - * @return the result of the REST command - */ - private ApexApiResult processRestCommand(final RestCommandType commandType, final RestCommand command) { - LOGGER.entry(commandType); - try { - ApexApiResult result = new ApexApiResult(); - RestSession session = SESSION_HANDLER.getSession(sessionId, result); - if (session == null) { - return result; - } - result = executeRestCommand(session, commandType, command); - LOGGER.exit(SESSION_CREATE + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } catch (final Exception e) { - LOGGER.catching(e); - LOGGER.exit(SESSION_CREATE_NOT_OK); - throw e; - } - } - - /** - * This method routes REST commands that take a JSON string to their caller. - * - * @param commandType the type of REST command to process - * @param command the REST command to process - * @param jsonString the JSON string received in the REST request - * @return the result of the REST command - */ - private ApexApiResult processRestCommand(final RestCommandType commandType, final RestCommand command, - final String jsonString) { - LOGGER.entry(commandType, jsonString); - try { - ApexApiResult result = new ApexApiResult(); - RestSession session = SESSION_HANDLER.getSession(sessionId, result); - if (session == null) { - return result; - } - result = executeRestCommand(session, commandType, command, jsonString); - LOGGER.exit(SESSION_CREATE + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } catch (final Exception e) { - LOGGER.catching(e); - LOGGER.exit(SESSION_CREATE_NOT_OK); - throw e; - } - } - - /** - * This method routes REST commands that take a name and version to their caller. - * - * @param commandType the type of REST command to process - * @param command the REST command to process - * @param name the name received in the REST request - * @param version the name received in the REST request - * @return the result of the REST command - */ - private ApexApiResult processRestCommand(final RestCommandType commandType, final RestCommand command, - final String name, final String version) { - LOGGER.entry(commandType, name, version); - try { - ApexApiResult result = new ApexApiResult(); - RestSession session = SESSION_HANDLER.getSession(sessionId, result); - if (session == null) { - return result; - } - result = executeRestCommand(session, commandType, command, name, version); - LOGGER.exit(SESSION_CREATE + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } catch (final Exception e) { - LOGGER.catching(e); - LOGGER.exit(SESSION_CREATE_NOT_OK); - throw e; - } - } - - /** - * This method invokes callers to run REST commands that take no parameters. - * - * @param session the Apex editor session - * @param commandType the type of REST command to process - * @param command the REST command to process - * @return the result of the REST command - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command) { - switch (commandType) { - case MODEL: - return MODEL_HANDLER.executeRestCommand(session, commandType, command); - case KEY_INFO: - return KEY_INFO_HANDLER.executeRestCommand(session, commandType, command); - case CONTEXT_SCHEMA: - return CONTEXT_SCHEMA_HANDLER.executeRestCommand(session, commandType, command); - case CONTEXT_ALBUM: - return CONTEXT_ALBUM_HANDLER.executeRestCommand(session, commandType, command); - case EVENT: - return EVENT_HANDLER.executeRestCommand(session, commandType, command); - case TASK: - return TASK_HANDLER.executeRestCommand(session, commandType, command); - case POLICY: - return POLICY_HANDLER.executeRestCommand(session, commandType, command); - default: - return new ApexApiResult(Result.FAILED, REST_COMMAND_NOT_RECOGNISED); - } - } - - /** - * This method invokes callers to run REST commands that take a JSON string. - * - * @param session the Apex editor session - * @param commandType the type of REST command to process - * @param command the REST command to process - * @param jsonString the JSON string received in the REST request - * @return the result of the REST command - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String jsonString) { - switch (commandType) { - case MODEL: - return MODEL_HANDLER.executeRestCommand(session, commandType, command, jsonString); - case KEY_INFO: - return KEY_INFO_HANDLER.executeRestCommand(session, commandType, command, jsonString); - case CONTEXT_SCHEMA: - return CONTEXT_SCHEMA_HANDLER.executeRestCommand(session, commandType, command, jsonString); - case CONTEXT_ALBUM: - return CONTEXT_ALBUM_HANDLER.executeRestCommand(session, commandType, command, jsonString); - case EVENT: - return EVENT_HANDLER.executeRestCommand(session, commandType, command, jsonString); - case TASK: - return TASK_HANDLER.executeRestCommand(session, commandType, command, jsonString); - case POLICY: - return POLICY_HANDLER.executeRestCommand(session, commandType, command, jsonString); - default: - return new ApexApiResult(Result.FAILED, REST_COMMAND_NOT_RECOGNISED); - } - } - - /** - * This method invokes callers to run REST commands that take a name and version. - * - * @param session the Apex editor session - * @param commandType the type of REST command to process - * @param command the REST command to process - * @param name the name received in the REST request - * @param version the name received in the REST request - * @return the result of the REST command - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String name, final String version) { - switch (commandType) { - case MODEL: - return MODEL_HANDLER.executeRestCommand(session, commandType, command, name, version); - case KEY_INFO: - return KEY_INFO_HANDLER.executeRestCommand(session, commandType, command, name, version); - case CONTEXT_SCHEMA: - return CONTEXT_SCHEMA_HANDLER.executeRestCommand(session, commandType, command, name, version); - case CONTEXT_ALBUM: - return CONTEXT_ALBUM_HANDLER.executeRestCommand(session, commandType, command, name, version); - case EVENT: - return EVENT_HANDLER.executeRestCommand(session, commandType, command, name, version); - case TASK: - return TASK_HANDLER.executeRestCommand(session, commandType, command, name, version); - case POLICY: - return POLICY_HANDLER.executeRestCommand(session, commandType, command, name, version); - default: - return new ApexApiResult(Result.FAILED, REST_COMMAND_NOT_RECOGNISED); - } - } - - /** - * Create a periodic event from the periodic event template. - */ - private ApexApiResult createPeriodicEvent() { - String periodicEventJsonString; - try { - periodicEventJsonString = TextFileUtils.getTextFileAsString(PERIODIC_EVENT_TEMPLATE); - } catch (IOException ioException) { - String message = "read of periodic event tempalte from " + PERIODIC_EVENT_TEMPLATE + "failed: " - + ioException.getMessage(); - LOGGER.debug(message, ioException); - return new ApexApiResult(Result.FAILED, message); - } - - return processRestCommand(RestCommandType.EVENT, RestCommand.CREATE, periodicEventJsonString); - } - - /* - * This method is used only for testing and is used to cause an exception on calls from unit test to test exception - * handling. - */ - protected static int createCorruptSession() { - final ApexEditorRestResource apexEditorRestResource = new ApexEditorRestResource(); - final ApexApiResult result = apexEditorRestResource.createSession(); - final int corruptSessionId = Integer.parseInt(result.getMessages().get(0)); - - SESSION_HANDLER.setCorruptSession(corruptSessionId); - - return corruptSessionId; - } - -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ContextAlbumHandler.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ContextAlbumHandler.java deleted file mode 100644 index 40c147e7a..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ContextAlbumHandler.java +++ /dev/null @@ -1,211 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling; - -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanContextAlbum; -import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInfo; -import org.onap.policy.apex.model.contextmodel.concepts.AxContextAlbum; -import org.onap.policy.apex.model.modelapi.ApexApiResult; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * This class handles commands on context albums in Apex models. - */ -public class ContextAlbumHandler implements RestCommandHandler { - // Get a reference to the logger - private static final XLogger LOGGER = XLoggerFactory.getXLogger(ContextAlbumHandler.class); - - // Recurring string constants - private static final String OK = ": OK"; - private static final String NOT_OK = ": Not OK"; - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String jsonString) { - if (!RestCommandType.CONTEXT_ALBUM.equals(commandType)) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - switch (command) { - case CREATE: - return createContextAlbum(session, jsonString); - case UPDATE: - return updateContextAlbum(session, jsonString); - default: - return getUnsupportedCommandResultMessage(session, commandType, command); - } - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String name, final String version) { - if (!RestCommandType.CONTEXT_ALBUM.equals(commandType)) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - switch (command) { - case LIST: - return listContextAlbums(session, name, version); - case DELETE: - return deleteContextAlbum(session, name, version); - case VALIDATE: - return validateContextAlbum(session, name, version); - default: - return getUnsupportedCommandResultMessage(session, commandType, command); - } - } - - /** - * Creates a context album with the information in the JSON string passed. - * - * @param session the Apex model editing session - * @param jsonString the JSON string to be parsed. See {@linkplain BeanContextAlbum} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult createContextAlbum(final RestSession session, final String jsonString) { - LOGGER.entry(jsonString); - - session.editModel(); - - final BeanContextAlbum jsonbean = RestUtils.getJsonParameters(jsonString, BeanContextAlbum.class); - - ApexApiResult result = session.getApexModelEdited().createContextAlbum(jsonbean.getName(), - jsonbean.getVersion(), jsonbean.getScope(), Boolean.toString(jsonbean.getWriteable()), - jsonbean.getItemSchema().getName(), jsonbean.getItemSchema().getVersion(), jsonbean.getUuid(), - jsonbean.getDescription()); - - if (result != null) { - session.finishSession(result.isOk()); - LOGGER.exit("ContextAlbum/Create" + (result.isOk() ? OK : NOT_OK)); - } - - return result; - } - - /** - * Update a context album with the information in the JSON string passed. - * - * @param session the Apex model editing session - * @param jsonString the JSON string to be parsed. See {@linkplain BeanContextAlbum} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult updateContextAlbum(final RestSession session, final String jsonString) { - LOGGER.entry(jsonString); - - session.editModel(); - - final BeanContextAlbum jsonbean = RestUtils.getJsonParameters(jsonString, BeanContextAlbum.class); - - ApexApiResult result = session.getApexModelEdited().updateContextAlbum(jsonbean.getName(), - jsonbean.getVersion(), jsonbean.getScope(), Boolean.toString(jsonbean.getWriteable()), - jsonbean.getItemSchema().getName(), jsonbean.getItemSchema().getVersion(), jsonbean.getUuid(), - jsonbean.getDescription()); - - if (result != null) { - session.finishSession(result.isOk()); - LOGGER.exit("ContextAlbum/Update" + (result.isOk() ? OK : NOT_OK)); - } - - return result; - } - - /** - * List context albums with the given key names/versions. If successful the result(s) will be available in the - * result messages. The returned value(s) will be similar to {@link AxContextAlbum}, with merged - * {@linkplain AxKeyInfo} for the root object. - * - * @param session the Apex model editing session - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult listContextAlbums(final RestSession session, final String name, final String version) { - LOGGER.entry(name, version); - - ApexApiResult result = session.getApexModel().listContextAlbum(blank2Null(name), blank2Null(version)); - - LOGGER.exit("ContextAlbum/Get" + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } - - /** - * Delete context albums with the given key names/versions. - * - * @param session the Apex model editing session - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult deleteContextAlbum(final RestSession session, final String name, final String version) { - LOGGER.entry(name, version); - - session.editModel(); - - ApexApiResult result = session.getApexModelEdited().deleteContextAlbum(blank2Null(name), blank2Null(version)); - - if (result != null) { - session.finishSession(result.isOk()); - LOGGER.exit("ContextAlbum/Delete" + (result.isOk() ? OK : NOT_OK)); - } - - return result; - } - - /** - * Validate context albums with the given key names/versions. The result(s) will be available in the result - * messages. - * - * @param session the Apex model editing session - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult validateContextAlbum(final RestSession session, final String name, final String version) { - LOGGER.entry(name, version); - - ApexApiResult result = session.getApexModel().validateContextAlbum(blank2Null(name), blank2Null(version)); - - LOGGER.exit("Validate/ContextAlbum" + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ContextSchemaHandler.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ContextSchemaHandler.java deleted file mode 100644 index 3805e1e1c..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ContextSchemaHandler.java +++ /dev/null @@ -1,198 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling; - -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanContextSchema; -import org.onap.policy.apex.model.modelapi.ApexApiResult; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * This class handles commands on context schemas in Apex models. - */ -public class ContextSchemaHandler implements RestCommandHandler { - // Get a reference to the logger - private static final XLogger LOGGER = XLoggerFactory.getXLogger(ContextSchemaHandler.class); - - // Recurring string constants - private static final String OK = ": OK"; - private static final String NOT_OK = ": Not OK"; - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String jsonString) { - if (!RestCommandType.CONTEXT_SCHEMA.equals(commandType)) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - switch (command) { - case CREATE: - return createContextSchema(session, jsonString); - case UPDATE: - return updateContextSchema(session, jsonString); - default: - return getUnsupportedCommandResultMessage(session, commandType, command); - } - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String name, final String version) { - if (!RestCommandType.CONTEXT_SCHEMA.equals(commandType)) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - switch (command) { - case LIST: - return listContextSchemas(session, name, version); - case DELETE: - return deleteContextSchema(session, name, version); - case VALIDATE: - return validateContextSchemas(session, name, version); - default: - return getUnsupportedCommandResultMessage(session, commandType, command); - } - } - - /** - * Creates a context schema. - * - * @param session the session holding the Apex model - * @param jsonString the JSON string with the context schema parameters - * @return the result of the operation - */ - private ApexApiResult createContextSchema(final RestSession session, final String jsonString) { - LOGGER.entry(jsonString); - - session.editModel(); - - final BeanContextSchema jsonbean = RestUtils.getJsonParameters(jsonString, BeanContextSchema.class); - ApexApiResult result = session.getApexModelEdited().createContextSchema(jsonbean.getName(), - jsonbean.getVersion(), jsonbean.getSchemaFlavour(), jsonbean.getSchemaDefinition(), - jsonbean.getUuid(), jsonbean.getDescription()); - - if (result != null) { - session.finishSession(result.isOk()); - LOGGER.exit("ContextSchema/create" + (result.isOk() ? OK : NOT_OK)); - } - - return result; - } - - /** - * Update a context schema. - * - * @param session the session holding the Apex model - * @param jsonString the JSON string with the context schema parameters - * @return the result of the operation - */ - private ApexApiResult updateContextSchema(final RestSession session, final String jsonString) { - LOGGER.entry(jsonString); - - session.editModel(); - - final BeanContextSchema jsonbean = RestUtils.getJsonParameters(jsonString, BeanContextSchema.class); - - ApexApiResult result = session.getApexModelEdited().updateContextSchema(jsonbean.getName(), - jsonbean.getVersion(), jsonbean.getSchemaFlavour(), jsonbean.getSchemaDefinition(), - jsonbean.getUuid(), jsonbean.getDescription()); - - if (result != null) { - session.finishSession(result.isOk()); - LOGGER.exit("ContextSchema/Update" + (result.isOk() ? OK : NOT_OK)); - } - - return result; - } - - /** - * List context schemas. - * - * @param session the session holding the Apex model - * @param name the context schema name to operate on - * @param version the context schema version to operate on - * @return the result of the operation - */ - private ApexApiResult listContextSchemas(final RestSession session, final String name, final String version) { - LOGGER.entry(name, version); - - ApexApiResult result = session.getApexModel().listContextSchemas(blank2Null(name), blank2Null(version)); - - LOGGER.exit("ContextSchema/Get" + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } - - /** - * Delete a context schema. - * - * @param session the session holding the Apex model - * @param name the context schema name to operate on - * @param version the context schema version to operate on - * @return the result of the operation - */ - private ApexApiResult deleteContextSchema(final RestSession session, final String name, final String version) { - LOGGER.entry(name, version); - - session.editModel(); - - ApexApiResult result = session.getApexModelEdited().deleteContextSchema(blank2Null(name), blank2Null(version)); - - if (result != null) { - session.finishSession(result.isOk()); - LOGGER.exit("ContextSchema/Delete" + (result.isOk() ? OK : NOT_OK)); - } - - return result; - } - - /** - * Validate a context schema. - * - * @param session the session holding the Apex model - * @param name the context schema name to operate on - * @param version the context schema version to operate on - * @return the result of the operation - */ - private ApexApiResult validateContextSchemas(final RestSession session, final String name, final String version) { - LOGGER.entry(name, version); - - ApexApiResult result = session.getApexModel().validateContextSchemas(blank2Null(name), blank2Null(version)); - - LOGGER.exit("Validate/ContextSchema" + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/EventHandler.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/EventHandler.java deleted file mode 100644 index 60ebdd58d..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/EventHandler.java +++ /dev/null @@ -1,265 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling; - -import java.util.Map.Entry; -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanEvent; -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanField; -import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInfo; -import org.onap.policy.apex.model.eventmodel.concepts.AxEvent; -import org.onap.policy.apex.model.modelapi.ApexApiResult; -import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * This class handles commands on events in Apex models. - */ -public class EventHandler implements RestCommandHandler { - // Get a reference to the logger - private static final XLogger LOGGER = XLoggerFactory.getXLogger(EventHandler.class); - - // Recurring string constants - private static final String OK = ": OK"; - private static final String NOT_OK = ": Not OK"; - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String jsonString) { - if (!RestCommandType.EVENT.equals(commandType)) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - switch (command) { - case CREATE: - return createEvent(session, jsonString); - case UPDATE: - return updateEvent(session, jsonString); - default: - return getUnsupportedCommandResultMessage(session, commandType, command); - } - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String name, final String version) { - if (!RestCommandType.EVENT.equals(commandType)) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - switch (command) { - case LIST: - return listEvents(session, name, version); - case DELETE: - return deleteEvent(session, name, version); - case VALIDATE: - return validateEvent(session, name, version); - default: - return getUnsupportedCommandResultMessage(session, commandType, command); - } - } - - /** - * Creates an event with the information in the JSON string passed. - * - * @param session the Apex model editing session - * @param jsonString the JSON string to be parsed. See {@linkplain BeanEvent} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult createEvent(final RestSession session, final String jsonString) { - LOGGER.entry(jsonString); - - final BeanEvent jsonbean = RestUtils.getJsonParameters(jsonString, BeanEvent.class); - - session.editModel(); - - ApexApiResult result = session.getApexModelEdited().createEvent(jsonbean.getName(), jsonbean.getVersion(), - jsonbean.getNameSpace(), jsonbean.getSource(), jsonbean.getTarget(), jsonbean.getUuid(), - jsonbean.getDescription()); - - if (result.isOk()) { - result = createEventParameters(session, jsonbean); - } - - session.finishSession(result.isOk()); - - LOGGER.exit("Event/Create" + (result.isOk() ? OK : NOT_OK)); - return result; - } - - /** - * Create the parameters on an event. - * - * @param session the Apex editor session - * @param jsonbean the JSON bean holding the parameters - * @return result the result of the parameter creation operation - */ - private ApexApiResult createEventParameters(final RestSession session, final BeanEvent jsonbean) { - ApexApiResult result = new ApexApiResult(); - - if (jsonbean.getParameters() == null || jsonbean.getParameters().isEmpty()) { - return result; - } - - for (final Entry parameterEntry : jsonbean.getParameters().entrySet()) { - if (parameterEntry.getValue() == null) { - result.setResult(Result.FAILED); - result.addMessage("Null event parameter information for parameter \"" + parameterEntry.getKey() - + "\" in event " + jsonbean.getName() + ":" + jsonbean.getVersion() - + ". The event was created, but there was an error adding the event parameters." - + " The event has only been partially defined."); - continue; - } - - final ApexApiResult createParResult = session.getApexModelEdited().createEventPar(jsonbean.getName(), - jsonbean.getVersion(), parameterEntry.getKey(), parameterEntry.getValue().getName(), - parameterEntry.getValue().getVersion(), parameterEntry.getValue().getOptional()); - if (createParResult.isNok()) { - result.setResult(createParResult.getResult()); - result.addMessage("Failed to add event parameter information for parameter \"" + parameterEntry.getKey() - + "\" in event " + jsonbean.getName() + ":" + jsonbean.getVersion() - + ". The event was created, but there was an error adding the event parameters." - + " The event has only been partially defined."); - } - } - - return result; - } - - /** - * Update an event with the information in the JSON string passed. - * - * @param session the Apex model editing session - * @param jsonString the JSON string to be parsed. See {@linkplain BeanEvent} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult updateEvent(final RestSession session, final String jsonString) { - LOGGER.entry(jsonString); - - final BeanEvent jsonbean = RestUtils.getJsonParameters(jsonString, BeanEvent.class); - - if (blank2Null(jsonbean.getName()) == null || blank2Null(jsonbean.getVersion()) == null) { - LOGGER.exit("Event/Update" + NOT_OK); - return new ApexApiResult(Result.FAILED, "Null/Empty event name/version (\"" + jsonbean.getName() + ":" - + jsonbean.getVersion() + "\" passed to UpdateEvent"); - } - - session.editModel(); - - ApexApiResult result = session.getApexModelEdited().deleteEvent(blank2Null(jsonbean.getName()), - blank2Null(jsonbean.getVersion())); - - if (result.isOk()) { - result = session.getApexModelEdited().createEvent(jsonbean.getName(), jsonbean.getVersion(), - jsonbean.getNameSpace(), jsonbean.getSource(), jsonbean.getTarget(), jsonbean.getUuid(), - jsonbean.getDescription()); - - if (result.isOk() && jsonbean.getParameters() != null) { - result = createEventParameters(session, jsonbean); - } - } - - session.finishSession(result.isOk()); - - LOGGER.exit("Event/Update" + (result.isOk() ? OK : NOT_OK)); - return result; - } - - /** - * List events with the given key names/versions. If successful the result(s) will be available in the result - * messages. The returned value(s) will be similar to {@link AxEvent}, with merged {@linkplain AxKeyInfo} for the - * root object. - * - * @param session the Apex model editing session - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult listEvents(final RestSession session, final String name, final String version) { - LOGGER.entry(name, version); - - ApexApiResult result = session.getApexModel().listEvent(blank2Null(name), blank2Null(version)); - - LOGGER.exit("Event/Get" + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } - - /** - * Delete events with the given key names/versions. - * - * @param session the Apex model editing session - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult deleteEvent(final RestSession session, final String name, final String version) { - LOGGER.entry(name, version); - - session.editModel(); - - ApexApiResult result = session.getApexModelEdited().deleteEvent(blank2Null(name), blank2Null(version)); - - if (result != null) { - session.finishSession(result.isOk()); - LOGGER.exit("Event/Delete" + (result.isOk() ? OK : NOT_OK)); - } - - return result; - } - - /** - * Validate events with the given key names/versions. The result(s) will be available in the result messages. - * - * @param session the Apex model editing session - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult validateEvent(final RestSession session, final String name, final String version) { - LOGGER.entry(name, version); - - ApexApiResult result = session.getApexModel().validateEvent(blank2Null(name), blank2Null(version)); - - LOGGER.exit("Validate/Event" + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/KeyInfoHandler.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/KeyInfoHandler.java deleted file mode 100644 index ddf1db35d..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/KeyInfoHandler.java +++ /dev/null @@ -1,71 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling; - -import org.onap.policy.apex.model.modelapi.ApexApiResult; - -/** - * This class handles commands on key information in Apex models. - */ -public class KeyInfoHandler implements RestCommandHandler { - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String jsonString) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String name, final String version) { - - if (RestCommandType.KEY_INFO.equals(commandType) && RestCommand.LIST.equals(command)) { - return listKeyInformation(session, name, version); - } else { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - } - - /** - * Get the key information for a concept with the given name and version. - * @param session the editor session containing the Apex model - * @param name the name for the search - * @param version the version for the search - * @return the key information - */ - private ApexApiResult listKeyInformation(final RestSession session, final String name, final String version) { - return session.getApexModel().listKeyInformation(blank2Null(name), blank2Null(version)); - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ModelHandler.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ModelHandler.java deleted file mode 100644 index 49163ab84..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/ModelHandler.java +++ /dev/null @@ -1,453 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling; - -import com.google.gson.Gson; -import com.google.gson.GsonBuilder; -import com.google.gson.JsonObject; -import java.util.ArrayList; -import java.util.List; -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanModel; -import org.onap.policy.apex.model.basicmodel.concepts.AxKey; -import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInfo; -import org.onap.policy.apex.model.modelapi.ApexApiResult; -import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; -import org.onap.policy.apex.model.policymodel.concepts.AxPolicyModel; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * This class handles commands on Apex models. - */ -public class ModelHandler implements RestCommandHandler { - - // Get a reference to the logger - private static final XLogger LOGGER = XLoggerFactory.getXLogger(ModelHandler.class); - - // Recurring string constants - private static final String OK = ": OK"; - private static final String NOT_OK = ": Not OK"; - private static final String KEY = "key"; - private static final String NAME = "name"; - private static final String VERSION = "version"; - private static final String UUID = "uuid"; - private static final String DESCRIPTION = "description"; - private static final String POLICY_KEY = "policyKey"; - private static final String APEX_KEY_INFO = "apexKeyInfo"; - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command) { - if (!RestCommandType.MODEL.equals(commandType)) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - switch (command) { - case ANALYSE: - return analyse(session); - case VALIDATE: - return validate(session); - case GET_KEY: - return getModelKey(session); - case LIST: - return listModel(session); - case DOWNLOAD: - return downloadModel(session); - case DELETE: - return deleteModel(session); - default: - return getUnsupportedCommandResultMessage(session, commandType, command); - } - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String jsonString) { - if (!RestCommandType.MODEL.equals(commandType)) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - switch (command) { - case LOAD: - return loadFromString(session, jsonString); - case CREATE: - return createModel(session, jsonString); - case UPDATE: - return updateModel(session, jsonString); - default: - return getUnsupportedCommandResultMessage(session, commandType, command); - } - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String name, final String version) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - /** - * Load the model from a JSON string for this session. - * - * @param session the Apex model editing session - * @param jsonString the JSON string to be parsed. The returned value(s) will be similar to {@link AxPolicyModel}, - * with merged {@linkplain AxKeyInfo} for the root object. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult loadFromString(final RestSession session, final String jsonString) { - LOGGER.entry(jsonString); - - session.editModel(); - - ApexApiResult result = session.getApexModelEdited().loadFromString(jsonString); - - if (result != null) { - session.finishSession(result.isOk()); - LOGGER.exit("Model/Load" + (result.isOk() ? OK : NOT_OK)); - } - - return result; - } - - /** - * Analyse the model and return analysis results. If successful the analysis results will be available in the - * messages in the result. - * - * @param session the Apex model editing session - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult analyse(final RestSession session) { - LOGGER.entry(); - - ApexApiResult result = session.getApexModel().analyse(); - - LOGGER.exit("Model/Analyse" + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } - - /** - * Validate the model and return validation results. If successful the validation results will be available in the - * messages in the result. - * - * @param session the Apex model editing session - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult validate(final RestSession session) { - LOGGER.entry(); - - ApexApiResult result = session.getApexModel().validate(); - - LOGGER.exit("Model/Validate" + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } - - /** - * Creates the new model model for this session. - * - * @param session the Apex model editing session - * @param jsonString the JSON string to be parsed containing the new model. See {@linkplain BeanModel} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult createModel(final RestSession session, final String jsonString) { - LOGGER.entry(jsonString); - - final BeanModel jsonbean = RestUtils.getJsonParameters(jsonString, BeanModel.class); - - session.editModel(); - - ApexApiResult result = session.getApexModelEdited().createModel(jsonbean.getName(), jsonbean.getVersion(), - jsonbean.getUuid(), jsonbean.getDescription()); - - if (result != null) { - session.finishSession(result.isOk()); - LOGGER.exit("Model/Create" + (result.isOk() ? OK : NOT_OK)); - } - return result; - } - - /** - * Update the model for this session. - * - * @param session the Apex model editing session - * @param jsonString the JSON string to be parsed containing the updated model. See {@linkplain BeanModel} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult updateModel(final RestSession session, final String jsonString) { - LOGGER.entry(jsonString); - - final BeanModel jsonbean = RestUtils.getJsonParameters(jsonString, BeanModel.class); - - session.editModel(); - - ApexApiResult result = session.getApexModelEdited().updateModel(jsonbean.getName(), jsonbean.getVersion(), - jsonbean.getUuid(), jsonbean.getDescription()); - - if (result != null) { - session.finishSession(result.isOk()); - LOGGER.exit("Model/Update" + (result.isOk() ? OK : NOT_OK)); - } - - return result; - } - - /** - * Gets the key for the model for this session. If successful the model key will be available in the first message - * in the result. See {@linkplain AxKey} - * - * @param session the Apex model editing session - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult getModelKey(final RestSession session) { - LOGGER.entry(); - - ApexApiResult result = session.getApexModel().getModelKey(); - - LOGGER.exit("Model/GetKey" + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } - - /** - * Retrieve the model for this session. If successful the model will be available in the first message in the - * result. The returned value will be similar to a {@link AxPolicyModel}, with merged {@linkplain AxKeyInfo} for the - * root object. - * - * @param session the Apex model editing session - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult listModel(final RestSession session) { - LOGGER.entry(); - - ApexApiResult result = session.getApexModel().listModel(); - - if (result != null) { - result = addKeyInfo2Messages(session, result); - LOGGER.exit("Model/Get" + (result.isOk() ? OK : NOT_OK)); - } - return result; - } - - /** - * Download the model for this session as a String. - * - * @param session the Apex model editing session - * @return the model represented as a JSON string. See {@linkplain AxPolicyModel} - */ - private ApexApiResult downloadModel(final RestSession session) { - LOGGER.entry(); - - ApexApiResult result = session.getApexModel().listModel(); - - LOGGER.exit("Model/Download" + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } - - /** - * Delete the model for this session. - * - * @param session the Apex model editing session - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult deleteModel(final RestSession session) { - LOGGER.entry(); - - session.editModel(); - - ApexApiResult result = session.getApexModel().deleteModel(); - - if (result != null) { - session.finishSession(result.isOk()); - LOGGER.exit("Model/Delete" + (result.isOk() ? OK : NOT_OK)); - } - - return result; - } - - /** - * The json strings representing the objects listed, stored in result.messages[], does not contain the - * AxKeyInformation for that object. This utility method retrieves the AxKeyInfo for each object and adds it to the - * json for the object. - * - * @param session the Apex model editing session - * @param incomingResult The list result, containing JSON representations of objects stored in its "messages" array - * @return The list result, containing JSON augmented representations of objects stored in its "messages" array - */ - private ApexApiResult addKeyInfo2Messages(final RestSession session, final ApexApiResult incomingResult) { - final ApexApiResult result = new ApexApiResult(incomingResult.getResult()); - result.setMessages(incomingResult.getMessages()); - - final List messages = incomingResult.getMessages(); - final List augmentedMessages = new ArrayList<>(messages.size()); - - for (final String message : messages) { - augmentedMessages.add(addKeyInfo2Message(session, message)); - } - result.setMessages(augmentedMessages); - - if (messages.size() != augmentedMessages.size()) { - result.setResult(Result.OTHER_ERROR); - result.addMessage("Failed to add KeyInfo to all results. Results are not complete"); - } - - return result; - } - - /** - * Augment a message with key information. - * - * @param session the Apex model editing session - * @param message The message to augment - * @return the augmented message - */ - private String addKeyInfo2Message(final RestSession session, final String message) { - final Gson gson = new GsonBuilder().serializeNulls().enableComplexMapKeySerialization().create(); - - JsonObject jsonObject = gson.fromJson(message, JsonObject.class); - if (jsonObject == null) { - return message; - } - - String name = readFieldFromJsonObject(jsonObject, NAME, null); - String version = readFieldFromJsonObject(jsonObject, VERSION, null); - - if (name == null && version == null) { - JsonObject newJsonObject = getSubJsonObject(jsonObject); - - if (newJsonObject != null) { - jsonObject = newJsonObject; - name = readFieldFromJsonObject(jsonObject, NAME, name); - version = readFieldFromJsonObject(jsonObject, VERSION, version); - } - } - - if (name == null || version == null || !setUuidAndDescription(session, jsonObject, name, version)) { - jsonObject.addProperty(UUID, (String) null); - jsonObject.addProperty(DESCRIPTION, (String) null); - } - - return gson.toJson(jsonObject); - } - - /** - * Get an embedded JSON object for the given JSON object. - * - * @param jsonObject the input JSON object - * @return the embedded JSON object - */ - private JsonObject getSubJsonObject(JsonObject jsonObject) { - if (jsonObject.entrySet() != null && !jsonObject.entrySet().isEmpty()) { - return (JsonObject) jsonObject.entrySet().iterator().next().getValue(); - } else { - return null; - } - } - - /** - * Condition a field so its key information can be looked up. - * - * @param jsonObject the object to query - * @param fieldTag the tag of the field to condition - * @param fieldValue the value of the field to condition - * @return field read from the json - */ - private String readFieldFromJsonObject(final JsonObject jsonObject, final String fieldTag, final String value) { - String lookedupValue = value; - - if (jsonObject != null && jsonObject.get(KEY) != null && jsonObject.get(KEY).isJsonObject() - && jsonObject.getAsJsonObject(KEY).get(fieldTag) != null) { - lookedupValue = jsonObject.getAsJsonObject(KEY).get(fieldTag).getAsString(); - } else if (jsonObject != null && jsonObject.get(POLICY_KEY) != null && jsonObject.get(POLICY_KEY).isJsonObject() - && jsonObject.getAsJsonObject(POLICY_KEY).get(fieldTag) != null) { - lookedupValue = jsonObject.getAsJsonObject(POLICY_KEY).get(fieldTag).getAsString(); - } - return lookedupValue; - } - - /** - * Look up the UUID and description in the key information for a concept. - * - * @param session the Apex editor session - * @param jsonObject the JSON object to place the fields in - * @param name the concept name to look up - * @param version the concept version to look up - */ - private boolean setUuidAndDescription(final RestSession session, JsonObject jsonObject, String name, - String version) { - // Look up the key information for the name and version - JsonObject keyInfoJsonObject = lookupKeyInfo(session, name, version); - if (keyInfoJsonObject == null || keyInfoJsonObject.get(APEX_KEY_INFO) != null) { - return false; - } - - if (keyInfoJsonObject.get(APEX_KEY_INFO).getAsJsonObject().get("UUID") != null) { - jsonObject.addProperty(UUID, - keyInfoJsonObject.get(APEX_KEY_INFO).getAsJsonObject().get("UUID").getAsString()); - } else { - jsonObject.addProperty(UUID, (String) null); - } - - if (keyInfoJsonObject.get(APEX_KEY_INFO).getAsJsonObject().get(DESCRIPTION) != null) { - jsonObject.addProperty(DESCRIPTION, - keyInfoJsonObject.get(APEX_KEY_INFO).getAsJsonObject().get(DESCRIPTION).getAsString()); - } else { - jsonObject.addProperty(DESCRIPTION, (String) null); - } - - return true; - } - - /** - * Look up the key information for the given concept name and value. - * - * @param session the Apex editor session - * @param name the concept name to look up - * @param version the concept version to look up - * @return a JSON version of the concept key information - */ - private JsonObject lookupKeyInfo(final RestSession session, final String name, final String version) { - final ApexApiResult keyInfoResult = session.getApexModel().listKeyInformation(name, version); - final List keyInfoMessages = keyInfoResult.getMessages(); - - if (keyInfoResult.isNok() || keyInfoMessages == null || keyInfoMessages.isEmpty()) { - return null; - } - - final Gson gson = new GsonBuilder().serializeNulls().enableComplexMapKeySerialization().create(); - final String keyInfoJson = keyInfoMessages.get(0); - return gson.fromJson(keyInfoJson, JsonObject.class); - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/PolicyHandler.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/PolicyHandler.java deleted file mode 100644 index 994d4e6ac..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/PolicyHandler.java +++ /dev/null @@ -1,580 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling; - -import java.util.Map; -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanKeyRef; -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanLogic; -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanPolicy; -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanState; -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanStateOutput; -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanStateTaskRef; -import org.onap.policy.apex.model.basicmodel.concepts.AxKey; -import org.onap.policy.apex.model.modelapi.ApexApiResult; -import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; -import org.onap.policy.apex.model.policymodel.concepts.AxPolicy; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * This class handles commands on policies in Apex models. - */ -public class PolicyHandler implements RestCommandHandler { - // Get a reference to the logger - private static final XLogger LOGGER = XLoggerFactory.getXLogger(PolicyHandler.class); - - // Recurring string constants - private static final String OK = ": OK"; - private static final String NOT_OK = ": Not OK"; - private static final String POLICY_WAS_CREATED = "\". The policy was created, "; - private static final String POLICY_STATE_CREATED = "\". The policy and state were created, "; - private static final String POLICY_PARTIALLY_DEFINED = " The policy has only been partially defined."; - private static final String FOR_POLICY = "\" for policy \""; - private static final String IN_STATE = "\" in state \""; - private static final String POLICY_CREATED_STATE_ERROR = POLICY_WAS_CREATED - + "but there was an error adding the state."; - private static final String POLICY_STATE_CREATED_OTHER_ERROR = POLICY_STATE_CREATED - + "but there was an error adding the"; - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String jsonString) { - - if (!RestCommandType.POLICY.equals(commandType)) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - switch (command) { - case CREATE: - return createPolicy(session, jsonString); - case UPDATE: - return updatePolicy(session, jsonString); - default: - return getUnsupportedCommandResultMessage(session, commandType, command); - } - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String name, final String version) { - if (!RestCommandType.POLICY.equals(commandType)) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - switch (command) { - case LIST: - return listPolicies(session, name, version); - case DELETE: - return deletePolicy(session, name, version); - default: - return getUnsupportedCommandResultMessage(session, commandType, command); - } - } - - /** - * Creates a policy with the information in the JSON string passed. - * - * @param session the Apex model editing session - * @param jsonString the JSON string to be parsed See {@linkplain BeanPolicy} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - public ApexApiResult createPolicy(final RestSession session, final String jsonString) { - LOGGER.entry(jsonString); - - final BeanPolicy jsonbean = RestUtils.getJsonParameters(jsonString, BeanPolicy.class); - - session.editModel(); - - ApexApiResult result = session.getApexModelEdited().createPolicy(jsonbean.getName(), jsonbean.getVersion(), - jsonbean.getTemplate(), jsonbean.getFirstState(), jsonbean.getUuid(), - jsonbean.getDescription()); - - if (result.isOk()) { - result = createPolicyContent(session, jsonbean); - } - - session.finishSession(result.isOk()); - - LOGGER.exit("Policy/Create" + (result.isOk() ? OK : NOT_OK)); - return result; - } - - /** - * Create the content of the policy. - * - * @param session the Apex model editing session - * @param jsonString the JSON string to be parsed See {@linkplain BeanPolicy} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult createPolicyContent(RestSession session, BeanPolicy jsonbean) { - ApexApiResult result = new ApexApiResult(); - - if (jsonbean.getStates() == null || jsonbean.getStates().isEmpty()) { - result.setResult(Result.FAILED); - result.addMessage("Null or empty state map; no states defined for policy \"" + jsonbean.getName() + ":" - + jsonbean.getVersion() - + "\". The policy was created, but there was an error adding states." - + POLICY_PARTIALLY_DEFINED); - return result; - } - - // States reference each other so all states must be created before they are populated - for (final Map.Entry stateEntry : jsonbean.getStates().entrySet()) { - ApexApiResult stateCreateResult = createState(session, jsonbean.getName(), jsonbean.getVersion(), - stateEntry.getKey(), stateEntry.getValue()); - - if (stateCreateResult.isNok()) { - result.setResult(stateCreateResult.getResult()); - result.addMessage(stateCreateResult.getMessage()); - } - } - - // Bale out if the state creation did not work - if (result.isNok()) { - return result; - } - - // Now create the content of each state - for (final Map.Entry stateEntry : jsonbean.getStates().entrySet()) { - ApexApiResult stateContentCreateResult = createStateContent(session, jsonbean.getName(), - jsonbean.getVersion(), stateEntry.getKey(), stateEntry.getValue()); - - if (stateContentCreateResult.isNok()) { - result.setResult(stateContentCreateResult.getResult()); - result.addMessage(stateContentCreateResult.getMessage()); - } - } - - return result; - } - - /** - * Create a state on the policy. - * - * @param session the Apex model editing session - * @param policyName the policy name - * @param policVersion the policy version - * @param stateName the name of the state - * @param stateBean the information on the state to create - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult createState(final RestSession session, final String policyName, final String policyVersion, - final String stateName, final BeanState stateBean) { - - if (stateBean == null) { - return new ApexApiResult(Result.FAILED, - "Null or invalid state information for state \"" + stateName + FOR_POLICY + policyName + ":" - + policyVersion + POLICY_CREATED_STATE_ERROR + POLICY_PARTIALLY_DEFINED); - } - - if (stateBean.getTrigger() == null) { - return new ApexApiResult(Result.FAILED, - "Null or invalid state trigger for state \"" + stateName + FOR_POLICY + policyName + ":" - + policyVersion + POLICY_CREATED_STATE_ERROR + POLICY_PARTIALLY_DEFINED); - } - - if (stateBean.getDefaultTask() == null) { - return new ApexApiResult(Result.FAILED, "Null or invalid default task for state \"" + stateName + FOR_POLICY - + policyName + ":" + policyVersion + POLICY_CREATED_STATE_ERROR + POLICY_PARTIALLY_DEFINED); - } - - return session.getApexModelEdited().createPolicyState(policyName, policyVersion, stateName, - stateBean.getTrigger().getName(), stateBean.getTrigger().getVersion(), - stateBean.getDefaultTask().getName(), stateBean.getDefaultTask().getVersion()); - } - - /** - * Create the content of a state on the policy. - * - * @param session the Apex model editing session - * @param policyName the policy name - * @param policVersion the policy version - * @param stateName the name of the state - * @param stateBean the information on the state to create - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult createStateContent(final RestSession session, final String policyName, - final String policyVersion, final String stateName, final BeanState stateBean) { - - ApexApiResult ret = createStateTaskSelectionLogic(session, policyName, policyVersion, stateName, stateBean); - - if (ret.isOk()) { - ret = createStateContextReferences(session, policyName, policyVersion, stateName, stateBean); - } - - if (ret.isOk()) { - ret = createStateFinalizers(session, policyName, policyVersion, stateName, stateBean); - } - - if (ret.isOk()) { - ret = createStateOutputs(session, policyName, policyVersion, stateName, stateBean); - } - - if (ret.isOk()) { - ret = createStateTaskReferences(session, policyName, policyVersion, stateName, stateBean); - } - - return ret; - } - - /** - * Create the task selection logic for the state. - * - * @param session the Apex model editing session - * @param policyName the policy name - * @param policVersion the policy version - * @param stateName the name of the state - * @param stateBean the information on the state to create - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult createStateTaskSelectionLogic(final RestSession session, final String policyName, - final String policyVersion, final String stateName, final BeanState stateBean) { - - final BeanLogic tsl = stateBean.getTaskSelectionLogic(); - if (tsl == null) { - return new ApexApiResult(); - } - - ApexApiResult result = session.getApexModelEdited().createPolicyStateTaskSelectionLogic(policyName, - policyVersion, stateName, tsl.getLogicFlavour(), tsl.getLogic()); - - if (result.isNok()) { - result.addMessage("Failed to add task selection logic for state \"" + stateName + "\" for" + " policy \"" - + policyName + ":" + policyVersion + POLICY_WAS_CREATED - + "but there was an error adding the task selection logic " - + "for the state. The policy has only been partially defined."); - } - return result; - } - - /** - * Create the context references for the state. - * - * @param session the Apex model editing session - * @param policyName the policy name - * @param policVersion the policy version - * @param stateName the name of the state - * @param stateBean the information on the state to create - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult createStateContextReferences(final RestSession session, final String policyName, - final String policyVersion, final String stateName, final BeanState stateBean) { - - ApexApiResult result = new ApexApiResult(); - - final BeanKeyRef[] contextReferences = stateBean.getContexts(); - if (contextReferences == null || contextReferences.length == 0) { - return result; - } - - for (final BeanKeyRef contextReference : contextReferences) { - if (contextReference == null) { - result.setResult(Result.FAILED); - result.addMessage("Null or invalid context reference \"" + contextReference + "\" for" + " state \"" - + stateName + FOR_POLICY + policyName + ":" + policyVersion - + "\". The policy was created, but there was an error adding the context " - + "reference for the state. The policy has only been partially defined."); - continue; - } - - ApexApiResult contextRefResult = session.getApexModelEdited().createPolicyStateContextRef(policyName, - policyVersion, stateName, contextReference.getName(), contextReference.getVersion()); - - if (contextRefResult.isNok()) { - result.setResult(contextRefResult.getResult()); - result.addMessage("Failed to add context reference \"" + contextReference + "\" for state \"" - + stateName + FOR_POLICY + policyName + ":" + policyVersion + POLICY_WAS_CREATED - + "but there was an error adding the context reference " - + "for the state. The policy has only been partially defined."); - } - } - - return result; - } - - /** - * Create the state finalizers for the state. - * - * @param session the Apex model editing session - * @param policyName the policy name - * @param policVersion the policy version - * @param stateName the name of the state - * @param stateBean the information on the state to create - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult createStateFinalizers(final RestSession session, final String policyName, - final String policyVersion, final String stateName, final BeanState stateBean) { - - ApexApiResult result = new ApexApiResult(); - - final Map finalizers = stateBean.getFinalizers(); - if (finalizers == null || finalizers.isEmpty()) { - return result; - } - - for (final Map.Entry finalizerEntry : finalizers.entrySet()) { - if (finalizerEntry.getKey() == null || finalizerEntry.getValue() == null) { - result.setResult(Result.FAILED); - result.addMessage("Null or invalid finalizer information for finalizer " + "named \"" - + finalizerEntry.getKey() + IN_STATE + stateName + FOR_POLICY + policyName + ":" - + policyVersion + POLICY_STATE_CREATED_OTHER_ERROR + " finalizer. The policy has only " - + "been partially defined."); - continue; - } - - ApexApiResult finalizerResult = session.getApexModelEdited().createPolicyStateFinalizerLogic(policyName, - policyVersion, stateName, finalizerEntry.getKey(), - finalizerEntry.getValue().getLogicFlavour(), finalizerEntry.getValue().getLogic()); - - if (finalizerResult.isNok()) { - result.setResult(finalizerResult.getResult()); - result.addMessage("Failed to add finalizer information for finalizer named \"" + finalizerEntry.getKey() - + "\" in" + " state \"" + stateName + FOR_POLICY + policyName + ":" + policyVersion - + POLICY_STATE_CREATED_OTHER_ERROR - + " finalizer. The policy has only been partially defined."); - } - } - - return result; - } - - /** - * Create the state outputs for the state. - * - * @param session the Apex model editing session - * @param policyName the policy name - * @param policVersion the policy version - * @param stateName the name of the state - * @param stateBean the information on the state to create - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult createStateOutputs(final RestSession session, final String policyName, - final String policyVersion, final String stateName, final BeanState stateBean) { - - ApexApiResult result = new ApexApiResult(); - - final Map stateOutputs = stateBean.getStateOutputs(); - if (stateOutputs == null || stateOutputs.isEmpty()) { - result.setResult(Result.FAILED); - result.addMessage("No state outputs have been defined in state \"" + stateName + FOR_POLICY + policyName - + ":" + policyVersion - + "\". The policy and state were created, but there was an error adding state" - + " outputs. The policy has only been partially defined."); - return result; - } - - for (final Map.Entry stateOutput : stateOutputs.entrySet()) { - final String outputName = stateOutput.getKey(); - final BeanStateOutput output = stateOutput.getValue(); - - if (outputName == null || output == null || output.getEvent() == null) { - result.setResult(Result.FAILED); - result.addMessage("Null or invalid output information for output named \"" + outputName + IN_STATE - + stateName + FOR_POLICY + policyName + ":" + policyVersion - + POLICY_STATE_CREATED_OTHER_ERROR - + " output. The policy has only been partially defined."); - continue; - } - - ApexApiResult outputResult = session.getApexModelEdited().createPolicyStateOutput(policyName, policyVersion, - stateName, outputName, output.getEvent().getName(), output.getEvent().getVersion(), - output.getNextState()); - - if (outputResult.isNok()) { - result.setResult(outputResult.getResult()); - result.addMessage("Failed to add output information for output named \"" + outputName + IN_STATE - + stateName + FOR_POLICY + policyName + ":" + policyVersion + POLICY_STATE_CREATED - + "but there was an error adding the output." + POLICY_PARTIALLY_DEFINED); - } - } - - return result; - } - - /** - * Create the task references for the state. - * - * @param session the Apex model editing session - * @param policyName the policy name - * @param policVersion the policy version - * @param stateName the name of the state - * @param stateBean the information on the state to create - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult createStateTaskReferences(final RestSession session, final String policyName, - final String policyVersion, final String stateName, final BeanState stateBean) { - - ApexApiResult result = new ApexApiResult(); - - final Map taskMap = stateBean.getTasks(); - if (taskMap == null || taskMap.isEmpty()) { - result.setResult(Result.FAILED); - result.addMessage("No tasks have been defined in state \"" + stateName + FOR_POLICY + policyName + ":" - + policyVersion - + "\". The policy and state were created, but there was an error adding tasks." - + POLICY_PARTIALLY_DEFINED); - return result; - } - - for (final Map.Entry taskEntry : taskMap.entrySet()) { - final String taskLocalName = taskEntry.getKey(); - final BeanStateTaskRef taskReference = taskEntry.getValue(); - - if (taskLocalName == null || taskReference == null || taskReference.getTask() == null) { - result.setResult(Result.FAILED); - result.addMessage("Null or invalid task information for task named \"" + taskLocalName + IN_STATE - + stateName + "\" for for policy \"" + policyName + ":" + policyVersion - + "\". The policy and state were created, but there was an error adding the " - + "task. The policy has only been partially defined."); - continue; - } - - ApexApiResult taskRefResult = session.getApexModelEdited().createPolicyStateTaskRef(policyName, - policyVersion, stateName, taskLocalName, taskReference.getTask().getName(), - taskReference.getTask().getVersion(), taskReference.getOutputType(), - taskReference.getOutputName()); - - if (taskRefResult.isNok()) { - result.setResult(taskRefResult.getResult()); - result.addMessage("Failed to add task reference \"" + taskEntry + "\" for state \"" + stateName - + FOR_POLICY + policyName + ":" + policyVersion + POLICY_WAS_CREATED - + "but there was an error adding the task reference for" - + " the state. The policy has only been partially defined."); - } - } - - return result; - } - - /** - * Update a policy with the information in the JSON string passed. - * - * @param session the Apex model editing session - * @param jsonString the JSON string to be parsed. See {@linkplain BeanPolicy} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult updatePolicy(final RestSession session, final String jsonString) { - - LOGGER.entry(jsonString); - - final BeanPolicy jsonbean = RestUtils.getJsonParameters(jsonString, BeanPolicy.class); - - if (blank2Null(jsonbean.getName()) == null || blank2Null(jsonbean.getVersion()) == null) { - LOGGER.exit("Task/Update" + NOT_OK); - return new ApexApiResult(Result.FAILED, "Null/Empty Policy name/version (\"" + jsonbean.getName() + ":" - + jsonbean.getVersion() + "\" passed to UpdatePolicy"); - } - - session.editModel(); - - ApexApiResult result = session.getApexModelEdited().deletePolicy(jsonbean.getName(), jsonbean.getVersion()); - - if (result.isOk()) { - result = session.getApexModelEdited().createPolicy(jsonbean.getName(), jsonbean.getVersion(), - jsonbean.getTemplate(), jsonbean.getFirstState(), jsonbean.getUuid(), - jsonbean.getDescription()); - - if (result.isOk()) { - result = createPolicyContent(session, jsonbean); - } - } - - session.finishSession(result.isOk()); - - LOGGER.exit("Policy/Update" + (result.isOk() ? OK : NOT_OK)); - return result; - - } - - /** - * List policies with the given key names/versions. If successful the result(s) will be available in the result - * messages. The returned value(s) will be similar to {@link AxPolicy}, with merged {@linkplain AxKey Info} for the - * root object. - * - * @param session the Apex model editing session - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult listPolicies(final RestSession session, final String name, final String version) { - LOGGER.entry(name, version); - - ApexApiResult result = session.getApexModel().listPolicy(blank2Null(name), blank2Null(version)); - - LOGGER.exit("Policy/Get" + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } - - /** - * Delete policies with the given key names/versions. - * - * @param session the Apex model editing session - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult deletePolicy(final RestSession session, final String name, final String version) { - LOGGER.entry(name, version); - - session.editModel(); - - // all input/output fields, parameters, logic, context references is "owned"/contained - // in the task, so - // deleting the task removes all of these - ApexApiResult result = session.getApexModelEdited().deletePolicy(blank2Null(name), blank2Null(version)); - - if (result != null) { - session.finishSession(result.isOk()); - LOGGER.exit("Policy/Delete" + (result.isOk() ? OK : NOT_OK)); - } - - return result; - } - -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestCommand.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestCommand.java deleted file mode 100644 index 7b1bc020d..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestCommand.java +++ /dev/null @@ -1,64 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling; - -/** - * This enum maps REST calls to the handlers that process them. - * - */ -public enum RestCommand { - /** - * Create the target. - */ - CREATE, - /** - * Update the target. - */ - UPDATE, - /** - * List the target. - */ - LIST, - /** - * Delete the target. - */ - DELETE, - /** - * Validate the target. - */ - VALIDATE, - /** - * Load the target. - */ - LOAD, - /** - * Analyse the target. - */ - ANALYSE, - /** - * Get the key of the currently loaded apex model. - */ - GET_KEY, - /** - * Download the currently loaded apex model. - */ - DOWNLOAD -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestCommandHandler.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestCommandHandler.java deleted file mode 100644 index 968a98572..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestCommandHandler.java +++ /dev/null @@ -1,101 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling; - -import org.onap.policy.apex.model.modelapi.ApexApiResult; -import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; - -/** - * This interface defines the methods that a REST handler must implement to handle REST editor commands. - * - */ -public interface RestCommandHandler { - - /** - * Process a REST command. - * - * @param session the Apex editor session - * @param commandType the type of REST command to execute - * @param command the REST command to execute - * @return the apex api result the result of the execution - */ - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command); - - /** - * Process a REST command. - * - * @param session the Apex editor session - * @param commandType the type of REST command to execute - * @param command the REST command to execute - * @param jsonString the json string to use to execute the command - * @return the apex api result the result of the execution - */ - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String jsonString); - - /** - * Process a REST command. - * - * @param session the Apex editor session - * @param commandType the type of REST command to execute - * @param command the REST command to execute - * @param name the concept name on which to execute - * @param version the concept version the version on which to execute - * @return the apex api result the result of the execution - */ - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String name, final String version); - - /** - * Get an unsupported command result message. - * - * @param session the Apex editor session - * @param commandType the type of REST command to execute - * @param command the REST command to execute - * @return the apex api result the result of the execution - */ - public default ApexApiResult getUnsupportedCommandResultMessage(final RestSession session, - final RestCommandType commandType, final RestCommand command) { - return new ApexApiResult(Result.FAILED, "session " + session.getSessionId() + ", command type " + commandType - + ", command" + command + " invalid"); - } - - /** - * Convert blank incoming fields to nulls. - * - * @param incomingField the field to check - * @return null if the field is blank, otherwise, the field trimmed - */ - public default String blank2Null(final String incomingField) { - if (incomingField == null) { - return null; - } - - final String trimmedField = incomingField.trim(); - - if (trimmedField.isEmpty()) { - return null; - } else { - return trimmedField; - } - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestCommandType.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestCommandType.java deleted file mode 100644 index c546cb02a..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestCommandType.java +++ /dev/null @@ -1,56 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling; - -/** - * This enum maps REST calls to the handlers that process them. - * - */ -public enum RestCommandType { - /** - * Model commands. - */ - MODEL, - /** - * Key Information commands. - */ - KEY_INFO, - /** - * Context schema commands. - */ - CONTEXT_SCHEMA, - /** - * Context album commands. - */ - CONTEXT_ALBUM, - /** - * Event Commands. - */ - EVENT, - /** - * Task commands. - */ - TASK, - /** - * Policy commands. - */ - POLICY -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestSession.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestSession.java deleted file mode 100644 index 46d57fd01..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestSession.java +++ /dev/null @@ -1,124 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling; - -import org.onap.policy.apex.model.modelapi.ApexApiResult; -import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; -import org.onap.policy.apex.model.modelapi.ApexModel; -import org.onap.policy.apex.model.modelapi.ApexModelFactory; - -/** - * This class represents an ongoing editor session in the Apex editor and holds the information for the session. - * - */ -public class RestSession { - // The ID of the session - private int sessionId; - - // The Apex policy model of the session - private ApexModel apexModel; - - // The Apex policy model being edited - private ApexModel apexModelEdited; - - public RestSession(final int sessionId) { - this.sessionId = sessionId; - this.apexModel = new ApexModelFactory().createApexModel(null, true); - } - - /** - * Commence making changes to the Apex model. - * @return the result of the edit commencement operation - */ - public synchronized ApexApiResult editModel() { - if (apexModelEdited != null) { - return new ApexApiResult(Result.FAILED, "model is already being edited"); - } - - apexModelEdited = apexModel.clone(); - return new ApexApiResult(); - } - - /** - * Commit the changes to the Apex model. - * @return the result of the commit operation - */ - public synchronized ApexApiResult commitChanges() { - if (apexModelEdited == null) { - return new ApexApiResult(Result.FAILED, "model is not being edited"); - } - - apexModel = apexModelEdited; - apexModelEdited = null; - return new ApexApiResult(); - } - - /** - * Discard the changes to the Apex model. - * @return the result of the discard operation - */ - public synchronized ApexApiResult discardChanges() { - if (apexModelEdited == null) { - return new ApexApiResult(Result.FAILED, "model is not being edited"); - } - - apexModelEdited = null; - return new ApexApiResult(); - } - - - /** - * Finish a session by committing or discarding the changes. - * - * @param commitFlag if ture, commit changes otherwise discard them - */ - public void finishSession(boolean commitFlag) { - if (commitFlag) { - commitChanges(); - } else { - discardChanges(); - } - } - - /** - * Get the session ID of the session. - * @return the sessionId - */ - public int getSessionId() { - return sessionId; - } - - /** - * Get the Apex model of the session. - * @return the apexModel - */ - public ApexModel getApexModel() { - return apexModel; - } - - /** - * Get the edited Apex model of the session. - * @return the apexModel - */ - public ApexModel getApexModelEdited() { - return apexModelEdited; - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestSessionHandler.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestSessionHandler.java deleted file mode 100644 index c6cfca845..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestSessionHandler.java +++ /dev/null @@ -1,109 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling; - -import java.util.Map; -import java.util.TreeMap; -import java.util.concurrent.atomic.AtomicInteger; -import org.onap.policy.apex.model.modelapi.ApexApiResult; -import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * This class carries out session handling for Apex REST editor sessions. - */ -public class RestSessionHandler { - // Get a reference to the logger - private static final XLogger LOGGER = XLoggerFactory.getXLogger(RestSessionHandler.class); - - // The next session will have this number, stating at 0 - private AtomicInteger nextSessionId = new AtomicInteger(); - - // All REST editor sessions being handled by this handler - private final Map sessionMap = new TreeMap<>(); - - /** - * Create a new session. - * @param result the result of session creation - * @return the new session object - */ - public RestSession createSession(ApexApiResult result) { - LOGGER.entry("creating session"); - - // Create the session with the next session ID - final int newSessionId = nextSessionId.getAndIncrement(); - sessionMap.put(newSessionId, new RestSession(newSessionId)); - - result.addMessage(Integer.toString(newSessionId)); - - LOGGER.exit("created session with ID: " + newSessionId); - return sessionMap.get(newSessionId); - } - - /** - * Get a session for the given session ID. - * @param sessionId the session ID of the session we require - * @param result the result of the session get - * @return the session - */ - public RestSession getSession(final int sessionId, ApexApiResult result) { - LOGGER.entry("finding session: " + sessionId); - - // Check for valid session IDs - if (sessionId < 0) { - result.setResult(Result.FAILED); - result.addMessage("Session ID \"" + sessionId + "\" is negative"); - LOGGER.exit(result.getMessage()); - return null; - } - - // Check if session exits - if (!sessionMap.containsKey(sessionId)) { - result.setResult(Result.FAILED); - result.addMessage("A session with session ID \"" + sessionId + "\" does not exist"); - LOGGER.exit(result.getMessage()); - return null; - } - - RestSession session = sessionMap.get(sessionId); - - // Check if session is valid - if (session == null) { - result.setResult(Result.FAILED); - result.addMessage("The session with session ID \"" + sessionId + "\" is corrupt"); - LOGGER.exit(result.getMessage()); - return null; - } - - // Return the session - LOGGER.exit("session found: " + sessionId); - return session; - } - - /* - * This is a test method to set a corrupt session ID in the session map - * @param corruptSessionId the ID of the corrupt session - */ - protected void setCorruptSession(int corruptSessionId) { - sessionMap.put(corruptSessionId, null); - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestUtils.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestUtils.java deleted file mode 100644 index 55a07a30f..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/RestUtils.java +++ /dev/null @@ -1,181 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling; - -import com.google.gson.GsonBuilder; -import com.google.gson.JsonArray; -import com.google.gson.JsonElement; -import com.google.gson.JsonNull; -import com.google.gson.JsonObject; -import com.google.gson.JsonPrimitive; -import java.io.StringReader; -import java.util.Map; -import java.util.Map.Entry; -import java.util.TreeMap; -import javax.ws.rs.core.MediaType; -import javax.xml.bind.JAXBContext; -import javax.xml.bind.JAXBElement; -import javax.xml.bind.JAXBException; -import javax.xml.bind.Unmarshaller; -import javax.xml.transform.stream.StreamSource; -import org.eclipse.persistence.jaxb.MarshallerProperties; -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanBase; -import org.onap.policy.apex.model.basicmodel.concepts.AxConcept; - -/** - * Utilities for handling RESTful communication for Apex. - * - * @author Liam Fallon (liam.fallon@ericsson.com) - */ -public abstract class RestUtils { - // Regular expressions for checking input types - private static final String XML_INPUT_TYPE_REGEXP = "^\\s*<\\?xml.*>\\s*"; // starts with - /** - * starts with some kind of bracket [ or ( or {, then has something, then has bracket. - */ - private static final String JSON_INPUT_TYPE_REGEXP = "^\\s*[\\(\\{\\[][\\s+\\S]*[\\)\\}\\]]"; - - /** - * Constructor, block inheritance. - */ - private RestUtils() { - // Private constructor to block subclassing - } - - /** - * HTTP POST requests can't send nulls so we interpret blanks as nulls. - * - * @param parameter the parameter to convert from blank to null - * @return null if the parameter us blank, otherwise the original parameter - */ - private static String blank2null(final String parameter) { - return (parameter.length() == 0 ? null : parameter); - } - - /** - * HTTP POST requests can't send nulls so we interpret blanks as nulls. - * - * @param val the val - * @return null if the parameter us blank, otherwise the original parameter - */ - private static JsonElement blank2null(final JsonElement val) { - if (val == null) { - return JsonNull.INSTANCE; - } - if (val.isJsonPrimitive() && ((JsonPrimitive) val).isString()) { - final String v = ((JsonPrimitive) val).getAsString(); - if (v == null || "".equals(v)) { - return JsonNull.INSTANCE; - } - } - if (val.isJsonArray()) { - final JsonArray arr = val.getAsJsonArray(); - for (int i = 0; i < arr.size(); i++) { - arr.set(i, blank2null(arr.get(i))); - } - } - if (val.isJsonObject()) { - final JsonObject o = val.getAsJsonObject(); - for (final Entry e : o.entrySet()) { - e.setValue(blank2null(e.getValue())); - } - } - return val; - } - - /** - * Apex HTTP PUT requests send simple single level JSON strings, this method reads those strings into a map. - * - * @param jsonString the incoming JSON string - * @return a map of the JSON strings - */ - public static Map getJsonParameters(final String jsonString) { - final GsonBuilder gb = new GsonBuilder(); - gb.serializeNulls().enableComplexMapKeySerialization(); - final JsonObject jsonObject = gb.create().fromJson(jsonString, JsonObject.class); - - final Map jsonMap = new TreeMap<>(); - for (final Entry jsonEntry : jsonObject.entrySet()) { - jsonMap.put(jsonEntry.getKey(), (jsonEntry.getValue() == JsonNull.INSTANCE ? null - : blank2null(jsonEntry.getValue().getAsString()))); - } - return jsonMap; - } - - /** - * Apex HTTP PUT requests send simple single level JSON strings, this method reads those strings into a map. - * - * @param the generic type - * @param jsonString the incoming JSON string - * @param clz the clz - * @return a map of the JSON strings - */ - public static C getJsonParameters(final String jsonString, final Class clz) { - final GsonBuilder gb = new GsonBuilder(); - gb.serializeNulls().enableComplexMapKeySerialization(); - final JsonObject jsonObject = gb.create().fromJson(jsonString, JsonObject.class); - - for (final Entry jsonEntry : jsonObject.entrySet()) { - final JsonElement val = jsonEntry.getValue(); - jsonEntry.setValue(blank2null(val)); - } - return gb.create().fromJson(jsonObject, clz); - } - - /** - * Gets the concept from JSON. - * - * @param the generic type - * @param jsonString the json string - * @param clz the clz - * @return the concept from JSON - * @throws JAXBException the JAXB exception - */ - public static C getConceptFromJson(final String jsonString, final Class clz) - throws JAXBException { - Unmarshaller unmarshaller = null; - final JAXBContext jaxbContext = JAXBContext.newInstance(clz); - unmarshaller = jaxbContext.createUnmarshaller(); - if (jsonString.matches(JSON_INPUT_TYPE_REGEXP)) { - unmarshaller.setProperty(MarshallerProperties.MEDIA_TYPE, MediaType.APPLICATION_JSON); - unmarshaller.setProperty(MarshallerProperties.JSON_INCLUDE_ROOT, true); - } else if (jsonString.matches(XML_INPUT_TYPE_REGEXP)) { - unmarshaller.setProperty(MarshallerProperties.MEDIA_TYPE, MediaType.APPLICATION_XML); - } else { - return null; - } - final StreamSource source = new StreamSource(new StringReader(jsonString)); - final JAXBElement rootElement = unmarshaller.unmarshal(source, clz); - return rootElement.getValue(); - } - - /** - * Gets the JSO nfrom concept. - * - * @param object the object - * @return the JSO nfrom concept - */ - public static String getJsonfromConcept(final Object object) { - final GsonBuilder gb = new GsonBuilder(); - gb.serializeNulls().enableComplexMapKeySerialization(); - return gb.create().toJson(object); - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/TaskHandler.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/TaskHandler.java deleted file mode 100644 index 3854c6ffb..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/TaskHandler.java +++ /dev/null @@ -1,462 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling; - -import java.util.Map.Entry; -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanField; -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanKeyRef; -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanLogic; -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanTask; -import org.onap.policy.apex.client.editor.rest.handling.bean.BeanTaskParameter; -import org.onap.policy.apex.model.basicmodel.concepts.AxKeyInfo; -import org.onap.policy.apex.model.modelapi.ApexApiResult; -import org.onap.policy.apex.model.modelapi.ApexApiResult.Result; -import org.onap.policy.apex.model.policymodel.concepts.AxTask; -import org.slf4j.ext.XLogger; -import org.slf4j.ext.XLoggerFactory; - -/** - * This class handles commands on tasks in Apex models. - */ -public class TaskHandler implements RestCommandHandler { - // Get a reference to the logger - private static final XLogger LOGGER = XLoggerFactory.getXLogger(TaskHandler.class); - - // Recurring string constants - private static final String OK = ": OK"; - private static final String NOT_OK = ": Not OK"; - private static final String IN_TASK = "\" in task "; - private static final String TASK_PARTIALLY_DEFINED = " The task has only been partially defined."; - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String jsonString) { - if (!RestCommandType.TASK.equals(commandType)) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - switch (command) { - case CREATE: - return createTask(session, jsonString); - case UPDATE: - return updateTask(session, jsonString); - default: - return getUnsupportedCommandResultMessage(session, commandType, command); - } - } - - /** - * {@inheritDoc}. - */ - @Override - public ApexApiResult executeRestCommand(final RestSession session, final RestCommandType commandType, - final RestCommand command, final String name, final String version) { - if (!RestCommandType.TASK.equals(commandType)) { - return getUnsupportedCommandResultMessage(session, commandType, command); - } - - switch (command) { - case LIST: - return listTasks(session, name, version); - case DELETE: - return deleteTask(session, name, version); - case VALIDATE: - return validateTask(session, name, version); - default: - return getUnsupportedCommandResultMessage(session, commandType, command); - } - } - - /** - * Creates a task with the information in the JSON string passed. - * - * @param session the Apex model editing session - * @param jsonString the JSON string to be parsed. See {@linkplain BeanTask} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult createTask(final RestSession session, final String jsonString) { - LOGGER.entry(jsonString); - - final BeanTask jsonbean = RestUtils.getJsonParameters(jsonString, BeanTask.class); - - session.editModel(); - - ApexApiResult result = session.getApexModelEdited().createTask(jsonbean.getName(), jsonbean.getVersion(), - jsonbean.getUuid(), jsonbean.getDescription()); - - if (result.isOk()) { - result = createTaskContent(session, jsonbean); - } - - session.finishSession(result.isOk()); - - LOGGER.exit("Task/Create" + (result.isOk() ? OK : NOT_OK)); - return result; - } - - /** - * Create the content of the task. - * - * @param session the Apex model editing session - * @param jsonString the JSON string to be parsed. See {@linkplain BeanTask} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult createTaskContent(final RestSession session, final BeanTask jsonbean) { - ApexApiResult result = createInputFields(session, jsonbean); - - if (result.isOk()) { - result = createOutputFields(session, jsonbean); - } - - if (result.isOk()) { - result = createTaskLogic(session, jsonbean); - } - - if (result.isOk()) { - result = createTaskParameters(session, jsonbean); - } - - if (result.isOk()) { - result = createContextReferences(session, jsonbean); - } - return result; - } - - /** - * Create the input fields for the task. - * - * @param session the Apex model editing session - * @param jsonbean the ban containing the fields - * @return the result of the operation - */ - private ApexApiResult createInputFields(final RestSession session, final BeanTask jsonbean) { - ApexApiResult result = new ApexApiResult(); - - if (jsonbean.getInputFields() == null || jsonbean.getInputFields().isEmpty()) { - return result; - } - - for (final Entry fieldEntry : jsonbean.getInputFields().entrySet()) { - if (fieldEntry.getValue() == null) { - result.setResult(Result.FAILED); - result.addMessage("Null task input field information for field \"" + fieldEntry.getKey() + IN_TASK - + jsonbean.getName() + ":" + jsonbean.getVersion() - + ". The task was created, but there was an error adding the input fields." - + TASK_PARTIALLY_DEFINED); - continue; - } - - if (fieldEntry.getKey() == null || !fieldEntry.getKey().equals(fieldEntry.getValue().getLocalName())) { - result.setResult(Result.FAILED); - result.addMessage("Invalid task input field information for field \"" + fieldEntry.getKey() + IN_TASK - + jsonbean.getName() + ":" + jsonbean.getVersion() + ". The localName of the field (\"" - + fieldEntry.getValue().getLocalName() + "\") is not the same as the field name. " - + "The task was created, but there was an error adding the input fields." - + TASK_PARTIALLY_DEFINED); - } else { - ApexApiResult fieldCreationResult = session.getApexModelEdited().createTaskInputField( - jsonbean.getName(), jsonbean.getVersion(), fieldEntry.getKey(), - fieldEntry.getValue().getName(), fieldEntry.getValue().getVersion(), - fieldEntry.getValue().getOptional()); - - if (fieldCreationResult.isNok()) { - result.setResult(fieldCreationResult.getResult()); - result.addMessage("Failed to add task input field information for field \"" + fieldEntry.getKey() - + IN_TASK + jsonbean.getName() + ":" + jsonbean.getVersion() - + ". The task was created, but there was an error adding the input fields." - + TASK_PARTIALLY_DEFINED); - } - } - } - - return result; - } - - /** - * Create the output fields for the task. - * - * @param session the Apex model editing session - * @param jsonbean the ban containing the fields - * @return the result of the operation - */ - private ApexApiResult createOutputFields(final RestSession session, final BeanTask jsonbean) { - ApexApiResult result = new ApexApiResult(); - - if (jsonbean.getOutputFields() == null || jsonbean.getOutputFields().isEmpty()) { - return result; - } - - for (final Entry fieldEntry : jsonbean.getOutputFields().entrySet()) { - if (fieldEntry.getValue() == null) { - result.setResult(Result.FAILED); - result.addMessage("Null task output field information for field \"" + fieldEntry.getKey() + IN_TASK - + jsonbean.getName() + ":" + jsonbean.getVersion() - + ". The task was created, but there was an error adding the output fields." - + TASK_PARTIALLY_DEFINED); - continue; - } - - if (fieldEntry.getKey() == null || !fieldEntry.getKey().equals(fieldEntry.getValue().getLocalName())) { - result.setResult(Result.FAILED); - result.addMessage("Invalid task output field information for field \"" + fieldEntry.getKey() + IN_TASK - + jsonbean.getName() + ":" + jsonbean.getVersion() + ". The localName of the field (\"" - + fieldEntry.getValue().getLocalName() + "\") is not the same as the field name. " - + "The task was created, but there was an error adding the output fields." - + TASK_PARTIALLY_DEFINED); - } else { - ApexApiResult fieldCreationResult = session.getApexModelEdited().createTaskOutputField( - jsonbean.getName(), jsonbean.getVersion(), fieldEntry.getKey(), - fieldEntry.getValue().getName(), fieldEntry.getValue().getVersion(), - fieldEntry.getValue().getOptional()); - if (fieldCreationResult.isNok()) { - result.setResult(fieldCreationResult.getResult()); - result.addMessage("Failed to add task output field information for field \"" + fieldEntry.getKey() - + IN_TASK + jsonbean.getName() + ":" + jsonbean.getVersion() - + ". The task was created, but there was an error adding the output fields." - + TASK_PARTIALLY_DEFINED); - } - } - } - - return result; - } - - /** - * Create the task logic for the task. - * - * @param session the Apex model editing session - * @param jsonbean the bean containing the logic - * @return the result of the operation - */ - private ApexApiResult createTaskLogic(final RestSession session, final BeanTask jsonbean) { - ApexApiResult result = new ApexApiResult(); - - if (jsonbean.getTaskLogic() == null) { - return result; - } - - final BeanLogic logic = jsonbean.getTaskLogic(); - result = session.getApexModelEdited().createTaskLogic(jsonbean.getName(), jsonbean.getVersion(), - logic.getLogicFlavour(), logic.getLogic()); - - if (result.isNok()) { - result.addMessage("Failed to add task logic in task " + jsonbean.getName() + ":" + jsonbean.getVersion() - + ". The task was created, but there was an error adding the logic." - + TASK_PARTIALLY_DEFINED); - } - - return result; - } - - /** - * Create the task parameters for the task. - * - * @param session the Apex model editing session - * @param jsonbean the bean containing the parameters - * @return the result of the operation - */ - private ApexApiResult createTaskParameters(final RestSession session, final BeanTask jsonbean) { - ApexApiResult result = new ApexApiResult(); - - if (jsonbean.getParameters() == null || jsonbean.getParameters().isEmpty()) { - return result; - } - - for (final Entry parameterEntry : jsonbean.getParameters().entrySet()) { - if (parameterEntry.getKey() == null || parameterEntry.getValue() == null - || !parameterEntry.getKey().equals(parameterEntry.getValue().getParameterName())) { - result.setResult(Result.FAILED); - result.addMessage("Null or invalid task parameter information for parameter \"" - + parameterEntry.getKey() + IN_TASK + jsonbean.getName() + ":" + jsonbean.getVersion() - + ". The task was created, " + "but there was an error adding the parameters." - + TASK_PARTIALLY_DEFINED); - continue; - } - ApexApiResult createParResult = session.getApexModelEdited().createTaskParameter(jsonbean.getName(), - jsonbean.getVersion(), parameterEntry.getValue().getParameterName(), - parameterEntry.getValue().getDefaultValue()); - if (createParResult.isNok()) { - result.setResult(createParResult.getResult()); - result.addMessage("Failed to add task parameter \"" + parameterEntry.getKey() + IN_TASK - + jsonbean.getName() + ":" + jsonbean.getVersion() - + ". The task was created, but there was an error adding the parameters." - + TASK_PARTIALLY_DEFINED); - } - } - - return result; - } - - /** - * Create the context references for the task. - * - * @param session the Apex model editing session - * @param jsonbean the bean containing the context references - * @return the result of the operation - */ - private ApexApiResult createContextReferences(final RestSession session, final BeanTask jsonbean) { - ApexApiResult result = new ApexApiResult(); - - if (jsonbean.getContexts() == null || jsonbean.getContexts().length == 0) { - return result; - } - - for (final BeanKeyRef contextalbum : jsonbean.getContexts()) { - if (contextalbum.getName() == null || contextalbum.getVersion() == null) { - result.setResult(Result.FAILED); - result.addMessage("Null or invalid context album reference information in task " + jsonbean.getName() - + ":" + jsonbean.getVersion() - + ". The task was created, but there was an error adding the" - + " context album reference. " + "The task has only been partially defined."); - continue; - } - ApexApiResult createRefResult = session.getApexModelEdited().createTaskContextRef(jsonbean.getName(), - jsonbean.getVersion(), contextalbum.getName(), contextalbum.getVersion()); - if (createRefResult.isNok()) { - result.setResult(createRefResult.getResult()); - result.addMessage("Failed to add context album reference information in task " + jsonbean.getName() - + ":" + jsonbean.getVersion() - + ". The task was created, but there was an error adding the" - + " context album reference. " + "The task has only been partially defined."); - } - } - - return result; - } - - /** - * Update a task with the information in the JSON string passed. - * - * @param session the Apex model editing session - * @param jsonString the JSON string to be parsed. See {@linkplain BeanTask} - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult updateTask(final RestSession session, final String jsonString) { - LOGGER.entry(jsonString); - - final BeanTask jsonbean = RestUtils.getJsonParameters(jsonString, BeanTask.class); - - if (blank2Null(jsonbean.getName()) == null || blank2Null(jsonbean.getVersion()) == null) { - LOGGER.exit("Task/Update" + NOT_OK); - return new ApexApiResult(Result.FAILED, "Null/Empty task name/version (\"" + jsonbean.getName() + ":" - + jsonbean.getVersion() + "\" passed to UpdateTask"); - } - - session.editModel(); - - ApexApiResult result = session.getApexModelEdited().deleteTask(jsonbean.getName(), jsonbean.getVersion()); - - if (result.isOk()) { - result = session.getApexModelEdited().createTask(jsonbean.getName(), jsonbean.getVersion(), - jsonbean.getUuid(), jsonbean.getDescription()); - - if (result.isOk()) { - result = createTaskContent(session, jsonbean); - } - } - - session.finishSession(result.isOk()); - - LOGGER.exit("Task/Update" + (result.isOk() ? OK : NOT_OK)); - return result; - } - - /** - * List tasks with the given key names/versions. If successful the result(s) will be available in the result - * messages. The returned value(s) will be similar to {@link AxTask}, with merged {@linkplain AxKeyInfo} for the - * root object. - * - * @param session the Apex model editing session - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult listTasks(final RestSession session, final String name, final String version) { - LOGGER.entry(name, version); - - ApexApiResult result = session.getApexModel().listTask(blank2Null(name), blank2Null(version)); - - LOGGER.exit("Task/Get" + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } - - /** - * Delete tasks with the given key names/versions. - * - * @param session the Apex model editing session - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult deleteTask(final RestSession session, final String name, final String version) { - LOGGER.entry(name, version); - - session.editModel(); - - // all input/output fields, parameters, logic, context references is "owned"/contained - // in the task, so - // deleting the task removes all of these - ApexApiResult result = session.getApexModelEdited().deleteTask(blank2Null(name), blank2Null(version)); - - if (result != null) { - session.finishSession(result.isOk()); - LOGGER.exit("Task/Delete" + (result.isOk() ? OK : NOT_OK)); - } - - return result; - } - - /** - * Validate tasks with the given key names/versions. The result(s) will be available in the result messages. - * - * @param session the Apex model editing session - * @param name the name to search for. If null or empty, then all names will be queried - * @param version the version to search for. If null then all versions will be searched for. - * @return an ApexAPIResult object. If successful then {@link ApexApiResult#isOk()} will return true. Any - * messages/errors can be retrieved using {@link ApexApiResult#getMessages()} - */ - private ApexApiResult validateTask(final RestSession session, final String name, final String version) { - LOGGER.entry(name, version); - - ApexApiResult result = session.getApexModel().validateTask(blank2Null(name), blank2Null(version)); - - LOGGER.exit("Validate/Task" + (result != null && result.isOk() ? OK : NOT_OK)); - return result; - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanBase.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanBase.java deleted file mode 100644 index 6ac5c48e1..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanBase.java +++ /dev/null @@ -1,81 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling.bean; - -import java.lang.reflect.Field; -import java.lang.reflect.Method; - -/** - * The base class for Beans. - */ -public abstract class BeanBase { - // Recurring string constants - private static final String PROBLEM_RETRIEVING_FIELD_PREFIX = "Problem retrieving field called ('"; - private static final String JSON_BEAN_SUFFIX = "') from JSON bean "; - - // Magic numbers - private static final int GET_LENGTH = 3; - - /** - * Gets a named field from the bean. - * - * @param field the field name - * @return the value for the field - */ - public String get(final String field) { - // use getter preferably - for (final Method method : this.getClass().getMethods()) { - if (method.getName().startsWith("get") && method.getName().length() == (field.length() + GET_LENGTH) - && method.getName().toLowerCase().endsWith(field.toLowerCase())) { - return invokeGetterMethod(field, method); - } - } - - // Use field approach - if (field != null) { - try { - final Field f = this.getClass().getDeclaredField(field); - if (f != null) { - f.setAccessible(true); - return (String) (f.get(this)); - } - } catch (final Exception e) { - throw new IllegalArgumentException(PROBLEM_RETRIEVING_FIELD_PREFIX + field + JSON_BEAN_SUFFIX + this, - e); - } - } - throw new IllegalArgumentException(PROBLEM_RETRIEVING_FIELD_PREFIX + field + JSON_BEAN_SUFFIX + this); - } - - /** - * Invoke a getter method on a bean. - * - * @param field the field that the getter gets a value for - * @param method the method to invoke - */ - private String invokeGetterMethod(final String field, final Method method) { - try { - return (String) method.invoke(this); - } catch (final Exception e) { - throw new IllegalArgumentException(PROBLEM_RETRIEVING_FIELD_PREFIX + field + JSON_BEAN_SUFFIX + this, e); - } - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanContextAlbum.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanContextAlbum.java deleted file mode 100644 index 4808a6531..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanContextAlbum.java +++ /dev/null @@ -1,109 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling.bean; - -import javax.xml.bind.annotation.XmlType; - -/** - * The ContextAlbum Bean. - */ -@XmlType -public class BeanContextAlbum extends BeanBase { - private String name = null; - private String version = null; - private String scope = null; - private String uuid = null; - private String description = null; - private BeanKeyRef itemSchema = null; - private boolean writeable; - - /** - * Gets the name. - * - * @return the name - */ - public String getName() { - return name; - } - - /** - * Gets the version. - * - * @return the version - */ - public String getVersion() { - return version; - } - - /** - * Gets the scope. - * - * @return the scope - */ - public String getScope() { - return scope; - } - - /** - * Gets the uuid. - * - * @return the uuid - */ - public String getUuid() { - return uuid; - } - - /** - * Gets the description. - * - * @return the description - */ - public String getDescription() { - return description; - } - - /** - * Gets the item schema. - * - * @return the item schema - */ - public BeanKeyRef getItemSchema() { - return itemSchema; - } - - /** - * Gets the writeable. - * - * @return the writeable - */ - public boolean getWriteable() { - return writeable; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - return "ContextAlbum [name=" + name + ", version=" + version + ", scope=" + scope + ", uuid=" + uuid - + ", description=" + description + ", itemSchema=" + itemSchema + ", writeable=" + writeable + "]"; - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanContextSchema.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanContextSchema.java deleted file mode 100644 index 20ac61709..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanContextSchema.java +++ /dev/null @@ -1,99 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling.bean; - -import javax.xml.bind.annotation.XmlType; - -/** - * The ContextSchema Bean. - */ -@XmlType -public class BeanContextSchema extends BeanBase { - private String name = null; - private String version = null; - private String schemaFlavour = null; - private String schemaDefinition = null; - private String uuid = null; - private String description = null; - - /** - * Gets the name. - * - * @return the name - */ - public String getName() { - return name; - } - - /** - * Gets the version. - * - * @return the version - */ - public String getVersion() { - return version; - } - - /** - * Gets the uuid. - * - * @return the uuid - */ - public String getUuid() { - return uuid; - } - - /** - * Gets the description. - * - * @return the description - */ - public String getDescription() { - return description; - } - - /** - * Gets the schema flavour. - * - * @return the schema flavour - */ - public String getSchemaFlavour() { - return schemaFlavour; - } - - /** - * Gets the schema definition. - * - * @return the schema definition - */ - public String getSchemaDefinition() { - return schemaDefinition; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - return "ContextSchema [name=" + name + ", version=" + version + ", schemaFlavour=" + schemaFlavour - + ", schemaDefinition=" + schemaDefinition + ", uuid=" + uuid + ", description=" + description + "]"; - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanEvent.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanEvent.java deleted file mode 100644 index 0d2ad737b..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanEvent.java +++ /dev/null @@ -1,135 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling.bean; - -import java.util.Map; -import javax.xml.bind.annotation.XmlType; - -/** - * The Event Bean. - */ -@XmlType -public class BeanEvent extends BeanBase { - private String name = null; - private String version = null; - private String nameSpace = null; - private String source = null; - private String target = null; - private String uuid = null; - private String description = null; - private Map parameters = null; - - /** - * Gets the name. - * - * @return the name - */ - public String getName() { - return name; - } - - /** - * Gets the version. - * - * @return the version - */ - public String getVersion() { - return version; - } - - /** - * Gets the name space. - * - * @return the name space - */ - public String getNameSpace() { - return nameSpace; - } - - /** - * Gets the source. - * - * @return the source - */ - public String getSource() { - return source; - } - - /** - * Gets the target. - * - * @return the target - */ - public String getTarget() { - return target; - } - - /** - * Gets the uuid. - * - * @return the uuid - */ - public String getUuid() { - return uuid; - } - - /** - * Gets the description. - * - * @return the description - */ - public String getDescription() { - return description; - } - - /** - * Gets the parameters. - * - * @return the parameters - */ - public Map getParameters() { - return parameters; - } - - /** - * Gets the parameter. - * - * @param ps the parameter string - * @return the parameter - */ - public BeanField getParameter(final String ps) { - if (parameters != null) { - return parameters.get(ps); - } - return null; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - return "Event [name=" + name + ", version=" + version + ", nameSpace=" + nameSpace + ", source=" + source - + ", target=" + target + ", uuid=" + uuid + ", description=" + description + ", parameters=" - + getParameters() + "]"; - } - -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanField.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanField.java deleted file mode 100644 index 472f94f2b..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanField.java +++ /dev/null @@ -1,61 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling.bean; - -import javax.xml.bind.annotation.XmlType; - -/** - * The Field Bean. - */ -@XmlType -public class BeanField extends BeanKeyRef { - - private boolean optional = true; - private String localName = null; - - /** - * Gets the local name for this field. - * - * @return the local name for this field. - */ - public String getLocalName() { - return localName; - } - - /** - * Gets the optional flag. - * - * @return the optional flag - */ - public boolean getOptional() { - return optional; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - return "Field [localName=" + getLocalName() + ", name=" + getName() + ", version=" + getVersion() - + ", optional=" + getOptional() + "]"; - } - -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanKeyRef.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanKeyRef.java deleted file mode 100644 index d9c0269e2..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanKeyRef.java +++ /dev/null @@ -1,59 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling.bean; - -import javax.xml.bind.annotation.XmlType; - -/** - * The Key Reference Bean. - */ -@XmlType -public class BeanKeyRef extends BeanBase { - private String name = null; - private String version = null; - - /** - * Gets the name. - * - * @return the name - */ - public String getName() { - return name; - } - - /** - * Gets the version. - * - * @return the version - */ - public String getVersion() { - return version; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - return "KeyRef [name=" + name + ", version=" + version + "]"; - } - -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanLogic.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanLogic.java deleted file mode 100644 index ea61492a0..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanLogic.java +++ /dev/null @@ -1,58 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling.bean; - -import javax.xml.bind.annotation.XmlType; - -/** - * The Logic Bean. - */ -@XmlType -public class BeanLogic extends BeanBase { - private String logic = null; - private String logicFlavour = null; - - /** - * Gets the logic flavour. - * - * @return the logic flavour - */ - public String getLogicFlavour() { - return logicFlavour; - } - - /** - * Gets the logic. - * - * @return the logic - */ - public String getLogic() { - return logic; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - return "Logic [logicFlavour=" + logicFlavour + ", logic=" + logic + "]"; - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanModel.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanModel.java deleted file mode 100644 index d65cbe7a9..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanModel.java +++ /dev/null @@ -1,80 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling.bean; - -import javax.xml.bind.annotation.XmlType; - -/** - * The Model Bean. - */ -@XmlType -public class BeanModel extends BeanBase { - - private String name = null; - private String version = null; - private String uuid = null; - private String description = null; - - /** - * Gets the name. - * - * @return the name - */ - public String getName() { - return name; - } - - /** - * Gets the version. - * - * @return the version - */ - public String getVersion() { - return version; - } - - /** - * Gets the uuid. - * - * @return the uuid - */ - public String getUuid() { - return uuid; - } - - /** - * Gets the description. - * - * @return the description - */ - public String getDescription() { - return description; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - return "Model [name=" + name + ", version=" + version + ", uuid=" + uuid + ", description=" + description + "]"; - } - -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanPolicy.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanPolicy.java deleted file mode 100644 index a3a4194f9..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanPolicy.java +++ /dev/null @@ -1,111 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling.bean; - -import java.util.Map; -import javax.xml.bind.annotation.XmlType; - -/** - * The Policy Bean. - */ -@XmlType -public class BeanPolicy extends BeanBase { - private String name = null; - private String version = null; - private String uuid = null; - private String description = null; - private String firstState = null; - private String template = null; - private Map states = null; - - /** - * Gets the name. - * - * @return the name - */ - public String getName() { - return name; - } - - /** - * Gets the version. - * - * @return the version - */ - public String getVersion() { - return version; - } - - /** - * Gets the uuid. - * - * @return the uuid - */ - public String getUuid() { - return uuid; - } - - /** - * Gets the description. - * - * @return the description - */ - public String getDescription() { - return description; - } - - /** - * Gets the first state. - * - * @return the first state - */ - public String getFirstState() { - return firstState; - } - - /** - * Gets the template. - * - * @return the template - */ - public String getTemplate() { - return template; - } - - /** - * Gets the states. - * - * @return the states - */ - public Map getStates() { - return states; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - return "Policy [name=" + name + ", version=" + version + ", uuid=" + uuid + ", description=" + description - + ", firstState=" + firstState + ", template=" + template + ", states=" + states + "]"; - } - -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanState.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanState.java deleted file mode 100644 index 575511be6..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanState.java +++ /dev/null @@ -1,133 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling.bean; - -import java.util.Arrays; -import java.util.Map; -import javax.xml.bind.annotation.XmlType; - -/** - * The State Bean. - */ -@XmlType -public class BeanState extends BeanBase { - - private String name = null; - private BeanKeyRef trigger = null; - private BeanKeyRef defaultTask = null; - private BeanKeyRef[] contexts = null; - private BeanLogic taskSelectionLogic = null; - private Map tasks = null; - private Map finalizers = null; - private Map stateOutputs = null; - - /** - * Gets the name. - * - * @return the name - */ - public String getName() { - return name; - } - - /** - * Gets the trigger. - * - * @return the trigger - */ - public BeanKeyRef getTrigger() { - return trigger; - } - - /** - * Gets the contexts. - * - * @return the contexts - */ - public BeanKeyRef[] getContexts() { - return contexts; - } - - /** - * Gets the task selection logic. - * - * @return the task selection logic - */ - public BeanLogic getTaskSelectionLogic() { - return taskSelectionLogic; - } - - /** - * Gets the tasks. - * - * @return the tasks - */ - public Map getTasks() { - return tasks; - } - - /** - * Gets the finalizers. - * - * @return the finalizers - */ - public Map getFinalizers() { - return finalizers; - } - - /** - * Gets the state outputs. - * - * @return the state outputs - */ - public Map getStateOutputs() { - return stateOutputs; - } - - /** - * Gets the default task. - * - * @return the default task - */ - public BeanKeyRef getDefaultTask() { - return defaultTask; - } - - /** - * Sets the default task. - * - * @param defaultTask the new default task - */ - public void setDefaultTask(final BeanKeyRef defaultTask) { - this.defaultTask = defaultTask; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - return "State [name=" + name + ", trigger=" + trigger + ", defaultTask=" + defaultTask + ", contexts=" - + Arrays.toString(contexts) + ", taskSelectionLogic=" + taskSelectionLogic + ", tasks=" + tasks - + ", finalizers=" + finalizers + ", stateOutputs=" + stateOutputs + "]"; - } - -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanStateOutput.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanStateOutput.java deleted file mode 100644 index a01a05221..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanStateOutput.java +++ /dev/null @@ -1,60 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling.bean; - -import javax.xml.bind.annotation.XmlType; - -/** - * The StateOutput Bean. - */ -@XmlType -public class BeanStateOutput extends BeanBase { - - private BeanKeyRef event = null; - private String nextState = null; - - /** - * Gets the event. - * - * @return the event - */ - public BeanKeyRef getEvent() { - return event; - } - - /** - * Gets the next state. - * - * @return the next state - */ - public String getNextState() { - return nextState; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - return "StateOutput [event=" + event + ", nextState=" + nextState + "]"; - } - -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanStateTaskRef.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanStateTaskRef.java deleted file mode 100644 index 87396c4ed..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanStateTaskRef.java +++ /dev/null @@ -1,69 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling.bean; - -import javax.xml.bind.annotation.XmlType; - -/** - * The State Task Reference Bean. - */ -@XmlType -public class BeanStateTaskRef extends BeanBase { - private BeanKeyRef task = null; - private String outputType = null; - private String outputName = null; - - /** - * Gets the task. - * - * @return the task - */ - public BeanKeyRef getTask() { - return task; - } - - /** - * Gets the output type. - * - * @return the output type - */ - public String getOutputType() { - return outputType; - } - - /** - * Gets the output name. - * - * @return the output name - */ - public String getOutputName() { - return outputName; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - return "StateTaskRef [task=" + task + ", outputType=" + outputType + ", outputName=" + outputName + "]"; - } - -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanTask.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanTask.java deleted file mode 100644 index 6c023e89f..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanTask.java +++ /dev/null @@ -1,132 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling.bean; - -import java.util.Arrays; -import java.util.Map; -import javax.xml.bind.annotation.XmlType; - -/** - * The Task Bean. - */ -@XmlType -public class BeanTask extends BeanBase { - private String name = null; - private String version = null; - private String uuid = null; - private String description = null; - private BeanLogic taskLogic = null; - private Map inputFields = null; - private Map outputFields = null; - private Map parameters = null; - private BeanKeyRef[] contexts = null; - - /** - * Gets the name. - * - * @return the name - */ - public String getName() { - return name; - } - - /** - * Gets the version. - * - * @return the version - */ - public String getVersion() { - return version; - } - - /** - * Gets the uuid. - * - * @return the uuid - */ - public String getUuid() { - return uuid; - } - - /** - * Gets the description. - * - * @return the description - */ - public String getDescription() { - return description; - } - - /** - * Gets the task logic. - * - * @return the task logic - */ - public BeanLogic getTaskLogic() { - return taskLogic; - } - - /** - * Gets the input fields. - * - * @return the input fields - */ - public Map getInputFields() { - return inputFields; - } - - /** - * Gets the output fields. - * - * @return the output fields - */ - public Map getOutputFields() { - return outputFields; - } - - /** - * Gets the parameters. - * - * @return the parameters - */ - public Map getParameters() { - return parameters; - } - - /** - * Gets the contexts. - * - * @return the contexts - */ - public BeanKeyRef[] getContexts() { - return contexts; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - return "BeanTask [name=" + name + ", version=" + version + ", uuid=" + uuid + ", description=" + description - + ", taskLogic=" + taskLogic + ", inputFields=" + inputFields + ", outputFields=" + outputFields - + ", parameters=" + parameters + ", contexts=" + Arrays.toString(contexts) + "]"; - } -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanTaskParameter.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanTaskParameter.java deleted file mode 100644 index 8cedbb89d..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/BeanTaskParameter.java +++ /dev/null @@ -1,60 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -package org.onap.policy.apex.client.editor.rest.handling.bean; - -import javax.xml.bind.annotation.XmlType; - -/** - * The Task Parameter Bean. - */ -@XmlType -public class BeanTaskParameter extends BeanBase { - - private String parameterName = null; - private String defaultValue = null; - - /** - * Gets the parameter name. - * - * @return the parameter name - */ - public String getParameterName() { - return parameterName; - } - - /** - * Gets the default value. - * - * @return the default value - */ - public String getDefaultValue() { - return defaultValue; - } - - /** - * {@inheritDoc}. - */ - @Override - public String toString() { - return "TaskParameter [parameterName=" + parameterName + ", defaultValue=" + defaultValue + "]"; - } - -} diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/package-info.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/package-info.java deleted file mode 100644 index 9107f6af9..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/handling/bean/package-info.java +++ /dev/null @@ -1,27 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -/** - * Contains JSON/XML serializable beans for use with the REST interface. - * - * @author Liam Fallon (liam.fallon@ericsson.com) - */ - -package org.onap.policy.apex.client.editor.rest.handling.bean; diff --git a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/package-info.java b/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/package-info.java deleted file mode 100644 index 503e0bd52..000000000 --- a/client/client-editor/src/main/java/org/onap/policy/apex/client/editor/rest/package-info.java +++ /dev/null @@ -1,29 +0,0 @@ -/*- - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -/** - * Implements the RESTful editor for Apex. It implements a RESTful service towards the - * {@link org.onap.policy.apex.model.modelapi.ApexEditorApi} Java interface for use by clients over - * REST. It also provides a web-based client written in Javascript. - * - * @author Liam Fallon (liam.fallon@ericsson.com) - */ - -package org.onap.policy.apex.client.editor.rest; diff --git a/client/client-editor/src/main/resources/templates/PeriodicEventTemplate.json b/client/client-editor/src/main/resources/templates/PeriodicEventTemplate.json deleted file mode 100644 index a2656515c..000000000 --- a/client/client-editor/src/main/resources/templates/PeriodicEventTemplate.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "PeriodicEvent", - "version": "0.0.1", - "uuid": "40f28ab0-bc27-11e8-a355-529269fb1459", - "description": "Default Periodic Event", - "source": "System", - "target": "Apex", - "nameSpace": "org.onap.policy.apex.domains.aadm.events", - "parameters": { - } -} diff --git a/client/client-editor/src/main/resources/webapp/WEB-INF/web.xml b/client/client-editor/src/main/resources/webapp/WEB-INF/web.xml deleted file mode 100644 index 36a93f2f2..000000000 --- a/client/client-editor/src/main/resources/webapp/WEB-INF/web.xml +++ /dev/null @@ -1,42 +0,0 @@ - - - - - - - - apex-services.rest - org.glassfish.jersey.servlet.ServletContainer - - jersey.config.server.provider.packages - org.onap.policy.apex.client.editor.rest - - 1 - - - apex-services.rest - /apexservices/* - - - diff --git a/client/client-editor/src/main/resources/webapp/close.html b/client/client-editor/src/main/resources/webapp/close.html deleted file mode 100644 index fb246fa87..000000000 --- a/client/client-editor/src/main/resources/webapp/close.html +++ /dev/null @@ -1,44 +0,0 @@ - - - - - -Apex Editor - - - - -
-
Apex Policy Editor
-
- -
- -

Thanks for using the Apex editor :-) -

- For more information, see the - Apex confluence page. -

- - - \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/css/close.css b/client/client-editor/src/main/resources/webapp/css/close.css deleted file mode 100644 index 0e126bd6d..000000000 --- a/client/client-editor/src/main/resources/webapp/css/close.css +++ /dev/null @@ -1,47 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -html, body { - height: 100%; -} - -.placeholder { - text-align: center; - position: relative; - top: 50%; - margin: -200px auto; - white-space: nowrap; -} - -.placeholderLogo { - z-index: -1; - position: relative; -} - -.onapLogo { - padding-right: 100px; - height: 300px; - width: 400px; -} - -.apexLogo { - height: 300px; - width: 400px; -} \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/css/contextMenu.css b/client/client-editor/src/main/resources/webapp/css/contextMenu.css deleted file mode 100644 index d56ea425d..000000000 --- a/client/client-editor/src/main/resources/webapp/css/contextMenu.css +++ /dev/null @@ -1,110 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -.contextmenu_hide { - display: none; -} - -.contextmenu_show { - font-family: Helvetica, Arial, sans-serif; - font-weight: 300; - list-style: none; - padding: 0 0 0 5px; - margin: 0; - background: rgba(255,255,255,.85); - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - color: 000; - box-shadow: 0 8px 16px rgba(0, 0, 0, 0.25); - z-index:1000; - position: absolute; - white-space: nowrap; - float: left; - width: auto; -} - -.contextmenu_show ul { - padding: 0; - margin: 0; - list-style: none; - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.176); - background: #f5f5f5; - border: 1px solid #ccc; - border-radius: 0 0 5px 5px; - color: #000; - font-weight: 300; -} - -.contextmenu_show > li { - display: inline-block; - padding: 3px 5px; - margin: 0; -} - -.contextmenu_show > li.selected { - background: #007bff; - color: #fff; - font-weight: 400; -} - -.contextmenu_show li { - cursor: default; - transition: all .1s; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.contextmenu_show ul li { - line-height: 1.5em; - padding: 0 5px; -} - -.contextmenu_show ul li.disabled { - color: #999; - pointer-events: none; -} - -.contextmenu_show ul li:hover { - background: #007bff; - color: #fff; - font-weight: 400; -} - -.contextmenu_show ul li ul { - border-radius: 5px; - position: absolute; - margin-top: -70px; -} - -.contextmenu_show ul li type{ - line-height: 1.5em; - padding: 0 5px; - font-family: monospace; -} - -.contextmenu_show ul li value{ - line-height: 1.5em; - padding: 0 5px; - font-family: monospace; -} diff --git a/client/client-editor/src/main/resources/webapp/css/dropdownList.css b/client/client-editor/src/main/resources/webapp/css/dropdownList.css deleted file mode 100644 index 386969ce6..000000000 --- a/client/client-editor/src/main/resources/webapp/css/dropdownList.css +++ /dev/null @@ -1,133 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -.dropdownList_display { - display: inline-block; - vertical-align: middle; - text-align: left; - font-size: 1.2rem; - height: 2.4rem; - padding: 2px 7px; - border: 1px solid #b3b3b3; - -moz-box-sizing: border-box; - box-sizing: border-box; - border-radius: 3px; - box-shadow: inset 1px 1px 0 0 #cccccc; - -webkit-appearance: none; - -moz-appearance: none; - -ms-appearance: none; - appearance: none; - font-family: Arial,Helvetica,sans-serif; - font-size: 1em; - border-width: 1px 0 1px 1px; - border-radius: 3px 0 0 3px; - cursor: pointer; - overflow: hidden; -} - -.dropdownList_display_disabled { - display: inline-block; - vertical-align: middle; - text-align: left; - font-size: 1.2rem; - height: 2.4rem; - padding: 0.4rem 0.6rem; - border: 1px solid #b3b3b3; - -moz-box-sizing: border-box; - box-sizing: border-box; - border-radius: 3px; - -webkit-appearance: none; - -moz-appearance: none; - -ms-appearance: none; - appearance: none; - font-family: Arial,Helvetica,sans-serif; - font-size: 1em; - border-width: 1px 0 1px 1px; - border-radius: 3px 0 0 3px; - color: #B2B2B2; - border-color: #B2B2B2; - background-color: rgba(0, 0, 0, 0.05); - -webkit-text-fill-color: #b2b2b2; - opacity: 1; - -ms-touch-action: none !important; - touch-action: none !important; - box-shadow: inset 1px 1px 0 0 #cccccc; - overflow: hidden; -} - -.dropdownList_display_clicked, .dropdownList_display:hover, .dropdownList_display:focus { - //background: #007bff; -} - -.dropdownList_display_disabled :hover, .dropdownList_display_disabled :focus { -} - -.dropdownList { - position: relative; - display: inline-block; -} - -.dropdownList_options { - display: none; - position: absolute; - z-index: 1500; - padding: 0 0 4px 0; - margin: 0; - color: #333; - list-style: none; - background-color: #fff; - border: #bfbfbf solid 1px; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - border-radius: 3px; - -moz-box-sizing: border-box; - box-sizing: border-box; - box-shadow: 5px 5px 5px #87888A; -} - -.dropdownList_options ul li { - padding: 0px; - margin: 0; - text-decoration: none; - display: block; -} - -.dropdownList_options ul li.selected { - background: #007bff; - color: #fff; - font-weight: 400; -} - -.dropdownList_options ul li.disabled { - color: #999; - pointer-events: none; -} - -.dropdownList_options_body { - margin-left: -40px; -} - -.dropdownList ul li:hover { - background: #007bff; - color: #fff; - font-weight: 400; - cursor: pointer; -} - -.dropdownList_show {display:block;} \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/css/fileMenu.css b/client/client-editor/src/main/resources/webapp/css/fileMenu.css deleted file mode 100644 index 8f1102e39..000000000 --- a/client/client-editor/src/main/resources/webapp/css/fileMenu.css +++ /dev/null @@ -1,194 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -.fileMenu { - font-family: Helvetica, Arial, sans-serif; - font-weight: 300; - list-style: none; - padding: 0 0 0 5px; - margin: 0; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - color: 000; -} - -.fileMenu ul { - display: none; - position: absolute; - z-index:9999; - padding: 0; - margin: 0; - list-style: none; - box-shadow: 0 6px 12px rgba(0, 0, 0, 0.176); - min-width: 250px; - background: #f5f5f5; - border: 1px solid #ccc; - border-radius: 0 0 5px 5px; - color: #000; - font-weight: 300; - text-align: left; -} - -.fileMenu > li { - display: inline-block; - padding: 3px 5px; - margin: 0; -} - -.fileMenu > li.selected { - background: #007bff; - color: #fff; - font-weight: 400; -} - -.fileMenu li { - cursor: default; - transition: all .1s; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; -} - -.fileMenu li.divider { - margin: 3px 0; - height: 1px; - background: #b3b3b3; - pointer-events: none; -} - -.fileMenu li i { - font-size: .8em; - text-align: center; - color: #444; - transition: all .1s; - -} - -.fileMenu li i:before { - position: relative; - top: -.1em; -} - -.fileMenu > li.selected > i, -.fileMenu ul li:hover > i { - color: #ebebeb; -} - -.fileMenu ul li { - line-height: 1.5em; - padding: 0 5px; -} - -.fileMenu ul li.toggle.active i:before { - content: '\f00c'; -} - -.fileMenu ul li.disabled { - color: #999; - pointer-events: none; -} - -.fileMenu ul li.disabled i { - color: #aaa; -} - -.fileMenu ul li.sub:after { - font: normal normal normal; - content: '\f0da'; - float: right; - color: #999; - font-size: inherit; - text-rendering: auto; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - transform: translate(0, 0); - line-height: inherit; - transition: all .1s; -} - -.fileMenu ul li.sub:hover:after { - color: #fff; -} - -.fileMenu ul li:hover { - background: #007bff; - color: #fff; - font-weight: 400; -} - -.fileMenu ul li:last-child { - border-radius: 0 0 5px 5px; -} - -.fileMenu ul li:hover ul { - display: block; -} - -.fileMenu ul li kbd { - float: right; - font-weight: 300; - font-family: inherit; - color: #999; -} - -.fileMenu ul li ul { - border-radius: 5px; - position: absolute; - margin-top: -70px; -} - -.fileMenu ul li ul li:first-child { - border-radius: 5px 5px 0 0; -} - -.fileMenuButton { - display: inline-block; - vertical-align: middle; - color: #333; - background-color: #fff; - border: none; - min-width: 60px; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2); - border-radius: 3px; - -moz-box-sizing: border-box; - box-sizing: border-box; - background-image: linear-gradient(180deg, rgba(0,0,0,0) 0, rgba(0,0,0,0.1) 100%); - padding: 0 8px; - height: 2.4rem; - text-decoration: none; - text-align: center; - cursor: pointer; - line-height: 18px; -} - -.fileMenuSeperator { - display: inline-block; - white-space: nowrap; - vertical-align: middle; - width: 1px; - height: 24px; - background-color: #CCC; - margin: 0 6px; - font-size: 2.4rem; - margin: 0px 10px; -} \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/css/interfaceAssets.css b/client/client-editor/src/main/resources/webapp/css/interfaceAssets.css deleted file mode 100644 index d1fc6747e..000000000 --- a/client/client-editor/src/main/resources/webapp/css/interfaceAssets.css +++ /dev/null @@ -1,2807 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -@charset "utf-8"; -html { - position: relative; - font-family: Arial, Helvetica, sans-serif; - font-size: 10px !important; - line-height: 10px !important; - margin: 0; - padding: 0; - width: 100%; - height: 100%; -} -body { - font-size: 1.6rem; - line-height: 1.2rem; - color: #333333; - background-color: #ffffff; - margin: 0; - padding: 0; -} -*:focus, -.ebInput:focus, -.ebIcon:focus, -.ebCheckbox:focus + .ebCheckbox-inputStatus:after, -.ebRadioBtn:focus + .ebRadioBtn-inputStatus:after, -textarea:focus, -button:focus, -i:focus { - /** - * FF outline do not looks same as Chrome so adding box shadow - * FF outline is not working as expected - **/ - /* - * one way of outline - outline: #4d90fe auto 5px; - box-shadow: 0 0 0 1px #4d90fe; - -webkit-box-shadow: none; - */ - outline: none; - //box-shadow: 0 0 2px 1px #FFFFFF; -} -h1, -h2, -h3, -h4, -h5, -h6 { - color: #4d4d4d; - font-weight: bold; -} -h1 { - line-height: 3.2rem; - font-size: 3.2rem; - font-weight: normal; - padding: 0.6rem 0; - margin: 0 0 0.6rem 0; -} -h2 { - border-bottom: #000000 solid 1px; - line-height: 2.0rem; - font-size: 2.0rem; - font-weight: normal; - padding: 1.2rem 0 0.7rem 0; - margin: 0 0 0.4rem 0; -} -h3 { - border-bottom: #7f7f7f solid 1px; - line-height: 1.6rem; - font-size: 1.6rem; - padding: 1.2rem 0 0.7rem 0; - margin: 0 0 0.4rem 0; - font-weight: normal; - color: #333333; -} -h4 { - border-bottom: #b2b2b2 solid 1px; - line-height: 1.2rem; - font-size: 1.2rem; - padding: 0.6rem 0; - margin: 0 0 0.6rem 0; - font-weight: bold; - color: #333333; -} -.ebLayout-SectionSubheading h3 { - float: left; - margin: 0; - border-bottom: none; -} - -/* System Bar */ -.ebSystemBar { - position: relative; - width: 100%; - height: 40px; - border-top: 4px solid #0066b3; - background-image: linear-gradient(180deg, #ffffff 0%, #f4f4f4 100%); - box-shadow: 0 1px 2px #D2D2D2; -} -.ebSystemBar::before { - position: absolute; - top: -4px; - left: 0; - width: 100%; - height: 4px; - content: ""; - font-size: 0; - background: #0066b3; - background: -o-linear-gradient(left, #a2c517 10%, #009046 30%, #0082b6 50%, #151f77 75%, #db0050 100%); - background: -moz-linear-gradient(left, #a2c517 10%, #009046 30%, #0082b6 50%, #151f77 75%, #db0050 100%); - background: -webkit-linear-gradient(left, #a2c517 10%, #009046 30%, #0082b6 50%, #151f77 75%, #db0050 100%); - background: -ms-linear-gradient(left, #a2c517 10%, #009046 30%, #0082b6 50%, #151f77 75%, #db0050 100%); - background: -webkit-gradient(linear, left top, right top, color-stop(0.1, #a2c517), color-stop(0.3, #009046), color-stop(0.5, #0082b6), color-stop(0.75, #151f77), color-stop(1, #db0050)); - background: linear-gradient(left, #a2c517 10%, #009046 30%, #0082b6 50%, #151f77 75%, #db0050 100%); -} -.ebSystemBar-logo { - position: absolute; - top: 0; - bottom: 0; - left: 0; - height: 40px; - width: 20px; - padding: 0 10px; - background: url('../resources/systemBar/econ01.svg') no-repeat center center transparent; - background-size: 20px; -} -.ebSystemBar-topMenuName { - display: inline-block; - padding: 0 5px 0 40px; - margin: 0; - line-height: 40px; - font-size: 16.8px; - color: #58585A; -} -.ebSystemBar-topMenu { - position: absolute; - top: 0; - bottom: 0; - left: 50px; - list-style: none; - height: 40px; - margin: 0; - padding: 0; -} -.ebSystemBar-topMenu li { - display: inline-block; -} -.ebSystemBar-topMenu a { - padding: 0 5px 0 15px; - margin: 0; - font-size: 1.6em; - line-height: 40px; - color: #58585a; - cursor: pointer; - text-decoration: none; -} -.ebSystemBar-topMenu a:hover { - color: #0066B3; -} -.ebSystemBar-rightButton { - float: right; - display: inline-block; - line-height: 40px; - vertical-align: middle; -} -.ebSystemBar-rightButton a { - display: block; - padding: 0 18px 0 18px; - font-size: 1.3rem; - color: #0066B3; - background-color: transparent; - background-repeat: no-repeat; - background-position: 18px center; - border-left: solid 1px #D2D2D2; -} -.ebSystemBar-rightButton a:hover { - text-decoration: underline; -} -.ebSystemBar-rightButton:hover { - background-image: linear-gradient(180deg, #f2f2f2 0%, #e8e8e8 100%); -} -@media screen and (max-width: 640px) { - .ebSystemBar-topBar-rightButton a { - width: 0; - padding-left: 34px; - text-indent: -9999px; - } -} - -/* Inline Message */ -.ebInlineMessage { - padding: 5px 15px 0px 7px; - font-size: 0; - position: fixed; - bottom: 0; - left: 2; - width: calc(100% - 30px); - height: 66px; - border: 3px solid #adadad; - background-color: #FFFFFF; -} -.ebInlineMessage-iconHolder, -.ebInlineMessage-contentHolder { - display: inline-block; - vertical-align: top; -} -.ebInlineMessage-iconHolder { - width: 20px; - margin: 0 12px 0 0; -} -.ebInlineMessage-contentHolder { - width: calc(100% - 32px); - font-size: 1.2rem; -} -.ebInlineMessage-header { - margin-top: 3px; - font-size: 14px; - line-height: 14px; -} -.ebInlineMessage-separator { - height: 1px; - margin: 12px 0; - background-color: #adadad; - opacity: 0.3; -} -.ebInlineMessage-description { - color: #666666; - white-space: pre; -} - -/* Table */ -.ebTable { - margin: 0; - padding: 0; - table-layout: fixed; - border-left: 1px solid #cccccc; // ewatkmi: added for visible border; - border-right: 1px solid #cccccc; // ewatkmi: added for visible border; - border-bottom: 1px solid #cccccc; // ewatkmi: added for visible border; - border-collapse: collapse; - border-spacing: 0; - color: #1a1a1a; -} -.ebTable_fullW { - width: 100%; -} -.ebTable-th_resizable, -.ebTable-th_sortable { - position: relative; -} -.ebTable-th_resizable .ebTable-headerResize { - position: absolute; - top: -20px; - bottom: -20px; - right: -12px; - width: 10px; - cursor: col-resize; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; -} -.ebTable-th_sortable { - cursor: pointer !important; -} -.ebTable-th_sortable .ebTable-header { - display: flex; - flex-wrap: nowrap; - flex-direction: row; - align-items: center; -} -.ebTable-th_sortable .ebTable-headerText { - flex-shrink: 1; - flex-grow: 0; - margin-right: 8px; - box-sizing: border-box; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; -} -.ebTable-th_sortable .ebTable-headerSort { - flex-grow: 0; - flex-shrink: 0; - flex-basis: 10px; - margin-left: 4px; -} -.ebTable-th_sortable .ebTable-headerSortOrder { - flex-grow: 1; - color: #999999; - font-weight: normal; -} -.ebTable-header { - position: relative; - display: block; - width: 100%; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.ebTable-headerText { - padding: 4px 0; - display: inline-block; - vertical-align: middle; - width: 100%; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} -.ebTable thead tr { - height: 3.2rem; - font-size: 1.2rem; - font-weight: bold; - text-align: left; -} -.ebTable thead tr th { - padding-left: 1.2rem; - padding-right: 1.2rem; - text-align: left; - cursor: default; - border-top: #cccccc solid 1px; - border-bottom: #cccccc solid 1px; - border-right: #e6e6e6 solid 1px; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; -} -.ebTable thead tr th:last-child { - border-right: none; -} -.ebTable thead tr:hover { - background: none; -} -.ebTable thead tr:active { - background: none; -} -.ebTable tbody tr { - height: 3.2rem; - font-size: 1.2rem; - border-bottom: #e6e6e6 solid 1px; -} -.ebTable tbody tr td { - margin: 0; - padding: 0 1.2rem; - overflow: hidden; - text-overflow: ellipsis; - white-space: nowrap; - cursor: default; - border-right: #e6e6e6 solid 1px; -} -.ebTable tbody tr td:last-child { - border-right: none; -} -.ebTable_striped tbody tr { - border-bottom: none; -} -.ebTable_striped tbody tr td { - border-right: none; -} -.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #f2f2f2; -} -.ebTable_striped tbody tr:nth-of-type(odd) { // ewatkmi: added for nested tables; - background-color: #ffffff; -} -.ebTable_compact tbody tr { - height: 2.6rem; -} -.ebTable_expandableStriped { - border-collapse: separate; -} -.ebTable_expandableStriped tbody tr { - border-bottom: none; -} -.ebTable_expandableStriped tbody tr td { - border-right: none; -} -.ebTable_expandableStriped tbody tr:nth-of-type(4n-1), -.ebTable_expandableStriped tbody tr:nth-of-type(4n) { - background-color: #f2f2f2; -} -.ebTable_pinstripe tr td { - border-bottom: #e6e6e6 solid 1px; -} -.ebTable_color_paleBlue.ebTable thead tr th { - background-color: #99ddee; - border-top: none; - border-bottom: none; -} -.ebTable_color_paleBlue.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #e6f6fb; -} -.ebTable_color_purple.ebTable thead tr th { - background-color: #ca9bc1; - border-top: none; - border-bottom: none; -} -.ebTable_color_purple.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #f2e6ef; -} -.ebTable_color_darkGreen.ebTable thead tr th { - background-color: #99c0bf; - border-top: none; - border-bottom: none; -} -.ebTable_color_darkGreen.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #e6efef; -} -.ebTable_color_green.ebTable thead tr th { - background-color: #d0e3a2; - border-top: none; - border-bottom: none; -} -.ebTable_color_green.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #f3f8e8; -} -.ebTable_color_yellow.ebTable thead tr th { - background-color: #fde499; - border-top: none; - border-bottom: none; -} -.ebTable_color_yellow.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #fff8e6; -} -.ebTable_color_orange.ebTable thead tr th { - background-color: #f9d099; - border-top: none; - border-bottom: none; -} -.ebTable_color_orange.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #fef3e6; -} -.ebTable_color_red.ebTable thead tr th { - background-color: #f4a6a3; - border-top: none; - border-bottom: none; -} -.ebTable_color_red.ebTable_striped tbody tr:nth-of-type(even) { - background-color: #fce9e8; -} -.ebTable_borderTop_none thead tr th { - border-top: none; -} -.ebTable_verticalBorders_none thead tr th, -.ebTable_verticalBorders_none tr td { - border-right: none !important; - border-left: none !important; -} -.ebTable_wrapHeaders th { - white-space: normal !important; - text-overflow: inherit !important; -} -.ebTable_wrapHeaders th .ebTable-headerText { - white-space: normal !important; - text-overflow: inherit !important; -} -.ebTable-expandableRow { - height: inherit !important; - display: none; -} -.ebTable-expandableRow_expanded { - display: table-row; -} -.ebTable-expandableRow > td { - padding: 0 !important; -} -.ebTable-expandableRow > td > div { - overflow: hidden; - height: 0; - transition: height 0.3s ease-in-out; -} -/** - * Hover/Active/Selected Effects - * - * Modifiers: - * .ebTable_hoverActive_none (disables native hover and active selectors, primarily for pin columns plugin) - */ -.ebTable { - /** Hover effect **/ -} -.ebTable.ebTable:not(.ebTable_hoverActive_none) tbody tr:not(.ebTable-expandableRow):not(.headerRow):hover > *, -.ebTable tbody tr:not(.ebTable-expandableRow):not(.headerRow).ebTableRow_hover > * { - background-image: linear-gradient(0deg, rgba(0, 102, 179, 0.1), rgba(0, 102, 179, 0.1)); -} -.ebTable.ebTable_highlightedEffect_solid tbody tr:not(.ebTable-expandableRow).ebTableRow_highlighted > * { - background-color: #ffffff !important; -} - -/* Context Menu */ -.ebContextMenu { - position: relative; - width: 16px; - height: 16px; -} -.ebContextMenu:focus { - outline: none; -} -.ebContextMenu-ExpandBtn, -.ebContextMenu-expandBtn { - width: 16px; - height: 16px; - position: relative; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; -} -.ebContextMenu-ExpandBtn:focus, -.ebContextMenu-expandBtn:focus { - outline: none; -} -.ebContextMenu-Dropdown, -.ebContextMenu-body { - position: absolute; - z-index: 1500; - min-width: 60px; - width: auto; - height: auto; - white-space: nowrap; - overflow: hidden; - text-overflow: ellipsis; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; - box-shadow: 5px 5px 5px #87888A; -} -.ebContextMenu-Dropdown_corner_default, -.ebContextMenu-body_corner_default { - position: absolute; - top: 20px; - left: 0px; -} -.ebContextMenu-Dropdown_corner_topRight, -.ebContextMenu-body_corner_topRight { - position: absolute; - top: 20px; - right: 0px; -} -.ebContextMenu-Dropdown_corner_bottomLeft, -.ebContextMenu-body_corner_bottomLeft { - position: absolute; - bottom: 20px; - left: 0px; -} -.ebContextMenu-Dropdown_corner_bottomRight, -.ebContextMenu-body_corner_bottomRight { - position: absolute; - bottom: 20px; - right: 0px; -} -.ebContextMenu-Dropdown_visible_false, -.ebContextMenu-body_visible_false { - visibility: hidden; -} -.ebContextMenu-Dropdown_visible_true, -.ebContextMenu-body_visible_true { - display: block; -} - -/* Component List */ -.ebComponentList { - position: relative; - z-index: 1500; - padding: 4px 0; - margin: 0; - color: #333333; - list-style: none; - background-color: #ffffff; - border: #bfbfbf solid 1px; - box-shadow: 0 0 5px 0 rgba(0, 0, 0, 0.2); - border-radius: 3px; - -moz-box-sizing: border-box; - box-sizing: border-box; -} -.ebComponentList-group, -.ebComponentList-item { - padding: 0 0.8rem; - line-height: 2.4rem; - font-size: 1.2rem; - background-color: #ffffff; -} -.ebComponentList-iconHolder { - display: inline-block; - vertical-align: middle; - width: 16px; - padding-right: 8px; -} -.ebComponentList-item { - cursor: pointer; -} -.ebComponentList-item-name { - display: inline-block; - font-size: 12px; - text-overflow: ellipsis; - overflow: hidden; - width: calc(100% - 24px); - vertical-align: middle; -} -.ebComponentList-item_icon { - font-size: 0; -} -.ebComponentList-link, -.ebComponentList-item, -.ebComponentList-item > *, -.ebComponentList-group-header { - white-space: nowrap; - text-overflow: ellipsis; - overflow: hidden; -} -.ebComponentList-group { - display: block; -} -.ebComponentList-group_expandable_collapsed > .ebComponentList-group-header, -.ebComponentList-group_expandable_expanded > .ebComponentList-group-header { - font-size: 0; - cursor: pointer; - white-space: nowrap; - height: 24px; - vertical-align: middle; -} -.ebComponentList-group_expandable_collapsed > .ebComponentList-group-header .ebComponentList-iconHolder + .ebComponentList-group-name, -.ebComponentList-group_expandable_expanded > .ebComponentList-group-header .ebComponentList-iconHolder + .ebComponentList-group-name { - width: calc(100% - 40px); -} -.ebComponentList-group_expandable_collapsed > .ebComponentList-inner, -.ebComponentList-group_expandable_expanded > .ebComponentList-inner { - padding: 0 0 0 24px; - margin: 0 -0.8rem; -} -.ebComponentList-group_expandable_collapsed > .ebComponentList-group-header { - border: none; -} -.ebComponentList-group_expandable_collapsed > .ebComponentList-inner .ebComponentList-item { - overflow: hidden; - padding: 0; - margin: 0; - height: 0; - opacity: 0; - transition: height 0.2s linear, padding 0.075s 0.075s linear, margin 0.075s 0.075s linear, opacity 0.075s linear; -} -.ebComponentList-group_expandable_collapsed > .ebComponentList-inner .ebComponentList-group_expandable_collapsed .ebComponentList-group-header, -.ebComponentList-group_expandable_collapsed > .ebComponentList-inner .ebComponentList-group_expandable_expanded .ebComponentList-group-header { - overflow: hidden; - padding: 0; - margin: 0; - height: 0; - opacity: 0; - transition: height 0.2s linear, padding 0.075s 0.075s linear, margin 0.075s 0.075s linear, opacity 0.075s linear; -} -.ebComponentList-group_expandable_collapsed > .ebComponentList-inner .ebComponentList-group > .ebComponentList-inner { - padding: 0; - margin: 0; - transition: padding 0.1s 0.1s linear, margin 0.1s 0.1s linear; -} -.ebComponentList-group_expandable_expanded > .ebComponentList-group-header { - border-bottom: 1px solid #999; -} -.ebComponentList-group_expandable_expanded > .ebComponentList-inner > .ebComponentList-item { - overflow: hidden; - height: 24px; - transition: height 0.2s linear, padding 0.075s linear, margin 0.075s linear, opacity 0.15s 0.15s linear; -} -.ebComponentList-group_expandable_expanded > .ebComponentList-inner > .ebComponentList-group_expandable_expanded > .ebComponentList-group-header, -.ebComponentList-group_expandable_expanded > .ebComponentList-inner > .ebComponentList-group_expandable_collapsed > .ebComponentList-group-header { - overflow: hidden; - height: 24px; - text-overflow: ellipsis; - transition: height 0.2s linear, padding 0.075s linear, margin 0.075s linear, opacity 0.15s 0.15s linear; -} -.ebComponentList-group:not(.ebComponentList-group_expandable_collapsed):not(.ebComponentList-group_expandable_expanded) > .ebComponentList-group-header { - cursor: default !important; - pointer-events: none !important; - -ms-touch-action: none !important; - touch-action: none !important; - -khtml-user-select: none !important; - -moz-user-select: none !important; - -o-user-select: none !important; - -webkit-user-select: none !important; - user-select: none; -} -.ebComponentList-group-header { - font-size: 1.2rem; - font-weight: bold; - line-height: 2.4rem; - border-bottom: 1px solid #999; - background-color: #ffffff; -} -.ebComponentList-group-header_icon { - font-size: 0; -} -.ebComponentList-group-header_icon > .ebComponentList-group-name { - width: calc(100% - 24px); -} -.ebComponentList-group-name { - display: inline-block; - width: calc(100% - 16px); - font-size: 1.2rem; - line-height: 2.4rem; - font-weight: bold; - text-overflow: ellipsis; - overflow: hidden; - white-space: nowrap; - vertical-align: middle; -} -.ebComponentList-inner { - margin: 0 -0.8rem; - padding: 4px 0 0 0; -} -.ebComponentList-link { - display: block; -} -.ebComponentList-link:hover { - text-decoration: none; -} -.ebComponentList-separator { - height: 1px; - margin: 0.4rem; - background-color: #E6E6E6; -} -.ebComponentList_focus_forced .ebComponentList-item:hover { - background-color: transparent; -} -.ebComponentList_focus_forced .ebComponentList-item_focused:hover { - background-color: #e6f0f7; -} -.ebComponentList:not(.ebComponentList_focus_forced) .ebComponentList-item:hover { - background-color: #e6f0f7; -} -.ebComponentList_focus_forced .ebComponentList-item:active, -.ebComponentList:not(.ebComponentList_focus_forced) .ebComponentList-item:active { - background-color: #cce0f0; -} -.ebComponentList-item { - /* Fixes MultiSelectBox ellipsis bug in Firefox */ - margin: 0px !important; - font-size: 1em !important; -} -.ebComponentList-item_focused { - background-color: #e6f0f7; -} -.ebComponentList-item_disabled { - color: #b0b0af; - cursor: not-allowed !important; -} -.ebComponentList-item_disabled:hover, -.ebComponentList-item_disabled:active { - background-color: inherit !important; -} -.ebComponentList-item_selected { - position: relative; - cursor: default; -} -.ebComponentList-item_selected > .ebComponentList-link { - cursor: default; - color: #333333; - cursor: default !important; - pointer-events: none !important; - -ms-touch-action: none !important; - touch-action: none !important; - -khtml-user-select: none !important; - -moz-user-select: none !important; - -o-user-select: none !important; - -webkit-user-select: none !important; - user-select: none; -} -.ebComponentList-item_selected:before { - position: absolute; - content: ""; - left: 0; - top: 0; - bottom: 0; - width: 100%; - opacity: .2; - background-color: #0967b2; -} -.ebComponentList-item > .ebComponentList-checkboxHolder > .ebCheckbox { - margin-left: 1px; -} -.ebComponentList-item > .ebComponentList-checkboxHolder > .ebCheckbox-label { - padding-left: 3px; - overflow: hidden; - font-size: 12px; - line-height: 2.4rem; - text-overflow: ellipsis; - width: calc(100% - 24px); -} -.ebComponentList-info { - color: #333333; - font-style: italic; - text-align: center; -} -.ebComponentList-info:hover { - background-color: #ffffff; -} -.ebComponentList-info:active { - background-color: #ffffff; -} -.ebComponentList-info, -.ebComponentList-loader { - display: none; - margin: 0.6rem; - cursor: default; -} -.ebComponentList_info .ebComponentList-group, -.ebComponentList_info .ebComponentList-separator, -.ebComponentList_info .ebComponentList-item { - display: none; -} -.ebComponentList_info .ebComponentList-info { - display: block; -} -.ebComponentList_loading { - min-height: 34px; -} -.ebComponentList_loading .ebComponentList-loader { - display: block; -} -.ebComponentList_loading .ebComponentList-item_selected:before { - display: none; -} -.ebComponentList_loading > .ebComponentList-group, -.ebComponentList_loading > .ebComponentList-item, -.ebComponentList_loading > .ebComponentList-items > .ebComponentList-group, -.ebComponentList_loading > .ebComponentList-items > .ebComponentList-item { - opacity: 0.4; -} - -/* Scrollbar */ -.eb_scrollbar { - -webkit-overflow-scrolling: touch; - overflow: auto; -} -.eb_scrollbar::-webkit-scrollbar { - width: 14px; - height: 14px; -} -.eb_scrollbar::-webkit-scrollbar-track { - background-color: #f0f0f0; - background-clip: content-box; -} -.eb_scrollbar::-webkit-scrollbar-thumb { - background-color: #cccccc; - border-radius: 3px; - transition: all 0.2s linear; - background-clip: content-box; -} -.eb_scrollbar::-webkit-scrollbar-thumb:hover { - background-color: #999999; -} -.eb_scrollbar::-webkit-scrollbar-button { - width: 14px; - height: 14px; - background-repeat: no-repeat; - background-color: #f0f0f0; - background-position: center; -} -.eb_scrollbar::-webkit-scrollbar-button:hover { - background-color: #cccccc; -} -.eb_scrollbar::-webkit-scrollbar-button:vertical:decrement { - background-position: center 4px; - background-image: url("data:image/svg+xml;utf8,"); - border-top-left-radius: 2px; - border-top-right-radius: 2px; -} -.eb_scrollbar::-webkit-scrollbar-button:vertical:increment { - background-image: url("data:image/svg+xml;utf8,"); - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; -} -.eb_scrollbar::-webkit-scrollbar-button:horizontal:decrement { - background-position: 4px center; - background-image: url("data:image/svg+xml;utf8,"); - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -.eb_scrollbar::-webkit-scrollbar-button:horizontal:increment { - background-image: url("data:image/svg+xml;utf8,"); - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} - - -/* Input */ -.ebInput { - display: inline-block; - vertical-align: middle; - text-align: left; - font-size: 1.2rem; - width: 140px; - height: 2.4rem; - padding: 0.4rem 0.6rem; - border: 1px solid #b3b3b3; - -moz-box-sizing: border-box; - box-sizing: border-box; - border-radius: 3px; - box-shadow: inset 1px 1px 0 0 #cccccc; - -webkit-appearance: none; - -moz-appearance: none; - -ms-appearance: none; - appearance: none; -} -.ebInput_wMargin { - margin: 6px; -} -.ebInput_txtCenter { - text-align: center; -} -.ebInput_miniW, -.ebInput_width_mini { - width: 40px; -} -.ebInput_smallW, -.ebInput_width_small { - width: 80px; -} -.ebInput_longW, -.ebInput_width_long { - width: 180px; -} -.ebInput_xLongW, -.ebInput_width_xLong { - width: 220px; -} -.ebInput_width_full { - min-width: 40px; - width: 100%; -} -.ebInput_noRightSide { - border-width: 1px 0 1px 1px; - border-radius: 3px 0 0 3px; -} -.ebInput_noLeftSide { - border-width: 1px 1px 1px 0; - border-radius: 0 3px 3px 0; - box-shadow: inset 0 1px 0 0 #cccccc; -} -.ebInput:hover { - border-color: #666666; -} -.ebInput[readonly] { - cursor: text; - //box-shadow: none; - border-color: #E3E3E3; - background-color: #f0f0f0; - color: #b2b2b2; -} -.ebInput[readonly]:hover { - //border-color: #E3E3E3; -} -.ebInput_disabled, -.ebInput:disabled { - color: #B2B2B2; - border-color: #B2B2B2; - background-color: rgba(0, 0, 0, 0.05); - -webkit-text-fill-color: #b2b2b2; - opacity: 1; - -ms-touch-action: none !important; - touch-action: none !important; - box-shadow: inset 1px 1px 0 0 #cccccc; -} -.ebInput_borderColor { - border-color: #b3b3b3; -} -.ebInput_borderColor_red { - border-color: #e32119; -} -.ebInput_status_none { - border-color: #b3b3b3; -} -.ebInput_status_warning { - border-color: #f08a00; -} -.ebInput_status_error { - border-color: #e32119; -} -.ebInput.eb_wMargin + .ebInput-status { - margin: -0.2rem 0.8rem 0 0.6rem; -} -.ebInput-status { - display: block; - margin: 0.4rem 0 0 0; - line-height: 1.2rem; - min-height: 1.8rem; - font-size: 1.2rem; - font-weight: normal; -} -.ebInput-statusOk, -.ebInput-statusError { - vertical-align: middle; -} -.ebInput-statusOk:before, -.ebInput-statusError:before { - display: inline-block; - vertical-align: middle; - margin: 0 0.6rem 0 0; - width: 1.2rem; - height: 1.2rem; - content: ''; - background-repeat: no-repeat; -} -.ebInput-statusInfo { - vertical-align: middle; - color: #8d8d8d; -} -.ebInput-statusOk { - color: #89ba17; - display: none; -} -.ebInput-statusOk:before { - background-image: url('../resources/form/valid_icon.svg'); -} -.ebInput-statusError { - color: #e32119; - display: none; -} -.ebInput-statusError:before { - background-image: url('../resources/form/invalid_icon.svg'); -} -.ebInput-status_none { - display: none; -} -.ebInput-status_hide .ebInput-statusOk, -.ebInput-status_hide .ebInput-statusError, -.ebInput-status_hide .ebInput-statusInfo { - display: none; -} -.ebInput-status_info .ebInput-statusInfo { - display: inline-block; -} -.ebInput-status_info .ebInput-statusOk, -.ebInput-status_info .ebInput-statusError { - display: none; -} -.ebInput-status_ok .ebInput-statusOk { - display: inline-block; -} -.ebInput-status_ok .ebInput-statusError, -.ebInput-status_ok .ebInput-statusInfo { - display: none; -} -.ebInput-status_error .ebInput-statusError { - display: inline-block; -} -.ebInput-status_error .ebInput-statusOk, -.ebInput-status_error .ebInput-statusInfo { - display: none; -} -.ebInput:not(.ebInput_validation_focusLost):valid + .ebInput-status:not(.ebInput-status_hide):not(.ebInput-status_info):not(.ebInput-status_ok):not(.ebInput-status_error) .ebInput-statusOk { - display: inline-block; -} -.ebInput:not(.ebInput_validation_focusLost):invalid:not(.ebInput_borderColor):not(.ebInput_status_warning):not(.ebInput_status_none) { - border-color: #e32119; -} -.ebInput:not(.ebInput_validation_focusLost):invalid + .ebInput-status:not(.ebInput-status_hide):not(.ebInput-status_info):not(.ebInput-status_ok):not(.ebInput-status_error) .ebInput-statusError { - display: inline-block; -} -.ebInput:not(.ebInput_validation_focusLost):invalid + .ebInput-status:not(.ebInput-status_hide):not(.ebInput-status_info):not(.ebInput-status_ok):not(.ebInput-status_error) .ebInput-statusInfo { - display: none; -} -.ebInput.ebInput_validation_focusLost:not(:focus):valid + .ebInput-status:not(.ebInput-status_hide):not(.ebInput-status_info):not(.ebInput-status_ok):not(.ebInput-status_error) .ebInput-statusOk { - display: inline-block; -} -.ebInput.ebInput_validation_focusLost:not(:focus):invalid:not(.ebInput_borderColor):not(.ebInput_status_warning):not(.ebInput_status_none) { - border-color: #e32119; -} -.ebInput.ebInput_validation_focusLost:not(:focus):invalid + .ebInput-status:not(.ebInput-status_hide):not(.ebInput-status_info):not(.ebInput-status_ok):not(.ebInput-status_error) .ebInput-statusError { - display: inline-block; -} -.ebInput.ebInput_validation_focusLost:not(:focus):invalid + .ebInput-status:not(.ebInput-status_hide):not(.ebInput-status_info):not(.ebInput-status_ok):not(.ebInput-status_error) .ebInput-statusInfo { - display: none; -} - -/* Textarea */ -.ebTextArea { - -webkit-overflow-scrolling: touch; - overflow: auto; - display: inline-block; - vertical-align: middle; - text-align: left; - font-size: 1.2rem; - width: 140px; - padding: 0.4rem 0.6rem; - margin: 0; - border: 1px solid #b3b3b3; - font-family: arial; - -moz-box-sizing: border-box; - box-sizing: border-box; - border-radius: 3px; - box-shadow: inset 1px 1px 0 0 #cccccc; - -webkit-appearance: none; - -moz-appearance: none; - -ms-appearance: none; - appearance: none; -} -.ebTextArea::-webkit-scrollbar { - width: 14px; - height: 14px; -} -.ebTextArea::-webkit-scrollbar-track { - background-color: #f0f0f0; - background-clip: content-box; -} -.ebTextArea::-webkit-scrollbar-thumb { - background-color: #cccccc; - border-radius: 3px; - transition: all 0.2s linear; - background-clip: content-box; -} -.ebTextArea::-webkit-scrollbar-thumb:hover { - background-color: #999999; -} -.ebTextArea::-webkit-scrollbar-button { - width: 14px; - height: 14px; - background-repeat: no-repeat; - background-color: #f0f0f0; - background-position: center; -} -.ebTextArea::-webkit-scrollbar-button:hover { - background-color: #cccccc; -} -.ebTextArea::-webkit-scrollbar-button:vertical:decrement { - background-position: center 4px; - background-image: url("data:image/svg+xml;utf8,"); - border-top-left-radius: 2px; - border-top-right-radius: 2px; -} -.ebTextArea::-webkit-scrollbar-button:vertical:increment { - background-image: url("data:image/svg+xml;utf8,"); - border-bottom-left-radius: 2px; - border-bottom-right-radius: 2px; -} -.ebTextArea::-webkit-scrollbar-button:horizontal:decrement { - background-position: 4px center; - background-image: url("data:image/svg+xml;utf8,"); - border-bottom-left-radius: 2px; - border-top-left-radius: 2px; -} -.ebTextArea::-webkit-scrollbar-button:horizontal:increment { - background-image: url("data:image/svg+xml;utf8,"); - border-bottom-right-radius: 2px; - border-top-right-radius: 2px; -} -.ebTextArea_noMargin { - margin: 0; -} -.ebTextArea_txtCenter { - text-align: center; -} -.ebTextArea_miniW, -.ebTextArea_width_mini { - width: 40px; -} -.ebTextArea_smallW, -.ebTextArea_width_small { - width: 80px; -} -.ebTextArea_longW, -.ebTextArea_width_long { - width: 180px; -} -.ebTextArea_xLongW, -.ebTextArea_width_xLong { - width: 220px; -} -.ebTextArea_width_full { - min-width: 40px; - width: 100%; -} -.ebTextArea_noRightSide { - border-width: 1px 0 1px 1px; - border-radius: 3px 0 0 3px; -} -.ebTextArea_noLeftSide { - border-width: 1px 1px 1px 0; - border-radius: 0 3px 3px 0; -} -.ebTextArea:hover { - border-color: #666666; -} -.ebTextArea[readonly] { - cursor: text; - border-color: #E3E3E3; - background-color: #f0f0f0; - color: #b2b2b2; -} -.ebTextArea[readonly]:hover { - //border-color: #E3E3E3; -} -.ebTextArea_disabled, -.ebTextArea:disabled { - color: #B2B2B2; - border-color: #B2B2B2; - background-color: rgba(0, 0, 0, 0.05); - -ms-touch-action: none; - touch-action: none; - -webkit-text-fill-color: #b2b2b2; - opacity: 1; - box-shadow: inset 1px 1px 0 0 #cccccc; -} -.ebTextArea_status_none { - border-color: #b3b3b3; -} -.ebTextArea_status_warning { - border-color: #f08a00; -} -.ebTextArea_status_error { - border-color: #e32119; -} -.ebTextArea:invalid:not(.ebTextArea_status_warning):not(.ebTextArea_status_none) { - border-color: #e32119; -} - -/* Button */ -.ebBtn { - position: relative; - display: inline-block; - vertical-align: middle; - color: #333333; - background-color: #ffffff; - border: none; - min-width: 60px; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2); - border-radius: 3px; - -moz-box-sizing: border-box; - box-sizing: border-box; - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.1) 100%); - padding: 0 8px; - height: 2.4rem; - font-size: 1.2rem; - white-space: nowrap; - text-decoration: none; - text-align: center; - cursor: pointer; -} -a.ebBtn:hover { - color: #333; -} -a.ebBtn:focus, -a.ebBtn:active, -a.ebBtn_active { - text-decoration: none; -} -.ebBtn:focus { - outline: none; - box-shadow: 0 0 2px 1px #4d90fe, 0 0 0 1px rgba(0, 0, 0, 0.2) inset; -} -.ebBtn_color_blue, -.ebBtn_color_darkBlue, -.ebBtn_color_paleBlue, -.ebBtn_color_darkGreen, -.ebBtn_color_green, -.ebBtn_color_orange, -.ebBtn_color_red, -.ebBtn_color_purple { - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.3) 100%); - color: #F0F0F0 !important; -} -.ebBtn_color_blue:hover, -.ebBtn_color_darkBlue:hover, -.ebBtn_color_paleBlue:hover, -.ebBtn_color_darkGreen:hover, -.ebBtn_color_green:hover, -.ebBtn_color_orange:hover, -.ebBtn_color_red:hover, -.ebBtn_color_purple:hover { - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.1) 100%); -} -.ebBtn_color_blue { - background-color: #0966b3; -} -.ebBtn_color_darkBlue { - background-color: #0066b3; -} -.ebBtn_color_paleBlue { - background-color: #00A9D4; -} -.ebBtn_color_darkGreen { - background-color: #00625F; -} -.ebBtn_color_green { - background-color: #89BA17; -} -.ebBtn_color_orange { - background-color: #F08A00; -} -.ebBtn_color_red { - background-color: #E32119; -} -.ebBtn_color_purple { - background-color: #953882; -} -.ebBtn_small { - font-size: 1.1rem; - padding: 0 6px; - height: 2rem; -} -.ebBtn_large { - font-size: 1.4rem; - padding: 0 10px; - height: 3.8rem; -} -.ebBtn:hover { - text-decoration: none; - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.15) 100%); -} -.ebBtn_active, -.ebBtn:active, -.ebBtn_active:hover { - text-decoration: none; - box-shadow: inset 2px 2px 2.5px 0 rgba(0, 0, 0, 0.35), inset 0 0 0 1px rgba(0, 0, 0, 0.2); - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0.2) 100%); -} -.ebBtn:disabled, -.ebBtn_disabled, -.ebBtn:disabled:hover, -.ebBtn_disabled:hover, -.ebBtn:disabled:active, -.ebBtn_disabled:active { - -ms-touch-action: none !important; - cursor: not-allowed !important; - touch-action: none !important; - background: rgba(0, 0, 0, 0.1); - color: #8d8d8d !important; -} -.ebBtn:disabled .ebIcon, -.ebBtn_disabled .ebIcon { - opacity: 0.3; -} -.ebBtn_subtle { - background-image: none; - background-color: transparent; - box-shadow: none; - min-width: auto; -} -.ebBtn_subtle:hover { - background-image: none; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2); -} -.ebBtn_subtle:focus { - box-shadow: 0 0 2px 1px #4d90fe, 0 0 0 1px rgba(0, 0, 0, 0.2) inset; -} -.ebBtn_subtle:active, -.ebBtn_subtle.ebBtn_subtle_active { - text-decoration: none; - box-shadow: inset 2px 2px 2.5px 0 rgba(0, 0, 0, 0.35), inset 0 0 0 1px rgba(0, 0, 0, 0.2); - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0.2) 100%); -} -.ebBtn_subtle:disabled, -.ebBtn_subtle.ebBtn_subtle_disabled, -.ebBtn_subtle:disabled:hover, -.ebBtn_subtle.ebBtn_subtle_disabled:hover, -.ebBtn_subtle:disabled:active, -.ebBtn_subtle.ebBtn_subtle_disabled:active { - background-color: transparent; - box-shadow: none; -} -.ebBtn:active:focus, -.ebBtn_active:focus { - box-shadow: inset 2px 2px 2.5px 0 rgba(0, 0, 0, 0.35), inset 0 0 0 1px rgba(0, 0, 0, 0.2), 0 0 2px 1px #4d90fe; - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0.2) 100%); -} - -/* Combobox */ -.ebCombobox { - position: relative; - display: inline-block; - vertical-align: middle; - white-space: nowrap; - margin: 0; - padding: 0; - height: 2.4rem; -} -.ebCombobox_width_full { - min-width: 70px; - width: 100%; -} -.ebCombobox_width_full .ebInput { - width: calc(100% - 30px); -} -.ebCombobox-list, -.ebCombobox-body { - position: absolute; - margin-top: 6px; - display: none; - width: 100%; -} -.ebCombobox-list_rightAlign, -.ebCombobox-body_rightAlign { - right: 0; -} -.ebCombobox-Helper, -.ebCombobox-helper { - position: relative; - display: inline-block; - vertical-align: middle; - width: 30px; - /*height: 100%; ewwatkmi: replaced with 2.4rem below*/ - height: 2.4rem; - cursor: pointer; - border: 1px solid #999999; - background-color: #ffffff; - -moz-box-sizing: border-box; - box-sizing: border-box; - border-radius: 0 3px 3px 0; - -webkit-appearance: none; - -moz-appearance: none; - -ms-appearance: none; - appearance: none; - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.1) 100%); -} -.ebCombobox-Helper:hover, -.ebCombobox-helper:hover { - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.15) 100%); -} -.ebCombobox-Helper:active, -.ebCombobox-helper:active { - box-shadow: inset 2px 2px 3px 0 rgba(0, 0, 0, 0.35); - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0.2) 100%); -} -.ebCombobox-Helper:disabled, -.ebCombobox-helper:disabled { - border-color: #b2b2b2; -} -.ebCombobox-Helper:disabled, -.ebCombobox-helper:disabled, -.ebCombobox-Helper:disabled:hover, -.ebCombobox-helper:disabled:hover, -.ebCombobox-Helper:disabled:active, -.ebCombobox-helper:disabled:active { - -ms-touch-action: none !important; - cursor: not-allowed !important; - touch-action: none !important; - background: #e5e5e5; - color: #B2B2B2; - cursor: not-allowed; - box-shadow: none; -} -.ebCombobox-Helper .ebCombobox-iconHolder, -.ebCombobox-helper .ebCombobox-iconHolder { - display: inline-block; - opacity: 0.7; - cursor: pointer; - line-height: 2.2rem; -} -.ebCombobox-Helper .ebCombobox-iconHolder .ebIcon, -.ebCombobox-helper .ebCombobox-iconHolder .ebIcon { - position: absolute; - top: 0; - bottom: 0; - left: 0; - right: 0; - margin: auto; -} -.ebCombobox:hover > .ebCombobox-Helper, -.ebCombobox:hover > .ebCombobox-helper { - border-color: #666666; -} -.ebCombobox .ebInput:focus ~ .ebCombobox-list, -/*.ebCombobox .ebInput:focus ~ .ebCombobox-body,*/ -.ebCombobox:active > .ebCombobox-list, -/*.ebCombobox:active > .ebCombobox-body*/ { - display: block; -} -.ebCombobox > .ebCombobox-list, -.ebCombobox > .ebCombobox-body { - display: none; -} -.ebCombobox_noMargin { - margin: 0; -} -.ebCombobox_disabled, -.ebCombobox_disabled *:hover { - -ms-touch-action: none !important; - cursor: not-allowed !important; - touch-action: none !important; -} -.ebCombobox_disabled .ebCombobox-iconHolder, -.ebCombobox_disabled .ebCombobox-iconHolder:hover, -.ebCombobox_disabled .ebCombobox-iconHolder:active { - -ms-touch-action: none !important; - cursor: not-allowed !important; - touch-action: none !important; - opacity: 0.3; -} -.ebCombobox_disabled:hover > .ebCombobox-Helper, -.ebCombobox_disabled:hover > .ebCombobox-helper { - border-color: #b2b2b2; -} -.ebCombobox_disabled:active > .ebCombobox-list, -.ebCombobox_disabled:active > .ebCombobox-body { - display: none; -} -.ebCombobox_disabled .ebInput:focus ~ .ebCombobox-list, -.ebCombobox_disabled .ebInput:focus ~ .ebCombobox-body { - display: none; -} -.ebCombobox_status_warning .ebInput { - border-color: #f08a00; -} -.ebCombobox_status_error .ebInput { - border-color: #e32119; -} - -/* Switcher */ -.ebSwitcher { - position: relative; - height: 24px; - width: 84px; - display: block; - overflow: hidden; - cursor: pointer; - border: 1px solid #ccc; - border-radius: 3px; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; -} -.ebSwitcher-checkbox { - display: none; -} -.ebSwitcher-body { - position: relative; - font-size: 0; - white-space: nowrap; - top: 0; - left: 0; - width: 100%; - height: 100%; - transition: left 0.2s linear; -} -.ebSwitcher-onLabel, -.ebSwitcher-switch, -.ebSwitcher-offLabel { - display: inline-block; - vertical-align: top; - overflow: hidden; - height: 100%; -} -.ebSwitcher-onLabel, -.ebSwitcher-offLabel { - width: calc(100% - 24px); - line-height: 2.4rem; - color: white; - text-align: center; - font-size: 1.2rem; -} -.ebSwitcher-onLabel { - background-color: #89ba17; -} -.ebSwitcher-offLabel { - background-color: #999999; -} -.ebSwitcher-switch { - height: 24px; - width: 24px; - transition: left 0.2s; -} -.ebSwitcher-switch::after { - content: ""; - position: absolute; - margin: -1px; - width: 24px; - height: 24px; - display: inline-block; - background: #ffffff; - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.1) 100%); - border-radius: 3px; - border: 1px solid rgba(0, 0, 0, 0.2); -} -.ebSwitcher-checkbox:not(:checked) + .ebSwitcher-body { - left: calc(-100% + 24px); -} -.ebSwitcher:focus { - /* - outline: #4d90fe auto 5px; - box-shadow: 0 0 0 1px #4d90fe; - -webkit-box-shadow: none; - */ - outline: none; - box-shadow: 0 0 2px 1px #4d90fe; -} -.ebSwitcher_status_warning { - border-color: #f08a00; -} -.ebSwitcher_status_error { - border-color: #e32119; -} -.ebSwitcher_disabled { - cursor: not-allowed; -} -.ebSwitcher_disabled .ebSwitcher-onLabel, -.ebSwitcher_disabled .ebSwitcher-offLabel, -.ebSwitcher_disabled .ebSwitcher-switch::after { - background-color: #e5e5e5; - background-image: none; - color: #8d8d8d; -} - -/* Dropdown */ -.ebDropdown { - position: relative; - display: inline-block; - height: 2.4rem; - padding: 0; - margin: 0; -} -.ebDropdown-list, -.ebDropdown-body { - position: absolute; - margin-top: 6px; - display: none; - min-width: 100%; -} -.ebDropdown-list_rightAlign, -.ebDropdown-body_rightAlign { - right: 0; -} -.ebDropdown-Header, -.ebDropdown-header { - position: relative; - display: inline-block; - vertical-align: middle; - height: 100%; - min-width: 60px; - margin: 0; - padding: 6px 8px; - line-height: 1.2rem; - font-size: 1.2rem; - text-align: left; - text-decoration: none; - white-space: nowrap; - color: #333333; - background-color: #ffffff; - border: none; - cursor: pointer; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2); - border-radius: 3px; - -moz-box-sizing: border-box; - box-sizing: border-box; - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.1) 100%); -} -.ebDropdown-Header:hover, -.ebDropdown-header:hover { - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0) 0%, rgba(0, 0, 0, 0.15) 100%); -} -.ebDropdown-Header:active, -.ebDropdown-header:active { - box-shadow: inset 2px 2px 2.5px 0 rgba(0, 0, 0, 0.35), inset 0 0 0 1px rgba(0, 0, 0, 0.2); - background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.2) 0%, rgba(0, 0, 0, 0.2) 100%); -} -.ebDropdown-Header .ebDropdown-caption, -.ebDropdown-header .ebDropdown-caption { - display: inline-block; - padding: 0 4px 0 0; - vertical-align: middle; - min-width: 27px; -} -.ebDropdown-Header .ebDropdown-iconHolder, -.ebDropdown-header .ebDropdown-iconHolder { - display: inline-block; - cursor: pointer; - opacity: 0.7; -} -.ebDropdown .ebDropdown-Header:focus + .ebDropdown-list, -.ebDropdown .ebDropdown-header:focus + .ebDropdown-body, -.ebDropdown .ebDropdown-Header:active + .ebDropdown-list, -.ebDropdown .ebDropdown-header:active + .ebDropdown-body, -.ebDropdown:focus > .ebDropdown-list, -.ebDropdown:focus > .ebDropdown-body, -.ebDropdown:active > .ebDropdown-list, -.ebDropdown:active > .ebDropdown-body { - display: block; -} -.ebDropdown_disabled .ebDropdown-Header, -.ebDropdown_disabled .ebDropdown-header { - background: rgba(0, 0, 0, 0.1); - color: #B2B2B2; -} -.ebDropdown_disabled .ebDropdown-Header, -.ebDropdown_disabled .ebDropdown-header, -.ebDropdown_disabled .ebDropdown-Header:hover, -.ebDropdown_disabled .ebDropdown-header:hover, -.ebDropdown_disabled .ebDropdown-Header:active, -.ebDropdown_disabled .ebDropdown-header:active { - -ms-touch-action: none !important; - cursor: not-allowed !important; - touch-action: none !important; -} -.ebDropdown_disabled .ebDropdown-Header:hover, -.ebDropdown_disabled .ebDropdown-header:hover, -.ebDropdown_disabled .ebDropdown-Header:active, -.ebDropdown_disabled .ebDropdown-header:active { - background: rgba(0, 0, 0, 0.1); - color: #B2B2B2; - box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.2); -} -.ebDropdown_disabled .ebDropdown-Header .ebDropdown-iconHolder, -.ebDropdown_disabled .ebDropdown-header .ebDropdown-iconHolder, -.ebDropdown_disabled .ebDropdown-Header .ebDropdown-iconHolder:hover, -.ebDropdown_disabled .ebDropdown-header .ebDropdown-iconHolder:hover, -.ebDropdown_disabled .ebDropdown-Header .ebDropdown-iconHolder:active, -.ebDropdown_disabled .ebDropdown-header .ebDropdown-iconHolder:active { - -ms-touch-action: none !important; - cursor: not-allowed !important; - touch-action: none !important; - opacity: 0.3; -} -.ebDropdown_disabled .ebDropdown-Header:focus + .ebDropdown-list, -.ebDropdown_disabled .ebDropdown-header:focus + .ebDropdown-body, -.ebDropdown_disabled .ebDropdown-Header:active + .ebDropdown-list, -.ebDropdown_disabled .ebDropdown-header:active + .ebDropdown-body, -.ebDropdown_disabled:focus > .ebDropdown-list, -.ebDropdown_disabled:focus > .ebDropdown-body, -.ebDropdown_disabled:active > .ebDropdown-list, -.ebDropdown_disabled:active > .ebDropdown-body { - display: none; -} - -/* Icons */ -.ebIcon { - display: inline-block; - vertical-align: middle; - border: none; - height: 16px; - width: 16px; - line-height: 1.6rem; - background-repeat: no-repeat; - background-position: center; - background-color: transparent; - background-size: 100%; - -khtml-user-select: none; - -moz-user-select: none; - -o-user-select: none; - -webkit-user-select: none; - user-select: none; - /*small icons */ - /*16px icons*/ -} -.ebIcon_interactive { - opacity: 0.7; - cursor: pointer; -} -.ebIcon_interactive:hover { - opacity: 1.0; -} -.ebIcon_interactive:active { - opacity: 0.4; -} -.ebIcon_button { - margin: 10px; -} -.ebIcon_noVertAlign { - vertical-align: inherit; -} -.ebIcon_disabled { - cursor: default; -} -.ebIcon_disabled, -.ebIcon_disabled:hover, -.ebIcon_disabled:active { - opacity: 0.3; -} -.ebIcon_small { - width: 1rem; - height: 1rem; - line-height: 1rem; -} -.ebIcon_big { - width: 2rem; - height: 2rem; - line-height: 2rem; -} -.ebIcon_large { - width: 2.8rem; - height: 2.8rem; - line-height: 2.8rem; -} -.ebIcon_wMargin { - margin: 4px; -} -.ebIcon_upArrow { - background-image: url('../resources/16px/ArrowUpSmall_black_16px.svg'); -} -.ebIcon_upArrow_white { - background-image: url('../resources/16px/arrowUpSmall_white_16px.svg'); -} -.ebIcon_downArrow { - background-image: url('../resources/16px/ArrowDownSmall_black_16px.svg'); -} -.ebIcon_downArrow_white { - background-image: url('../resources/16px/ArrowDownSmall_white_16px.svg'); -} -.ebIcon_leftArrow { - background-image: url('../resources/16px/ArrowLeftSmall_black_16px.svg'); -} -.ebIcon_leftArrow_white { - background-image: url('../resources/16px/ArrowLeftSmall_white_16px.svg'); -} -.ebIcon_rightArrow { - background-image: url('../resources/16px/ArrowRightSmall_black_16px.svg'); -} -.ebIcon_rightArrow_white { - background-image: url('../resources/16px/ArrowRightSmall_white_16px.svg'); -} -.ebIcon_prevArrow { - background-image: url('../resources/16px/ArrowDoubleLeftSmall_black_16px.svg'); -} -.ebIcon_nextArrow { - background-image: url('../resources/16px/ArrowDoubleRightSmall_black_16px.svg'); -} -.ebIcon_upArrow_10px { - background-image: url('../resources/10px/ArrowUpSmall_black_10px.svg'); -} -.ebIcon_downArrow_10px { - background-image: url('../resources/10px/ArrowDownSmall_black_10px.svg'); -} -.ebIcon_leftArrow_10px { - background-image: url('../resources/10px/ArrowLeftSmall_black_10px.svg'); -} -.ebIcon_rightArrow_10px { - background-image: url('../resources/10px/ArrowRightSmall_black_10px.svg'); -} -.ebIcon_prevArrow_10px { - background-image: url('../resources/10px/ArrowDoubleLeftSmall_black_10px.svg'); -} -.ebIcon_nextArrow_10px { - background-image: url('../resources/10px/ArrowDoubleRightSmall_black_10px.svg'); -} -.ebIcon_errorSmall { - background-image: url('../resources/other/errorSmall_red_10px.svg'); -} -.ebIcon_tickSmallBlack { - background-image: url('../resources/other/tick_black_10x8px.svg'); -} -.ebIcon_tickSmallGreen { - background-image: url('../resources/other/tick_green_10x8px.svg'); -} -.ebIcon_upArrowLarge { - background-image: url('../resources/16px/ArrowUp_black_16px.svg'); -} -.ebIcon_upArrowLarge_white { - background-image: url('../resources/16px/ArrowUp_white_16px.svg'); -} -.ebIcon_downArrowLarge { - background-image: url('../resources/16px/ArrowDown_black_16px.svg'); -} -.ebIcon_downArrowLarge_white { - background-image: url('../resources/16px/ArrowDown_white_16px.svg'); -} -.ebIcon_downArrowLarge_blue { - background-image: url('../resources/16px/ArrowDown_blue_16px.svg'); -} -.ebIcon_leftArrowLarge { - background-image: url('../resources/16px/ArrowLeft_black_16px.svg'); -} -.ebIcon_leftArrowLarge_white { - background-image: url('../resources/16px/ArrowLeft_white_16px.svg'); -} -.ebIcon_rightArrowLarge { - background-image: url('../resources/16px/ArrowRight_black_16px.svg'); -} -.ebIcon_rightArrowLarge_white { - background-image: url('../resources/16px/ArrowRight_white_16px.svg'); -} -.ebIcon_circleArrowDown { - background-image: url('../resources/16px/circleArrowDown_black_16px.svg'); -} -.ebIcon_circleArrowDown_white { - background-image: url('../resources/16px/circleArrowDown_white_16px.svg'); -} -.ebIcon_circleArrowLeft { - background-image: url('../resources/16px/circleArrowLeft_black_16px.svg'); -} -.ebIcon_circleArrowLeft_white { - background-image: url('../resources/16px/circleArrowLeft_white_16px.svg'); -} -.ebIcon_circleArrowRight { - background-image: url('../resources/16px/circleArrowRight_black_16px.svg'); -} -.ebIcon_circleArrowRight_white { - background-image: url('../resources/16px/circleArrowRight_white_16px.svg'); -} -.ebIcon_circleArrowUp { - background-image: url('../resources/16px/circleArrowUp_black_16px.svg'); -} -.ebIcon_circleArrowUp_white { - background-image: url('../resources/16px/circleArrowUp_white_16px.svg'); -} -.ebIcon_circleCaretDown { - background-image: url('../resources/16px/circleCaretDown_black_16px.svg'); -} -.ebIcon_circleCaretDown_white { - background-image: url('../resources/16px/circleCaretDown_white_16px.svg'); -} -.ebIcon_circleCaretLeft { - background-image: url('../resources/16px/circleCaretLeft_black_16px.svg'); -} -.ebIcon_circleCaretLeft_white { - background-image: url('../resources/16px/circleCaretLeft_white_16px.svg'); -} -.ebIcon_circleCaretRight { - background-image: url('../resources/16px/circleCaretRight_black_16px.svg'); -} -.ebIcon_circleCaretRight_white { - background-image: url('../resources/16px/circleCaretRight_white_16px.svg'); -} -.ebIcon_circleCaretUp { - background-image: url('../resources/16px/circleCaretUp_black_16px.svg'); -} -.ebIcon_circleCaretUp_white { - background-image: url('../resources/16px/circleCaretUp_white_16px.svg'); -} -.ebIcon_eLogo { - background-image: url('../resources/systemBar/econ01.svg'); -} -.ebIcon_comment { - background-image: url('../resources/16px/Comment_black_16px.svg'); -} -.ebIcon_comment_white { - background-image: url('../resources/16px/comment_white.svg'); -} -.ebIcon_copy { - background-image: url('../resources/16px/copy_black_16px.svg'); -} -.ebIcon_copy_white { - background-image: url('../resources/16px/copy_white_16px.svg'); -} -.ebIcon_cut { - background-image: url('../resources/16px/cut_black.svg'); -} -.ebIcon_cut_white { - background-image: url('../resources/16px/cut_white.svg'); -} -.ebIcon_delete { - background-image: url('../resources/16px/delete_black_16px.svg'); -} -.ebIcon_delete_white { - background-image: url('../resources/16px/delete_white_16px.svg'); -} -.ebIcon_duplicate { - background-image: url('../resources/16px/duplicate_black_16px.svg'); -} -.ebIcon_duplicate_white { - background-image: url('../resources/16px/duplicate_white_16px.svg'); -} -.ebIcon_edit { - background-image: url('../resources/16px/edit_black_16px.svg'); -} -.ebIcon_editWhite { - background-image: url('../resources/16px/edit_white_16px.svg'); -} -.ebIcon_newFile { - background-image: url('../resources/16px/newFile_black_16px.svg'); -} -.ebIcon_newFile_white { - background-image: url('../resources/16px/newFile_white_16px.svg'); -} -.ebIcon_save { - background-image: url('../resources/16px/save_black_16px.svg'); -} -.ebIcon_save_white { - background-size: contain; - background-image: url('../resources/16px/save_white.svg'); -} -.ebIcon_filter { - background-image: url('../resources/16px/filter_black_16px.svg'); -} -.ebIcon_filterOn { - background-image: url('../resources/16px/filters_on.svg'); -} -.ebIcon_filterOff { - background-image: url('../resources/16px/filters_off.svg'); -} -.ebIcon_filter_white { - background-image: url('../resources/16px/filter_white_16px.svg'); -} -.ebIcon_folder { - background-image: url('../resources/16px/folder_black_16px.svg'); -} -.ebIcon_folder_white { - background-image: url('../resources/16px/folder_white_16px.svg'); -} -.ebIcon_folderClosed { - background-image: url('../resources/16px/folderClosed_black.svg'); -} -.ebIcon_folderClosed_white { - background-image: url('../resources/16px/folderClosed_white.svg'); -} -.ebIcon_detach { - background-image: url('../resources/16px/detach_black_16px.svg'); -} -.ebIcon_detach_white { - background-size: contain; - background-image: url('../resources/16px/detach_white.svg'); -} -.ebIcon_import { - background-image: url('../resources/16px/import_black.svg'); -} -.ebIcon_import_white { - background-image: url('../resources/16px/import_white.svg'); -} -.ebIcon_export { - background-image: url('../resources/16px/export_black_16px.svg'); -} -.ebIcon_export_white { - background-image: url('../resources/16px/export_white.svg'); -} -.ebIcon_undo { - background-image: url('../resources/16px/undo_black_16px.svg'); -} -.ebIcon_undo_white { - background-image: url('../resources/16px/undo_white_16px.svg'); -} -.ebIcon_cancelled { - background-image: url('../resources/16px/Cancelled_Black_16px.svg'); -} -.ebIcon_draft { - background-size: contain; - background-image: url('../resources/16px/draft.svg'); -} -.ebIcon_importExport { - background-image: url('../resources/16px/import_export.svg'); -} -.ebIcon_login { - background-image: url('../resources/16px/login.svg'); -} -.ebIcon_move { - background-image: url('../resources/16px/move.svg'); -} -.ebIcon_remove { - background-image: url('../resources/16px/remove.svg'); -} -.ebIcon_valid { - background-image: url('../resources/16px/valid_icon.svg'); -} -.ebIcon_invalid { - background-image: url('../resources/16px/invalid_icon.svg'); -} -.ebIcon_error { - background-image: url('../resources/16px/error_red_16px.svg'); -} -.ebIcon_warning { - background-image: url('../resources/16px/warning_yellow_16px.svg'); -} -.ebIcon_warningOrange { - background-image: url('../resources/16px/warning_orange_16px.svg'); -} -.ebIcon_warning_white { - background-image: url('../resources/16px/warning_white.svg'); -} -.ebIcon_warningShield { - background-image: url('../resources/16px/warningShield_black_16px.svg'); -} -.ebIcon_warningShield_white { - background-size: contain; - background-image: url('../resources/16px/warningShield_white.svg'); -} -.ebIcon_mail { - background-image: url('../resources/16px/mail_black_16px.svg'); -} -.ebIcon_mail_white { - background-image: url('../resources/16px/mail_white_16px.svg'); -} -.ebIcon_mailRead { - background-image: url('../resources/16px/mailRead_black_16px.svg'); -} -.ebIcon_mailRead_white { - background-image: url('../resources/16px/mailRead_white_16px.svg'); -} -.ebIcon_link { - background-image: url('../resources/16px/Link_black_16px.svg');; -} -.ebIcon_lock { - background-image: url('../resources/16px/lock_black_16px.svg'); -} -.ebIcon_lock_white { - background-image: url('../resources/16px/lock_white_16px.svg'); -} -.ebIcon_unlock { - background-image: url('../resources/16px/unlock_black_16px.svg'); -} -.ebIcon_unlock_white { - background-image: url('../resources/16px/unlock_white_16px.svg'); -} -.ebIcon_logout { - background-image: url('../resources/16px/logout_black_16px.svg'); -} -.ebIcon_menu { - background-image: url('../resources/16px/menu_black_16px.svg'); -} -.ebIcon_menu_white { - background-image: url('../resources/16px/menu_white_16px.svg'); -} -.ebIcon_search { - background-image: url('../resources/16px/search_black_16px.svg'); -} -.ebIcon_searchWhite { - background-image: url('../resources/16px/search_white_16px.svg'); -} -.ebIcon_advancedSearch { - background-image: url('../resources/16px/advanced_search_black_16px.svg'); -} -.ebIcon_advancedSearchWhite { - background-image: url('../resources/16px/advanced_search_white_16px.svg'); -} -.ebIcon_share { - background-image: url('../resources/16px/share_black_16px.svg'); -} -.ebIcon_share_white { - background-image: url('../resources/16px/share_white.svg'); -} -.ebIcon_star { - background-image: url('../resources/16px/star_black_16px.svg'); -} -.ebIcon_star_white { - background-image: url('../resources/16px/star_white_16px.svg'); -} -.ebIcon_star_yellow { - background-image: url('../resources/16px/star_yellow_16px.svg'); -} -.ebIcon_starOutline { - background-image: url('../resources/16px/star_outline_black_16px.svg'); -} -.ebIcon_starOutline_white { - background-image: url('../resources/16px/star_outline_white_16px.svg'); -} -.ebIcon_starOutline_yellow { - background-image: url('../resources/16px/star_outline_yellow_16px.svg'); -} -.ebIcon_tick { - background-image: url('../resources/16px/tick_green_16px.svg'); -} -.ebIcon_tick_black { - background-image: url('../resources/16px/tick_16px.svg'); -} -.ebIcon_simpleGreenTick { - background-image: url('../resources/16px/simple_green_tick.svg'); -} -.ebIcon_simpleTick_black { - background-image: url('../resources/16px/simple_tick.svg'); -} -.ebIcon_download { - background-image: url('../resources/16px/download_black.svg'); -} -.ebIcon_download_white { - background-image: url('../resources/16px/download_white.svg'); -} -.ebIcon_downloadWhite { - background-image: url('../resources/16px/download_white_16px.svg'); -} -.ebIcon_documentWhite { - background-image: url('../resources/16px/document_white_16px.svg'); -} -.ebIcon_expand { - background-image: url('../resources/16px/expand_black_16px.svg'); -} -.ebIcon_rowCollapsed { - background-image: url('../resources/16px/rowCollapsed_black_16px.svg'); -} -.ebIcon_rowExpanded { - background-image: url('../resources/16px/rowExpanded_black_16px.svg'); -} -.ebIcon_rowView { - background-image: url('../resources/16px/rowView_black_16px.svg'); -} -.ebIcon_rowView_white { - background-image: url('../resources/16px/rowView_white.svg'); -} -.ebIcon_externalApp { - background-image: url('../resources/16px/externalApp_black_16px.svg'); -} -.ebIcon_externalApp_white { - background-image: url('../resources/16px/externalApp_white_16px.svg'); -} -.ebIcon_fullscreen { - background-image: url('../resources/16px/fullscreen_black_16px.svg'); -} -.ebIcon_fullscreenMinimize { - background-image: url('../resources/16px/fullscreenMinimise_black_16px.svg'); -} -.ebIcon_help { - background-image: url('../resources/16px/help_black_16px.svg'); -} -.ebIcon_help_white { - background-image: url('../resources/16px/help_white.svg'); -} -.ebIcon_info { - background-image: url('../resources/16px/info_black.svg'); -} -.ebIcon_info_white { - background-image: url('../resources/16px/info_white.svg'); -} -.ebIcon_dialogInfo { - background-image: url('../resources/16px/dialogInfo_blue.svg'); -} -.ebIcon_dialogInfo_white { - background-image: url('../resources/16px/dialogInfo_white.svg'); -} -.ebIcon_infoMsgIndicator { - background-image: url('../resources/16px/infoMsgIndicator_16px.svg'); -} -.ebIcon_exitFullscreen { - background-image: url('../resources/16px/minimiseFullscreen_black_16px.svg'); -} -.ebIcon_refresh { - background-image: url('../resources/16px/refresh_black_16px.svg'); -} -.ebIcon_refresh_white { - background-image: url('../resources/16px/refresh_white_16px.svg'); -} -.ebIcon_settings { - background-image: url('../resources/16px/settings_black_16px.svg'); -} -.ebIcon_settings_white { - background-image: url('../resources/16px/settings_white_16px.svg'); -} -.ebIcon_user { - background-image: url('../resources/16px/user_black_16px.svg'); -} -.ebIcon_user_white { - background-image: url('../resources/16px/user_white_16px.svg'); -} -.ebIcon_close { - background-image: url('../resources/16px/X_black_16px.svg'); -} -.ebIcon_close_white { - background-image: url('../resources/16px/close_white_16px.svg'); -} -.ebIcon_close_blue { - background-image: url('../resources/16px/X_blue_16px.svg'); -} -.ebIcon_close_paleBlue { - background-image: url('../resources/16px/X_paleBlue_16px.svg'); -} -.ebIcon_close_green { - background-image: url('../resources/16px/X_green_16px.svg'); -} -.ebIcon_close_orange { - background-image: url('../resources/16px/X_orange_16px.svg'); -} -.ebIcon_close_red { - background-image: url('../resources/16px/X_red_16px.svg'); -} -.ebIcon_close_yellow { - background-image: url('../resources/16px/X_yellow_16px.svg'); -} -.ebIcon_minus { - background-image: url('../resources/16px/minus_black_16px.svg'); -} -.ebIcon_plus { - background-image: url('../resources/16px/plus_black_16px.svg'); -} -.ebIcon_add { - background-image: url('../resources/16px/add_black_16px.svg'); -} -.ebIcon_add_white { - background-image: url('../resources/16px/add_white_16px.svg'); -} -.ebIcon_multiSelect { - background-image: url('../resources/16px/multiSelect_black_16px.svg'); -} -.ebIcon_multiSelect_white { - background-size: contain; - background-image: url('../resources/16px/multiSelect_white.svg'); -} -.ebIcon_multiSort { - background-image: url('../resources/16px/multi-sort.svg'); -} -.ebIcon_multiSort_white { - background-image: url('../resources/16px/multi-sort_white.svg'); -} -.ebIcon_sort { - background-image: url('../resources/16px/sort.svg'); -} -.ebIcon_sort_white { - background-image: url('../resources/16px/sort_white.svg'); -} -.ebIcon_stop { - background-image: url('../resources/16px/stop_black_16px.svg'); -} -.ebIcon_pause { - background-image: url('../resources/16px/pause_black_16px.svg'); -} -.ebIcon_suspend { - background-image: url('../resources/16px/suspend_black_16px.svg'); -} -.ebIcon_resume { - background-image: url('../resources/16px/resume_black_16px.svg'); -} -.ebIcon_play { - background-image: url('../resources/16px/play_black_16px.svg'); -} -.ebIcon_fastForward { - background-image: url('../resources/16px/fastForward_black_16px.svg'); -} -.ebIcon_fastRewind { - background-image: url('../resources/16px/fastRewind_black_16px.svg'); -} -.ebIcon_print { - background-image: url('../resources/16px/print_black_16px.svg'); -} -.ebIcon_print_white { - background-image: url('../resources/16px/print_white_16px.svg'); -} -.ebIcon_calendar { - background-image: url('../resources/16px/calendar_black_16px.svg'); -} -.ebIcon_calendar_white { - background-image: url('../resources/16px/calendar_white_16px.svg'); -} -.ebIcon_addToFolder { - background-image: url('../resources/16px/addToFolder_black.svg'); -} -.ebIcon_addToFolder_white { - background-image: url('../resources/16px/addToFolder_white.svg'); -} -.ebIcon_alarmCleared { - background-image: url('../resources/16px/alarmCleared_16px.svg'); -} -.ebIcon_alarmCleared_white { - background-image: url('../resources/16px/alarmCleared_white_16px.svg'); -} -.ebIcon_alarmCritical { - background-image: url('../resources/16px/alarmCritical_16px.svg'); -} -.ebIcon_alarmCritical_white { - background-image: url('../resources/16px/alarmCritical_white_16px.svg'); -} -.ebIcon_alarmHeartbeat { - background-image: url('../resources/16px/alarmHeartbeat_16px.svg'); -} -.ebIcon_alarmIndeterminate { - background-image: url('../resources/16px/alarmIndeterminate_16px.svg'); -} -.ebIcon_alarmIndeterminate_white { - background-image: url('../resources/16px/alarmIndeterminate_white_16px.svg'); -} -.ebIcon_alarmMajor { - background-image: url('../resources/16px/alarmMajor_16px.svg'); -} -.ebIcon_alarmMajor_white { - background-image: url('../resources/16px/alarmMajor_white_16px.svg'); -} -.ebIcon_alarmMinor { - background-image: url('../resources/16px/alarmMinor_16px.svg'); -} -.ebIcon_alarmMinor_white { - background-image: url('../resources/16px/alarmMinor_white_16px.svg'); -} -.ebIcon_alarmWarning { - background-image: url('../resources/16px/alarmWarning_16px.svg'); -} -.ebIcon_alarmWarning_white { - background-image: url('../resources/16px/alarmWarning_white_16px.svg'); -} -.ebIcon_alarmOtherGrouping { - background-image: url('../resources/16px/alarmOtherGrouping_16px.svg'); -} -.ebIcon_alarmUnacknowledged { - background-image: url('../resources/16px/alarmUnacknowledged.svg'); -} -.ebIcon_alarmUnacknowledged_white { - background-image: url('../resources/16px/alarmUnacknowledged_white.svg'); -} -.ebIcon_alarmUnspecified { - background-image: url('../resources/16px/alarmUnspecified_16px.svg'); -} -.ebIcon_acknowledgeAlarm { - background-image: url('../resources/16px/acknowledgeAlarm.svg'); -} -.ebIcon_acknowledgeAlarm_white { - background-image: url('../resources/16px/acknowledgeAlarm_white.svg'); -} -.ebIcon_clearAlarm { - background-image: url('../resources/16px/clearAlarm.svg'); -} -.ebIcon_clearAlarm_white { - background-image: url('../resources/16px/clearAlarm_white.svg'); -} -.ebIcon_bsc { - background-image: url('../resources/16px/BSC_black_16px.svg'); -} -.ebIcon_bscYellow { - background-image: url('../resources/16px/BSC_Yellow_16px.svg'); -} -.ebIcon_bscFunction { - background-image: url('../resources/16px/BSCFunction_black_16px.svg'); -} -.ebIcon_bscFunctionYellow { - background-image: url('../resources/16px/BSCFunction_Yellow_16px.svg'); -} -.ebIcon_cabinet { - background-image: url('../resources/16px/cabinet_black_16px.svg'); -} -.ebIcon_cellGray { - background-image: url('../resources/16px/cell_gray_16px.svg'); -} -.ebIcon_cellGreen { - background-image: url('../resources/16px/cell_green_16px.svg'); -} -.ebIcon_cellRed { - background-image: url('../resources/16px/cell_red_16px.svg'); -} -.ebIcon_cellAdjacent { - background-image: url('../resources/16px/cellAdjacent_16px.svg'); -} -.ebIcon_cellExternal { - background-image: url('../resources/16px/cellExternal_16px.svg'); -} -.ebIcon_charging { - background-image: url('../resources/16px/charging_black.svg'); -} -.ebIcon_charging_white { - background-size: contain; - background-image: url('../resources/16px/charging_white.svg'); -} -.ebIcon_connected { - background-image: url('../resources/16px/connected_black_16px.svg'); -} -.ebIcon_disconnected { - background-image: url('../resources/16px/disconnected_black_16px.svg'); -} -.ebIcon_connectionError { - background-image: url('../resources/16px/connectionError_black_16px.svg'); -} -.ebIcon_core { - background-image: url('../resources/16px/core_black_16px.svg'); -} -.ebIcon_coreSubscriber { - background-image: url('../resources/16px/coreSubscriber_black_16px.svg'); -} -.ebIcon_database { - background-image: url('../resources/16px/database_black_16px.svg'); -} -.ebIcon_ftpServer { - background-image: url('../resources/16px/ftpServer_black_16px.svg'); -} -.ebIcon_ftpServerFunction { - background-image: url('../resources/16px/ftpServerFunction_black_16px.svg'); -} -.ebIcon_gatewayFunction { - background-image: url('../resources/16px/gatewayFunction_black_16px.svg'); -} -.ebIcon_grabHandle { - background-image: url('../resources/16px/grabHandle_black_16px.svg'); -} -.ebIcon_grabHandle_white { - background-size: contain; - background-image: url('../resources/16px/grabHandle_white.svg'); -} -.ebIcon_managedFunction { - background-image: url('../resources/16px/managedFunction_black_16px.svg'); -} -.ebIcon_managedGroup { - background-image: url('../resources/16px/managedGroup_black_16px.svg'); -} -.ebIcon_managementNode { - background-image: url('../resources/16px/managementNode_black_16px.svg'); -} -.ebIcon_network { - background-image: url('../resources/16px/network_black_16px.svg'); -} -.ebIcon_networkElement { - background-image: url('../resources/16px/networkElement_black_16px.svg'); -} -.ebIcon_networkElement_white { - background-image: url('../resources/16px/networkElement_white_16px.svg'); -} -.ebIcon_rbs { - background-image: url('../resources/16px/RBS_black_16px.svg'); -} -.ebIcon_rbs_white { - background-image: url('../resources/16px/RBS_white_16px.svg'); -} -.ebIcon_routeSwitch { - background-image: url('../resources/16px/routeSwitch.svg'); -} -.ebIcon_rxi { - background-image: url('../resources/16px/rxi_black_16px.svg'); -} -.ebIcon_switchFunction { - background-image: url('../resources/16px/switchFunction_black_16px.svg'); -} -.ebIcon_technicianPresent { - background-image: url('../resources/16px/technicianPresent_16px.svg'); -} -.ebIcon_terminal { - background-image: url('../resources/16px/terminal_black_16px.svg'); -} -.ebIcon_topology { - background-image: url('../resources/16px/topology_black_16px.svg'); -} -.ebIcon_access { - background-image: url('../resources/16px/access_black_16px.svg'); -} -.ebIcon_access_white { - background-image: url('../resources/16px/access_white_16px.svg'); -} -.ebIcon_accessSettings { - background-image: url('../resources/16px/accessSettings_black_16px.svg'); -} -.ebIcon_accessSettings_white { - background-image: url('../resources/16px/accessSettings_white_16px.svg'); -} -.ebIcon_alignCenter { - background-image: url('../resources/16px/alignCenter_black_16px.svg'); -} -.ebIcon_alignCenter_white { - background-image: url('../resources/16px/alignCenter_white.svg'); -} -.ebIcon_alignLeft { - background-image: url('../resources/16px/alignLeft_black_16px.svg'); -} -.ebIcon_alignLeft_white { - background-image: url('../resources/16px/alignLeft_white.svg'); -} -.ebIcon_alignRight { - background-image: url('../resources/16px/alignRight_black_16px.svg'); -} -.ebIcon_alignRight_white { - background-image: url('../resources/16px/alignRight_white.svg'); -} -.ebIcon_cli { - background-image: url('../resources/16px/CommandLineInterface_black_16px.svg'); -} -.ebIcon_cli_white { - background-image: url('../resources/16px/CommandLineInterface_white_16px.svg'); -} -.ebIcon_controllingNode { - background-image: url('../resources/16px/controllingNode.svg'); -} -.ebIcon_grid3x3 { - background-image: url('../resources/16px/grid3X3_black_16px.svg'); -} -.ebIcon_grid3x3_white { - background-image: url('../resources/16px/grid3x3_white.svg'); -} -.ebIcon_grid4x4 { - background-image: url('../resources/16px/grid4X4_black_16px.svg'); -} -.ebIcon_grid4x4_white { - background-image: url('../resources/16px/grid4x4_white.svg'); -} -.ebIcon_gridView { - background-image: url('../resources/16px/gridView_black_16px.svg'); -} -.ebIcon_gridView_white { - background-image: url('../resources/16px/gridView_white.svg'); -} -.ebIcon_jumpTo { - background-image: url('../resources/16px/jumpTo_black_16px.svg'); -} -.ebIcon_microwave { - background-image: url('../resources/16px/microwave.svg'); -} -.ebIcon_mo { - background-image: url('../resources/16px/mo.svg'); -} -.ebIcon_security { - background-image: url('../resources/16px/security_black_16px.svg'); -} -.ebIcon_security_white { - background-image: url('../resources/16px/security_white_16px.svg'); -} -.ebIcon_site { - background-image: url('../resources/16px/site_black_16px.svg'); -} -.ebIcon_siteManager { - background-image: url('../resources/16px/siteManager_black_16px.svg'); -} -.ebIcon_subnetwork { - background-image: url('../resources/16px/subnetwork.svg'); -} -.ebIcon_gateway, -.ebIcon_switch { - background-image: url('../resources/16px/switch.svg'); -} -.ebIcon_tip { - background-image: url('../resources/16px/tip_black_16px.svg'); -} -.ebIcon_tip_white { - background-image: url('../resources/16px/tip_white_16px.svg'); -} -.ebIcon_attach { - background-image: url('../resources/16px/attach_black_16px.svg'); -} -.ebIcon_attach_white { - background-size: contain; - background-image: url('../resources/16px/attach_white.svg'); -} -.ebIcon_clock { - background-image: url('../resources/16px/clock_black_16px.svg'); -} -.ebIcon_clock_white { - background-image: url('../resources/16px/clock_white_16px.svg'); -} -.ebIcon_windowMaximize { - background-image: url('../resources/16px/WindowMaximize_black_16px.svg'); -} -.ebIcon_windowMinimize { - background-image: url('../resources/16px/WindowMinimize_black_16px.svg'); -} -.ebIcon_deprecated { - background-image: url('../resources/16px/deprecated_16px.svg'); -} -.ebIcon_obsolete { - background-image: url('../resources/16px/obsolete_16px.svg'); -} -.ebIcon_newStatus_blue { - background-image: url('../resources/16px/newStatus_blue_16px.svg'); -} -.ebIcon_newStatus_green { - background-image: url('../resources/16px/newStatus_green_16px.svg'); -} -.ebIcon_upload { - background-image: url('../resources/16px/upload_black_16px.svg'); -} -.ebIcon_activate { - background-image: url('../resources/16px/activate_black_16px.svg'); -} -.ebIcon_activate_white { - background-size: contain; - background-image: url('../resources/16px/activate_white.svg'); -} -.ebIcon_deactivate { - background-image: url('../resources/16px/deactivate_black_16px.svg'); -} -.ebIcon_deactivate_white { - background-size: contain; - background-image: url('../resources/16px/deactivate_white.svg'); -} -.ebIcon_switchBetween { - background-image: url('../resources/16px/switchBetween_black_16px.svg'); -} -.ebIcon_switchBetween_white { - background-image: url('../resources/16px/switchBetween_white_16px.svg'); -} -.ebIcon_eye { - background-image: url('../resources/16px/eye_black_16px.svg'); -} -.ebIcon_eye_white { - background-image: url('../resources/16px/eye_white_16px.svg'); -} -.ebIcon_eyeLine { - background-image: url('../resources/16px/eyeLine_black_16px.svg'); -} -.ebIcon_eyeLine_white { - background-image: url('../resources/16px/eyeLine_white.svg'); -} -.ebIcon_activityTray { - background-image: url('../resources/16px/activity_16px_black.svg'); -} -.ebIcon_note { - background-image: url('../resources/16px/note_black_16px.svg'); - background-size: contain; -} -.ebIcon_note_white { - background-image: url('../resources/16px/note_white_16px.svg'); -} -.ebIcon_tableView { - background-image: url('../resources/16px/tableView_black_16px.svg'); -} -.ebIcon_tableView_white { - background-image: url('../resources/16px/tableView_white_16px.svg'); -} -.ebIcon_synced { - background-image: url('../resources/16px/Syncd_16px.svg'); -} -.ebIcon_syncError { - background-image: url('../resources/16px/SyncError_16px.svg'); -} -.ebIcon_syncing { - background-image: url('../resources/16px/Syncing_Static_16px.svg'); -} -.ebIcon_syncing_animated { - background-image: url('../resources/16px/Syncing_Animated_16px.svg'); -} - - -/* Breadcrumb */ -.ebBreadcrumbs { - position: relative; - display: block; - font-size: 0; - margin-top: 12px; - margin-bottom: 4px; -} -.ebBreadcrumbs-link { - font-size: 1.2rem; - vertical-align: middle; - display: inline-block -} -.ebBreadcrumbs-list { - position: absolute; - left: 0; - margin-top: 6px; - display: none; - min-width: calc(100% - 16px); - max-width: 250px; - z-index: 1500 -} -.ebBreadcrumbs-arrow { - margin-left: .6rem; - vertical-align: middle; - outline: none; - display: inline-block; - line-height: 12px -} -.ebBreadcrumbs-arrow:focus>* { - opacity: 1 -} -.ebBreadcrumbs-arrow_hidden { - display: none -} -.ebBreadcrumbs-arrow:focus+.ebBreadcrumbs-list { - display: block -} -.ebBreadcrumbs-item { - position: relative; - font-size: 0; - white-space: nowrap; - display: inline-block; - margin-bottom: .8rem -} -.ebBreadcrumbs-item:after { - vertical-align: middle; - display: inline-block; - width: 20px; - content: "/"; - font-size: 1.6rem; - text-align: center; - color: #999; - cursor: default !important; - pointer-events: none !important; - -ms-touch-action: none !important; - touch-action: none !important; - -khtml-user-select: none !important; - -moz-user-select: none !important; - -o-user-select: none !important; - -webkit-user-select: none !important; - user-select: none -} -.ebBreadcrumbs-item:last-child { - margin-right: 0 -} -.ebBreadcrumbs-item:last-child>.ebBreadcrumbs-link { - -ms-touch-action: none !important; - touch-action: none !important; - -khtml-user-select: none !important; - -moz-user-select: none !important; - -o-user-select: none !important; - -webkit-user-select: none !important; - user-select: none -} -.ebBreadcrumbs-item:last-child:after { - content: ""; - padding: 0; - font-size: 0; - width: 0; -} - -.ebBreadcrumbs a { - font-size: 1.2rem; - color: #0066b3; - text-decoration: none; -} -.ebBreadcrumbs a:hover { - text-decoration: underline; - outline: none; -} -.ebBreadcrumbs a:active { - text-decoration: underline -} -.ebBreadcrumbs a:focus { - outline: none; - text-decoration: underline; - box-shadow: none; -} - -.title { - padding: 0px; -} diff --git a/client/client-editor/src/main/resources/webapp/css/showhideTextarea.css b/client/client-editor/src/main/resources/webapp/css/showhideTextarea.css deleted file mode 100644 index 9c0f4aed1..000000000 --- a/client/client-editor/src/main/resources/webapp/css/showhideTextarea.css +++ /dev/null @@ -1,133 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -/* the div */ -.showHideTextarea{ -} - -/* the textarea */ -.showHideTextarea_hidden -{ - display: none; - width: 100%; - font-size: 15px; - height: 300px; - box-sizing: border-box; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - border: 1px solid #BEBEBE; - padding: 7px; - margin: 0px; - -webkit-transition: all 0.30s ease-in-out; - -moz-transition: all 0.30s ease-in-out; - -ms-transition: all 0.30s ease-in-out; - -o-transition: all 0.30s ease-in-out; - outline: none; -} - -.showHideTextarea_displayed -{ - display: block; - width: 100%; - font-size: 15px; - height: 300px; - box-sizing: border-box; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - border: 1px solid #BEBEBE; - padding: 7px; - margin: 0px; - -webkit-transition: all 0.30s ease-in-out; - -moz-transition: all 0.30s ease-in-out; - -ms-transition: all 0.30s ease-in-out; - -o-transition: all 0.30s ease-in-out; - outline: none; -} -/* -.showHideTextarea_hidden textarea:focus -{ - -moz-box-shadow: 0 0 8px #88D5E9; - -webkit-box-shadow: 0 0 8px #88D5E9; - box-shadow: 0 0 8px #88D5E9; - border: 1px solid #88D5E9; -} - -.showHideTextarea_displayed textarea:focus -{ - -moz-box-shadow: 0 0 8px #88D5E9; - -webkit-box-shadow: 0 0 8px #88D5E9; - box-shadow: 0 0 8px #88D5E9; - border: 1px solid #88D5E9; -} -*/ -/* the button - show mode */ -.showHideTextarea_show{ - display: block; - width: 150px; - font-size: 15px; - background-color: #f6f6f6; - font-family: Helvetica, Arial, sans-serif; - font-weight: 300; - list-style: none; - cursor: pointer; - box-sizing: border-box; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - border: 1px solid #BEBEBE; - padding: 7px; - margin: 0px; - -webkit-transition: all 0.30s ease-in-out; - -moz-transition: all 0.30s ease-in-out; - -ms-transition: all 0.30s ease-in-out; - -o-transition: all 0.30s ease-in-out; - outline: none; -} - -/* the button - hide mode */ -.showHideTextarea_hide{ - display: block; - width: 150px; - font-size: 15px; - background-color: #f6f6f6; - font-family: Helvetica, Arial, sans-serif; - font-weight: 300; - list-style: none; - cursor: pointer; - box-sizing: border-box; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - border: 1px solid #BEBEBE; - padding: 7px; - margin: 0px; - -webkit-transition: all 0.30s ease-in-out; - -moz-transition: all 0.30s ease-in-out; - -ms-transition: all 0.30s ease-in-out; - -o-transition: all 0.30s ease-in-out; - outline: none; -} - -/* the button - disabled */ -.showHideTextarea_show_disabled{ - display: none; -} - -.showHideTextarea_hide_disabled{ - display: none; -} diff --git a/client/client-editor/src/main/resources/webapp/css/styles.css b/client/client-editor/src/main/resources/webapp/css/styles.css deleted file mode 100644 index 0a0bb06c9..000000000 --- a/client/client-editor/src/main/resources/webapp/css/styles.css +++ /dev/null @@ -1,555 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -.layoutWrapper { - margin: 0 40px; -} - -.appHeading { - color:rgb(51, 51, 51); - display:block; - font-family:Arial, Helvetica, sans-serif; - font-size:12px; - height:32px; - line-height:12px; - position:relative; -} - -.headerAreaPlaceholder { - position: relative; - height: 28px; - background-color: #E8E8E8; - padding-top: 0.4rem; - margin: 12px 0px 0px; - border-radius: 3px; - margin-bottom: -42px; - z-index: -1; -} - -.headerArea { - top: 50px; - padding: 5px 0px 5px; - margin: 9px 0px 0px; - background-color: #E8E8E8; - border-radius: 3px; -} - -.menuArea { - float: left; -} - -.mainTabs { - position: absolute; - top: 20px; - bottom: 20px; - width: auto; - border: solid 1px #CCCCCC; -} - -.mainArea { - padding-bottom: 100px; /*height of footer*/ -} - -.footerArea { - position: fixed; - bottom: 0; - left: 0; - width: 100%; - height: 60px; - border: 3px solid #73AD21; - background-color: powderblue; -} - -.footerArea table { - width: auto; - border-spacing: 2; -} - -.footerArea td.static { - width: 150px; - vertical-align: top; - padding: 3px 3px 3px 3px; -} - -.footerArea td.scroll { - width: 90%; - vertical-align: top; -} - -.footerArea table.scroll { - width: 100%; - border-spacing: 2; -} - -.footerArea table.scroll tbody, .footerArea table.scroll tr { - display: block; -} - -.footerArea table.scroll tbody { - height: 90px; - overflow-y: auto; - overflow-x: hidden; -} - -.footerArea table.scroll tbody td { - width: auto; -} - -.footerArea table.scroll td { - border: solid 1px #CCCCCC; -} - -.footerArea table.scroll thead th:last-child { - width: auto; -} - -.footerArea thead tr { - height: 60px; - line-height: 30px; - text-align: left; -} - -.footerArea tbody td:last-child { - border-right: none !important; -} - -.edit_area_toggle_checkbox { - display: inline-block !important; - font-weight: normal !important; - font-size: 16px !important; -} - -.newModelFormDiv { - background-color: white; - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 600px; - height: 420px; - resize: both; - overflow: auto; - padding: 10px 10px 10px 10px; - border: 1px solid #c0c0c0; - border-radius: 3px; - box-shadow: 0 3px 6px #999999; -} - -.newModelFormDiv .headingSpan { - width: 100%; - height: 30px; - display: inline-block; - text-align: center; - font-weight: bold; - font-size: 20px; - padding: 5px 0px 0px 0px; - border-bottom: #c0c0c0 solid 1px; -} - -.newModelDivBackground { - position: fixed; - height: 100%; - width: 100%; - background-color: rgba(0,0,0,0.5); - top: 0px; - left: 0px; -} - -.resultFormDiv { - background-color: white; - position: fixed; - top: 50%; - left: 50%; - transform: translate(-50%, -50%); - width: 600px; - height: 620px; - resize: both; - overflow: auto; - padding: 10px 10px 10px 10px; - border: 1px solid #c0c0c0; - border-radius: 3px; - box-shadow: 0 3px 6px #999999; -} - -.resultFormDiv .headingSpan { - width: 100%; - height: 30px; - display: inline-block; - text-align: center; - font-weight: bold; - font-size: 20px; - padding: 5px 0px 0px 0px; - border-bottom: #c0c0c0 solid 1px; -} - -.resultFormDiv .okButton { - font-size: 15px; - float: right; -} - -.resultFormDiv .form-style-1 .field-textarea { - height: 500px; - font-size: 15px; -} - - -.form-style-1 { - margin: 10px auto; - font: 16px "Lucida Sans Unicode", "Lucida Grande", sans-serif; -} - -.form-style-1 li { - padding: 0; - display: block; - list-style: none; - margin: 10px 0 0 0; -} - -.form-style-1 label { - margin: 0 0 3px 0; - padding: 0px; - display: block; - font-weight: bold; -} - -.form-style-1 input[type=text], .form-style-1 input[type=date], - .form-style-1 input[type=datetime], .form-style-1 input[type=number], - .form-style-1 input[type=search], .form-style-1 input[type=time], - .form-style-1 input[type=url], .form-style-1 input[type=email], - textarea, select { - box-sizing: border-box; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - border: 1px solid #BEBEBE; - padding: 0px 7px; - margin: 0px; - -webkit-transition: all 0.30s ease-in-out; - -moz-transition: all 0.30s ease-in-out; - -ms-transition: all 0.30s ease-in-out; - -o-transition: all 0.30s ease-in-out; - outline: none; -} - -.form-style-1 input[type=text]:focus, .form-style-1 input[type=date]:focus, - .form-style-1 input[type=datetime]:focus, .form-style-1 input[type=number]:focus, - .form-style-1 input[type=search]:focus, .form-style-1 input[type=time]:focus, - .form-style-1 input[type=url]:focus, .form-style-1 input[type=email]:focus, - .form-style-1 textarea:focus, .form-style-1 select:focus { - -moz-box-shadow: 0 0 8px #88D5E9; - -webkit-box-shadow: 0 0 8px #88D5E9; - box-shadow: 0 0 8px #88D5E9; - border: 1px solid #88D5E9; -} -.form-style-1 input:focus::-webkit-input-placeholder { color:transparent; } -.form-style-1 input:focus:-moz-placeholder { color:transparent; } - -.form-style-1 .field { - font-size: 15px; -} - -.form-style-1 .field-divided { - width: 49%; - font-size: 15px; -} - -.form-style-1 .field-long { - width: 100%; - font-size: 15px; -} - -.form-style-1 .field-medium { - width: 50%; - font-size: 15px; -} - -.form-style-1 .field-select { - width: 100%; - font-size: 15px; -} - -.form-style-1 .field-textarea { - height: 100px; - font-size: 15px; -} - -.form-style-1 .field-javaType{ - width: 100%; - font-size: 15px; -} - -.form-style-1 .field-schemaFlavour{ - width: 100%; - font-size: 15px; -} - -.form-style-1 .field-taskSelLogic{ - width: 100%; - font-size: 15px; - height: 300px; -} - -.form-style-1 .field-taskLogic{ - width: 100%; - font-size: 15px; - height: 300px; -} - -.form-style-1 .field-finalizerLogic{ - width: 100%; - font-size: 15px; - height: 300px; -} - -.form-style-1 .field-schemaDefinition{ - width: 100%; - font-size: 15px; - height: 100px; -} - -.form-style-1 .required { - color: red; -} - -.form-style-1 .button { - font-size: 15px; -} - -.form-style-1 .delete_ex { - height: 30px; - width: 30px; - opacity: 1; - font-size: 30px; - line-height: 30px; - transition: all 0.8s; - border: 1px solid transparent; - text-align: center; -} -.form-style-1 .delete_ex:hover { - border-radius: 50%; - background: tomato; - border: 1px solid black; -} -.form-style-1 .delete_ex_disabled { - width: 0px; - opacity: 0; -} - - - -.hideable_div_hidden -{ - display: none; -} - -.hideable_div_displayed -{ - display: block; -} - - - -/* the textarea */ -.hideable_Textarea_hidden -{ - display: none; -} - -.hideable_Textarea_displayed -{ - display: block; - width: 100%; - height: 300px; -} - -.hideable_Textarea_hidden textarea:focus -{ - -moz-box-shadow: 0 0 8px #88D5E9; - -webkit-box-shadow: 0 0 8px #88D5E9; - box-shadow: 0 0 8px #88D5E9; - border: 1px solid #88D5E9; -} - -.hideable_Textarea_displayed textarea:focus -{ - -moz-box-shadow: 0 0 8px #88D5E9; - -webkit-box-shadow: 0 0 8px #88D5E9; - box-shadow: 0 0 8px #88D5E9; - border: 1px solid #88D5E9; -} - -/* the button - show mode */ -.showhide_button_show{ - display: block; - width: 150px; - font-size: 15px; - background-color: #f6f6f6; - font-family: Helvetica, Arial, sans-serif; - font-weight: 300; - list-style: none; - cursor: pointer; - box-sizing: border-box; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - border: 1px solid #BEBEBE; - padding: 7px; - margin: 0px; - -webkit-transition: all 0.30s ease-in-out; - -moz-transition: all 0.30s ease-in-out; - -ms-transition: all 0.30s ease-in-out; - -o-transition: all 0.30s ease-in-out; - outline: none; -} - -/* the button - hide mode */ -.showhide_button_hide{ - display: block; - width: 150px; - font-size: 15px; - background-color: #f6f6f6; - font-family: Helvetica, Arial, sans-serif; - font-weight: 300; - list-style: none; - cursor: pointer; - box-sizing: border-box; - -webkit-box-sizing: border-box; - -moz-box-sizing: border-box; - border: 1px solid #BEBEBE; - padding: 7px; - margin: 0px; - -webkit-transition: all 0.30s ease-in-out; - -moz-transition: all 0.30s ease-in-out; - -ms-transition: all 0.30s ease-in-out; - -o-transition: all 0.30s ease-in-out; - outline: none; -} - -.showhide_div_hide{ - display: none; -} - -.showhide_div_show{ - display: block; -} - -.add-field { - display: inline-block; - cursor: pointer; - margin-left: 1px; -} - -.form-add-icon, .form-add-text { - display: inline-block; - vertical-align: middle; -} - -.form-add-text { - margin-left: 8px; -} - -.form-heading { - text-align: start; -} - -.ui-tabs-tab-custom { - border-radius: 5px 5px 0px 0px; -} - -.ui-tabs-active-custom { - border: 1px solid #ccc !important; - border-width: 1px 0 0 1px !important; - background-image: none !important; - background-color: #fff !important; - border-bottom-color: transparent !important; - cursor: default !important; -} - -.ui-tabs-anchor-custom { - color: #454545 !important; -} - -input:disabled { - background-color: #FF0000; -} - -.modelTagArea { - height: 24px; -} - -.modelTag { - display: none; -} - -.field-add-new { - display: none; -} - -.field-checkbox-center { - text-align: center; - vertical-align: middle; -} - -.placeholder { - text-align: center; - white-space: nowrap; -} - -.onapLogo { - padding-right: 100px; - height: 75px; - width: 350px; -} - -.apexLogo { - height: 267px; - width: 350px; -} - -.ui-tabs-panel { - overflow-x: auto; -} - -.periodic-events-checkbox { - margin-left: 12px; -} - -.periodic-events-label { - display: inline-block !important; - font-weight: normal !important; - font: 14px Lucida Sans Unicode, Lucida Grande, sans-serif !important; -} - -.policy-trigger-event { - display: inline-block !important; - font-weight: normal !important; -} - -input:focus::-webkit-input-placeholder { color:transparent; } -input:focus:-moz-placeholder { color:transparent; } /* Firefox 18- */ -input:focus::-moz-placeholder { color:transparent; } /* Firefox 19+ */ -input:focus:-ms-input-placeholder { color:transparent; } /* IE */ - -textarea:focus::-webkit-input-placeholder { color:transparent; } -textarea:focus:-moz-placeholder { color:transparent; } /* Firefox 18- */ -textarea:focus::-moz-placeholder { color:transparent; } /* Firefox 19+ */ -textarea:focus:-ms-input-placeholder { color:transparent; } /* IE */ - -.title { - padding: 0px; -} \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/images/Apex.png b/client/client-editor/src/main/resources/webapp/images/Apex.png deleted file mode 100644 index e71451feee60cf75514751167f50f585279ef673..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 161205 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�OhTt%KP^%`f+ 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 u9XA|X)lwPl|duq*= z-FfBi@Drh-%s!mu|4s4d3NN}jVopTm&P6PZ-z>dYq)Pzt)#^l8ZX1!^3atpx(gFZO zx50LWbiVsE3EPg$ZTnxr=n;T3Nq zuO#Xy8!Bcy{aUrJw^ZAAAA}LEdWfQ&5B$_h2Mb?HlGQ0@3?-DS_F+~*m zk$sJ@Bd_24_(=|m0_E7pnnzP}bKn#b70$a|6OUlWH)0222CNT4(~q1RCyujrc^rew zoj&Tb;!7q~MXFx(F*FK_YBeM46E&V3kxm>7ujGkl}WhMelNv`&_Y_sK@FO76q< z^|hLPhBJwoqEl3*hi|~j1O42Ns@%xDlur(m*oIIkxQ>7P(_B%=x~PXTb;>s?LFO@J zh)D4r+m|xWXQp4<9m+AY-*>yL>CO&ZsW%;rkDS*HE!o@t6Tlw7`ap=TtT3Qw6c;XK z6v?p_jiMx2dE$8?pV`;)#%P~M>3iZ-H03`k`$r-}Tk_pSSN8GsWnq<%GHV|jFF0zB z2)R6y9IW*N+*`o}f*&KB%k0kfZY~14euuApxQaEb(mD6((A6S&2-LZwIAiPW5CQ?0 NoRqR;rMU6O{{e}SQ{Mmp diff --git a/client/client-editor/src/main/resources/webapp/images/logo_onap.png b/client/client-editor/src/main/resources/webapp/images/logo_onap.png deleted file mode 100644 index c6f6857a58f5c24de0811a53bb495aa5f0f424e9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21360 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 I%G?wGe=EX2F8}}l diff --git a/client/client-editor/src/main/resources/webapp/index.html b/client/client-editor/src/main/resources/webapp/index.html deleted file mode 100644 index e03018de7..000000000 --- a/client/client-editor/src/main/resources/webapp/index.html +++ /dev/null @@ -1,239 +0,0 @@ - - - - - - -Apex Policy Editor - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
Apex
-
- -
- -
-
- Apex -
- -
- -
-

Apex Policy Editor

-
- -
- - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/client/client-editor/src/main/resources/webapp/js/ApexAjax.js b/client/client-editor/src/main/resources/webapp/js/ApexAjax.js deleted file mode 100644 index c241a4459..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexAjax.js +++ /dev/null @@ -1,123 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function ajax_get(requestURL, callback) { - $.ajax({ - type : 'GET', - url : requestURL, - dataType : "json", // data type of response - success : function(data, textStatus, jqXHR) { - pageControl_successStatus(data); - callback(data); - }, - error : function(jqXHR, textStatus, errorThrown) { - pageControl_restError(requestURL, jqXHR, textStatus, errorThrown); - } - }); -} - -function ajax_getWithKeyInfo(requestURL, objectType, callback, keyName) { - var keyName = keyName || "key"; - var keyInfoURL = restRootURL + "/KeyInformation/Get?name=&version="; - ajax_get(keyInfoURL, function(dataKeyInfos) { - ajax_get(requestURL, function(data) { - var keyInfos = []; - for ( var i = 0; i < dataKeyInfos.messages.message.length; i++) { - var ki = JSON.parse(dataKeyInfos.messages.message[i]).apexKeyInfo; - keyInfos.push(ki); - } - var object = JSON.parse(data.messages.message[0])[objectType]; - var keyInfo = keyInfos.filter(function(ki) { - return ki.key.name === object[keyName].name - && ki.key.version === object[keyName].version; - }); - if (keyInfo.length > 0) { - object.uuid = keyInfo[0].UUID; - object.description = keyInfo[0].description; - } - callback(object); - }); - }); -} - -function ajax_getOKOrFail(requestURL, callback) { - $.ajax({ - type : 'GET', - url : requestURL, - dataType : "json", // data type of response - success : function(data, textStatus, jqXHR) { - pageControl_status(data); - callback(data); - }, - error : function(jqXHR, textStatus, errorThrown) { - pageControl_restError(requestURL, jqXHR, textStatus, errorThrown); - } - }); -} - -function ajax_put(requestURL, requestData, callback) { - $.ajax({ - type : 'PUT', - contentType : 'application/json', - url : requestURL, - dataType : "json", - data : requestData, - success : function(responseData, textStatus, jqXHR) { - pageControl_successStatus(responseData); - callback(responseData); - }, - error : function(jqXHR, textStatus, errorThrown) { - pageControl_restError(requestURL, jqXHR, textStatus, errorThrown); - } - }); -} - -function ajax_post(requestURL, requestData, callback) { - $.ajax({ - type : 'POST', - contentType : 'application/json', - url : requestURL, - dataType : "json", - data : requestData, - success : function(responseData, textStatus, jqXHR) { - pageControl_successStatus(responseData); - callback(responseData); - }, - error : function(jqXHR, textStatus, errorThrown) { - pageControl_restError(requestURL, jqXHR, textStatus, errorThrown); - } - }); -} - -function ajax_delete(requestURL, callback) { - $.ajax({ - type : 'DELETE', - url : requestURL, - dataType : "json", // data type of response - success : function(data, textStatus, jqXHR) { - pageControl_successStatus(data); - callback(data); - }, - error : function(jqXHR, textStatus, errorThrown) { - pageControl_restError(requestURL, jqXHR, textStatus, errorThrown); - } - }); -} diff --git a/client/client-editor/src/main/resources/webapp/js/ApexContextAlbumEditForm.js b/client/client-editor/src/main/resources/webapp/js/ApexContextAlbumEditForm.js deleted file mode 100644 index 602fa4908..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexContextAlbumEditForm.js +++ /dev/null @@ -1,475 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function editContextAlbumForm_createContextAlbum(formParent) { - // Get all contextSchemas too for album item schema - var requestURL = restRootURL + "/ContextSchema/Get?name=&version="; - var contextSchemas = new Array(); - ajax_get(requestURL, function(data2) { - for (var i = 0; i < data2.messages.message.length; i++) { - var contextSchema = JSON.parse(data2.messages.message[i]).apexContextSchema; - contextSchemas.push({ - "name" : contextSchema.key.name, - "version" : contextSchema.key.version, - "displaytext" : contextSchema.key.name + ":" + contextSchema.key.version, - "contextSchema" : contextSchema - }); - } - editContextAlbumForm_activate(formParent, "CREATE", null, contextSchemas); - }); -} - -function editContextAlbumForm_deleteContextAlbum(parent, name, version) { - var message = "Are you sure you want to delete ContextAlbum \"" + name + ":" + version + "\"?"; - if (apexUtils_areYouSure(message)) { - var requestURL = restRootURL + "/ContextAlbum/Delete?name=" + name + "&version=" + version; - ajax_delete(requestURL, function(data) { - apexUtils_removeElement("editContextAlbumFormDiv"); - contextAlbumTab_reset(); - keyInformationTab_reset() - }); - } -} - -function editContextAlbumForm_viewContextAlbum(parent, name, version) { - var requestURL = restRootURL + "/ContextAlbum/Get?name=" + name + "&version=" + version; - ajax_getWithKeyInfo(requestURL, "apexContextAlbum", function(contextAlbum) { - // Get all contextSchemas too for album item schema - var requestURL = restRootURL + "/ContextSchema/Get?name=&version="; - var contextSchemas = new Array(); - ajax_get(requestURL, function(data2) { - for (var i = 0; i < data2.messages.message.length; i++) { - var contextSchema = JSON.parse(data2.messages.message[i]).apexContextSchema; - contextSchemas.push({ - "name" : contextSchema.key.name, - "version" : contextSchema.key.version, - "displaytext" : contextSchema.key.name + ":" + contextSchema.key.version, - "contextSchema" : contextSchema - }); - } - editContextAlbumForm_activate(parent, "VIEW", contextAlbum, contextSchemas); - }); - }); -} - -function editContextAlbumForm_editContextAlbum(formParent, name, version) { - var requestURL = restRootURL + "/ContextAlbum/Get?name=" + name + "&version=" + version; - ajax_getWithKeyInfo(requestURL, "apexContextAlbum", function(contextAlbum) { - // Get all contextSchemas too for album item schema - var requestURL = restRootURL + "/ContextSchema/Get?name=&version="; - var contextSchemas = new Array(); - ajax_get(requestURL, function(data2) { - for (var i = 0; i < data2.messages.message.length; i++) { - var contextSchema = JSON.parse(data2.messages.message[i]).apexContextSchema; - contextSchemas.push({ - "name" : contextSchema.key.name, - "version" : contextSchema.key.version, - "displaytext" : contextSchema.key.name + ":" + contextSchema.key.version, - "contextSchema" : contextSchema - }); - } - editContextAlbumForm_activate(formParent, "EDIT", contextAlbum, contextSchemas); - }); - }); -} - -function editContextAlbumForm_activate(parent, operation, contextAlbum, contextSchemas) { - apexUtils_removeElement("editContextAlbumFormDiv"); - var formParent = document.getElementById(parent); - apexUtils_emptyElement(parent); - - var isedit = false; - var createEditOrView = ""; - - if (!operation) { - console.warn("No operation specified for ContextAlbumForm form") - } else { - createEditOrView = operation.toUpperCase(); - } - - if (createEditOrView == "CREATE") { - isedit = true; - } else if (createEditOrView == "EDIT" || createEditOrView == "VIEW") { - if (createEditOrView == "EDIT") { - isedit = true; - } - - if (!contextAlbum) { - console.warn("Invalid value (\"" + contextAlbum - + "\") passed as a value for \"contextAlbum\" for ContextAlbumForm form."); - } else { - if (!contextAlbum.key || !contextAlbum.key.name || contextAlbum.key.name == "") { - console.warn("Invalid value (\"" + contextAlbum.key.name - + "\") passed as a value for \"name\" for ContextAlbumForm form."); - } - if (!contextAlbum.key || !contextAlbum.key.version || contextAlbum.key.version == "") { - console.warn("Invalid value (\"" + contextAlbum.key.version - + "\") passed as a value for \"version\" for ContextAlbumForm form."); - } - if (!contextAlbum.uuid || contextAlbum.uuid == "") { - console.warn("Invalid value (\"" + contextAlbum.uuid - + "\") passed as a value for \"uuid\" for ContextAlbumForm form."); - } - if (createEditOrView == "VIEW") { - if (!contextAlbum.description) { - console.warn("Invalid value (\"" + contextAlbum.description - + "\") passed as a value for \"description\" for ContextAlbumForm form."); - } - if (!contextAlbum.scope || contextAlbum.scope == "") { - console.warn("Invalid value (\"" + contextAlbum.scope - + "\") passed as a value for \"scope\" for ContextAlbumForm form."); - } - if (!contextAlbum.itemSchema || !contextAlbum.itemSchema.name || contextAlbum.itemSchema.name == "" - || !contextAlbum.itemSchema.version || contextAlbum.itemSchema.version == "") { - console.warn("Invalid value (\"" + contextAlbum.itemSchema - + "\") passed as a value for \"itemSchema\" for ContextAlbumForm form."); - } - if (!contextAlbum.isWritable || contextAlbum.isWritable == "") { - console.warn("Invalid value (\"" + contextAlbum.isWritable - + "\") passed as a value for \"isWritable\" for ContextAlbumForm form."); - } - } - } - } else { - console - .warn("Invalid operation (\"" - + operation - + "\") specified for ContextAlbumForm form. Only \"Create\", \"Edit\" and \"View\" operations are supported"); - } - - var contentelement = document.createElement("editContextAlbumFormDiv"); - var formDiv = document.createElement("div"); - contentelement.appendChild(formDiv); - formDiv.setAttribute("id", "editContextAlbumFormDiv"); - formDiv.setAttribute("class", "editContextAlbumFormDiv"); - - var headingSpan = document.createElement("h2"); - formDiv.appendChild(headingSpan); - headingSpan.innerHTML = "Context Item Album Editor"; - - var form = document.createElement("editContextAlbumForm"); - formDiv.appendChild(form); - - form.setAttribute("id", "editContextAlbumForm"); - form.setAttribute("class", "form-style-1"); - form.setAttribute("method", "post"); - form.setAttribute("createEditOrView", createEditOrView); - - var formul = document.createElement("ul"); - form.appendChild(formul); - - var nameLI = document.createElement("li"); - formul.appendChild(nameLI); - var nameLabel = document.createElement("label"); - nameLI.appendChild(nameLabel); - nameLabel.setAttribute("for", "editContextAlbumFormNameInput"); - nameLabel.innerHTML = "Name: "; - var nameLabelSpan = document.createElement("span"); - nameLabel.appendChild(nameLabelSpan); - nameLabelSpan.setAttribute("class", "required"); - nameLabelSpan.innerHTML = "*"; - var nameInput = document.createElement("input"); - nameLI.appendChild(nameInput); - nameInput.setAttribute("id", "editContextAlbumFormNameInput"); - nameInput.setAttribute("type", "text"); - nameInput.setAttribute("name", "editContextAlbumFormameInput"); - nameInput.setAttribute("class", "field ebInput"); - nameInput.setAttribute("placeholder", "name"); - if (contextAlbum && contextAlbum.key && contextAlbum.key.name) { - nameInput.value = contextAlbum.key.name; - } - if (createEditOrView != "CREATE") { - nameInput.readOnly = true; - } - - var versionLI = document.createElement("li"); - formul.appendChild(versionLI); - var versionLabel = document.createElement("label"); - versionLI.appendChild(versionLabel); - versionLabel.setAttribute("for", "editContextAlbumFormVersionInput"); - versionLabel.innerHTML = "Version: "; - var versionInput = document.createElement("input"); - versionLI.appendChild(versionInput); - versionInput.setAttribute("id", "editContextAlbumFormVersionInput"); - versionInput.setAttribute("type", "text"); - versionInput.setAttribute("name", "editContextAlbumFormVersionInput"); - versionInput.setAttribute("class", "field ebInput"); - versionInput.setAttribute("placeholder", "0.0.1"); - if (contextAlbum && contextAlbum.key && contextAlbum.key.version) { - versionInput.value = contextAlbum.key.version; - } - if (createEditOrView != "CREATE") { - versionInput.readOnly = true; - } - - var uuidLI = document.createElement("li"); - formul.appendChild(uuidLI); - var uuidLabel = document.createElement("label"); - uuidLI.appendChild(uuidLabel); - uuidLabel.setAttribute("for", "editContextAlbumFormUuidInput"); - uuidLabel.innerHTML = "UUID: "; - var uuidInput = document.createElement("input"); - uuidLI.appendChild(uuidInput); - uuidInput.setAttribute("id", "editContextAlbumFormUuidInput"); - uuidInput.setAttribute("type", "text"); - uuidInput.setAttribute("name", "editContextAlbumFormUuidInput"); - uuidInput.setAttribute("class", "field-long ebInput ebInput_width_full"); - uuidInput.setAttribute("placeholder", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"); - if (contextAlbum && contextAlbum.uuid) { - uuidInput.value = contextAlbum.uuid; - } - if (createEditOrView != "CREATE") { - uuidInput.readOnly = true; - } - - var disabled = (createEditOrView != "CREATE" && createEditOrView != "EDIT"); - - var descriptionLI = document.createElement("li"); - formul.appendChild(descriptionLI); - var descriptionLabel = document.createElement("label"); - descriptionLI.appendChild(descriptionLabel); - descriptionLabel.setAttribute("for", "editContextAlbumFormDescriptionTextArea"); - descriptionLabel.innerHTML = "Description: "; - var descriptionTextArea = document.createElement("textarea"); - descriptionLI.appendChild(descriptionTextArea); - descriptionTextArea.setAttribute("id", "editContextAlbumFormDescriptionTextArea"); - descriptionTextArea.setAttribute("name", "editContextAlbumFormDescriptionTextArea"); - descriptionTextArea.setAttribute("class", "field-long field-textarea ebTextArea ebTextArea_width_full"); - if (contextAlbum && contextAlbum.description) { - descriptionTextArea.value = contextAlbum.description; - } - descriptionTextArea.readOnly = disabled; - - var albumScopeLI = document.createElement("li"); - formul.appendChild(albumScopeLI); - var albumScopeLabel = document.createElement("label"); - albumScopeLI.appendChild(albumScopeLabel); - albumScopeLabel.setAttribute("for", "editContextAlbumFormAlbumScopeInput"); - albumScopeLabel.innerHTML = "Context Album Scope: "; - var albumScopeInput = document.createElement("input"); - albumScopeLI.appendChild(albumScopeInput); - albumScopeInput.setAttribute("id", "editContextAlbumFormAlbumScopeInput"); - albumScopeInput.setAttribute("type", "text"); - albumScopeInput.setAttribute("name", "editContextAlbumFormAlbumScopeInput"); - albumScopeInput.setAttribute("class", "field-albumScope ebInput"); - albumScopeInput.setAttribute("placeholder", "Global"); - if (contextAlbum && contextAlbum.scope) { - albumScopeInput.value = contextAlbum.scope; - } - albumScopeInput.readOnly = disabled; - - var albumReadOnlyLI = document.createElement("li"); - formul.appendChild(albumReadOnlyLI); - var albumReadOnlyLabel = document.createElement("label"); - albumReadOnlyLI.appendChild(albumReadOnlyLabel); - albumReadOnlyLabel.setAttribute("for", "editContextAlbumFormAlbumReadOnlyInput"); - albumReadOnlyLabel.innerHTML = "Read Only? "; - var albumReadOnlyInput = document.createElement("input"); - albumReadOnlyInput.setAttribute("type", "checkbox"); - albumReadOnlyLI.appendChild(albumReadOnlyInput); - albumReadOnlyInput.setAttribute("id", "editContextAlbumFormAlbumReadOnlyCheckbox"); - albumReadOnlyInput.setAttribute("name", "editContextAlbumFormAlbumReadOnlyCheckbox"); - albumReadOnlyInput.setAttribute("class", "field-albumReadonlyCheckbox"); - if (contextAlbum && contextAlbum.isWritable != null && contextAlbum.isWritable === false) { - albumReadOnlyInput.checked = true; - } else { - albumReadOnlyInput.checked = false; - } - albumReadOnlyInput.disabled = disabled; - - var albumItemSchemaLI = document.createElement("li"); - formul.appendChild(albumItemSchemaLI); - var albumItemSchemaLabel = document.createElement("label"); - albumItemSchemaLI.appendChild(albumItemSchemaLabel); - albumItemSchemaLabel.setAttribute("for", "editContextAlbumFormAlbumItemSchema"); - albumItemSchemaLabel.innerHTML = "Schema/Type of Album items: "; - var selected = null; - if (contextAlbum && contextAlbum.itemSchema != null && contextAlbum.itemSchema.name != null - && contextAlbum.itemSchema.version != null && contextAlbum.itemSchema.name != "" - && contextAlbum.itemSchema.version != "") { - selected = { - "name" : contextAlbum.itemSchema.name, - "version" : contextAlbum.itemSchema.version, - "displaytext" : contextAlbum.itemSchema.name + ":" + contextAlbum.itemSchema.version, - "contextAlbum" : contextAlbum - }; - } - var selectDiv = dropdownList("editContextAlbumFormAlbumItemSchema", contextSchemas, selected, disabled, null); - if (selectDiv == null) { - console.error("Cannot create a Context Album because there are no contextSchemas to add to it"); - alert("Cannot create a Context Album because there are no contextSchemas to add to it"); - editContextAlbumForm_cancelPressed(); - } else { - albumItemSchemaLI.appendChild(selectDiv); - } - - var inputLI = document.createElement("li"); - formul.appendChild(inputLI); - if (createEditOrView == "CREATE") { - var generateUUIDInput = document.createElement("button"); - inputLI.appendChild(generateUUIDInput); - generateUUIDInput.setAttribute("id", "generateUUID"); - generateUUIDInput.setAttribute("class", "ebBtn ebBtn_large"); - generateUUIDInput.setAttribute("type", "submit"); - generateUUIDInput.setAttribute("value", "Generate UUID"); - generateUUIDInput.onclick = editContextAlbumForm_generateUUIDPressed; - generateUUIDInput.innerHTML = generateUUIDInput.getAttribute("value"); - var inputSpan0 = document.createElement("span"); - inputLI.appendChild(inputSpan0); - inputSpan0.setAttribute("class", "required"); - inputSpan0.innerHTML = " "; - } - if (createEditOrView == "CREATE") { - var generateDescriptionInput = document.createElement("button"); - inputLI.appendChild(generateDescriptionInput); - generateDescriptionInput.setAttribute("id", "generateDescription"); - generateDescriptionInput.setAttribute("class", "ebBtn ebBtn_large"); - generateDescriptionInput.setAttribute("type", "submit"); - generateDescriptionInput.setAttribute("value", "Generate Description"); - generateDescriptionInput.onclick = editContextAlbumForm_generateDescriptionPressed; - generateDescriptionInput.innerHTML = generateDescriptionInput.getAttribute("value"); - var inputSpan1 = document.createElement("span"); - inputLI.appendChild(inputSpan1); - inputSpan1.setAttribute("class", "required"); - inputSpan1.innerHTML = " "; - } - - var cancelInput = document.createElement("button"); - inputLI.appendChild(cancelInput); - cancelInput.setAttribute("id", "cancel"); - cancelInput.setAttribute("class", "ebBtn ebBtn_large"); - cancelInput.setAttribute("type", "submit"); - cancelInput.setAttribute("value", "Cancel"); - cancelInput.onclick = editContextAlbumForm_cancelPressed; - cancelInput.innerHTML = cancelInput.getAttribute("value"); - - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - var inputSpan2 = document.createElement("span"); - inputLI.appendChild(inputSpan2); - inputSpan2.setAttribute("class", "required"); - inputSpan2.innerHTML = " "; - - var submitInput = document.createElement("button"); - inputLI.appendChild(submitInput); - submitInput.setAttribute("id", "submit"); - submitInput.setAttribute("class", "ebBtn ebBtn_large"); - submitInput.setAttribute("type", "submit"); - submitInput.setAttribute("value", "Submit"); - submitInput.onclick = editContextAlbumForm_submitPressed; - submitInput.innerHTML = submitInput.getAttribute("value"); - } - - formParent.appendChild(contentelement); - scrollToTop(); -} - -function editContextAlbumForm_generateUUIDPressed() { - document.getElementById("editContextAlbumFormUuidInput").value = formUtils_generateUUID(); -} - -function editContextAlbumForm_generateDescriptionPressed() { - document.getElementById("editContextAlbumFormDescriptionTextArea").value = formUtils_generateDescription(document - .getElementById("editContextAlbumFormNameInput").value, document - .getElementById("editContextAlbumFormVersionInput").value, document - .getElementById("editContextAlbumFormUuidInput").value); -} - -function editContextAlbumForm_cancelPressed() { - apexUtils_removeElement("editContextAlbumFormDiv"); - contextAlbumTab_reset(); -} - -function editContextAlbumForm_submitPressed() { - var createEditOrView = $('#editContextAlbumForm').attr("createEditOrView"); - if (!createEditOrView || createEditOrView == "" || (createEditOrView != "CREATE" && createEditOrView != "EDIT")) { - console.error("Invalid operation \"" + createEditOrView - + "\" passed to editContextAlbumForm_submitPressed function. Edit failed"); - apexUtils_removeElement("editContextAlbumFormDiv"); - contextAlbumTab_reset(); - return; - } - - var name = $('#editContextAlbumFormNameInput').val(); - var version = $('#editContextAlbumFormVersionInput').val(); - - var selectedschema = document.getElementById("editContextAlbumFormAlbumItemSchema_dropdownList").selectedOption; - if (selectedschema == null) { - alert("Context Album \"" + name + "\" has no selected Album Item Schema/Type"); - return false; - } - var itemschema = { - "name" : selectedschema.name, - "version" : selectedschema.version - }; - - var scope = $('#editContextAlbumFormAlbumScopeInput').val().toUpperCase(); - if (scope != "APPLICATION" && scope != "EXTERNAL" && scope != "GLOBAL") { - var message = "Are you sure you want to set the scope ContextAlbum to \"" + scope - + "\"? Currently the only scope supported are: \"APPLICATION\", \"EXTERNAL\" and \"GLOBAL\""; - if (!apexUtils_areYouSure(message)) { - return false; - } - } - var readonly = $('#editContextAlbumFormAlbumReadOnlyCheckbox').prop('checked'); - if (readonly && scope != "EXTERNAL") { - var message = "Are you sure you want to set the scope ContextAlbum to \"" - + scope - + "\" while it is set as Read Only. It only makes sense to use readonly for \"EXTERNAL\" Context Albums. If this Album is readonly it cannot be set!"; - if (!apexUtils_areYouSure(message)) { - return false; - } - } - if (!readonly && scope == "EXTERNAL") { - var message = "Are you sure you want to set the scope ContextAlbum to \"" - + scope - + "\" while it is not set as Read Only. It only makes sense to use readonly for \"EXTERNAL\" Context Albums since EXTERNAL context cannot be set in policies."; - if (!apexUtils_areYouSure(message)) { - return false; - } - } - - var jsonString = JSON.stringify({ - "name" : name, - "version" : version, - "uuid" : $('#editContextAlbumFormUuidInput').val(), - "description" : $('#editContextAlbumFormDescriptionTextArea').val(), - "itemSchema" : itemschema, - "scope" : scope, - "writeable" : !readonly - }); - - if (createEditOrView == "CREATE") { - var requestURL = restRootURL + "/ContextAlbum/Create"; - ajax_post(requestURL, jsonString, function(resultData) { - apexUtils_removeElement("editContextAlbumFormDiv"); - contextAlbumTab_reset(); - keyInformationTab_reset() - }); - } else if (createEditOrView == "EDIT") { - var requestURL = restRootURL + "/ContextAlbum/Update"; - ajax_put(requestURL, jsonString, function(resultData) { - apexUtils_removeElement("editContextAlbumFormDiv"); - contextAlbumTab_reset(); - keyInformationTab_reset() - }); - } - -} diff --git a/client/client-editor/src/main/resources/webapp/js/ApexContextAlbumTab.js b/client/client-editor/src/main/resources/webapp/js/ApexContextAlbumTab.js deleted file mode 100644 index 685c57f59..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexContextAlbumTab.js +++ /dev/null @@ -1,115 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function contextAlbumTab_reset() { - contextAlbumTab_deactivate(); - contextAlbumTab_activate(); -} - -function contextAlbumTab_activate() { - contextAlbumTab_create(); - - var requestURL = restRootURL + "/ContextAlbum/Get?name=&version="; - - ajax_get(requestURL, function(data) { - $("#contextAlbumTableBody").find("tr:gt(0)").remove(); - - for (var i = 0; i < data.messages.message.length; i++) { - var contextAlbum = JSON.parse(data.messages.message[i]).apexContextAlbum; - - var contextAlbumRow_tr = document.createElement("tr"); - var contextAlbumid = contextAlbum.key.name + ":" + contextAlbum.key.version; - - - var contextAlbumTableRow = - "" + - contextAlbum.key.name + ":" + contextAlbum.key.version + - "" + - "" + - contextAlbum.scope + - "" + - "" + - contextAlbum.isWritable + - "" + - "" + - contextAlbum.itemSchema.name + ":" + contextAlbum.itemSchema.version + - "" ; - - contextAlbumRow_tr.innerHTML = contextAlbumTableRow; - contextAlbumRow_tr.addEventListener('contextmenu', rightClickMenu_scopePreserver("contextAlbumTabContent", "contextAlbum", contextAlbum.key.name, contextAlbum.key.version)); - - $("#contextAlbumTableBody").append(contextAlbumRow_tr); - - } - }); -} - -function contextAlbumTab_deactivate() { - apexUtils_removeElement("contextAlbumTabContent"); -} - -function contextAlbumTab_create() { - var contextAlbumTab = document.getElementById("contextAlbumsTab"); - - var contextAlbumTabContent = document.getElementById("contextAlbumTabContent"); - if (contextAlbumTabContent != null) { - return - } - - var contextAlbumTabContent = document.createElement("contextAlbumTabContent"); - contextAlbumTab.appendChild(contextAlbumTabContent); - contextAlbumTabContent.setAttribute("id", "contextAlbumTabContent"); - contextAlbumTabContent.addEventListener('contextmenu', rightClickMenu_scopePreserver("contextAlbumTabContent", "contextAlbum",null, null)); - - var contextAlbumTable = createTable("contextAlbumTable"); - contextAlbumTabContent.appendChild(contextAlbumTable); - - var contextAlbumTableHeader = document.createElement("thead"); - contextAlbumTable.appendChild(contextAlbumTableHeader); - contextAlbumTableHeader.setAttribute("id", "contextAlbumTableHeader"); - - var contextAlbumTableHeaderRow = document.createElement("tr"); - contextAlbumTableHeader.appendChild(contextAlbumTableHeaderRow); - contextAlbumTableHeaderRow.setAttribute("id", "contextAlbumTableHeaderRow"); - - var contextAlbumTableKeyHeader = document.createElement("th"); - contextAlbumTableHeaderRow.appendChild(contextAlbumTableKeyHeader); - contextAlbumTableKeyHeader.setAttribute("id", "contextAlbumTableKeyHeader"); - contextAlbumTableKeyHeader.appendChild(document.createTextNode("Context Album")); - - var contextAlbumTableScopeHeader = document.createElement("th"); - contextAlbumTableHeaderRow.appendChild(contextAlbumTableScopeHeader); - contextAlbumTableScopeHeader.setAttribute("id", "contextAlbumTableScopeHeader"); - contextAlbumTableScopeHeader.appendChild(document.createTextNode("Scope")); - - var contextAlbumTableWriteableHeader = document.createElement("th"); - contextAlbumTableHeaderRow.appendChild(contextAlbumTableWriteableHeader); - contextAlbumTableWriteableHeader.setAttribute("id", "contextAlbumTableWritableHeader"); - contextAlbumTableWriteableHeader.appendChild(document.createTextNode("Writable")); - - var contextAlbumTableItemSchemaHeader = document.createElement("th"); - contextAlbumTableHeaderRow.appendChild(contextAlbumTableItemSchemaHeader); - contextAlbumTableItemSchemaHeader.setAttribute("id", "contextAlbumTableItemSchemaHeader"); - contextAlbumTableItemSchemaHeader.appendChild(document.createTextNode("Item Schema")); - - var contextAlbumTableBody = document.createElement("tbody"); - contextAlbumTable.appendChild(contextAlbumTableBody); - contextAlbumTable.setAttribute("id", "contextAlbumTableBody"); -} \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/js/ApexContextSchemaEditForm.js b/client/client-editor/src/main/resources/webapp/js/ApexContextSchemaEditForm.js deleted file mode 100644 index 52dcff894..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexContextSchemaEditForm.js +++ /dev/null @@ -1,369 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function editContextSchemaForm_createContextSchema(formParent) { - return editContextSchemaForm_activate(formParent, "CREATE", null); -} - -function editContextSchemaForm_deleteContextSchema(parent, name, version) { - var message = "Are you sure you want to delete ContextSchema \"" + name + ":" + version + "\"?"; - if (apexUtils_areYouSure(message)) { - var requestURL = restRootURL + "/ContextSchema/Delete?name=" + name + "&version=" + version; - ajax_delete(requestURL, function(data) { - apexUtils_removeElement("editContextSchemaFormDiv"); - contextSchemaTab_reset(); - keyInformationTab_reset() - }); - } -} - -function editContextSchemaForm_viewContextSchema(parent, name, version) { - var requestURL = restRootURL + "/ContextSchema/Get?name=" + name + "&version=" + version; - ajax_getWithKeyInfo(requestURL, "apexContextSchema", function(contextSchema) { - editContextSchemaForm_activate(parent, "VIEW", contextSchema); - }); -} - -function editContextSchemaForm_editContextSchema(formParent, name, version) { - var requestURL = restRootURL + "/ContextSchema/Get?name=" + name + "&version=" + version; - ajax_getWithKeyInfo(requestURL, "apexContextSchema", function(contextSchema) { - editContextSchemaForm_activate(formParent, "EDIT", contextSchema); - }); -} - -function editContextSchemaForm_activate(parent, operation, contextSchema) { - apexUtils_removeElement("editContextSchemaFormDiv"); - var formParent = document.getElementById(parent); - apexUtils_emptyElement(parent); - - var isedit = false; - var createEditOrView = ""; - - if (!operation) { - console.warn("No operation specified for ContextSchemaForm form") - } else { - createEditOrView = operation.toUpperCase(); - } - - if (createEditOrView == "CREATE") { - isedit = true; - } else if (createEditOrView == "EDIT" || createEditOrView == "VIEW") { - if (createEditOrView == "EDIT") { - isedit = true; - } - - if (!contextSchema) { - console.warn("Invalid value (\"" + contextSchema - + "\") passed as a value for \"contextSchema\" for ContextSchemaForm form."); - } else { - if (!contextSchema.key || !contextSchema.key.name || contextSchema.key.name == "") { - console.warn("Invalid value (\"" + contextSchema.key.name - + "\") passed as a value for \"name\" for ContextSchemaForm form."); - } - if (!contextSchema.key || !contextSchema.key.version || contextSchema.key.version == "") { - console.warn("Invalid value (\"" + contextSchema.key.version - + "\") passed as a value for \"version\" for ContextSchemaForm form."); - } - if (!contextSchema.uuid || contextSchema.uuid == "") { - console.warn("Invalid value (\"" + contextSchema.uuid - + "\") passed as a value for \"uuid\" for ContextSchemaForm form."); - } - if (createEditOrView == "VIEW") { - if (!contextSchema.description) { - console.warn("Invalid value (\"" + contextSchema.description - + "\") passed as a value for \"description\" for ContextSchemaForm form."); - } - if (!contextSchema.schemaFlavour || contextSchema.schemaFlavour == "") { - console.warn("Invalid value (\"" + contextSchema.schemaFlavour - + "\") passed as a value for \"schemaFlavour\" for ContextSchemaForm form."); - } - if (!contextSchema.schemaDefinition || contextSchema.schemaDefinition == "") { - console.warn("Invalid value (\"" + contextSchema.schemaDefinition - + "\") passed as a value for \"schemaDefinition\" for ContextSchemaForm form."); - } - } - } - } else { - console - .warn("Invalid operation (\"" - + operation - + "\") specified for ContextSchemaForm form. Only \"Create\", \"Edit\" and \"View\" operations are supported"); - } - - var contentelement = document.createElement("editContextSchemaFormDiv"); - var formDiv = document.createElement("div"); - contentelement.appendChild(formDiv); - formDiv.setAttribute("id", "editContextSchemaFormDiv"); - formDiv.setAttribute("class", "editContextSchemaFormDiv"); - - var headingSpan = document.createElement("h2"); - headingSpan.innerHTML = "Context Item Schema Editor"; - formDiv.appendChild(headingSpan); - - var form = document.createElement("editContextSchemaForm"); - formDiv.appendChild(form); - - form.setAttribute("id", "editContextSchemaForm"); - form.setAttribute("class", "form-style-1"); - form.setAttribute("method", "post"); - form.setAttribute("createEditOrView", createEditOrView); - - var formul = document.createElement("ul"); - form.appendChild(formul); - - var nameLI = document.createElement("li"); - formul.appendChild(nameLI); - var nameLabel = document.createElement("label"); - nameLI.appendChild(nameLabel); - nameLabel.setAttribute("for", "editContextSchemaFormNameInput"); - nameLabel.innerHTML = "Name: "; - var nameLabelSpan = document.createElement("span"); - nameLabel.appendChild(nameLabelSpan); - nameLabelSpan.setAttribute("class", "required"); - nameLabelSpan.innerHTML = "*"; - var nameInput = document.createElement("input"); - nameLI.appendChild(nameInput); - nameInput.setAttribute("id", "editContextSchemaFormNameInput"); - nameInput.setAttribute("type", "text"); - nameInput.setAttribute("name", "editContextSchemaFormameInput"); - nameInput.setAttribute("class", "field ebInput"); - nameInput.setAttribute("placeholder", "name"); - if (contextSchema && contextSchema.key && contextSchema.key.name) { - nameInput.value = contextSchema.key.name; - } - if (createEditOrView != "CREATE") { - nameInput.readOnly = true; - } - - var versionLI = document.createElement("li"); - formul.appendChild(versionLI); - var versionLabel = document.createElement("label"); - versionLI.appendChild(versionLabel); - versionLabel.setAttribute("for", "editContextSchemaFormVersionInput"); - versionLabel.innerHTML = "Version: "; - var versionInput = document.createElement("input"); - versionLI.appendChild(versionInput); - versionInput.setAttribute("id", "editContextSchemaFormVersionInput"); - versionInput.setAttribute("type", "text"); - versionInput.setAttribute("name", "editContextSchemaFormVersionInput"); - versionInput.setAttribute("class", "field ebInput"); - versionInput.setAttribute("placeholder", "0.0.1"); - if (contextSchema && contextSchema.key && contextSchema.key.version) { - versionInput.value = contextSchema.key.version; - } - if (createEditOrView != "CREATE") { - versionInput.readOnly = true; - } - - var uuidLI = document.createElement("li"); - formul.appendChild(uuidLI); - var uuidLabel = document.createElement("label"); - uuidLI.appendChild(uuidLabel); - uuidLabel.setAttribute("for", "editContextSchemaFormUuidInput"); - uuidLabel.innerHTML = "UUID: "; - var uuidInput = document.createElement("input"); - uuidLI.appendChild(uuidInput); - uuidInput.setAttribute("id", "editContextSchemaFormUuidInput"); - uuidInput.setAttribute("type", "text"); - uuidInput.setAttribute("name", "editContextSchemaFormUuidInput"); - uuidInput.setAttribute("class", "field-long ebInput ebInput_width_full"); - uuidInput.setAttribute("placeholder", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"); - if (contextSchema && contextSchema.uuid) { - uuidInput.value = contextSchema.uuid; - } - if (createEditOrView != "CREATE") { - uuidInput.readOnly = true; - } - - var descriptionLI = document.createElement("li"); - formul.appendChild(descriptionLI); - var descriptionLabel = document.createElement("label"); - descriptionLI.appendChild(descriptionLabel); - descriptionLabel.setAttribute("for", "editContextSchemaFormDescriptionTextArea"); - descriptionLabel.innerHTML = "Description: "; - var descriptionTextArea = document.createElement("textarea"); - descriptionLI.appendChild(descriptionTextArea); - descriptionTextArea.setAttribute("id", "editContextSchemaFormDescriptionTextArea"); - descriptionTextArea.setAttribute("name", "editContextSchemaFormDescriptionTextArea"); - descriptionTextArea.setAttribute("class", "field-long field-textarea ebTextArea ebTextArea_width_full"); - if (contextSchema && contextSchema.description) { - descriptionTextArea.value = contextSchema.description; - } - if (createEditOrView != "CREATE" && createEditOrView != "EDIT") { - descriptionTextArea.readOnly = true; - } - - var schemaFlavourLI = document.createElement("li"); - formul.appendChild(schemaFlavourLI); - var schemaFlavourLabel = document.createElement("label"); - schemaFlavourLI.appendChild(schemaFlavourLabel); - schemaFlavourLabel.setAttribute("for", "editContextSchemaFormSchemaFlavourInput"); - schemaFlavourLabel.innerHTML = "Schema Flavour: "; - var schemaFlavourInput = document.createElement("input"); - schemaFlavourLI.appendChild(schemaFlavourInput); - schemaFlavourInput.setAttribute("id", "editContextSchemaFormSchemaFlavourInput"); - schemaFlavourInput.setAttribute("type", "text"); - schemaFlavourInput.setAttribute("name", "editContextSchemaFormSchemaFlavourInput"); - schemaFlavourInput.setAttribute("class", "field-long ebInput ebInput_width_full"); - schemaFlavourInput.setAttribute("placeholder", "Java"); - if (contextSchema && contextSchema.schemaFlavour) { - schemaFlavourInput.value = contextSchema.schemaFlavour; - } - if (createEditOrView != "CREATE" && createEditOrView != "EDIT") { - schemaFlavourInput.readOnly = true; - } - - var schemaDefinitionLI = document.createElement("li"); - formul.appendChild(schemaDefinitionLI); - var schemaDefinitionLabel = document.createElement("label"); - schemaDefinitionLI.appendChild(schemaDefinitionLabel); - schemaDefinitionLabel.setAttribute("for", "editContextSchemaFormSchemaDefinitionInput"); - schemaDefinitionLabel.innerHTML = "Schema Definition: "; - var schemaDefinitionInput = document.createElement("textarea"); - schemaDefinitionLI.appendChild(schemaDefinitionInput); - schemaDefinitionInput.setAttribute("id", "editContextSchemaFormSchemaDefinitionInput"); - schemaDefinitionInput.setAttribute("type", "text"); - schemaDefinitionInput.setAttribute("name", "editContextSchemaFormSchemaDefinitionInput"); - schemaDefinitionInput.setAttribute("class", "field-long field-textarea ebTextArea ebTextArea_width_full"); - schemaDefinitionInput.setAttribute("placeholder", "java.lang.String"); - if (contextSchema && contextSchema.schemaDefinition) { - schemaDefinitionInput.value = contextSchema.schemaDefinition; - } - if (createEditOrView != "CREATE" && createEditOrView != "EDIT") { - schemaDefinitionInput.readOnly = true; - } - - var inputLI = document.createElement("li"); - formul.appendChild(inputLI); - if (createEditOrView == "CREATE") { - var generateUUIDInput = document.createElement("button"); - inputLI.appendChild(generateUUIDInput); - generateUUIDInput.setAttribute("id", "generateUUID"); - generateUUIDInput.setAttribute("class", "ebBtn ebBtn_large"); - generateUUIDInput.setAttribute("type", "submit"); - generateUUIDInput.setAttribute("value", "Generate UUID"); - generateUUIDInput.onclick = editContextSchemaForm_generateUUIDPressed; - generateUUIDInput.innerHTML = generateUUIDInput.getAttribute("value"); - var inputSpan0 = document.createElement("span"); - inputLI.appendChild(inputSpan0); - inputSpan0.setAttribute("class", "required"); - inputSpan0.innerHTML = " "; - } - if (createEditOrView == "CREATE") { - var generateDescriptionInput = document.createElement("button"); - inputLI.appendChild(generateDescriptionInput); - generateDescriptionInput.setAttribute("id", "generateDescription"); - generateDescriptionInput.setAttribute("class", "ebBtn ebBtn_large"); - generateDescriptionInput.setAttribute("type", "submit"); - generateDescriptionInput.setAttribute("value", "Generate Description"); - generateDescriptionInput.onclick = editContextSchemaForm_generateDescriptionPressed; - generateDescriptionInput.innerHTML = generateDescriptionInput.getAttribute("value"); - - var inputSpan1 = document.createElement("span"); - inputLI.appendChild(inputSpan1); - inputSpan1.setAttribute("class", "required"); - inputSpan1.innerHTML = " "; - } - - var cancelInput = document.createElement("button"); - inputLI.appendChild(cancelInput); - cancelInput.setAttribute("id", "cancel"); - cancelInput.setAttribute("class", "ebBtn ebBtn_large"); - cancelInput.setAttribute("type", "submit"); - cancelInput.setAttribute("value", "Cancel"); - cancelInput.onclick = editContextSchemaForm_cancelPressed; - cancelInput.innerHTML = cancelInput.getAttribute("value"); - - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - var inputSpan2 = document.createElement("span"); - inputLI.appendChild(inputSpan2); - inputSpan2.setAttribute("class", "required"); - inputSpan2.innerHTML = " "; - - var submitInput = document.createElement("button"); - inputLI.appendChild(submitInput); - submitInput.setAttribute("id", "submit"); - submitInput.setAttribute("class", "ebBtn ebBtn_large"); - submitInput.setAttribute("type", "submit"); - submitInput.setAttribute("value", "Submit"); - submitInput.onclick = editContextSchemaForm_submitPressed; - submitInput.innerHTML = submitInput.getAttribute("value"); - } - - formParent.appendChild(contentelement); - scrollToTop(); -} - -function editContextSchemaForm_generateUUIDPressed() { - document.getElementById("editContextSchemaFormUuidInput").value = formUtils_generateUUID(); -} - -function editContextSchemaForm_generateDescriptionPressed() { - document.getElementById("editContextSchemaFormDescriptionTextArea").value = formUtils_generateDescription(document - .getElementById("editContextSchemaFormNameInput").value, document - .getElementById("editContextSchemaFormVersionInput").value, document - .getElementById("editContextSchemaFormUuidInput").value); -} - -function editContextSchemaForm_cancelPressed() { - apexUtils_removeElement("editContextSchemaFormDiv"); - contextSchemaTab_reset(); -} - -function editContextSchemaForm_submitPressed() { - var createEditOrView = $('#editContextSchemaForm').attr("createEditOrView"); - if (!createEditOrView || createEditOrView == "" || (createEditOrView != "CREATE" && createEditOrView != "EDIT")) { - console.error("Invalid operation \"" + createEditOrView - + "\" passed to editContextSchemaForm_submitPressed function. Edit failed"); - apexUtils_removeElement("editContextSchemaFormDiv"); - contextSchemaTab_reset(); - return; - } - - var name = $('#editContextSchemaFormNameInput').val(); - var version = $('#editContextSchemaFormVersionInput').val() - - var jsonString = JSON.stringify({ - "name" : name, - "version" : version, - "uuid" : $('#editContextSchemaFormUuidInput').val(), - "description" : $('#editContextSchemaFormDescriptionTextArea').val(), - "schemaFlavour" : $('#editContextSchemaFormSchemaFlavourInput').val(), - "schemaDefinition" : $('#editContextSchemaFormSchemaDefinitionInput').val(), - }); - - if (createEditOrView == "CREATE") { - var requestURL = restRootURL + "/ContextSchema/Create"; - ajax_post(requestURL, jsonString, function(resultData) { - apexUtils_removeElement("editContextSchemaFormDiv"); - contextSchemaTab_reset(); - keyInformationTab_reset() - }); - } else if (createEditOrView == "EDIT") { - var requestURL = restRootURL + "/ContextSchema/Update"; - ajax_put(requestURL, jsonString, function(resultData) { - apexUtils_removeElement("editContextSchemaFormDiv"); - contextSchemaTab_reset(); - keyInformationTab_reset() - }); - } - -} diff --git a/client/client-editor/src/main/resources/webapp/js/ApexContextSchemaTab.js b/client/client-editor/src/main/resources/webapp/js/ApexContextSchemaTab.js deleted file mode 100644 index fa4080a7c..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexContextSchemaTab.js +++ /dev/null @@ -1,104 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function contextSchemaTab_reset() { - contextSchemaTab_deactivate(); - contextSchemaTab_activate(); -} -function contextSchemaTab_activate() { - contextSchemaTab_create(); - - var requestURL = restRootURL + "/ContextSchema/Get?name=&version="; - - ajax_get(requestURL, function(data) { - $("#contextSchemaTableBody").find("tr:gt(0)").remove(); - - for (var i = 0; i < data.messages.message.length; i++) { - var contextSchema = JSON.parse(data.messages.message[i]).apexContextSchema; - - var contextSchemaRow_tr = document.createElement("tr"); - var contextSchemaid = contextSchema.key.name + ":" + contextSchema.key.version; - - var contextSchemaRow = - "" + - contextSchemaid + - "" + - "" + - contextSchema.schemaFlavour + - "" + - "" + - apexUtils_escapeHtml(contextSchema.schemaDefinition) + - ""; - - contextSchemaRow_tr.innerHTML = contextSchemaRow; - contextSchemaRow_tr.addEventListener('contextmenu', rightClickMenu_scopePreserver("contextSchemaTabContent", "ContextSchema", contextSchema.key.name, contextSchema.key.version)); - - $("#contextSchemaTableBody").append(contextSchemaRow_tr); - } - }); -} - -function contextSchemaTab_deactivate() { - apexUtils_removeElement("contextSchemaTabContent"); -} - -function contextSchemaTab_create() { - var contextSchemaTab = document.getElementById("contextSchemasTab"); - - var contextSchemaTabContent = document.getElementById("contextSchemaTabContent"); - if (contextSchemaTabContent != null) { - return - } - - var contextSchemaTabContent = document.createElement("contextSchemaTabContent"); - contextSchemaTab.appendChild(contextSchemaTabContent); - contextSchemaTabContent.setAttribute("id", "contextSchemaTabContent"); - contextSchemaTabContent.addEventListener('contextmenu', rightClickMenu_scopePreserver("contextSchemaTabContent", "ContextSchema",null,null)); - - var contextSchemaTable = createTable("contextSchemaTable"); - contextSchemaTabContent.appendChild(contextSchemaTable); - - var contextSchemaTableHeader = document.createElement("thead"); - contextSchemaTable.appendChild(contextSchemaTableHeader); - contextSchemaTableHeader.setAttribute("id", "contextSchemaTableHeader"); - - var contextSchemaTableHeaderRow = document.createElement("tr"); - contextSchemaTableHeader.appendChild(contextSchemaTableHeaderRow); - contextSchemaTableHeaderRow.setAttribute("id", "contextSchemaTableHeaderRow"); - - var contextSchemaTableKeyHeader = document.createElement("th"); - contextSchemaTableHeaderRow.appendChild(contextSchemaTableKeyHeader); - contextSchemaTableKeyHeader.setAttribute("id", "contextSchemaTableKeyHeader"); - contextSchemaTableKeyHeader.appendChild(document.createTextNode("Context Item")); - - var contextSchemaTableSchemaFlavourHeader = document.createElement("th"); - contextSchemaTableHeaderRow.appendChild(contextSchemaTableSchemaFlavourHeader); - contextSchemaTableSchemaFlavourHeader.setAttribute("id", "contextSchemaTableJavatypeHeader"); - contextSchemaTableSchemaFlavourHeader.appendChild(document.createTextNode("Schema Flavour")); - - var contextSchemaTableSchemaDefHeader = document.createElement("th"); - contextSchemaTableHeaderRow.appendChild(contextSchemaTableSchemaDefHeader); - contextSchemaTableSchemaDefHeader.setAttribute("id", "contextSchemaTableJavatypeHeader"); - contextSchemaTableSchemaDefHeader.appendChild(document.createTextNode("Context Item Schema Definition")); - - var contextSchemaTableBody = document.createElement("tbody"); - contextSchemaTable.appendChild(contextSchemaTableBody); - contextSchemaTable.setAttribute("id", "contextSchemaTableBody"); -} \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/js/ApexEventEditForm.js b/client/client-editor/src/main/resources/webapp/js/ApexEventEditForm.js deleted file mode 100644 index 51408e31a..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexEventEditForm.js +++ /dev/null @@ -1,566 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function editEventForm_deleteEvent(parent, name, version) { - var message = "Are you sure you want to delete Event \"" + name + ":" + version + "\"?"; - if (apexUtils_areYouSure(message)) { - var requestURL = restRootURL + "/Event/Delete?name=" + name + "&version=" + version; - ajax_delete(requestURL, function(data) { - apexUtils_removeElement("editEventFormDiv"); - eventTab_reset(); - keyInformationTab_reset() - }); - } -} - -function editEventForm_viewEvent(formParent, name, version) { - editEventForm_editEvent_inner(formParent, name, version, "VIEW"); -} - -function editEventForm_editEvent(formParent, name, version) { - editEventForm_editEvent_inner(formParent, name, version, "EDIT"); -} - -function editEventForm_createEvent(formParent) { - // Get all contextSchemas too for event params - var requestURL = restRootURL + "/ContextSchema/Get?name=&version="; - var contextSchemas = new Array(); - ajax_get(requestURL, function(data2) { - for (var i = 0; i < data2.messages.message.length; i++) { - var contextSchema = JSON.parse(data2.messages.message[i]).apexContextSchema; - var dt = { - "name" : contextSchema.key.name, - "version" : contextSchema.key.version, - "displaytext" : contextSchema.key.name + ":" + contextSchema.key.version, - "contextSchema" : contextSchema - }; - contextSchemas.push(dt); - } - editEventForm_activate(formParent, "CREATE", null, contextSchemas); - }); -} - -function editEventForm_editEvent_inner(formParent, name, version, viewOrEdit) { - var requestURL = restRootURL + "/Event/Get?name=" + name + "&version=" + version; - ajax_getWithKeyInfo(requestURL, "apexEvent", function(event) { - // Get all contextSchemas too for event params - var requestURL = restRootURL + "/ContextSchema/Get?name=&version="; - var contextSchemas = new Array(); - ajax_get(requestURL, function(data2) { - for (var i = 0; i < data2.messages.message.length; i++) { - var contextSchema = JSON.parse(data2.messages.message[i]).apexContextSchema; - contextSchemas.push({ - "name" : contextSchema.key.name, - "version" : contextSchema.key.version, - "displaytext" : contextSchema.key.name + ":" + contextSchema.key.version, - "contextSchema" : contextSchema - }); - } - editEventForm_activate(formParent, viewOrEdit, event, contextSchemas); - }); - }); -} - -function editEventForm_activate(parent, operation, event, contextSchemas) { - apexUtils_removeElement("editEventFormDiv"); - var formParent = document.getElementById(parent); - apexUtils_emptyElement(parent); - - var isedit = false; - var createEditOrView = ""; - if (!operation) { - console.warn("No operation specified for EventForm form") - } else { - createEditOrView = operation.toUpperCase() - } - if (createEditOrView == "CREATE") { - isedit = true; - } else if (createEditOrView == "EDIT" || createEditOrView == "VIEW") { - if (createEditOrView == "EDIT") { - isedit = true; - } - - if (!event) { - console.warn("Invalid value (\"" + event + "\") passed as a value for \"event\" for EventForm form."); - } else { - if (!event.key || !event.key.name || event.key.name == "") { - console.warn("Invalid value (\"" + event.key.name - + "\") passed as a value for \"name\" for EventForm form."); - } - if (!event.key || !event.key.version || event.key.version == "") { - console.warn("Invalid value (\"" + event.key.version - + "\") passed as a value for \"version\" for EventForm form."); - } - if (!event.uuid || event.uuid == "") { - console.warn("Invalid value (\"" + event.uuid - + "\") passed as a value for \"uuid\" for EventForm form."); - } - } - } else { - console.warn("Invalid operation (\"" + operation - + "\") specified for EventForm form. Only \"Create\", \"Edit\" and \"View\" operations are supported"); - } - - var contentelement = document.createElement("editEventFormDiv"); - var formDiv = document.createElement("div"); - contentelement.appendChild(formDiv); - formDiv.setAttribute("id", "editEventFormDiv"); - formDiv.setAttribute("class", "editEventFormDiv"); - - var headingSpan = document.createElement("h2"); - formDiv.appendChild(headingSpan); - - headingSpan.innerHTML = "Event Editor"; - - var form = document.createElement("editEventForm"); - formDiv.appendChild(form); - - form.setAttribute("id", "editEventForm"); - form.setAttribute("class", "form-style-1"); - form.setAttribute("method", "post"); - form.setAttribute("createEditOrView", createEditOrView); - - var formul = document.createElement("ul"); - form.appendChild(formul); - - var nameLI = document.createElement("li"); - formul.appendChild(nameLI); - var nameLabel = document.createElement("label"); - nameLI.appendChild(nameLabel); - nameLabel.setAttribute("for", "editEventFormNameInput"); - nameLabel.innerHTML = "Name: "; - var nameLabelSpan = document.createElement("span"); - nameLabel.appendChild(nameLabelSpan); - nameLabelSpan.setAttribute("class", "required"); - nameLabelSpan.innerHTML = "*"; - var nameInput = document.createElement("input"); - nameLI.appendChild(nameInput); - nameInput.setAttribute("id", "editEventFormNameInput"); - nameInput.setAttribute("type", "text"); - nameInput.setAttribute("name", "editEventFormNameInput"); - nameInput.setAttribute("class", "field ebInput"); - nameInput.setAttribute("placeholder", "name"); - if (event && event.key && event.key.name) { - nameInput.value = event.key.name; - } - if (createEditOrView != "CREATE") { - nameInput.readOnly = true; - } - - var versionLI = document.createElement("li"); - formul.appendChild(versionLI); - var versionLabel = document.createElement("label"); - versionLI.appendChild(versionLabel); - versionLabel.setAttribute("for", "editEventFormVersionInput"); - versionLabel.innerHTML = "Version: "; - var versionInput = document.createElement("input"); - versionLI.appendChild(versionInput); - versionInput.setAttribute("id", "editEventFormVersionInput"); - versionInput.setAttribute("type", "text"); - versionInput.setAttribute("name", "editEventFormVersionInput"); - versionInput.setAttribute("class", "field ebInput"); - versionInput.setAttribute("placeholder", "0.0.1"); - if (event && event.key && event.key.version) { - versionInput.value = event.key.version; - } - if (createEditOrView != "CREATE") { - versionInput.readOnly = true; - } - - var uuidLI = document.createElement("li"); - formul.appendChild(uuidLI); - var uuidLabel = document.createElement("label"); - uuidLI.appendChild(uuidLabel); - uuidLabel.setAttribute("for", "editEventFormUuidInput"); - uuidLabel.innerHTML = "UUID: "; - var uuidInput = document.createElement("input"); - uuidLI.appendChild(uuidInput); - uuidInput.setAttribute("id", "editEventFormUuidInput"); - uuidInput.setAttribute("type", "text"); - uuidInput.setAttribute("name", "editEventFormUuidInput"); - uuidInput.setAttribute("class", "field-long ebInput ebInput_width_full"); - uuidInput.setAttribute("placeholder", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"); - if (event && event.uuid) { - uuidInput.value = event.uuid; - } - if (createEditOrView != "CREATE") { - uuidInput.readOnly = true; - } - - var descriptionLI = document.createElement("li"); - formul.appendChild(descriptionLI); - var descriptionLabel = document.createElement("label"); - descriptionLI.appendChild(descriptionLabel); - descriptionLabel.setAttribute("for", "editEventFormDescriptionTextArea"); - descriptionLabel.innerHTML = "Description: "; - var descriptionTextArea = document.createElement("textarea"); - descriptionLI.appendChild(descriptionTextArea); - descriptionTextArea.setAttribute("id", "editEventFormDescriptionTextArea"); - descriptionTextArea.setAttribute("name", "editEventFormDescriptionTextArea"); - descriptionTextArea.setAttribute("class", "field-long field-textarea ebTextArea ebTextArea_width_full"); - if (event && event.description) { - descriptionTextArea.value = event.description; - } - if (createEditOrView != "CREATE" && createEditOrView != "EDIT") { - descriptionTextArea.readOnly = true; - } - - var namespaceLI = document.createElement("li"); - formul.appendChild(namespaceLI); - var namespaceLabel = document.createElement("label"); - namespaceLI.appendChild(namespaceLabel); - namespaceLabel.setAttribute("for", "editEventFormNamespaceInput"); - namespaceLabel.innerHTML = "Namespace: "; - var namespaceInput = document.createElement("input"); - namespaceLI.appendChild(namespaceInput); - namespaceInput.setAttribute("id", "editEventFormNamespaceInput"); - namespaceInput.setAttribute("type", "text"); - namespaceInput.setAttribute("name", "editEventFormNamespaceInput"); - namespaceInput.setAttribute("class", "field-namespace ebInput ebInput ebInput_width_full"); - namespaceInput.setAttribute("placeholder", ""); - if (event && event.nameSpace) { - namespaceInput.value = event.nameSpace; - } - if (createEditOrView != "CREATE" && createEditOrView != "EDIT") { - namespaceInput.readOnly = true; - } - - var sourceLI = document.createElement("li"); - formul.appendChild(sourceLI); - var sourceLabel = document.createElement("label"); - sourceLI.appendChild(sourceLabel); - sourceLabel.setAttribute("for", "editEventFormSourceInput"); - sourceLabel.innerHTML = "Source: "; - var sourceInput = document.createElement("input"); - sourceLI.appendChild(sourceInput); - sourceInput.setAttribute("id", "editEventFormSourceInput"); - sourceInput.setAttribute("type", "text"); - sourceInput.setAttribute("name", "editEventFormSourceInput"); - sourceInput.setAttribute("class", "field-source ebInput"); - sourceInput.setAttribute("placeholder", ""); - if (event && event.source) { - sourceInput.value = event.source; - } - if (createEditOrView != "CREATE" && createEditOrView != "EDIT") { - sourceInput.readOnly = true; - } - - var targetLI = document.createElement("li"); - formul.appendChild(targetLI); - var targetLabel = document.createElement("label"); - targetLI.appendChild(targetLabel); - targetLabel.setAttribute("for", "editEventFormTargetInput"); - targetLabel.innerHTML = "Target: "; - var targetInput = document.createElement("input"); - targetLI.appendChild(targetInput); - targetInput.setAttribute("id", "editEventFormTargetInput"); - targetInput.setAttribute("type", "text"); - targetInput.setAttribute("name", "editEventFormTargetInput"); - targetInput.setAttribute("class", "field-target ebInput"); - targetInput.setAttribute("placeholder", ""); - if (event && event.target) { - targetInput.value = event.target; - } - if (createEditOrView != "CREATE" && createEditOrView != "EDIT") { - targetInput.readOnly = true; - } - - var parametersLI = document.createElement("li"); - formul.appendChild(parametersLI); - var parametersLabel = document.createElement("label"); - parametersLI.appendChild(parametersLabel); - parametersLabel.setAttribute("for", "editEventFormParametersTable"); - parametersLabel.innerHTML = "Event Parameters: "; - var paramstable = document.createElement("table"); - paramstable.setAttribute("id", "editEventFormParametersTable"); - paramstable.setAttribute("name", "editEventFormParametersTable"); - paramstable.setAttribute("class", "table-eventparam"); - parametersLI.appendChild(paramstable); - var paramstable_head = document.createElement("thead"); - paramstable.appendChild(paramstable_head); - var paramstable_head_tr = document.createElement("tr"); - paramstable_head.appendChild(paramstable_head_tr); - paramstable_head_tr.appendChild(document.createElement("th")); // empty, - // for - // delete - // button - paramstable_head_th = document.createElement("th"); - paramstable_head_tr.appendChild(paramstable_head_th); - paramstable_head_th.innerHTML = "Parameter Name: "; - paramstable_head_th.setAttribute("class", "table-eventparam-heading form-heading"); - paramstable_head_th = document.createElement("th"); - paramstable_head_tr.appendChild(paramstable_head_th); - paramstable_head_th.innerHTML = "Parameter Type/Schema: "; - paramstable_head_th.setAttribute("class", "table-eventparam-heading form-heading"); - paramstable_head_th = document.createElement("th"); - paramstable_head_tr.appendChild(paramstable_head_th); - paramstable_head_th.innerHTML = "Optional: "; - paramstable_head_th.setAttribute("class", "table-eventparam-heading form-heading"); - var paramstable_body = document.createElement("tbody"); - paramstable.appendChild(paramstable_body); - // Add the parameters - if (event && event.parameter && event.parameter.entry) { - for (var p = 0; p < event.parameter.entry.length; p++) { - var fieldEntry = event.parameter.entry[p]; - var contextSchema = fieldEntry.value.fieldSchemaKey; - var optional = fieldEntry.value.optional; - contextSchema["displaytext"] = contextSchema.name + ":" + contextSchema.version; - editEventForm_addEventParam(paramstable_body, (createEditOrView == "VIEW"), fieldEntry.key, optional, - contextSchema, contextSchemas); - } - } - // add the New Parameter button - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - var paramTR = document.createElement("tr"); - paramTR.setAttribute("class", "field-eventparam-tr.new"); - paramstable_body.appendChild(paramTR); - var paramTD = document.createElement("td"); - paramTD.setAttribute("colspan", "4"); - paramTR.appendChild(paramTD); - var addParamInput = createAddFormButton(); - paramTD.appendChild(addParamInput); - addParamInput.onclick = function() { - editEventForm_addEventParam(paramstable_body, false, null, false, null, contextSchemas); - }; - } - - var inputLI = document.createElement("li"); - formul.appendChild(inputLI); - if (createEditOrView == "CREATE") { - var generateUUIDInput = document.createElement("button"); - inputLI.appendChild(generateUUIDInput); - generateUUIDInput.setAttribute("id", "generateUUID"); - generateUUIDInput.setAttribute("class", "ebBtn ebBtn_large"); - generateUUIDInput.setAttribute("type", "submit"); - generateUUIDInput.setAttribute("value", "Generate UUID"); - generateUUIDInput.onclick = editEventForm_generateUUIDPressed; - generateUUIDInput.innerHTML = generateUUIDInput.getAttribute("value"); - - var inputSpan0 = document.createElement("span"); - inputLI.appendChild(inputSpan0); - inputSpan0.setAttribute("class", "required"); - inputSpan0.innerHTML = " "; - } - if (createEditOrView == "CREATE") { - var generateDescriptionInput = document.createElement("button"); - inputLI.appendChild(generateDescriptionInput); - generateDescriptionInput.setAttribute("id", "generateDescription"); - generateDescriptionInput.setAttribute("class", "ebBtn ebBtn_large"); - generateDescriptionInput.setAttribute("type", "submit"); - generateDescriptionInput.setAttribute("value", "Generate Description"); - generateDescriptionInput.onclick = editEventForm_generateDescriptionPressed; - generateDescriptionInput.innerHTML = generateDescriptionInput.getAttribute("value"); - var inputSpan1 = document.createElement("span"); - inputLI.appendChild(inputSpan1); - inputSpan1.setAttribute("class", "required"); - inputSpan1.innerHTML = " "; - } - - var cancelInput = document.createElement("button"); - inputLI.appendChild(cancelInput); - cancelInput.setAttribute("id", "cancel"); - cancelInput.setAttribute("class", "ebBtn ebBtn_large"); - cancelInput.setAttribute("type", "submit"); - cancelInput.setAttribute("value", "Cancel"); - cancelInput.onclick = editEventForm_cancelPressed; - cancelInput.innerHTML = cancelInput.getAttribute("value"); - - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - var inputSpan2 = document.createElement("span"); - inputLI.appendChild(inputSpan2); - inputSpan2.setAttribute("class", "required"); - inputSpan2.innerHTML = " "; - var submitInput = document.createElement("button"); - inputLI.appendChild(submitInput); - submitInput.setAttribute("id", "submit"); - submitInput.setAttribute("class", "ebBtn ebBtn_large"); - submitInput.setAttribute("type", "submit"); - submitInput.setAttribute("value", "Submit"); - - submitInput.onclick = editEventForm_submitPressed; - submitInput.innerHTML = submitInput.getAttribute("value") - } - - formParent.appendChild(contentelement); - scrollToTop(); -} - -function editEventForm_addEventParam(parentTBody, disabled, name, optional, contextSchema, contextSchemas) { - var random_suffix = formUtils_generateUUID(); - - var paramTR = parentTBody.insertRow(parentTBody.rows.length - 1); - paramTR.setAttribute("param_id", random_suffix); - paramTR.setAttribute("class", "field-eventparam-tr"); - if (name == null && contextSchema == null && !disabled) { - paramTR.setAttribute("class", "field-eventparam-tr.new field-add-new"); - $(paramTR).show("fast"); - } - var deleteTD = document.createElement("td"); - paramTR.appendChild(deleteTD); - var deleteDiv = document.createElement("div"); - deleteTD.appendChild(deleteDiv); - if (!disabled) { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete"); - deleteDiv.onclick = function(event) { - $(paramTR).hide("fast", function() { - paramTR.parentNode.removeChild(paramTR); - }); - }; - } else { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled"); - } - - var nameTD = document.createElement("td"); - paramTR.appendChild(nameTD); - var nameInput = document.createElement("input"); - nameTD.appendChild(nameInput); - nameInput.setAttribute("id", "editEventFormParamName" + "_" + random_suffix); - nameInput.setAttribute("type", "text"); - nameInput.setAttribute("name", "editEventFormParamName" + "_" + random_suffix); - nameInput.setAttribute("class", "field-eventparam-name ebInput ebInput_width_xLong"); - if (name == null && contextSchema == null && !disabled) { - nameInput.setAttribute("class", "field-eventparam-name.new ebInput ebInput_width_xLong"); - } - nameInput.setAttribute("placeholder", "Parameter Name"); - if (name) { - nameInput.value = name; - } - nameInput.readOnly = disabled; - - var contextSchemaTD = document.createElement("td"); - paramTR.appendChild(contextSchemaTD); - - var selectDiv = dropdownList("editEventFormParamContextSchema" + "_" + random_suffix, contextSchemas, - contextSchema, disabled, null) - contextSchemaTD.appendChild(selectDiv); - - var paramOptionalTD = document.createElement("td"); - paramOptionalTD.setAttribute("class", "field-checkbox-center"); - paramTR.appendChild(paramOptionalTD); - var paramOptionalInput = document.createElement("input"); - paramOptionalInput.setAttribute("type", "checkbox"); - paramOptionalInput.setAttribute("id", "editEventFormParamOptional" + "_" + random_suffix); - paramOptionalInput.setAttribute("name", "editEventFormParamOptional" + "_" + random_suffix); - paramOptionalInput.setAttribute("class", "field-eventparam-optional"); - if (name == null && contextSchema == null && !disabled) { - paramOptionalInput.setAttribute("class", "field-eventparam-optional.new"); - } - if (optional == true) { - paramOptionalInput.checked = true; - } else { - paramOptionalInput.checked = false; - } - paramOptionalInput.disabled = disabled; - paramOptionalTD.appendChild(paramOptionalInput); -} - -function editEventForm_generateUUIDPressed() { - document.getElementById("editEventFormUuidInput").value = formUtils_generateUUID(); -} - -function editEventForm_generateDescriptionPressed() { - document.getElementById("editEventFormDescriptionTextArea").value = formUtils_generateDescription(document - .getElementById("editEventFormNameInput").value, - document.getElementById("editEventFormVersionInput").value, document - .getElementById("editEventFormUuidInput").value); -} - -function editEventForm_cancelPressed() { - apexUtils_removeElement("editEventFormDiv"); - eventTab_reset(); -} - -function editEventForm_submitPressed() { - var createEditOrView = document.getElementById("editEventForm").getAttribute("createEditOrView"); - if (!createEditOrView || createEditOrView == "" || (createEditOrView != "CREATE" && createEditOrView != "EDIT")) { - console.error("Invalid operation \"" + createEditOrView - + "\" passed to editEventForm_submitPressed function. Edit failed"); - apexUtils_removeElement("editEventFormDiv"); - eventTab_reset(); - return; - } - - var name = document.getElementById('editEventFormNameInput').value; - var version = document.getElementById('editEventFormVersionInput').value; - - var eventbean_params = null; - // get the event parameters - var paramstablerows = document.getElementById("editEventFormParametersTable").rows; - if (paramstablerows && paramstablerows.length >= 2) { - eventbean_params = new Object(); - for (var i = 1; i < paramstablerows.length - 1; i++) { - var paramTR = paramstablerows[i]; - if (paramTR && paramTR.getAttribute("param_id")) { - var param_id = paramTR.getAttribute("param_id"); - var paramname = document.getElementById("editEventFormParamName" + "_" + param_id).value; - var paramoptional = document.getElementById("editEventFormParamOptional" + "_" + param_id).checked; - var param_dt = document.getElementById("editEventFormParamContextSchema" + "_" + param_id - + "_dropdownList").selectedOption; - if (eventbean_params[paramname]) { - alert("Event \"" + name + "\" contains more than one Parameter called \"" + paramname + "\""); - return false; - } - if (param_dt == null) { - alert("Event \"" + name + "\" has no selected Context Item Schema for the Parameter called \"" - + paramname + "\""); - return false; - } - var param_dt_name = param_dt.name; - var param_dt_version = param_dt.version; - eventbean_params[paramname] = { - "localName" : paramname, - "name" : param_dt_name, - "version" : param_dt_version, - "optional" : paramoptional - }; - } - } - } - // generate an event bean to json-ify and send in rest request - var eventbean = { - "name" : name, - "version" : version, - "uuid" : document.getElementById('editEventFormUuidInput').value, - "description" : document.getElementById('editEventFormDescriptionTextArea').value, - "source" : document.getElementById('editEventFormSourceInput').value, - "target" : document.getElementById('editEventFormTargetInput').value, - "nameSpace" : document.getElementById('editEventFormNamespaceInput').value, - "parameters" : eventbean_params - } - var jsonString = JSON.stringify(eventbean); - - if (createEditOrView == "CREATE") { - var requestURL = restRootURL + "/Event/Create"; - ajax_post(requestURL, jsonString, function(resultData) { - apexUtils_removeElement("editEventFormDiv"); - eventTab_reset(); - keyInformationTab_reset() - }); - } else if (createEditOrView == "EDIT") { - var requestURL = restRootURL + "/Event/Update"; - ajax_put(requestURL, jsonString, function(resultData) { - apexUtils_removeElement("editEventFormDiv"); - eventTab_reset(); - keyInformationTab_reset() - }); - } - -} diff --git a/client/client-editor/src/main/resources/webapp/js/ApexEventTab.js b/client/client-editor/src/main/resources/webapp/js/ApexEventTab.js deleted file mode 100644 index 0cb0a222b..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexEventTab.js +++ /dev/null @@ -1,138 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function eventTab_reset() { - eventTab_deactivate(); - eventTab_activate(); -} - -function eventTab_activate() { - eventTab_create(); - - var requestURL = restRootURL + "/Event/Get?name=&version="; - - ajax_get(requestURL, function(data) { - $("#eventTableBody").find("tr:gt(0)").remove(); - - - for (var i = 0; i < data.messages.message.length; i++) { - var event = JSON.parse(data.messages.message[i]).apexEvent; - - var eventTableRow_tr = document.createElement("tr"); - var eventid = event.key.name + ":" + event.key.version; - - var eventTableRow = - "" + - eventid + - "" + - "" + - event.nameSpace + - "" + - "" + - event.source + - "" + - "" + - event.target + - ""; - - eventTableRow += ""; - - for (var p = 0; p < event.parameter.entry.length; p++) { - var fieldEntry = event.parameter.entry[p]; - - eventTableRow += - "" + - ""; - } - - eventTableRow += "
ParameterParameter Type/SchemaOptional
" + - fieldEntry.key + - "" + - fieldEntry.value.fieldSchemaKey.name + ":" + fieldEntry.value.fieldSchemaKey.version + - "" + - fieldEntry.value.optional + - "
"; - - eventTableRow_tr.innerHTML = eventTableRow; - - eventTableRow_tr.addEventListener('contextmenu', rightClickMenu_scopePreserver("eventTabContent", "Event", event.key.name, event.key.version)); - - $("#eventTableBody").append(eventTableRow_tr); - } - }); -} - -function eventTab_deactivate() { - apexUtils_removeElement("eventTabContent"); -} - -function eventTab_create() { - var eventTab = document.getElementById("eventsTab"); - - var eventTabContent = document.getElementById("eventTabContent"); - if (eventTabContent != null) { - return - } - - var eventTabContent = document.createElement("eventTabContent"); - eventTab.appendChild(eventTabContent); - eventTabContent.setAttribute("id", "eventTabContent"); - eventTabContent.addEventListener('contextmenu', rightClickMenu_scopePreserver("eventTabContent", "Event", null, null)); - - var eventTable = createTable("eventTable"); - eventTabContent.appendChild(eventTable); - - var eventTableHeader = document.createElement("thead"); - eventTable.appendChild(eventTableHeader); - eventTableHeader.setAttribute("id", "eventTableHeader"); - - var eventTableHeaderRow = document.createElement("tr"); - eventTableHeader.appendChild(eventTableHeaderRow); - eventTableHeaderRow.setAttribute("id", "eventTableHeaderRow"); - - var eventTableKeyHeader = document.createElement("th"); - eventTableHeaderRow.appendChild(eventTableKeyHeader); - eventTableKeyHeader.setAttribute("id", "eventTableKeyHeader"); - eventTableKeyHeader.appendChild(document.createTextNode("Event")); - - var eventTableNamespaceHeader = document.createElement("th"); - eventTableHeaderRow.appendChild(eventTableNamespaceHeader); - eventTableNamespaceHeader.setAttribute("id", "eventTableNamespaceHeader"); - eventTableNamespaceHeader.appendChild(document.createTextNode("Name Space")); - - var eventTableSourceHeader = document.createElement("th"); - eventTableHeaderRow.appendChild(eventTableSourceHeader); - eventTableSourceHeader.setAttribute("id", "eventTableSourceHeader"); - eventTableSourceHeader.appendChild(document.createTextNode("Source")); - - var eventTableTargetHeader = document.createElement("th"); - eventTableHeaderRow.appendChild(eventTableTargetHeader); - eventTableTargetHeader.setAttribute("id", "eventTableTargetHeader"); - eventTableTargetHeader.appendChild(document.createTextNode("Target")); - - var eventTableParameterHeader = document.createElement("th"); - eventTableHeaderRow.appendChild(eventTableParameterHeader); - eventTableParameterHeader.setAttribute("id", "eventTableParameterHeader"); - eventTableParameterHeader.appendChild(document.createTextNode("Parameters")); - - var eventTableBody = document.createElement("tbody"); - eventTable.appendChild(eventTableBody); - eventTable.setAttribute("id", "eventTableBody"); -} \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/js/ApexFiles.js b/client/client-editor/src/main/resources/webapp/js/ApexFiles.js deleted file mode 100644 index 2d868d380..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexFiles.js +++ /dev/null @@ -1,50 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function files_fileOpen() { - $('').on('change', function() { - var reader = new FileReader(); - modelFileName = this.files[0].name; - reader.readAsText(this.files[0]); - - reader.onload = function(event) { - var requestURL = restRootURL + "/Model/Load"; - ajax_put(requestURL, event.target.result, function(resultData) { - localStorage.setItem("apex_model_loaded", true); - var requestURL = restRootURL + "/Model/GetKey"; - ajax_get(requestURL, function(data) { - var modelKey = JSON.parse(data.messages.message[0]).apexArtifactKey; - pageControl_modelMode(modelKey.name, modelKey.version, modelFileName); - }); - }); - }; - }).click(); -} - -function files_fileDownload() { - var requestURL = restRootURL + "/Model/Download"; - - var downloadLink = document.createElement("a"); - document.body.appendChild(downloadLink); - downloadLink.download = modelFileName; - downloadLink.href = requestURL; - downloadLink.click(); - document.body.removeChild(downloadLink); -} diff --git a/client/client-editor/src/main/resources/webapp/js/ApexFormUtils.js b/client/client-editor/src/main/resources/webapp/js/ApexFormUtils.js deleted file mode 100644 index d59006efd..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexFormUtils.js +++ /dev/null @@ -1,47 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function formUtils_generateUUID() { // Public Domain/MIT - var d = new Date().getTime(); - if (typeof performance !== 'undefined' && typeof performance.now === 'function') { - d += performance.now(); // use high-precision timer if available - } - return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { - var r = (d + Math.random() * 16) % 16 | 0; - d = Math.floor(d / 16); - return (c === 'x' ? r : (r & 0x3 | 0x8)).toString(16); - }); -} - -function formUtils_generateDescription(name, version, uuid) { - if (!name) { - name = "null"; - } - if (!version) { - version = "null"; - } - if (!uuid) { - uuid = "null"; - } - - var description = "Generated description for a concept called \"" + name + "\" with version \"" + version - + "\" and UUID \"" + uuid + "\""; - return description; -} diff --git a/client/client-editor/src/main/resources/webapp/js/ApexKeyInformationTab.js b/client/client-editor/src/main/resources/webapp/js/ApexKeyInformationTab.js deleted file mode 100644 index ff92584a7..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexKeyInformationTab.js +++ /dev/null @@ -1,104 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function keyInformationTab_reset() { - keyInformationTab_deactivate(); - keyInformationTab_activate(); -} - -function keyInformationTab_activate() { - keyInformationTab_create(); - - var requestURL = restRootURL + "/KeyInformation/Get?name=&version="; - - ajax_get(requestURL, function(data) { - $("#keyInformationTableBody").find("tr:gt(0)").remove(); - - for (var i = 0; i < data.messages.message.length; i++) { - var keyInfo = JSON.parse(data.messages.message[i]).apexKeyInfo; - - var keyInfoRow_tr = document.createElement("tr"); - var keyInfoRow = - "" + - keyInfo.key.name + ":" + keyInfo.key.version + - "" + - "" + - apexUtils_escapeHtml(keyInfo.UUID) + - "" + - "" + - apexUtils_escapeHtml(keyInfo.description) + - ""; - keyInfoRow_tr.innerHTML = keyInfoRow; - // keyInfoRow_tr.addEventListener('contextmenu', - // rightClickMenu_scopePreserver("keyInformationTabContent", - // "KeyInformation", keyInfo.key.name, keyInfo.key.version)); - $("#keyInformationTableBody").append(keyInfoRow_tr); - - } - }); -} - -function keyInformationTab_deactivate() { - apexUtils_removeElement("keyInformationTabContent"); -} - -function keyInformationTab_create() { - var keyInformationTab = document.getElementById("keyInformationTab"); - - var keyInformationTabContent = document.getElementById("keyInformationTabContent"); - if (keyInformationTabContent != null) { - return - } - - var keyInformationTabContent = document.createElement("keyInformationTabContent"); - keyInformationTab.appendChild(keyInformationTabContent); - keyInformationTabContent.setAttribute("id", "keyInformationTabContent"); - - var keyInformationTable = createTable("keyInformationTable"); - keyInformationTable.oncontextmenu = new Function("return false;") - keyInformationTabContent.appendChild(keyInformationTable); - - var keyInformationTableHeader = document.createElement("thead"); - keyInformationTable.appendChild(keyInformationTableHeader); - keyInformationTableHeader.setAttribute("id", "keyInformationTableHeader"); - - var keyInformationTableHeaderRow = document.createElement("tr"); - keyInformationTableHeader.appendChild(keyInformationTableHeaderRow); - keyInformationTableHeaderRow.setAttribute("id", "keyInformationTableHeaderRow"); - - var keyInformationTableKeyHeader = document.createElement("th"); - keyInformationTableHeaderRow.appendChild(keyInformationTableKeyHeader); - keyInformationTableKeyHeader.setAttribute("id", "keyInformationTableKeyHeader"); - keyInformationTableKeyHeader.appendChild(document.createTextNode("Key Information")); - - var keyInformationTableUUIDHeader = document.createElement("th"); - keyInformationTableHeaderRow.appendChild(keyInformationTableUUIDHeader); - keyInformationTableUUIDHeader.setAttribute("id", "keyInformationTableUUIDHeader"); - keyInformationTableUUIDHeader.appendChild(document.createTextNode("UUID")); - - var keyInformationTableDescriptionHeader = document.createElement("th"); - keyInformationTableHeaderRow.appendChild(keyInformationTableDescriptionHeader); - keyInformationTableDescriptionHeader.setAttribute("id", "keyInformationTableDescriptionHeader"); - keyInformationTableDescriptionHeader.appendChild(document.createTextNode("Description")); - - var keyInformationTableBody = document.createElement("tbody"); - keyInformationTable.appendChild(keyInformationTableBody); - keyInformationTable.setAttribute("id", "keyInformationTableBody"); -} diff --git a/client/client-editor/src/main/resources/webapp/js/ApexMain.js b/client/client-editor/src/main/resources/webapp/js/ApexMain.js deleted file mode 100644 index e8ad0de98..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexMain.js +++ /dev/null @@ -1,169 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -var restRootURL = null; -var modelFileName = null; - -$("#menu").fileMenu({ - slideSpeed : 200 -}); - -$(document).ready(function() { - pageControl_noModelMode(); - main_getRestRootURL(); -}); - -$("#menu li").not(".emptyMessage").click(function() { - switch (this.id) { - case "menuFileNew": - newModelForm_activate(document.getElementById("mainArea")); - break; - - case "menuFileOpen": - files_fileOpen(); - break; - - case "menuFileDownload": - files_fileDownload(); - break; - - case "menuFileClear": - if (confirm("Clear the current model?")) { - var requestURL = restRootURL + "/Model/Delete"; - - ajax_delete(requestURL, function(data) { - localStorage.removeItem("apex_model_loaded"); - localStorage.removeItem("apex_tab_index"); - $("#mainTabs").tabs("option", "active", 0); - pageControl_noModelMode(); - }); - } - break; - - case "menuFileNewSession": - clearLocalStorage(); - location.reload(); - break; - - case "menuFileClose": - if (confirm("Close Apex Editor?")) { - clearLocalStorage(); - window.location.href = window.location.href + "close.html"; - } - break; - - case "menuModelAnalyse": - modelHandling_analyse(); - break; - - case "menuModelValidate": - modelHandling_validate(); - break; - - case "menuConceptsContextSchemas": - $("#mainTabs").tabs("option", "active", 0); - break; - case "menuConceptsEvents": - $("#mainTabs").tabs("option", "active", 1); - break; - case "menuConceptsContextAlbums": - $("#mainTabs").tabs("option", "active", 2); - break; - case "menuConceptsTasks": - $("#mainTabs").tabs("option", "active", 3); - break; - case "menuConceptsPolicies": - $("#mainTabs").tabs("option", "active", 4); - break; - case "menuConceptsKeyInformation": - $("#mainTabs").tabs("option", "active", 5); - break; - - default: - break; - } -}); - -function main_getRestRootURL() { - var href = location.protocol - + "//" - + window.location.hostname - + (location.port ? ':' + location.port : '') - + (location.pathname.endsWith("/editor/") ? location.pathname.substring(0, location.pathname - .indexOf("editor/")) : location.pathname); - var restContext = "apexservices/editor/"; - if (localStorage.getItem("apex_session")) { - restRootURL = href + restContext + localStorage.getItem("apex_session"); - var requestURL = restRootURL + "/Model/GetKey"; - ajax_get(requestURL, function(data) { - $("#statusMessageTable").append(" REST root URL set to: " + restRootURL + ""); - if (localStorage.getItem("apex_model_loaded")) { - var modelKey = JSON.parse(data.messages.message[0]).apexArtifactKey; - pageControl_modelMode(modelKey.name, modelKey.version, modelFileName); - if (localStorage.getItem("apex_tab_index")) { - $("#mainTabs").tabs({ - active: localStorage.getItem("apex_tab_index") - }); - } - } - }); - } else { - var createSessionURL = href + restContext + "-1/Session/Create"; - - ajax_get(createSessionURL, function(data) { - localStorage.setItem("apex_session", data.messages.message[0]); - restRootURL = href + restContext + localStorage.getItem("apex_session"); - $("#statusMessageTable").append(" REST root URL set to: " + restRootURL + ""); - }); - } -} - -function clearLocalStorage() { - localStorage.removeItem("apex_session"); - localStorage.removeItem("apex_model_loaded"); - localStorage.removeItem("apex_tab_index"); -} - -/* Inline Message */ -var ebInlineMessageHeight = $(".ebInlineMessage").height(); - -$(".ebInlineMessage").mouseenter(function(e) { - e.stopPropagation(); - $(this).stop(); - var contentHeight = $(this).children('.ebInlineMessage-contentHolder').height(); - if (contentHeight > ebInlineMessageHeight) { - $(".ebInlineMessage").animate({ - height : contentHeight + 12 - }, 200); - } -}); - -$(".ebInlineMessage").mouseleave(function(e) { - e.stopPropagation(); - $(this).stop(); - $(".ebInlineMessage").animate({ - height : ebInlineMessageHeight - }, 200); -}); - -$(document).ready(function() { - $(".content").fadeIn(); -}); diff --git a/client/client-editor/src/main/resources/webapp/js/ApexModelHandling.js b/client/client-editor/src/main/resources/webapp/js/ApexModelHandling.js deleted file mode 100644 index 92c2df6d1..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexModelHandling.js +++ /dev/null @@ -1,39 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function modelHandling_analyse() { - var requestURL = restRootURL + "/Model/Analyse"; - - ajax_get(requestURL, function(data) { - resultForm_activate(document.getElementById("mainArea"), "Model Analysis Result", data.messages.message[0]); - }); -} - -function modelHandling_validate() { - var requestURL = restRootURL + "/Model/Validate"; - - ajax_getOKOrFail(requestURL, function(data) { - var validationResultString = ""; - for (var i = 1; i < data.messages.message.length; i++) { - validationResultString += (data.messages.message[i] + "\n"); - } - resultForm_activate(document.getElementById("mainArea"), "Model Validation Result", validationResultString); - }); -} \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/js/ApexNewModelForm.js b/client/client-editor/src/main/resources/webapp/js/ApexNewModelForm.js deleted file mode 100644 index 6831b5de9..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexNewModelForm.js +++ /dev/null @@ -1,226 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function newModelForm_activate(formParent) { - apexUtils_removeElement("newModelFormDiv"); - - var contentelement = document.createElement("newModelFormDiv"); - var formDiv = document.createElement("div"); - var backgroundDiv = document.createElement("div"); - backgroundDiv.setAttribute("id", "newModelDivBackground"); - backgroundDiv.setAttribute("class", "newModelDivBackground"); - - backgroundDiv.appendChild(formDiv); - contentelement.appendChild(backgroundDiv); - formParent.appendChild(contentelement); - - formDiv.setAttribute("id", "newModelFormDiv"); - formDiv.setAttribute("class", "newModelFormDiv"); - - var headingSpan = document.createElement("span"); - formDiv.appendChild(headingSpan); - - headingSpan.setAttribute("class", "headingSpan"); - headingSpan.innerHTML = "Model Details"; - - var form = document.createElement("newModelForm"); - formDiv.appendChild(form); - - form.setAttribute("id", "newModelForm"); - form.setAttribute("class", "form-style-1"); - form.setAttribute("method", "post"); - - var ul = document.createElement("ul"); - form.appendChild(ul); - - var nameLI = document.createElement("li"); - form.appendChild(nameLI); - - var nameLabel = document.createElement("label"); - nameLI.appendChild(nameLabel); - - nameLabel.setAttribute("for", "newModelFormNameInput"); - nameLabel.innerHTML = "Name: "; - - var nameLabelSpan = document.createElement("span"); - nameLabel.appendChild(nameLabelSpan); - - nameLabelSpan.setAttribute("class", "required"); - nameLabelSpan.innerHTML = "*"; - - var nameInput = document.createElement("input"); - nameLI.appendChild(nameInput); - - nameInput.setAttribute("id", "newModelFormNameInput"); - nameInput.setAttribute("type", "text"); - nameInput.setAttribute("name", "newModelFormameInput"); - nameInput.setAttribute("class", "field ebInput ebInput_width_xLong"); - nameInput.setAttribute("placeholder", "name"); - - var versionLI = document.createElement("li"); - form.appendChild(versionLI); - - var versionLabel = document.createElement("label"); - versionLI.appendChild(versionLabel); - - versionLabel.setAttribute("for", "newModelFormVersionInput"); - versionLabel.innerHTML = "Version: "; - - var versionInput = document.createElement("input"); - versionLI.appendChild(versionInput); - - versionInput.setAttribute("id", "newModelFormVersionInput"); - versionInput.setAttribute("type", "text"); - versionInput.setAttribute("name", "newModelFormVersionInput"); - versionInput.setAttribute("class", "field ebInput ebInput_width_xLong"); - versionInput.setAttribute("placeholder", "0.0.1"); - - var uuidLI = document.createElement("li"); - form.appendChild(uuidLI); - - var uuidLabel = document.createElement("label"); - uuidLI.appendChild(uuidLabel); - - uuidLabel.setAttribute("for", "newModelFormUuidInput"); - uuidLabel.innerHTML = "UUID: "; - - var uuidInput = document.createElement("input"); - uuidLI.appendChild(uuidInput); - - uuidInput.setAttribute("id", "newModelFormUuidInput"); - uuidInput.setAttribute("type", "text"); - uuidInput.setAttribute("name", "newModelFormUuidInput"); - uuidInput.setAttribute("class", "field-long ebInput ebInput_width_full"); - uuidInput.setAttribute("placeholder", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"); - - var descriptionLI = document.createElement("li"); - form.appendChild(descriptionLI); - - var descriptionLabel = document.createElement("label"); - descriptionLI.appendChild(descriptionLabel); - descriptionLabel.setAttribute("for", "newModelFormDescriptionTextArea"); - descriptionLabel.innerHTML = "Description: "; - - var descriptionTextArea = document.createElement("textarea"); - descriptionLI.appendChild(descriptionTextArea); - - descriptionTextArea.setAttribute("id", "newModelFormDescriptionTextArea"); - descriptionTextArea.setAttribute("name", "newModelFormDescriptionTextArea"); - descriptionTextArea.setAttribute("class", "field-long field-textarea ebTextArea ebTextArea_width_full"); - - var inputLI = document.createElement("li"); - form.appendChild(inputLI); - - var generateUUIDInput = document.createElement("input"); - inputLI.appendChild(generateUUIDInput); - - generateUUIDInput.setAttribute("id", "generateUUID"); - generateUUIDInput.setAttribute("class", "button ebBtn"); - generateUUIDInput.setAttribute("type", "submit"); - generateUUIDInput.setAttribute("value", "Generate UUID"); - - generateUUIDInput.onclick = newModelForm_generateUUIDPressed; - - var inputSpan0 = document.createElement("span"); - inputLI.appendChild(inputSpan0); - - inputSpan0.setAttribute("class", "required"); - inputSpan0.innerHTML = " "; - - var generateDescriptionInput = document.createElement("input"); - inputLI.appendChild(generateDescriptionInput); - - generateDescriptionInput.setAttribute("id", "generateDescription"); - generateDescriptionInput.setAttribute("class", "button ebBtn"); - generateDescriptionInput.setAttribute("type", "submit"); - generateDescriptionInput.setAttribute("value", "Generate Description"); - - generateDescriptionInput.onclick = newModelForm_generateDescriptionPressed; - - var inputSpan1 = document.createElement("span"); - inputLI.appendChild(inputSpan1); - - inputSpan1.setAttribute("class", "required"); - inputSpan1.innerHTML = " "; - - var cancelInput = document.createElement("input"); - inputLI.appendChild(cancelInput); - - cancelInput.setAttribute("id", "generateDescription"); - cancelInput.setAttribute("class", "button ebBtn"); - cancelInput.setAttribute("type", "submit"); - cancelInput.setAttribute("value", "Cancel"); - - cancelInput.onclick = newModelForm_cancelPressed; - - var inputSpan2 = document.createElement("span"); - inputLI.appendChild(inputSpan2); - - inputSpan2.setAttribute("class", "required"); - inputSpan2.innerHTML = " "; - - var submitInput = document.createElement("input"); - inputLI.appendChild(submitInput); - - submitInput.setAttribute("id", "submit"); - submitInput.setAttribute("class", "button ebBtn"); - submitInput.setAttribute("type", "submit"); - submitInput.setAttribute("value", "Submit"); - - submitInput.onclick = newModelForm_submitPressed; -} - -function newModelForm_generateUUIDPressed() { - document.getElementById("newModelFormUuidInput").value = formUtils_generateUUID(); -} - -function newModelForm_generateDescriptionPressed() { - document.getElementById("newModelFormDescriptionTextArea").value = formUtils_generateDescription(document - .getElementById("newModelFormNameInput").value, document.getElementById("newModelFormVersionInput").value, - document.getElementById("newModelFormUuidInput").value); -} - -function newModelForm_cancelPressed() { - apexUtils_removeElement("newModelDivBackground"); -} - -function newModelForm_submitPressed() { - jsonString = JSON.stringify({ - "name" : $('#newModelFormNameInput').val(), - "version" : $('#newModelFormVersionInput').val(), - "uuid" : $('#newModelFormUuidInput').val(), - "description" : $('#newModelFormDescriptionTextArea').val() - }); - - var requestURL = restRootURL + "/Model/Create"; - - ajax_post(requestURL, jsonString, function(resultData) { - apexUtils_removeElement("newModelDivBackground"); - - var requestURL = restRootURL + "/Model/GetKey"; - - ajax_get(requestURL, function(data) { - var modelKey = JSON.parse(data.messages.message[0]).apexArtifactKey; - modelFileName = modelKey.name + ".json"; - pageControl_modelMode(modelKey.name, modelKey.version, modelFileName); - }); - keyInformationTab_reset() - }); -} diff --git a/client/client-editor/src/main/resources/webapp/js/ApexPageControl.js b/client/client-editor/src/main/resources/webapp/js/ApexPageControl.js deleted file mode 100644 index 4904f306f..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexPageControl.js +++ /dev/null @@ -1,253 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function pageControl_modelMode(name, version, fileName) { - $('#modelName').html(name); - $('#modelVersion').html(version); - $('#modelFileName').html(fileName ? fileName : "N/A"); - - $("#menuFileNew").addClass("disabled"); - $("#menuFileOpen").addClass("disabled"); - $("#menuFileDownload").removeClass("disabled"); - $("#menuFileClear").removeClass("disabled"); - $("#menuModelAnalyse").removeClass("disabled"); - $("#menuModelValidate").removeClass("disabled"); - $("#menuModelCompare").removeClass("disabled"); - $("#menuModelSplit").removeClass("disabled"); - $("#menuModelMerge").removeClass("disabled"); - $("#menuConceptsContextSchemas").removeClass("disabled"); - $("#menuConceptsEvents").removeClass("disabled"); - $("#menuConceptsContextAlbums").removeClass("disabled"); - $("#menuConceptsTasks").removeClass("disabled"); - $("#menuConceptsPolicies").removeClass("disabled"); - $("#menuConceptsKeyInformation").removeClass("disabled"); - - $(".modelTag").show("slide", { - direction : "left" - }, 200); - - $("#mainTabs").tabs({ - classes : { - "ui-tabs-tab" : "ui-tabs-tab-custom", - "ui-tabs-active" : "ui-tabs-active-custom", - "ui-tabs-anchor" : "ui-tabs-anchor-custom" - }, - disabled : false, - activate : function(event, ui) { - localStorage.setItem("apex_tab_index", ui.newTab.index()); - } - }); - - contextSchemaTab_activate(); - eventTab_activate(); - contextAlbumTab_activate(); - taskTab_activate(); - policyTab_activate(); - keyInformationTab_activate(); - showPlaceholder(false); -} - -function pageControl_noModelMode() { - $(".modelTag").hide("slide", { - direction : "left" - }, 200); - - $('#modelName').html("N/A"); - $('#modelVersion').html("N/A"); - $('#modelFileName').html("N/A"); - - $("#menuFileNew").removeClass("disabled"); - $("#menuFileOpen").removeClass("disabled"); - $("#menuFileDownload").addClass("disabled"); - $("#menuFileClear").addClass("disabled"); - $("#menuModelAnalyse").addClass("disabled"); - $("#menuModelValidate").addClass("disabled"); - $("#menuModelCompare").addClass("disabled"); - $("#menuModelSplit").addClass("disabled"); - $("#menuModelMerge").addClass("disabled"); - $("#menuConceptsContextSchemas").addClass("disabled"); - $("#menuConceptsEvents").addClass("disabled"); - $("#menuConceptsContextAlbums").addClass("disabled"); - $("#menuConceptsTasks").addClass("disabled"); - $("#menuConceptsPolicies").addClass("disabled"); - $("#menuConceptsKeyInformation").addClass("disabled"); - - contextSchemaTab_deactivate(); - eventTab_deactivate(); - contextAlbumTab_deactivate(); - taskTab_deactivate(); - policyTab_deactivate(); - keyInformationTab_deactivate(); - - $("#mainTabs").tabs({ - classes : { - "ui-tabs-tab" : "ui-tabs-tab-custom", - "ui-tabs-active" : "ui-tabs-active-custom", - "ui-tabs-anchor" : "ui-tabs-anchor-custom" - }, - disabled : [ 0, 1, 2, 3, 4, 5 ] - }); - showPlaceholder(true); -} - -function pageControl_busyMode() { - $("#menuFile").addClass("disabled"); - $("#menuFileNew").addClass("disabled"); - $("#menuFileOpen").addClass("disabled"); - $("#menuFileDownload").addClass("disabled"); - $("#menuFileClear").addClass("disabled"); - $("#menuModelAnalyse").addClass("disabled"); - $("#menuModelValidate").addClass("disabled"); - $("#menuModelCompare").addClass("disabled"); - $("#menuModelSplit").addClass("disabled"); - $("#menuModelMerge").addClass("disabled"); - $("#menuConceptsContextSchemas").addClass("disabled"); - $("#menuConceptsEvents").addClass("disabled"); - $("#menuConceptsContextAlbums").addClass("disabled"); - $("#menuConceptsTasks").addClass("disabled"); - $("#menuConceptsPolicies").addClass("disabled"); - $("#menuConceptsKeyInformation").addClass("disabled"); - - $("#mainTabs").tabs({ - classes : { - "ui-tabs-tab" : "ui-tabs-tab-custom", - "ui-tabs-active" : "ui-tabs-active-custom", - "ui-tabs-anchor" : "ui-tabs-anchor-custom" - }, - disabled : false - }); - - contextSchemaTab_activate(); - eventTab_activate(); - contextAlbumTab_activate(); - taskTab_activate(); - policyTab_activate(); - keyInformationTab_activate(); - showPlaceholder(false); -} - -function pageControl_readyMode() { - $("#menuFile").removeClass("disabled"); - $("#menuFileNew").removeClass("disabled"); - $("#menuFileOpen").removeClass("disabled"); - $("#menuFileDownload").removeClass("disabled"); - $("#menuFileClear").removeClass("disabled"); - $("#menuModelAnalyse").removeClass("disabled"); - $("#menuModelValidate").removeClass("disabled"); - $("#menuModelCompare").removeClass("disabled"); - $("#menuModelSplit").removeClass("disabled"); - $("#menuModelMerge").removeClass("disabled"); - $("#menuConceptsContextSchemas").removeClass("disabled"); - $("#menuConceptsEvents").removeClass("disabled"); - $("#menuConceptsContextAlbums").removeClass("disabled"); - $("#menuConceptsTasks").removeClass("disabled"); - $("#menuConceptsPolicies").removeClass("disabled"); - $("#menuConceptsKeyInformation").removeClass("disabled"); - - contextSchemaTab_deactivate(); - eventTab_deactivate(); - contextAlbumTab_deactivate(); - taskTab_deactivate(); - policyTab_deactivate(); - keyInformationTab_deactivate(); - - $("#mainTabs").tabs({ - classes : { - "ui-tabs-tab" : "ui-tabs-tab-custom", - "ui-tabs-active" : "ui-tabs-active-custom", - "ui-tabs-anchor" : "ui-tabs-anchor-custom" - }, - disabled : [ 0, 1, 2, 3, 4, 5 ] - }); - showPlaceholder(true); -} - -function pageControl_successStatus(data) { - $('#statusString').html(data.result); - $("#statusMessageTable").empty(); - - if (data.ok) { - $('#statusString').css("color", "green"); - $('#ebInlineMessage-iconHolder-icon').attr("class", "ebIcon ebIcon_big ebIcon_tick"); - } else { - $('#statusString').css("color", "red"); - $('#ebInlineMessage-iconHolder-icon').attr("class", "ebIcon ebIcon_big ebIcon_error"); - for (var i = 0; i < data.messages.message.length; i++) { - $("#statusMessageTable").append("" + data.messages.message[i] + ""); - } - // A session with session ID "0" does not exist - var sessionDoesNotExistStringStart = "A session with session ID "; - var sessionDoesNotExistStringEnd = " does not exist"; - if (data.content.indexOf(sessionDoesNotExistStringStart) !== -1 - && data.content.indexOf(sessionDoesNotExistStringEnd) !== -1) { - clearLocalStorage(); - location.reload(); - } - throw "REST call returned an error\n" + data; - } -} - -function pageControl_status(data) { - $('#statusString').html(data.result); - $("#statusMessageTable").empty(); - - if (data.ok) { - $('#statusString').css("color", "green"); - $('#ebInlineMessage-iconHolder-icon').attr("class", "ebIcon ebIcon_big ebIcon_tick"); - } else { - $('#statusString').css("color", "red"); - $('#ebInlineMessage-iconHolder-icon').attr("class", "ebIcon ebIcon_big ebIcon_error"); - } -} - -function pageControl_restError(requestURL, jqXHR, textStatus, errorThrown) { - $('#statusString').html("REST_ERROR"); - $('#statusString').css("color", "red"); - $('#ebInlineMessage-iconHolder-icon').attr("class", "ebIcon ebIcon_big ebIcon_error"); - - $("#statusMessageTable").empty(); - $("#statusMessageTable").append( - "request \"" + requestURL + "\" returned \"" + textStatus + "\" " + jqXHR.status + " \"" - + errorThrown + "\""); - -} - -function pageControl_recursiveDisable(el, disableValue, visibleValue) { - try { - el.readOnly = disableValue; - el.style.visibility = (visibleValue ? "visible" : "hidden"); - } catch (E) { - } - - if (el.childNodes && el.childNodes.length > 0) { - for (var i = 0; i < el.childNodes.length; i++) { - recursiveDisable(el.childNodes[i], disableValue, visibleValue); - } - } -} - -function showPlaceholder(show) { - if (show) { - $(".placeholder").show(); - } else { - $(".placeholder").hide(); - } -} diff --git a/client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm.js b/client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm.js deleted file mode 100644 index 93c672cb6..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm.js +++ /dev/null @@ -1,802 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function editPolicyForm_createPolicy(formParent) { - editPolicyForm_editPolicy_inner(formParent, null, "CREATE"); -} - -function editPolicyForm_deletePolicy(parent, name, version) { - var message = "Are you sure you want to delete Policy \"" + name + ":" + version + "\"?"; - if (apexUtils_areYouSure(message)) { - var requestURL = restRootURL + "/Policy/Delete?name=" + name + "&version=" + version; - ajax_delete(requestURL, function(data) { - apexUtils_removeElement("editPolicyFormDiv"); - policyTab_reset(); - keyInformationTab_reset() - }); - } -} - -function editPolicyForm_viewPolicy(formParent, name, version) { - // get the policy - var requestURL = restRootURL + "/Policy/Get?name=" + name + "&version=" + version; - ajax_getWithKeyInfo(requestURL, "apexPolicy", function(policy) { - editPolicyForm_editPolicy_inner(formParent, policy, "VIEW"); - }, "policyKey"); -} - -function editPolicyForm_editPolicy(formParent, name, version) { - // get the policy - var requestURL = restRootURL + "/Policy/Get?name=" + name + "&version=" + version; - ajax_getWithKeyInfo(requestURL, "apexPolicy", function(policy) { - editPolicyForm_editPolicy_inner(formParent, policy, "EDIT"); - }, "policyKey"); -} - -function editPolicyForm_editPolicy_inner(formParent, policy, viewOrEdit) { - // Get all contextSchemas too - requestURL = restRootURL + "/ContextSchema/Get?name=&version="; - var contextSchemas = new Array(); - ajax_get(requestURL, function(data2) { - for (var i = 0; i < data2.messages.message.length; i++) { - var contextSchema = JSON.parse(data2.messages.message[i]).apexContextSchema; - contextSchemas.push({ - "name" : contextSchema.key.name, - "version" : contextSchema.key.version, - "displaytext" : contextSchema.key.name + ":" + contextSchema.key.version, - "contextSchema" : contextSchema - }); - } - // Get all tasks - requestURL = restRootURL + "/Task/Get?name=&version="; - var tasks = new Array(); - ajax_get(requestURL, function(data3) { - for (var j = 0; j < data3.messages.message.length; j++) { - var task = JSON.parse(data3.messages.message[j]).apexTask; - tasks.push({ - "name" : task.key.name, - "version" : task.key.version, - "displaytext" : task.key.name + ":" + task.key.version, - "task" : task - }); - } - // Get all ContextAlbums - requestURL = restRootURL + "/ContextAlbum/Get?name=&version="; - var albums = new Array(); - ajax_get(requestURL, function(data4) { - for (var k = 0; k < data4.messages.message.length; k++) { - var album = JSON.parse(data4.messages.message[k]).apexContextAlbum; - albums.push({ - "name" : album.key.name, - "version" : album.key.version, - "displaytext" : album.key.name + ":" + album.key.version, - "album" : album - }); - } - // Get all Events - requestURL = restRootURL + "/Event/Get?name=&version="; - var events = new Array(); - ajax_get(requestURL, function(data5) { - for (var m = 0; m < data5.messages.message.length; m++) { - var event = JSON.parse(data5.messages.message[m]).apexEvent; - events.push({ - "name" : event.key.name, - "version" : event.key.version, - "displaytext" : event.key.name + ":" + event.key.version, - "event" : event - }); - } - editPolicyForm_activate(formParent, viewOrEdit, policy, tasks, events, albums, contextSchemas); - }); - }); - }); - }); -} - -function editPolicyForm_activate(parent, operation, policy, tasks, events, contextAlbums, contextItemSchemas) { - apexUtils_removeElement("editPolicyFormDiv"); - var formParent = document.getElementById(parent); - apexUtils_emptyElement(parent); - - var isedit = false; - var createEditOrView = ""; - - if (!operation) { - console.warn("No operation specified for PolicyForm form") - } else { - createEditOrView = operation.toUpperCase(); - } - - if (createEditOrView == "CREATE") { - isedit = true; - } else if (createEditOrView == "EDIT" || createEditOrView == "VIEW") { - if (createEditOrView == "EDIT") { - isedit = true; - } - - if (!policy) { - console.warn("Invalid value (\"" + policy + "\") passed as a value for \"policy\" for PolicyForm form."); - } else { - if (!policy.policyKey || !policy.policyKey.name || policy.policyKey.name == "") { - console.warn("Invalid value (\"" + policy.policyKey.name - + "\") passed as a value for \"name\" for PolicyForm form."); - } - if (!policy.policyKey || !policy.policyKey.version || policy.policyKey.version == "") { - console.warn("Invalid value (\"" + policy.policyKey.version - + "\") passed as a value for \"version\" for PolicyForm form."); - } - if (!policy.uuid || policy.uuid == "") { - console.warn("Invalid value (\"" + policy.uuid - + "\") passed as a value for \"uuid\" for PolicyForm form."); - } - } - } else { - console.warn("Invalid operation (\"" + operation - + "\") specified for PolicyForm form. Only \"Create\", \"Edit\" and \"View\" operations are supported"); - } - - var contentelement = document.createElement("editPolicyFormDiv"); - var formDiv = document.createElement("div"); - contentelement.appendChild(formDiv); - formDiv.setAttribute("id", "editPolicyFormDiv"); - formDiv.setAttribute("class", "editPolicyFormDiv"); - - var headingSpan = document.createElement("h2"); - formDiv.appendChild(headingSpan); - headingSpan.innerHTML = "Policy Editor"; - - var form = document.createElement("editPolicyForm"); - formDiv.appendChild(form); - - form.setAttribute("id", "editPolicyForm"); - form.setAttribute("class", "form-style-1"); - form.setAttribute("method", "post"); - form.setAttribute("createEditOrView", createEditOrView); - - var formul = document.createElement("ul"); - form.appendChild(formul); - - // name - var nameLI = document.createElement("li"); - formul.appendChild(nameLI); - var nameLabel = document.createElement("label"); - nameLI.appendChild(nameLabel); - nameLabel.setAttribute("for", "editPolicyFormNameInput"); - nameLabel.innerHTML = "Name: "; - var nameLabelSpan = document.createElement("span"); - nameLabel.appendChild(nameLabelSpan); - nameLabelSpan.setAttribute("class", "required"); - nameLabelSpan.innerHTML = "*"; - var nameInput = document.createElement("input"); - nameLI.appendChild(nameInput); - nameInput.setAttribute("id", "editPolicyFormNameInput"); - nameInput.setAttribute("type", "text"); - nameInput.setAttribute("name", "editPolicyFormNameInput"); - nameInput.setAttribute("class", "field ebInput"); - nameInput.setAttribute("placeholder", "name"); - if (policy != null && policy.policyKey != null && policy.policyKey.name != null) { - nameInput.value = policy.policyKey.name; - } - if (createEditOrView != "CREATE") { - nameInput.readOnly = true; - } - - // version - var versionLI = document.createElement("li"); - formul.appendChild(versionLI); - var versionLabel = document.createElement("label"); - versionLI.appendChild(versionLabel); - versionLabel.setAttribute("for", "editPolicyFormVersionInput"); - versionLabel.innerHTML = "Version: "; - var versionInput = document.createElement("input"); - versionLI.appendChild(versionInput); - versionInput.setAttribute("id", "editPolicyFormVersionInput"); - versionInput.setAttribute("type", "text"); - versionInput.setAttribute("name", "editPolicyFormVersionInput"); - versionInput.setAttribute("class", "field ebInput"); - versionInput.setAttribute("placeholder", "0.0.1"); - if (policy != null && policy.policyKey != null && policy.policyKey.version != null) { - versionInput.value = policy.policyKey.version; - } - if (createEditOrView != "CREATE") { - versionInput.readOnly = true; - } - - // uuid - var uuidLI = document.createElement("li"); - formul.appendChild(uuidLI); - var uuidLabel = document.createElement("label"); - uuidLI.appendChild(uuidLabel); - uuidLabel.setAttribute("for", "editPolicyFormUuidInput"); - uuidLabel.innerHTML = "UUID: "; - var uuidInput = document.createElement("input"); - uuidLI.appendChild(uuidInput); - uuidInput.setAttribute("id", "editPolicyFormUuidInput"); - uuidInput.setAttribute("type", "text"); - uuidInput.setAttribute("name", "editPolicyFormUuidInput"); - uuidInput.setAttribute("class", "field-long ebInput ebInput_width_full"); - uuidInput.setAttribute("placeholder", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"); - if (policy != null && policy.uuid != null) { - uuidInput.value = policy.uuid; - } - if (createEditOrView != "CREATE") { - uuidInput.readOnly = true; - } - - var edit_disabled = (createEditOrView != "CREATE" && createEditOrView != "EDIT"); - - // description - var descriptionLI = document.createElement("li"); - formul.appendChild(descriptionLI); - var descriptionLabel = document.createElement("label"); - descriptionLI.appendChild(descriptionLabel); - descriptionLabel.setAttribute("for", "editPolicyFormDescriptionTextArea"); - descriptionLabel.innerHTML = "Description: "; - var descriptionTextArea = document.createElement("textarea"); - descriptionLI.appendChild(descriptionTextArea); - descriptionTextArea.setAttribute("id", "editPolicyFormDescriptionTextArea"); - descriptionTextArea.setAttribute("name", "editPolicyFormDescriptionTextArea"); - descriptionTextArea.setAttribute("class", "field-long ebTextArea ebTextArea_width_full"); - if (policy != null && policy.description != null) { - descriptionTextArea.value = policy.description; - } - descriptionTextArea.readOnly = edit_disabled; - - // template type - var templateTypeLI = document.createElement("li"); - formul.appendChild(templateTypeLI); - var templateTypeLabel = document.createElement("label"); - templateTypeLI.appendChild(templateTypeLabel); - templateTypeLabel.setAttribute("for", "editEventFormTemplateTypeInput"); - templateTypeLabel.innerHTML = "Policy Type / Flavour: "; - var templateTypeInput = document.createElement("input"); - templateTypeLI.appendChild(templateTypeInput); - templateTypeInput.setAttribute("id", "editEventFormTemplateTypeInput"); - templateTypeInput.setAttribute("type", "text"); - templateTypeInput.setAttribute("name", "editEventFormTemplateTypeInput"); - templateTypeInput.setAttribute("class", "field-policyTemplateType ebInput"); - templateTypeInput.setAttribute("placeholder", "FREEFORM"); - if (policy != null && policy.template != null) { - templateTypeInput.value = policy.template; - } else { - templateTypeInput.value = "FREEFORM"; - } - if (createEditOrView != "CREATE" && createEditOrView != "EDIT") { - templateTypeInput.readOnly = true; - } - - // first state - var firstStateLI = document.createElement("li"); - formul.appendChild(firstStateLI); - var firstStateLabel = document.createElement("label"); - firstStateLI.appendChild(firstStateLabel); - firstStateLabel.setAttribute("for", "editEventFormSelectFirstState_dropdownList"); - firstStateLabel.innerHTML = "First State: "; - var firststateoptions = new Array(); - var firststateselected = null; - if (policy != null && policy.state != null) { - for (i = 0; i < policy.state.entry.length; i++) { - if (policy.state.entry[i] != null && policy.state.entry[i].key != null) { - var statename = policy.state.entry[i].key; - firststateoptions.push({ - "name" : statename, - "displaytext" : statename - }); - } - } - } - if (policy != null && policy.firstState != null && policy.firstState != "") { - firststateselected = { - "name" : policy.firstState, - "displaytext" : policy.firstState - } - } - var firstStateSelectDiv = dropdownList("editEventFormSelectFirstState", firststateoptions, firststateselected, - (createEditOrView != "CREATE" && createEditOrView != "EDIT"), function() { - return editPolicyForm_updateTriggerEventOptions(events); - }, function() { - return editPolicyForm_getStateOptions(); - }); - firstStateLI.appendChild(firstStateSelectDiv); - - // Trigger event - var triggerLI = document.createElement("li"); - formul.appendChild(triggerLI); - var triggerLabel = document.createElement("label"); - triggerLI.appendChild(triggerLabel); - triggerLabel.setAttribute("for", "editEventFormSelectTrigger_dropdownList"); - triggerLabel.innerHTML = "Policy Trigger Event: "; - var triggerevent = null; - if (policy != null && policy.firstState != null && policy.firstState != "" && policy.state != null) { - for (i = 0; i < policy.state.entry.length; i++) { - if (policy.state.entry[i] != null && policy.state.entry[i].key != null) { - var statename = policy.state.entry[i].key; - var state = policy.state.entry[i].value; - if (statename != null && statename == policy.firstState) { - triggerevent = { - "name" : state.trigger.name, - "version" : state.trigger.version, - "displaytext" : state.trigger.name + ":" + state.trigger.version - }; - } - } - } - } - // var triggerSelectDiv = dropdownList("editEventFormSelectTrigger", events, - // triggerevent, true, null); // ewatkmi: replaced dropdown with label - var triggerSelectDiv = document.createElement("label"); - triggerSelectDiv.setAttribute("class", "policy-trigger-event"); - triggerSelectDiv.setAttribute("id", "editEventFormSelectTrigger_dropdownList"); - triggerSelectDiv.innerHTML = triggerevent ? triggerevent.displaytext : "No Event Selected"; - triggerLI.appendChild(triggerSelectDiv); - var triggerPeriodicEventCheckbox = document.createElement("input"); - triggerPeriodicEventCheckbox.setAttribute("type", "checkbox"); - triggerPeriodicEventCheckbox.setAttribute("id", "periodicEventsCheckbox"); - triggerPeriodicEventCheckbox.setAttribute("class", "field-checkbox-center periodic-events-checkbox"); - triggerPeriodicEventCheckbox.disabled = createEditOrView != "EDIT"; - triggerPeriodicEventCheckbox.onclick = function() { - var firstState = document.getElementById("editEventFormSelectFirstState_dropdownList_display").innerHTML; - var firstStateDropdown = document.getElementById("editPolicyFormTrigger_" + firstState + "_dropdownList"); - if ($(triggerPeriodicEventCheckbox).is(":checked")) { - var periodicEvent = undefined; - var tmpEvents = $.merge([], events); - for ( var e in events) { - if (events[e].name.indexOf("PeriodicEvent") !== -1) { - periodicEvent = events[e]; - break; - } - } - if (!periodicEvent) { - periodicEvent = { - name : "PeriodicEvent", - version : "0.0.1", - displaytext : "PeriodicEvent:0.0.1", - event : { - description : "", - key : { - name : "PeriodicEvent", - version : "0.0.1" - }, - nameSpace : "org.onap.policy.apex.domains.aadm.events", - parameter : { - entry : [ { - key : "PERIODIC_EVENT_COUNT", - value : { - key : "PERIODIC_EVENT_COUNT", - optional : false, - fieldSchemaKey : { - name : "PeriodicEventCount", - version : "0.0.1" - } - } - } ] - }, - source : "System", - target : "Apex", - uuid : "44236da1-3d47-4988-8033-b6fee9d6a0f4" - }, - }; - tmpEvents.push(periodicEvent); - } - - dropdownList_ChangeOptions(firstStateDropdown, tmpEvents, periodicEvent, false); - editPolicyForm_updateTriggerEventOptions(tmpEvents); - } else { - dropdownList_ChangeOptions(firstStateDropdown, events, events[0], false); - editPolicyForm_updateTriggerEventOptions(events); - } - } - - triggerLI.appendChild(triggerPeriodicEventCheckbox); - - triggerPeriodicEventLabel = document.createElement("label"); - triggerPeriodicEventLabel.setAttribute("class", "periodic-events-label"); - triggerPeriodicEventLabel.innerHTML = "is Periodic Event"; - triggerLI.appendChild(triggerPeriodicEventLabel); - - // states - var statesLI = document.createElement("li"); - formul.appendChild(statesLI); - var statesLabel = document.createElement("label"); - statesLI.appendChild(statesLabel); - statesLabel.setAttribute("for", "editEventFormStates"); - statesLabel.innerHTML = "States: "; - var statesUL = document.createElement("ul"); - statesUL.setAttribute("id", "editEventFormStates"); - statesLI.appendChild(statesUL); - if (policy && policy.state) { - var states = policy.state.entry; - for ( var s in states) { - var state = states[s]; - if (state.key == policy.firstState) { - states.splice(s, 1); - states.unshift(state); - break; - } - } - for (i = 0; i < policy.state.entry.length; i++) { - stateEntry = policy.state.entry[i]; - var statename = stateEntry.key; - var state = stateEntry.value; - var stateLI = editPolicyForm_addState(statename, state, createEditOrView, policy, tasks, events, - contextAlbums, contextItemSchemas); - statesUL.appendChild(stateLI); - } - } - - // add new state - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - var newStateLI = document.createElement("li"); - statesUL.appendChild(newStateLI); - var newStateLabel = document.createElement("label"); - newStateLI.appendChild(newStateLabel); - newStateLabel.setAttribute("for", "editPolicyFormStateDiv_"); - newStateLabel.innerHTML = "Add a new State: "; - var newStDiv = document.createElement("div"); - newStateLI.appendChild(newStDiv); - newStDiv.setAttribute("id", "editPolicyFormStateDiv_"); - newStDiv.setAttribute("class", "editPolicyFormStateDiv"); - var newStateInput = document.createElement("input"); - newStDiv.appendChild(newStateInput); - newStateInput.setAttribute("id", "editEventFormNewStateInput"); - newStateInput.setAttribute("type", "text"); - newStateInput.setAttribute("name", "editEventFormTemplateTypeInput"); - newStateInput.setAttribute("class", "field-policyTemplateType ebInput ebInput_width_xLong"); - newStateInput.setAttribute("placeholder", "Name for new State ... "); - var addState = document.createElement("button"); - newStDiv.appendChild(addState); - addState.setAttribute("id", "addStateButton"); - addState.setAttribute("class", "ebBtn"); - addState.setAttribute("type", "submit"); - addState.setAttribute("value", "Add a new State"); - addState.style["margin-left"] = "10px"; - addState.onclick = function() { - return editPolicyForm_addNewState(statesUL, createEditOrView, policy, tasks, events, contextAlbums, - contextItemSchemas); - }; - addState.innerHTML = addState.getAttribute("value"); - } - - // buttons - var inputLI = document.createElement("li"); - formul.appendChild(inputLI); - if (createEditOrView == "CREATE") { - var generateUUIDInput = document.createElement("button"); - inputLI.appendChild(generateUUIDInput); - generateUUIDInput.setAttribute("id", "generateUUID"); - generateUUIDInput.setAttribute("class", "ebBtn ebBtn_large"); - generateUUIDInput.setAttribute("type", "submit"); - generateUUIDInput.setAttribute("value", "Generate UUID"); - generateUUIDInput.onclick = editPolicyForm_generateUUIDPressed; - generateUUIDInput.innerHTML = generateUUIDInput.getAttribute("value"); - - var inputSpan0 = document.createElement("span"); - inputLI.appendChild(inputSpan0); - inputSpan0.setAttribute("class", "required"); - inputSpan0.innerHTML = " "; - - var generateDescriptionInput = document.createElement("button"); - inputLI.appendChild(generateDescriptionInput); - generateDescriptionInput.setAttribute("id", "generateDescription"); - generateDescriptionInput.setAttribute("class", "ebBtn ebBtn_large"); - generateDescriptionInput.setAttribute("type", "submit"); - generateDescriptionInput.setAttribute("value", "Generate Description"); - generateDescriptionInput.onclick = editPolicyForm_generateDescriptionPressed; - generateDescriptionInput.innerHTML = generateDescriptionInput.getAttribute("value"); - - var inputSpan1 = document.createElement("span"); - inputLI.appendChild(inputSpan1); - inputSpan1.setAttribute("class", "required"); - inputSpan1.innerHTML = " "; - } - - var cancelInput = document.createElement("button"); - inputLI.appendChild(cancelInput); - cancelInput.setAttribute("id", "cancel"); - cancelInput.setAttribute("class", "ebBtn ebBtn_large"); - cancelInput.setAttribute("type", "submit"); - cancelInput.setAttribute("value", "Cancel"); - cancelInput.onclick = editPolicyForm_cancelPressed; - cancelInput.innerHTML = cancelInput.getAttribute("value"); - - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - var inputSpan2 = document.createElement("span"); - inputLI.appendChild(inputSpan2); - inputSpan2.setAttribute("class", "required"); - inputSpan2.innerHTML = " "; - var submitInput = document.createElement("button"); - inputLI.appendChild(submitInput); - submitInput.setAttribute("id", "submit"); - submitInput.setAttribute("class", "ebBtn ebBtn_large"); - submitInput.setAttribute("type", "submit"); - submitInput.setAttribute("value", "Submit"); - submitInput.onclick = editPolicyForm_submitPressed; - submitInput.innerHTML = submitInput.getAttribute("value"); - } - - formParent.appendChild(contentelement); - scrollToTop(); -} - -function editPolicyForm_addNewState(statesUL, createEditOrView, policy, tasks, events, contextAlbums, - contextItemSchemas) { - var statename = document.getElementById("editEventFormNewStateInput").value; - if (statename == null || statename == "") { - alert("Please enter a value for the name of the new state\"" + paramname + "\""); - document.getElementById("editEventFormNewStateInput").focus(); - return false; - } else if (statename.toUpperCase() == "NULL" || statename.toUpperCase() == "NONE") { - alert("Please enter a valid value for the name of the new state\"" + paramname - + "\". Values \"NULL\" and \"None\" are not allowed"); - document.getElementById("editEventFormNewStateInput").focus(); - return false; - } else { - document.getElementById("editEventFormNewStateInput").value = ""; - } - if (policy && policy.state) { - for (i = 0; i < policy.state.entry.length; i++) { - if (statename.toUpperCase() == policy.state.entry[i].key.toUpperCase()) { - alert("Policy " + policy.policyKey.name + ":" + policy.policyKey.version - + " already contains a state called \"" + statename + "\"."); - document.getElementById("editEventFormNewStateInput").focus(); - return false; - } - } - } - var stateLI = editPolicyForm_addState(statename, null, createEditOrView, policy, tasks, events, contextAlbums, - contextItemSchemas); - statesUL.insertBefore(stateLI, statesUL.lastElementChild); - editPolicyForm_updateTriggerEventOptions(events); -} - -function editPolicyForm_getStateOptions() { - var stateoptions = new Array(); - var stateslis = document.getElementById("editEventFormStates").querySelectorAll( - "#editEventFormStates > li[stateName]"); // get li direct child - // elements with an - // attribute "stateName" - for (var i = 0; i < stateslis.length; i++) { - if (stateslis != null && stateslis[i] != null && stateslis[i].getAttribute("stateName") != null) { - stateoptions.push({ - "name" : stateslis[i].getAttribute("stateName"), - "displaytext" : stateslis[i].getAttribute("stateName") - }); - } - } - return stateoptions; -} - -function editPolicyForm_getNextStateOptions() { - var stateoptions = editPolicyForm_getStateOptions(); - stateoptions.push({ - "name" : "NULL", - "displaytext" : "None" - }); - return stateoptions; -} - -function editPolicyForm_updateTriggerEventOptions(events) { - var stateevent = null; - var triggerSelectDiv = document.getElementById("editEventFormSelectTrigger_dropdownList"); - var firstStateSelectDiv = document.getElementById("editEventFormSelectFirstState_dropdownList"); - var firststate = firstStateSelectDiv.selectedOption; - var createEditOrView = document.getElementById("editPolicyForm").getAttribute("createEditOrView"); - if (firststate != null && firststate.name != null) { - var statename = firststate.name; - var stateeventselect = document.getElementById("editPolicyFormTrigger_" + statename + "_dropdownList"); - if (stateeventselect != null && stateeventselect.selectedOption) { - stateevent = stateeventselect.selectedOption; - } - if (createEditOrView == "CREATE") { - var periodicCheckbox = document.getElementById("periodicEventsCheckbox"); - if (periodicCheckbox.hasAttribute("disabled")) { - periodicCheckbox.removeAttribute("disabled"); - } - } - } else { - var triggerSelectDiv = document.getElementById("editEventFormSelectTrigger_dropdownList"); - triggerSelectDiv.innerHTML = "No Event Selected"; - var periodicEventsCheckbox = $("#periodicEventsCheckbox"); - if (periodicEventsCheckbox.is(":checked")) { - periodicEventsCheckbox.attr("checked", false); - } - if (createEditOrView == "CREATE") { - var periodicCheckbox = document.getElementById("periodicEventsCheckbox"); - if (!periodicCheckbox.hasAttribute("disabled")) { - periodicCheckbox.disabled = true; - } - } - } - if (stateevent) { - triggerSelectDiv.innerHTML = stateevent.displaytext; - if (stateevent.displaytext.indexOf("PeriodicEvent") == -1) { - var periodicEventsCheckbox = $("#periodicEventsCheckbox"); - if (periodicEventsCheckbox.is(":checked")) { - periodicEventsCheckbox.attr("checked", false); - } - } - } -} - -function editPolicyForm_addState(statename, state, createEditOrView, policy, tasks, events, contextAlbums, - contextItemSchemas) { - var stateLI = document.createElement("li"); - stateLI.setAttribute("stateName", statename); - var deleteDiv = document.createElement("div"); - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete"); - deleteDiv.onclick = function(event) { - $(stateLI) - .hide( - "fast", - function() { - stateLI.parentNode.removeChild(stateLI); - var firstState = document - .getElementById("editEventFormSelectFirstState_dropdownList_display").innerHTML; - var selected = (statename !== firstState) ? { - name : firstState, - displaytext : firstState - } : undefined; - dropdownList_ChangeOptions(document - .getElementById("editEventFormSelectFirstState_dropdownList"), - editPolicyForm_getStateOptions(), selected, false, - editPolicyForm_getStateOptions); - editPolicyForm_updateTriggerEventOptions(); - }); - } - } else { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled"); - } - deleteDiv.style["vertical-align"] = "baseline"; - stateLI.appendChild(deleteDiv); - var stateLabel = document.createElement("label"); - stateLabel.style.display = "inline-block"; - stateLabel.style["min-width"] = "120px"; - stateLabel.style["padding-left"] = "10px"; - stateLabel.style["vertical-align"] = "middle"; - stateLabel.innerHTML = statename; - stateLI.appendChild(stateLabel); - var stateDiv = editPolicyForm_State_generateStateDiv(createEditOrView, policy, statename, state, tasks, events, - contextAlbums, contextItemSchemas); - var showhideDIV = showHideElement("editEventFormStates_" + statename, stateDiv, true, "Show " + statename + " ...", - "Hide " + statename + " ...", "showhide_div_show", "showhide_div_hide", "showhide_button_show", - "showhide_button_hide"); - showhideDIV.style.display = "inline-block"; - showhideDIV.style["vertical-align"] = "middle"; - stateLabel.setAttribute("for", stateDiv.id); - stateLI.appendChild(showhideDIV); - stateLI.appendChild(stateDiv); - return stateLI; -} - -function editPolicyForm_generateUUIDPressed() { - document.getElementById("editPolicyFormUuidInput").value = formUtils_generateUUID(); -} - -function editPolicyForm_generateDescriptionPressed() { - document.getElementById("editPolicyFormDescriptionTextArea").value = formUtils_generateDescription(document - .getElementById("editPolicyFormNameInput").value, - document.getElementById("editPolicyFormVersionInput").value, document - .getElementById("editPolicyFormUuidInput").value); -} - -function editPolicyForm_cancelPressed() { - apexUtils_removeElement("editPolicyFormDiv"); - policyTab_reset(); -} - -function editPolicyForm_submitPressed() { - var createEditOrView = document.getElementById("editPolicyForm").getAttribute("createEditOrView"); - if (!createEditOrView || createEditOrView == "" || (createEditOrView != "CREATE" && createEditOrView != "EDIT")) { - console.error("Invalid operation \"" + createEditOrView - + "\" passed to editPolicyForm_submitPressed function. Edit failed"); - apexUtils_removeElement("editPolicyFormDiv"); - policyTab_reset(); - return; - } - - var policybean = editPolicyForm_getPolicyBean(); - if (policybean == null) { - return false; - } - var jsonString = JSON.stringify(policybean); - - if (createEditOrView == "CREATE") { - var requestURL = restRootURL + "/Policy/Create"; - ajax_post(requestURL, jsonString, function(resultData) { - apexUtils_removeElement("editPolicyFormDiv"); - policyTab_reset(); - keyInformationTab_reset(); - }); - } else if (createEditOrView == "EDIT") { - var firstStatePeriodic = $("#periodicEventsCheckbox").is(":checked") - var requestURL = restRootURL + "/Policy/Update?firstStatePeriodic=" + firstStatePeriodic; - ajax_put(requestURL, jsonString, function(resultData) { - apexUtils_removeElement("editPolicyFormDiv"); - policyTab_reset(); - keyInformationTab_reset(); - }); - } - -} - -function editPolicyForm_getPolicyBean() { - - var name = document.getElementById('editPolicyFormNameInput').value; - if (name == null || name == "") { - console.error("No Name is specified for the policy"); - alert("No Name is specified for the policy"); - return null; - } - var version = document.getElementById('editPolicyFormVersionInput').value; - if (version == null || version == "") { - console.error("No Version is specified for the policy"); - alert("No Version is specified for the policy"); - return null; - } - var uuid = document.getElementById('editPolicyFormUuidInput').value; - if (uuid == null || uuid == "") { - console.error("No UUID is specified for the policy"); - alert("No UUID is specified for the policy"); - return null; - } - var desc = document.getElementById('editPolicyFormDescriptionTextArea').value; - if (desc == null) { - desc = ""; - } - var template = document.getElementById('editEventFormTemplateTypeInput').value; - if (template == null) { - template = ""; - } - var firststateselectedoption = document.getElementById("editEventFormSelectFirstState" + "_dropdownList").selectedOption; - if (firststateselectedoption == null) { - console.error("Please select an option for First State"); - alert("Please select an option for First State"); - return null; - } - var states = new Object(); - var stateslis = document.getElementById("editEventFormStates").querySelectorAll( - "#editEventFormStates > li[stateName]"); // get li direct child - // elements with an - // attribute "stateName" - for (var i = 0; i < stateslis.length; i++) { // ignore last li ... it has - // the new state button etc. - if (stateslis != null && stateslis[i] != null && stateslis[i].getAttribute("stateName") != null) { - var statename = stateslis[i].getAttribute("stateName"); - var state = editPolicyForm_State_getStateBean(statename); - if (state == null) { - return null; - } - states[statename] = state; - } - } - - var policybean = { - "name" : name, - "version" : version, - "uuid" : uuid, - "description" : desc, - "template" : template, - "firstState" : firststateselectedoption.name, - "states" : states - }; - return policybean; -} diff --git a/client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm_State.js b/client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm_State.js deleted file mode 100644 index 968d2da9a..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexPolicyEditForm_State.js +++ /dev/null @@ -1,1128 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function editPolicyForm_State_generateStateDiv(createEditOrView, policy, statename, state, tasks, events, - contextAlbums, contextItemSchemas) { - var retDiv = document.createElement("div"); - retDiv.setAttribute("id", "editPolicyFormStateDiv_" + statename); - retDiv.setAttribute("class", "editPolicyFormStateDiv"); - var divUL = document.createElement("ul"); - retDiv.appendChild(divUL); - - // input event - var triggerLI = document.createElement("li"); - divUL.appendChild(triggerLI); - var triggerLabel = document.createElement("label"); - triggerLI.appendChild(triggerLabel); - triggerLabel.setAttribute("for", "editPolicyFormTrigger" + "_" + statename); - triggerLabel.innerHTML = "Input Event for State: "; - var eventselected = null; - if (state != null && state.trigger != null) { - eventselected = { - "name" : state.trigger.name, - "version" : state.trigger.version, - "displaytext" : state.trigger.name + ":" + state.trigger.version - }; - } - var ineventSelectDiv = dropdownList("editPolicyFormTrigger" + "_" + statename, events, eventselected, - (createEditOrView == "VIEW"), function() { - return editPolicyForm_updateTriggerEventOptions(events) - }); - triggerLI.appendChild(ineventSelectDiv); - - // Context Albums references - var contextsLI = document.createElement("li"); - divUL.appendChild(contextsLI); - var contextsLabel = document.createElement("label"); - contextsLI.appendChild(contextsLabel); - contextsLabel.setAttribute("for", "editPolicyFormContextsTable" + "_" + statename); - contextsLabel.innerHTML = "Context Albums used in Task Selection Logic / State Output Logic: "; - var contextstable = document.createElement("table"); - contextstable.setAttribute("id", "editPolicyFormContextsTable" + "_" + statename); - contextstable.setAttribute("name", "editPolicyFormContextsTable" + "_" + statename); - contextstable.setAttribute("class", "table-policycontext"); - contextsLI.appendChild(contextstable); - // var contextstable_head = document.createElement("thead"); - // contextstable.appendChild(contextstable_head); - // var contextstable_head_tr = document.createElement("tr"); - // contextstable_head.appendChild(contextstable_head_tr); - // contextstable_head_tr.appendChild(document.createElement("th")); //empty, - // for delete button - // var contextstable_head_th = document.createElement("th"); - // contextstable_head_tr.appendChild(contextstable_head_th); - // contextstable_head_th.innerHTML = "Context Album: "; - // contextstable_head_th.setAttribute("class", - // "table-policycontext-heading"); - var contextstable_body = document.createElement("tbody"); - contextstable.appendChild(contextstable_body); - // Add the contexts - if (state && state.contextAlbumReference && $.isArray(state.contextAlbumReference)) { - for (var p = 0; p < state.contextAlbumReference.length; p++) { - var contextEntry = state.contextAlbumReference[p]; - var contextName = contextEntry.name + ":" + contextEntry.version; - var ce = { - "name" : contextEntry.name, - "version" : contextEntry.version, - "displaytext" : contextName - }; - editPolicyForm_State_addPolicyContext(contextstable_body, (createEditOrView == "VIEW"), statename, - contextName, ce, contextAlbums); - } - } - // add the Policy Context button - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - var contextTR = document.createElement("tr"); - contextTR.setAttribute("class", "field-policycontext-tr.new"); - contextstable_body.appendChild(contextTR); - - var contextTD = document.createElement("td"); - contextTD.setAttribute("colspan", "2"); - contextTR.appendChild(contextTD); - var addContextInput = createAddFormButton("Add New Policy Logic Context"); - contextTD.appendChild(addContextInput); - // addContextInput.setAttribute("id", "addContextButton"); - // addContextInput.setAttribute("class", "ebBtn ebBtn_large"); - // addContextInput.setAttribute("type", "submit"); - // addContextInput.setAttribute("value", "Add New Policy Logic - // Context"); - // addContextInput.innerHTML = addContextInput.getAttribute("value"); - addContextInput.onclick = function() { - return editPolicyForm_State_addPolicyContext(contextstable_body, false, statename, null, null, - contextAlbums); - }; - } - - // Task references - var tasksLI = document.createElement("li"); - divUL.appendChild(tasksLI); - var tasksLabel = document.createElement("label"); - tasksLI.appendChild(tasksLabel); - tasksLabel.setAttribute("for", "editPolicyFormTasksTable" + "_" + statename); - tasksLabel.innerHTML = "State Tasks:"; - var taskstable = document.createElement("table"); - taskstable.setAttribute("id", "editPolicyFormTasksTable" + "_" + statename); - taskstable.setAttribute("name", "editPolicyFormTasksTable" + "_" + statename); - taskstable.setAttribute("class", "table-policytask"); - tasksLI.appendChild(taskstable); - var taskstable_head = document.createElement("thead"); - taskstable.appendChild(taskstable_head); - var taskstable_head_tr = document.createElement("tr"); - taskstable_head.appendChild(taskstable_head_tr); - taskstable_head_tr.appendChild(document.createElement("th")); // empty, - // for - // delete - // button - var taskstable_isdefault_head_th = document.createElement("th"); - taskstable_head_tr.appendChild(taskstable_isdefault_head_th); - taskstable_isdefault_head_th.innerHTML = "Default Task? "; - taskstable_isdefault_head_th.setAttribute("class", "table-policytask-heading form-heading"); - var taskstable_localname_head_th = document.createElement("th"); - taskstable_head_tr.appendChild(taskstable_localname_head_th); - taskstable_localname_head_th.innerHTML = "Local Name for Task: "; - taskstable_localname_head_th.setAttribute("class", "table-policytask-heading form-heading"); - var taskstable_head_th = document.createElement("th"); - taskstable_head_tr.appendChild(taskstable_head_th); - taskstable_head_th.innerHTML = "Task: "; - taskstable_head_th.setAttribute("class", "table-policytask-heading form-heading"); - var taskstable_outputtype_head_th = document.createElement("th"); - taskstable_head_tr.appendChild(taskstable_outputtype_head_th); - taskstable_outputtype_head_th.innerHTML = "Output Mapping type: "; - taskstable_outputtype_head_th.setAttribute("class", "table-policytask-heading form-heading"); - taskstable_outputtype_head_th.setAttribute("colspan", "2"); - var taskstable_outputsel_head_th = document.createElement("th"); - taskstable_head_tr.appendChild(taskstable_outputsel_head_th); - taskstable_outputsel_head_th.innerHTML = "Output Mapping: "; - taskstable_outputsel_head_th.setAttribute("class", "table-policytask-heading form-heading"); - var taskstable_body = document.createElement("tbody"); - taskstable.appendChild(taskstable_body); - var defaulttask = null; - if (state && state.defaultTask && state.defaultTask.name && state.defaultTask.version) { - defaulttask = state.defaultTask.name + ":" + state.defaultTask.version; - } - // Add the tasks - if (state && state.taskReferences && $.isArray(state.taskReferences.entry)) { - for (var p = 0; p < state.taskReferences.entry.length; p++) { - var taskEntry = state.taskReferences.entry[p]; - var taskName = taskEntry.key.name + ":" + taskEntry.key.version; - var taskselected = { - "name" : taskEntry.key.name, - "version" : taskEntry.key.version, - "displaytext" : taskName - }; - var taskreference = taskEntry.value; - editPolicyForm_State_addPolicyTask(taskstable_body, (createEditOrView == "VIEW"), - (defaulttask == taskName), state, statename, taskreference, taskselected, tasks); - } - } - // add the Policy Task button - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - var taskTR = document.createElement("tr"); - taskTR.setAttribute("class", "field-policytask-tr.new"); - taskstable_body.appendChild(taskTR); - var taskTD = document.createElement("td"); - taskTD.setAttribute("colspan", "4"); - taskTR.appendChild(taskTD); - var addTaskInput = createAddFormButton("Add New Task"); - taskTD.appendChild(addTaskInput); - // addTaskInput.setAttribute("id", "addTaskButton"); - // addTaskInput.setAttribute("class", "ebBtn ebBtn_large"); - // addTaskInput.setAttribute("type", "submit"); - // addTaskInput.setAttribute("value", "Add New Task"); - // addTaskInput.innerHTML = addTaskInput.getAttribute("value"); - addTaskInput.onclick = function() { - return editPolicyForm_State_addPolicyTask(taskstable_body, false, false, state, statename, null, null, - tasks); - }; - } - - // tasksellogic - var tasksellogicLI = document.createElement("li"); - divUL.appendChild(tasksellogicLI); - var tasksellogicLabel = document.createElement("label"); - tasksellogicLI.appendChild(tasksellogicLabel); - tasksellogicLabel.setAttribute("for", "editEventFormTaskSelLogicDiv" + "_" + statename); - tasksellogicLabel.innerHTML = "Task Selection Logic: "; - var tasksellogicdiv = document.createElement("div"); - tasksellogicdiv.setAttribute("id", "editEventFormTaskSelLogicDiv" + "_" + statename); - - var logic = ""; - if (state && state.taskSelectionLogic && state.taskSelectionLogic.logic && state.taskSelectionLogic.logic != "") { - logic = state.taskSelectionLogic.logic; - } - var edit_disabled = false; - if (createEditOrView != "CREATE" && createEditOrView != "EDIT") { - edit_disabled = true; - } - var textarea = showHideTextarea("editEventFormTaskSelLogicInput" + "_" + statename, logic, false, !edit_disabled, - false); - - tasksellogicLI.appendChild(textarea); - - // tasksellogic type - var tasksellogicTypeLabel = document.createElement("label"); - tasksellogicdiv.appendChild(tasksellogicTypeLabel); - tasksellogicTypeLabel.setAttribute("for", "editPolicyFormTaskSelLogicTypeInput" + "_" + statename); - tasksellogicTypeLabel.innerHTML = "Task Selection Logic Type / Flavour: "; - var tasksellogicTypeInput = document.createElement("input"); - tasksellogicdiv.appendChild(tasksellogicTypeInput); - tasksellogicTypeInput.setAttribute("id", "editPolicyFormTaskSelLogicTypeInput" + "_" + statename); - tasksellogicTypeInput.setAttribute("type", "text"); - tasksellogicTypeInput.setAttribute("name", "editPolicyFormTaskSelLogicTypeInput" + "_" + statename); - tasksellogicTypeInput.setAttribute("class", "field-taskSelLogicType ebInput ebInput_width_xLong"); - tasksellogicTypeInput.setAttribute("placeholder", "MVEL"); - if (state && state.taskSelectionLogic && state.taskSelectionLogic.logicFlavour != null - && state.taskSelectionLogic.logicFlavour != "" - && state.taskSelectionLogic.logicFlavour.toUpperCase() != "UNDEFINED") { - tasksellogicTypeInput.value = state.taskSelectionLogic.logicFlavour; - } - tasksellogicTypeInput.readOnly = (createEditOrView != "CREATE" && createEditOrView != "EDIT"); - - divUL.appendChild(tasksellogicdiv); - - // Output mappings - var outputsLI = document.createElement("li"); - divUL.appendChild(outputsLI); - var outputsLabel = document.createElement("label"); - outputsLI.appendChild(outputsLabel); - outputsLabel.innerHTML = "State Output Mappings: "; - outputsLabel.setAttribute("for", "editPolicyFormOutputsUL" + "_" + statename); - var outsUL = document.createElement("ul"); - outsUL.setAttribute("id", "editPolicyFormOutputsUL" + "_" + statename); - outputsLI.appendChild(outsUL); - // Direct Output Mappings - var dir_outputsLI = document.createElement("li"); - outsUL.appendChild(dir_outputsLI); - var dir_outputsLabel = document.createElement("label"); - dir_outputsLI.appendChild(dir_outputsLabel); - dir_outputsLI.innerHTML = "Direct State Output Mappings: "; - dir_outputsLabel.setAttribute("for", "editPolicyFormDirOutputsTable" + "_" + statename); - var dir_outputstable = document.createElement("table"); - dir_outputstable.setAttribute("id", "editPolicyFormDirOutputsTable" + "_" + statename); - dir_outputstable.setAttribute("name", "editPolicyFormDirOutputsTable" + "_" + statename); - dir_outputstable.setAttribute("class", "table-policyoutput"); - dir_outputsLI.appendChild(dir_outputstable); - var dir_outputstable_head = document.createElement("thead"); - dir_outputstable.appendChild(dir_outputstable_head); - var dir_outputstable_head_tr = document.createElement("tr"); - dir_outputstable_head.appendChild(dir_outputstable_head_tr); - dir_outputstable_head_tr.appendChild(document.createElement("th")); // empty, - // for - // delete - // button - var dir_outputstable_name_head_th = document.createElement("th"); - dir_outputstable_head_tr.appendChild(dir_outputstable_name_head_th); - dir_outputstable_name_head_th.innerHTML = "Local Name for Output Mapping: "; - dir_outputstable_name_head_th.setAttribute("class", "table-policyoutput-heading form-heading"); - var dir_outputstable_nextstate_head_th = document.createElement("th"); - dir_outputstable_head_tr.appendChild(dir_outputstable_nextstate_head_th); - dir_outputstable_nextstate_head_th.innerHTML = "Next State: "; - dir_outputstable_nextstate_head_th.setAttribute("class", "table-policyoutput-heading form-heading"); - var dir_outputstable_event_head_th = document.createElement("th"); - dir_outputstable_head_tr.appendChild(dir_outputstable_event_head_th); - dir_outputstable_event_head_th.innerHTML = "State Output Event: "; - dir_outputstable_event_head_th.setAttribute("class", "table-policyoutput-heading form-heading"); - var dir_outputstable_body = document.createElement("tbody"); - dir_outputstable.appendChild(dir_outputstable_body); - var stateNextStateOptions = new Array(); - stateNextStateOptions.push({ - "name" : "NULL", - "displaytext" : "None", - "state" : null - }); - if (policy && policy.state && policy.state.entry && $.isArray(policy.state.entry)) { - for (var s = 0; s < policy.state.entry.length; s++) { - var st = policy.state.entry[s]; - if (statename != st.key) { // state cannot have itself as nextstate - stateNextStateOptions.push({ - "name" : st.key, - "displaytext" : st.key, - "state" : st.value - }); - } - } - } - if (state && state.stateOutputs && $.isArray(state.stateOutputs.entry)) { - for (var p = 0; p < state.stateOutputs.entry.length; p++) { - var outputEntry = state.stateOutputs.entry[p]; - var outputName = outputEntry.key; - var nextState = null; - var nxtst = outputEntry.value.nextState.localName; - if (nxtst != null && nxtst.toUpperCase() != "NULL") { - nextState = { - "name" : nxtst, - "displaytext" : nxtst - }; - } - if (nxtst != null && nxtst.toUpperCase() == "NULL") { - nextState = { - "name" : "NULL", - "displaytext" : "None" - }; - } - var outEvent = null; - var oute = outputEntry.value.outgoingEvent; - if (oute != null && oute.name != null && oute.version != null) { - outEvent = { - "name" : oute.name, - "version" : oute.version, - "displaytext" : oute.name + ":" + oute.version - }; - } - editPolicyForm_State_addStateDirectOutput(dir_outputstable_body, (createEditOrView == "VIEW"), statename, - state, outputName, nextState, outEvent, stateNextStateOptions, events); - } - } - // add the new Direct output button - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - var dir_outputTR = document.createElement("tr"); - dir_outputTR.setAttribute("class", "field-policyoutput-tr.new"); - dir_outputstable_body.appendChild(dir_outputTR); - var dir_outputTD = document.createElement("td"); - dir_outputTD.setAttribute("colspan", "4"); - dir_outputTR.appendChild(dir_outputTD); - var addStateDirOutput = createAddFormButton("Add New Direct State Output Mapping") - dir_outputTD.appendChild(addStateDirOutput); - // addStateDirOutput.setAttribute("id", - // "editPolicyFormDirOutputsAddOutput"+"_"+statename); - // addStateDirOutput.setAttribute("class", "ebBtn ebBtn_large"); - // addStateDirOutput.setAttribute("type", "submit"); - // addStateDirOutput.setAttribute("value", Add New Direct State Output - // Mapping); - // addStateDirOutput.innerHTML = - // addStateDirOutput.getAttribute("value"); - addStateDirOutput.onclick = function() { - return editPolicyForm_State_addStateDirectOutput(dir_outputstable_body, false, statename, state, null, - null, null, stateNextStateOptions, events); - }; - } - // Logic-based Output Mappings - var logic_outputsLI = document.createElement("li"); - outsUL.appendChild(logic_outputsLI); - var logic_outputsLabel = document.createElement("label"); - logic_outputsLI.appendChild(dir_outputsLabel); - logic_outputsLI.innerHTML = "Logic-based State Output Mappings / Finalizers: "; - logic_outputsLabel.setAttribute("for", "editPolicyFormLogicOutputsTable" + "_" + statename); - var logic_outputstable = document.createElement("table"); - logic_outputstable.setAttribute("id", "editPolicyFormLogicOutputsTable" + "_" + statename); - logic_outputstable.setAttribute("name", "editPolicyFormLogicOutputsTable" + "_" + statename); - logic_outputstable.setAttribute("class", "table-policyoutput"); - logic_outputsLI.appendChild(logic_outputstable); - var logic_outputstable_head = document.createElement("thead"); - logic_outputstable.appendChild(logic_outputstable_head); - var logic_outputstable_head_tr = document.createElement("tr"); - logic_outputstable_head.appendChild(logic_outputstable_head_tr); - logic_outputstable_head_tr.appendChild(document.createElement("th")); // empty, - // for - // delete - // button - var logic_outputstable_name_head_th = document.createElement("th"); - logic_outputstable_head_tr.appendChild(logic_outputstable_name_head_th); - logic_outputstable_name_head_th.innerHTML = "Local Name for Output Mapping: "; - logic_outputstable_name_head_th.setAttribute("class", "table-policyoutput-heading form-heading"); - var logic_outputstablelogic_head_th = document.createElement("th"); - logic_outputstable_head_tr.appendChild(logic_outputstablelogic_head_th); - logic_outputstablelogic_head_th.style.textAlign = "left"; - logic_outputstablelogic_head_th.innerHTML = "Output Mapping / Finalizer Logic: "; - logic_outputstablelogic_head_th.setAttribute("class", "table-policyoutput-heading form-heading"); - var logic_outputstable_body = document.createElement("tbody"); - logic_outputstable.appendChild(logic_outputstable_body); - if (state && state.stateFinalizerLogicMap && $.isArray(state.stateFinalizerLogicMap.entry)) { - for (var p = 0; p < state.stateFinalizerLogicMap.entry.length; p++) { - var outputEntry = state.stateFinalizerLogicMap.entry[p]; - var outputName = outputEntry.key; - var logic = null; - if (outputEntry.value != null && outputEntry.value.logic != null) { - logic = outputEntry.value.logic; - } - var flavour = null; - if (outputEntry.value != null && outputEntry.value.logicFlavour != null) { - flavour = outputEntry.value.logicFlavour; - } - editPolicyForm_State_addStateLogicOutput(logic_outputstable_body, (createEditOrView == "VIEW"), statename, - state, outputName, logic, flavour); - } - } - // add the new Logic output button - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - var logic_outputTR = document.createElement("tr"); - logic_outputTR.setAttribute("class", "field-policyoutput-tr.new"); - logic_outputstable_body.appendChild(logic_outputTR); - var logic_outputTD = document.createElement("td"); - logic_outputTD.setAttribute("colspan", "3"); - logic_outputTR.appendChild(logic_outputTD); - var addStateLogicOutput = createAddFormButton("Add New Logic-based State Output Mapping / Finalizer"); - logic_outputTD.appendChild(addStateLogicOutput); - // addStateLogicOutput.setAttribute("id", - // "editPolicyFormLogicOutputsAddOutput"+"_"+statename); - // addStateLogicOutput.setAttribute("class", "ebBtn ebBtn_large"); - // addStateLogicOutput.setAttribute("type", "submit"); - // addStateLogicOutput.setAttribute("value", "Add New Logic-based State - // Output Mapping / Finalizer"); - // addStateLogicOutput.innerHTML = - // addStateLogicOutput.getAttribute("value"); - addStateLogicOutput.onclick = function() { - return editPolicyForm_State_addStateLogicOutput(logic_outputstable_body, false, statename, state, null, - null, null); - }; - } - return retDiv; -} -function editPolicyForm_State_addStateLogicOutput(parentTBody, disabled, statename, state, outputName, logic, flavour) { - var random_suffix = formUtils_generateUUID(); - var outputTR = parentTBody.insertRow(parentTBody.rows.length - 1); - outputTR.style.verticalAlign = "top"; - outputTR.style.textAlign = "left"; - outputTR.setAttribute("finalizer_id", random_suffix); - outputTR.setAttribute("class", "field-policyoutput-tr"); - if (outputName == null && !disabled) { - outputTR.setAttribute("class", "field-policyoutput-tr.new"); - } - // delete - var deleteTD = document.createElement("td"); - outputTR.appendChild(deleteTD); - var deleteDiv = document.createElement("div"); - deleteTD.appendChild(deleteDiv); - if (!disabled) { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete"); - deleteDiv.onclick = function(event) { - $(outputTR).hide("fast", function() { - outputTR.parentNode.removeChild(outputTR); - }); - }; - } else { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled"); - } - // name - var nameTD = document.createElement("td"); - nameTD.style.whiteSpace = "nowrap"; - outputTR.appendChild(nameTD); - var nameInput = document.createElement("input"); - nameTD.appendChild(nameInput); - nameInput.setAttribute("id", "editPolicyFormLogicOutputNameValue" + "_" + statename + "_" + random_suffix); - nameInput.setAttribute("type", "text"); - nameInput.setAttribute("name", "editPolicyFormLogicOutputNameValue" + "_" + statename + "_" + random_suffix); - nameInput.setAttribute("class", "field-policy-outputname"); - if (outputName == null && logic == null && flavour == null && !disabled) { - nameInput.setAttribute("class", "field-policy-outputname.new ebInput ebInput_width_xLong"); - } - nameInput.setAttribute("placeholder", "A name for this Output mapper"); - if (outputName) { - nameInput.value = outputName; - } - nameInput.readOnly = disabled; - // logic - var logicTD = document.createElement("td"); - logicTD.style.width = "99%"; - logicTD.style.whiteSpace = "nowrap"; - outputTR.appendChild(logicTD); - var finalizerlogicdiv = document.createElement("div"); - logicTD.appendChild(finalizerlogicdiv); - finalizerlogicdiv.setAttribute("id", "editEventFormFinalizerLogicDiv" + "_" + statename + "_" + random_suffix); - var finalizerlogicLabel = document.createElement("label"); - finalizerlogicdiv.appendChild(finalizerlogicLabel); - finalizerlogicLabel.setAttribute("for", "editEventFormfinalizerLogicInput" + "_" + statename + "_" + random_suffix); - finalizerlogicLabel.innerHTML = "Logic: "; - - var logicString = ""; - if (logic != null) { - logicString = logic; - } - var edit_readOnly = disabled; - var textarea = showHideTextarea("editEventFormfinalizerLogicInput" + "_" + statename + "_" + random_suffix, logic, - false, !edit_readOnly, false); - finalizerlogicdiv.appendChild(textarea); - - // finalizerlogic type - var finalizerlogicTypeLabel = document.createElement("label"); - finalizerlogicdiv.appendChild(finalizerlogicTypeLabel); - finalizerlogicTypeLabel.setAttribute("for", "editPolicyFormFinalizerLogicTypeInput" + "_" + statename + "_" - + random_suffix); - finalizerlogicTypeLabel.innerHTML = "Type / Flavour: "; - var finalizerlogicTypeInput = document.createElement("input"); - finalizerlogicdiv.appendChild(finalizerlogicTypeInput); - finalizerlogicTypeInput.setAttribute("id", "editPolicyFormFinalizerLogicTypeInput" + "_" + statename + "_" - + random_suffix); - finalizerlogicTypeInput.setAttribute("type", "text"); - finalizerlogicTypeInput.setAttribute("name", "editPolicyFormFinalizerLogicTypeInput" + "_" + statename + "_" - + random_suffix); - finalizerlogicTypeInput.setAttribute("class", "field-finalizerLogicType ebInput ebInput_width_xLong"); - finalizerlogicTypeInput.setAttribute("placeholder", "MVEL"); - if (flavour != null) { - finalizerlogicTypeInput.value = flavour; - } - finalizerlogicTypeInput.readOnly = disabled; - - logicTD.appendChild(finalizerlogicdiv); -} - -function editPolicyForm_State_addStateDirectOutput(parentTBody, disabled, stateName, state, outputName, nextState, - outEvent, stateNextStateOptions, events) { - var random_suffix = formUtils_generateUUID(); - var outputTR = parentTBody.insertRow(parentTBody.rows.length - 1); - outputTR.setAttribute("output_id", random_suffix); - outputTR.setAttribute("class", "field-policyoutput-tr"); - if (outputName == null && nextState == null && nextState == null && !disabled) { - outputTR.setAttribute("class", "field-policyoutput-tr.new"); - } - // delete - var deleteTD = document.createElement("td"); - outputTR.appendChild(deleteTD); - var deleteDiv = document.createElement("div"); - deleteTD.appendChild(deleteDiv); - if (!disabled) { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete"); - deleteDiv.onclick = function(event) { - $(outputTR).hide("fast", function() { - outputTR.parentNode.removeChild(outputTR); - }); - } - } else { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled"); - } - // name - var nameTD = document.createElement("td"); - outputTR.appendChild(nameTD); - var nameInput = document.createElement("input"); - nameTD.appendChild(nameInput); - nameInput.setAttribute("id", "editPolicyFormDirectOutputNameValue" + "_" + stateName + "_" + random_suffix); - nameInput.setAttribute("type", "text"); - nameInput.setAttribute("name", "editPolicyFormDirectOutputNameValue" + "_" + stateName + "_" + random_suffix); - nameInput.setAttribute("class", "field-policy-outputname ebInput ebInput_width_xLong"); - if (outputName == null && nextState == null && nextState == null && !disabled) { - nameInput.setAttribute("class", "field-policy-outputname.new ebInput ebInput_width_xLong"); - } - nameInput.setAttribute("placeholder", "A name for this Output mapper"); - if (outputName) { - nameInput.value = outputName; - } - nameInput.readOnly = disabled; - // outputEvent - var outeventTD = document.createElement("td"); - var outeventSelectDiv = dropdownList("editPolicyFormOutputEventValue" + "_" + stateName + "_" + random_suffix, - events, outEvent, disabled, null); - outeventTD.appendChild(outeventSelectDiv); - // nextstate - var nextstateTD = document.createElement("td"); - var nextstateSelectDiv = dropdownList("editPolicyFormOutputNextStateValue" + "_" + stateName + "_" + random_suffix, - stateNextStateOptions, nextState, disabled, null, function() { - return editPolicyForm_getNextStateOptions(); - }); - nextstateTD.appendChild(nextstateSelectDiv); - - outputTR.appendChild(nextstateTD); - outputTR.appendChild(outeventTD); - -} - -function editPolicyForm_State_addPolicyContext(parentTBody, disabled, stateName, contextName, contextreference, - contextAlbums) { - var random_suffix = formUtils_generateUUID(); - var contextTR = parentTBody.insertRow(parentTBody.rows.length - 1); - contextTR.setAttribute("context_id", random_suffix); - contextTR.setAttribute("class", "field-policycontext-tr"); - if (contextName == null && contextreference == null && !disabled) { - contextTR.setAttribute("class", "field-policycontext-tr.new"); - } - // delete - var deleteTD = document.createElement("td"); - contextTR.appendChild(deleteTD); - var deleteDiv = document.createElement("div"); - deleteTD.appendChild(deleteDiv); - if (!disabled) { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete"); - deleteDiv.onclick = function(event) { - $(contextTR).hide("fast", function() { - contextTR.parentNode.removeChild(contextTR); - }); - } - } else { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled"); - } - // context - var valueTD = document.createElement("td"); - contextTR.appendChild(valueTD); - var selectDiv = dropdownList("editPolicyFormContextValue" + "_" + stateName + "_" + random_suffix, contextAlbums, - contextreference, disabled, null); - valueTD.appendChild(selectDiv); -} - -function editPolicyForm_State_addPolicyTask(parentTBody, disabled, isdefault, state, stateName, taskreference, - taskSelected, taskOptions) { - var random_suffix = formUtils_generateUUID(); - var taskTR = parentTBody.insertRow(parentTBody.rows.length - 1); - taskTR.setAttribute("task_id", random_suffix); - taskTR.setAttribute("class", "field-policytask-tr"); - if (taskreference && taskSelected == null && !disabled) { - taskTR.setAttribute("class", "field-policytask-tr.new"); - } - // delete - var deleteTD = document.createElement("td"); - taskTR.appendChild(deleteTD); - var deleteDiv = document.createElement("div"); - deleteTD.appendChild(deleteDiv); - if (!disabled) { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete"); - deleteDiv.onclick = function(event) { - $(taskTR).hide("fast", function() { - taskTR.parentNode.removeChild(taskTR); - }); - } - } else { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled"); - } - // default - var defaulttaskTD = document.createElement("td"); - taskTR.appendChild(defaulttaskTD); - var defaulttaskInput = document.createElement("input"); - defaulttaskTD.appendChild(defaulttaskInput); - defaulttaskInput.setAttribute("id", "editPolicyFormTaskIsDefault" + "_" + stateName + "_" + random_suffix); - defaulttaskInput.setAttribute("value", "editPolicyFormTaskIsDefault" + "_" + stateName + "_" + random_suffix); - defaulttaskInput.setAttribute("type", "radio"); - defaulttaskInput.setAttribute("name", "editPolicyFormTaskIsDefault" + "_" + stateName); // group - // name - defaulttaskInput.setAttribute("class", "field-policy-taskisdefault"); - if (taskreference == null && taskSelected == null && !disabled) { - defaulttaskInput.setAttribute("class", "field-policy-taskisdefault.new"); - } - defaulttaskInput.checked = isdefault; - defaulttaskInput.readOnly = disabled; - // localname - var localnameTD = document.createElement("td"); - taskTR.appendChild(localnameTD); - var localnameInput = document.createElement("input"); - localnameTD.appendChild(localnameInput); - localnameInput.setAttribute("id", "editPolicyFormTaskLocalNameValue" + "_" + stateName + "_" + random_suffix); - localnameInput.setAttribute("type", "text"); - localnameInput.setAttribute("name", "editPolicyFormTaskLocalNameValue" + "_" + stateName + "_" + random_suffix); - localnameInput.setAttribute("class", "field-policy-tasklocalname ebInput ebInput_width_xLong"); - if (taskreference == null && taskSelected == null && !disabled) { - localnameInput.setAttribute("class", "field-policy-tasklocalname.new ebInput ebInput_width_xLong"); - } - localnameInput.setAttribute("placeholder", "Task's Local Name"); - if (taskreference != null && taskreference.key != null && taskreference.key.localName != null) { - localnameInput.value = taskreference.key.localName; - } - localnameInput.readOnly = disabled; - // task - var valueTD = document.createElement("td"); - taskTR.appendChild(valueTD); - var selectDiv = dropdownList("editPolicyFormTaskValue" + "_" + stateName + "_" + random_suffix, taskOptions, - taskSelected, disabled, null); - valueTD.appendChild(selectDiv); - // output type - var outputTypeDirectTD = document.createElement("td"); - taskTR.appendChild(outputTypeDirectTD); - var outputTypeDirectLabel = document.createElement("label"); - outputTypeDirectTD.appendChild(outputTypeDirectLabel); - outputTypeDirectLabel.setAttribute("for", "editPolicyFormTaskOutputType" + "_" + stateName + "_" + random_suffix - + "_DIRECT"); - outputTypeDirectLabel.setAttribute("class", "label-policy-taskoutputtype"); - outputTypeDirectLabel.innerHTML = " DIRECT"; - var outputTypeDirectInput = document.createElement("input"); - outputTypeDirectLabel.appendChild(outputTypeDirectInput); - outputTypeDirectInput.setAttribute("id", "editPolicyFormTaskOutputType" + "_" + stateName + "_" + random_suffix - + "_DIRECT"); - outputTypeDirectInput.setAttribute("value", "DIRECT"); - outputTypeDirectInput.setAttribute("type", "radio"); - outputTypeDirectInput.setAttribute("name", "editPolicyFormTaskOutputType" + "_" + stateName + "_" + random_suffix); // group - // name - outputTypeDirectInput.setAttribute("class", "field-policy-taskoutputtype"); - if (taskreference == null && taskSelected == null && !disabled) { - outputTypeDirectInput.setAttribute("class", "field-policy-taskoutputtype.new"); - } - if (taskreference != null && taskreference.outputType != null && taskreference.outputType.toUpperCase() == "DIRECT") { - outputTypeDirectInput.checked = true; - } - outputTypeDirectInput.readOnly = disabled; - var outputTypeLogicTD = document.createElement("td"); - taskTR.appendChild(outputTypeLogicTD); - var outputTypeLogicLabel = document.createElement("label"); - outputTypeLogicTD.appendChild(outputTypeLogicLabel); - outputTypeLogicLabel.setAttribute("for", "editPolicyFormTaskOutputType" + "_" + stateName + "_" + random_suffix - + "_LOGIC"); - outputTypeLogicLabel.setAttribute("class", "label-policy-taskoutputtype"); - outputTypeLogicLabel.innerHTML = " LOGIC"; - var outputTypeLogicInput = document.createElement("input"); - outputTypeLogicLabel.appendChild(outputTypeLogicInput); - outputTypeLogicInput.setAttribute("id", "editPolicyFormTaskOutputType" + "_" + stateName + "_" + random_suffix - + "_LOGIC"); - outputTypeLogicInput.setAttribute("value", "LOGIC"); - outputTypeLogicInput.setAttribute("type", "radio"); - outputTypeLogicInput.setAttribute("name", "editPolicyFormTaskOutputType" + "_" + stateName + "_" + random_suffix); // group - // name - outputTypeLogicInput.setAttribute("class", "field-policy-taskoutputtype"); - if (taskreference && taskSelected == null && !disabled) { - outputTypeLogicInput.setAttribute("class", "field-policy-taskoutputtype.new"); - } - if (taskreference != null && taskreference.outputType != null && taskreference.outputType.toUpperCase() == "LOGIC") { - outputTypeLogicInput.checked = true; - } - outputTypeLogicInput.readOnly = disabled; - // output selected - var outputSelectionTD = document.createElement("td"); - taskTR.appendChild(outputSelectionTD); - var dir_outputselected = null; - var logic_outputselected = null; - if (taskreference != null && taskreference.output != null && taskreference.output.localName != null - && taskreference.outputType != null && taskreference.outputType.toUpperCase() == "DIRECT") { - dir_outputselected = { - "name" : taskreference.output.localName, - "displaytext" : taskreference.output.localName - }; - } else if (taskreference != null && taskreference.output != null && taskreference.output.localName != null - && taskreference.outputType != null && taskreference.outputType.toUpperCase() == "LOGIC") { - logic_outputselected = { - "name" : taskreference.output.localName, - "displaytext" : taskreference.output.localName - }; - } - var dir_outputOptions = new Array(); - if (state != null && state.stateOutputs != null && $.isArray(state.stateOutputs.entry)) { - for (var p = 0; p < state.stateOutputs.entry.length; p++) { - var outputEntry = state.stateOutputs.entry[p].key; - dir_outputOptions.push({ - "name" : outputEntry, - "displaytext" : outputEntry - }); - } - } - var logic_outputOptions = new Array(); - if (state != null && state.stateFinalizerLogicMap != null && $.isArray(state.stateFinalizerLogicMap.entry)) { - for (var p = 0; p < state.stateFinalizerLogicMap.entry.length; p++) { - var outputEntry = state.stateFinalizerLogicMap.entry[p].key; - logic_outputOptions.push({ - "name" : outputEntry, - "displaytext" : outputEntry - }); - } - } - var dir_selectDiv = document.createElement("div"); - dir_selectDiv.appendChild(new dropdownList("editPolicyFormTaskDirectOutputSelection" + "_" + stateName + "_" - + random_suffix, dir_outputOptions, dir_outputselected, disabled, null, function() { - return editPolicyForm_State_getDirectOutputMappingOptions(stateName); - })); - outputSelectionTD.appendChild(dir_selectDiv); - var logic_selectDiv = document.createElement("div"); - logic_selectDiv.appendChild(dropdownList("editPolicyFormTaskLogicOutputSelection" + "_" + stateName + "_" - + random_suffix, logic_outputOptions, logic_outputselected, disabled, null, function() { - return editPolicyForm_State_getLogicOutputMappingOptions(stateName); - })); - outputSelectionTD.appendChild(logic_selectDiv); - if (outputTypeLogicInput.checked) { - dir_selectDiv.style.display = "none"; - logic_selectDiv.style.display = "inline"; - } else if (outputTypeDirectInput.checked) { - dir_selectDiv.style.display = "inline"; - logic_selectDiv.style.display = "none"; - } else { - dir_selectDiv.style.display = "none"; - logic_selectDiv.style.display = "none"; - } - outputTypeDirectInput.onclick = function() { - if (this.checked) { - dir_selectDiv.style.display = "inline"; - logic_selectDiv.style.display = "none"; - } else { - dir_selectDiv.style.display = "none"; - logic_selectDiv.style.display = "inline"; - } - }; - outputTypeLogicInput.onclick = function() { - if (this.checked) { - dir_selectDiv.style.display = "none"; - logic_selectDiv.style.display = "inline"; - } else { - dir_selectDiv.style.display = "inline"; - logic_selectDiv.style.display = "none"; - } - }; -} - -function editPolicyForm_State_getLogicOutputMappingOptions(statename) { - var outputoptions = new Array(); - var finalizerstablerows = document.getElementById("editPolicyFormLogicOutputsTable_" + statename).rows; - if (finalizerstablerows && finalizerstablerows.length > 2) { // has head - // so just - // ignore - // (2) top - // row and - // bottom - // row - for (var i = 1; i < finalizerstablerows.length - 1; i++) { - var finalizerTR = finalizerstablerows[i]; - if (finalizerTR && finalizerTR.getAttribute("finalizer_id")) { - var finalizer_id = finalizerTR.getAttribute("finalizer_id"); - var finalizerlocalname = document.getElementById("editPolicyFormLogicOutputNameValue_" + statename - + "_" + finalizer_id).value; - if (finalizerlocalname != null && finalizerlocalname != "") { - outputoptions.push({ - "name" : finalizerlocalname, - "displaytext" : finalizerlocalname - }); - } - } - } - } - return outputoptions; -} - -function editPolicyForm_State_getDirectOutputMappingOptions(statename) { - var outputoptions = new Array(); - var outputstablerows = document.getElementById("editPolicyFormDirOutputsTable_" + statename).rows; - if (outputstablerows && outputstablerows.length > 2) { // has head so just - // ignore (2) top - // row and bottom - // row - for (var i = 1; i < outputstablerows.length - 1; i++) { - var outputTR = outputstablerows[i]; - if (outputTR && outputTR.getAttribute("output_id")) { - var output_id = outputTR.getAttribute("output_id"); - var outputlocalname = document.getElementById("editPolicyFormDirectOutputNameValue_" + statename + "_" - + output_id).value; - if (outputlocalname != null && outputlocalname != "") { - outputoptions.push({ - "name" : outputlocalname, - "displaytext" : outputlocalname - }); - } - } - } - } - return outputoptions; -} - -function editPolicyForm_State_getStateBean(statename) { - if (statename == null || statename == "") { - console.error("Request for '" + statename + "' state!"); - alert("Request for '" + statename + "' state!"); - return null; - } - var div = document.getElementById("editPolicyFormStateDiv_" + statename); - if (div == null) { - console.error("State information requested for state " + statename + ", but that state does not exist!") - alert("State information requested for state " + statename + ", but that state does not exist!"); - return null; - } - var ret = new Object(); - // name - ret["name"] = statename; - // trigger - var triggervalue = document.getElementById("editPolicyFormTrigger_" + statename + "_dropdownList").selectedOption; - ret["trigger"] = null; - if (triggervalue != null && triggervalue.event != null) { - ret.trigger = { - "name" : triggervalue.event.key.name, - "version" : triggervalue.event.key.version - }; - } - // context - var statebean_context = new Array(); - var contextstablerows = document.getElementById("editPolicyFormContextsTable_" + statename).rows; - if (contextstablerows && contextstablerows.length > 1) { // no head so - // just ignore - // (1) bottom - // row - for (var i = 0; i < contextstablerows.length - 1; i++) { - var contextTR = contextstablerows[i]; - if (contextTR && contextTR.getAttribute("context_id")) { - var context_id = contextTR.getAttribute("context_id"); - var contextvalue = document.getElementById("editPolicyFormContextValue_" + statename + "_" + context_id - + "_dropdownList").selectedOption; - if (contextvalue != null && contextvalue.album != null) { - statebean_context.push({ - "name" : contextvalue.album.key.name, - "version" : contextvalue.album.key.version - }); - } - } - } - } - ret["contexts"] = statebean_context; - // outputs - var statebean_outputs = new Object(); - var outputstablerows = document.getElementById("editPolicyFormDirOutputsTable_" + statename).rows; - if (outputstablerows && outputstablerows.length > 2) { // has head so just - // ignore (2) top - // row and bottom - // row - for (var i = 1; i < outputstablerows.length - 1; i++) { - var outputTR = outputstablerows[i]; - if (outputTR && outputTR.getAttribute("output_id")) { - var output_id = outputTR.getAttribute("output_id"); - var outputlocalname = document.getElementById("editPolicyFormDirectOutputNameValue_" + statename + "_" - + output_id).value; - if (outputlocalname == null || outputlocalname == "") { - console.error("No Local Name entered for Direct Output Mapping #" + i + " for state " + statename); - alert("No Local Name entered for Direct Output Mapping #" + i + " for state " + statename); - return null; - } - var nextstatevalue = document.getElementById("editPolicyFormOutputNextStateValue_" + statename + "_" - + output_id + "_dropdownList").selectedOption; - var nextstatename; - if (nextstatevalue == null) { - console.error("An option must be selected for Next State for Direct Output Mapping " - + outputlocalname + " for state " + statename); - alert("An option must be selected for Next State for Direct Output Mapping " + outputlocalname - + " for state " + statename); - return null; - } else if (nextstatevalue.name.toUpperCase() == "NULL") { - nextstatename = null; - } else { - nextstatename = nextstatevalue.name; - } - - var nexteventvalue = document.getElementById("editPolicyFormOutputEventValue_" + statename + "_" - + output_id + "_dropdownList").selectedOption; - if (nexteventvalue == null || nexteventvalue.event == null || nexteventvalue.event.key == null) { - console.error("No Output Event selected for Direct Output Mapping " + outputlocalname - + " for state " + statename); - alert("No Output Event selected for Direct Output Mapping " + outputlocalname + " for state " - + statename); - return null; - } - var nextevent = { - "name" : nexteventvalue.event.key.name, - "version" : nexteventvalue.event.key.version - }; - statebean_outputs[outputlocalname] = { - "event" : nextevent, - "nextState" : nextstatename - }; - } - } - } - ret["stateOutputs"] = statebean_outputs; - // finalizers - var statebean_finalizers = new Object(); - var finalizerstablerows = document.getElementById("editPolicyFormLogicOutputsTable_" + statename).rows; - if (finalizerstablerows && finalizerstablerows.length > 2) { // has head - // so just - // ignore - // (2) top - // row and - // bottom - // row - for (var i = 1; i < finalizerstablerows.length - 1; i++) { - var finalizerTR = finalizerstablerows[i]; - if (finalizerTR && finalizerTR.getAttribute("finalizer_id")) { - var finalizer_id = finalizerTR.getAttribute("finalizer_id"); - var finalizerlocalname = document.getElementById("editPolicyFormLogicOutputNameValue_" + statename - + "_" + finalizer_id).value; - if (finalizerlocalname == null || finalizerlocalname == "") { - console.error("No Local Name entered for Logic-based Output Mapping #" + i + " for state " - + statename); - alert("No Local Name entered for Logic-based Output Mapping #" + i + " for state " + statename); - return null; - } - - var finalizerlogicvalue = document.getElementById("editEventFormfinalizerLogicInput_" + statename + "_" - + finalizer_id + "_textarea").value; - if (finalizerlogicvalue == null || finalizerlogicvalue == "") { - console.error("No Logic is specified for Logic-based Output Mapping " + finalizerlocalname - + " for state " + statename); - alert("No Logic is specified for Logic-based Output Mapping " + finalizerlocalname + " for state " - + statename); - return null; - } - - var finalizerlogictypevalue = document.getElementById("editPolicyFormFinalizerLogicTypeInput_" - + statename + "_" + finalizer_id).value; - if (finalizerlogictypevalue == null || finalizerlogictypevalue == "") { - console.error("No Logic Type is specified for Logic-based Output Mapping " + finalizerlocalname - + " for state " + statename); - alert("No Logic Type is specified for Logic-based Output Mapping " + finalizerlocalname - + " for state " + statename); - return null; - } - statebean_finalizers[finalizerlocalname] = { - "logic" : finalizerlogicvalue, - "logicFlavour" : finalizerlogictypevalue - }; - } - } - } - ret["finalizers"] = statebean_finalizers; - // tasks & defaulttask - var statebean_tasks = new Object(); - var statebean_defaultTask = null; - var taskstablerows = document.getElementById("editPolicyFormTasksTable_" + statename).rows; - if (taskstablerows == null || taskstablerows.length <= 2) { - alert("No tasks selected for state " + statename); - console.error("No tasks selected for state " + statename); - return null; - } else { // has head so just ignore (2) top row and bottom row - for (var i = 1; i < taskstablerows.length - 1; i++) { - var taskTR = taskstablerows[i]; - if (taskTR && taskTR.getAttribute("task_id")) { - var task_id = taskTR.getAttribute("task_id"); - var tasklocalname = document.getElementById("editPolicyFormTaskLocalNameValue_" + statename + "_" - + task_id).value; - if (tasklocalname == "") { - console.error("No Local Name entered for task #" + i + " for state " + statename); - alert("No Local Name entered for task #" + i + " for state " + statename); - return null; - } - if (statebean_tasks[tasklocalname] != null) { - console.error("There cannot be more than one task called " + tasklocalname + " for state " - + statename); - alert("There cannot be more than one task called " + tasklocalname + " for state " + statename); - return null; - } - var taskvalue = document.getElementById("editPolicyFormTaskValue_" + statename + "_" + task_id - + "_dropdownList").selectedOption; - if (taskvalue == null || taskvalue.task == null) { - console.error("No Task selected for task " + tasklocalname + " for state " + statename); - alert("No Task selected for task " + tasklocalname + " for state " + statename); - return null; - } - var task = taskvalue.task; - var r = document.querySelector('input[name="editPolicyFormTaskOutputType_' + statename + '_' + task_id - + '"]:checked'); - if (r == null) { - console.error("No Output Mapping type selected for task " + tasklocalname + " for state " - + statename); - alert("No Output Mapping type selected for task " + tasklocalname + " for state " + statename); - return null; - } - var outputtype = r.value; - var outputname = null; - if (outputtype == "DIRECT") { - var diroutput = document.getElementById("editPolicyFormTaskDirectOutputSelection_" + statename - + "_" + task_id + "_dropdownList").selectedOption; - if (diroutput == null) {// } || diroutput.output == null){ - console.error("No DIRECT Output Mapping selected for task " + tasklocalname + " for state " - + statename); - alert("No DIRECT Output Mapping selected for task " + tasklocalname + " for state " + statename); - } - outputname = diroutput.name; - } else if (outputtype == "LOGIC") { - var logoutput = document.getElementById("editPolicyFormTaskLogicOutputSelection_" + statename + "_" - + task_id + "_dropdownList").selectedOption; - if (logoutput == null || logoutput.name == null) { - console.error("No LOGIC Output Mapping selected for task " + tasklocalname + " for state " - + statename); - alert("No LOGIC Output Mapping selected for task " + tasklocalname + " for state " + statename); - } - outputname = logoutput.name; - } else { - console.error("Unknown Output Mapping type ('" + outputtype + "') selected for task " - + tasklocalname + " for state " + statename); - alert("Unknown Output Mapping type ('" + outputtype + "') selected for task " + tasklocalname - + " for state " + statename); - return null; - } - statebean_tasks[tasklocalname] = { - "task" : { - "name" : task.key.name, - "version" : task.key.version - }, - "outputType" : outputtype, - "outputName" : outputname - }; - - var r2 = document.getElementById("editPolicyFormTaskIsDefault_" + statename + "_" + task_id); - if (taskstablerows.length <= 3 || (r2 != null && r2.checked == true)) { // default - // is - // checked - // or - // there - // is - // only - // one - // task - statebean_defaultTask = { - "name" : task.key.name, - "version" : task.key.version - }; - } - - } - } - } - ret["tasks"] = statebean_tasks; - ret["defaultTask"] = statebean_defaultTask; - // tasksellogic - var tsl = document.getElementById("editEventFormTaskSelLogicInput_" + statename + "_textarea").value; - var tsl_type = document.getElementById("editPolicyFormTaskSelLogicTypeInput_" + statename).value; - if (tsl == null || tsl == "" || tsl_type == null || tsl_type == "") { - if (statebean_tasks != null && taskstablerows.length > 3) { // there is - // more than - // 1 task - console - .error("State " - + statename - + " has more than one task reference so Task Selection Logic and Task Selection Logic type must be specified"); - alert("State " - + statename - + " has more than one task reference so Task Selection Logic and Task Selection Logic type must be specified"); - return null; - } - } else if ((tsl == null || tsl == "") && (tsl_type == null || tsl_type == "")) { - ret["taskSelectionLogic"] = null; - } else { - ret["taskSelectionLogic"] = { - "logic" : tsl, - "logicFlavour" : tsl_type - }; - } - - return ret; - -} diff --git a/client/client-editor/src/main/resources/webapp/js/ApexPolicyTab.js b/client/client-editor/src/main/resources/webapp/js/ApexPolicyTab.js deleted file mode 100644 index cda24928c..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexPolicyTab.js +++ /dev/null @@ -1,210 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function policyTab_reset() { - policyTab_deactivate(); - policyTab_activate(); -} - -function policyTab_activate() { - policyTab_create(); - - var requestURL = restRootURL + "/Policy/Get?name=&version="; - - ajax_get(requestURL, function(data) { - $("#policyTableBody").find("tr:gt(0)").remove(); - - for (var i = 0; i < data.messages.message.length; i++) { - var policy = JSON.parse(data.messages.message[i]).apexPolicy; - - var policyRow_tr = document.createElement("tr"); - var policyid = policy.policyKey.name + ":" + policy.policyKey.version; - - var policyTableRow = - "" + - policyid + - "" + - "" + - policy.template + - "" + - "" + - policy.firstState + - ""; - - policyTableRow += ""; - policyTableRow += ""; - - var states = policy.state.entry; - for(var s in states) { - var state = states[s]; - if(state.key == policy.firstState) { - states.splice(s, 1); - states.unshift(state); - break; - } - } - - for (var s = 0; s < policy.state.entry.length; s++) { - var stateName = policy.state.entry[s].key; - var state = policy.state.entry[s].value; - - policyTableRow += - "" + - ""; - - policyTableRow += ""; - - policyTableRow += - "" + - ""; - - policyTableRow += ""; - - policyTableRow += ""; - - - policyTableRow += ""; - - policyTableRow += ""; - } - - policyTableRow += "
StateTriggerReferenced TasksDefault TaskTSLState OutputsState Finsalizer LogicContext Album References
" + - stateName + - "" + - state.trigger.name + ":" + state.trigger.version + - ""; - for (var t = 0; t < state.taskReferences.entry.length; t++) { - var taskKey = state.taskReferences.entry[t].key; - var taskRef = state.taskReferences.entry[t].value; - - policyTableRow += - "" + - "" + - ""; - } - policyTableRow += "
Task ReferenceOutput TypeOutput
" + - taskKey.name + ":" + taskKey.version + - "" + - taskRef.outputType + - "" + - taskRef.output.localName + - "
" + - state.defaultTask.name + ":" + state.defaultTask.version + - "" + - state.taskSelectionLogic.logicFlavour + - ""; - for (var o = 0; o < state.stateOutputs.entry.length; o++) { - var outputEntry = state.stateOutputs.entry[o]; - - policyTableRow += - "" + - "" + - ""; - } - policyTableRow += "
NameNext StateEvent
" + - outputEntry.key + - "" + - outputEntry.value.nextState.localName + - "" + - outputEntry.value.outgoingEvent.name + ":" + outputEntry.value.outgoingEvent.version + - "
"; - for (var sf = 0; sf < state.stateFinalizerLogicMap.entry.length; sf++) { - var sflEntry = state.stateFinalizerLogicMap.entry[sf]; - - policyTableRow += - "" + - ""; - } - policyTableRow += "
NameType
" + - sflEntry.key + - "" + - sflEntry.value.logicFlavour + - "
"; - for (var c = 0; c < state.contextAlbumReference.length; c++) { - var contextAlbumReference = state.contextAlbumReference[c]; - - policyTableRow += - ""; - } - policyTableRow += "
" + - contextAlbumReference.name + ":" + contextAlbumReference.version + - "
"; - - - policyRow_tr.innerHTML = policyTableRow; - policyRow_tr.addEventListener('contextmenu', rightClickMenu_scopePreserver("policyTabContent", "Policy", policy.policyKey.name, policy.policyKey.version)); - - $("#policyTableBody").append(policyRow_tr); - } - }); -} - -function policyTab_deactivate() { - apexUtils_removeElement("policyTabContent"); -} - -function policyTab_create() { - var policyTab = document.getElementById("policiesTab"); - - var policyTabContent = document.getElementById("policyTabContent"); - if (policyTabContent != null) { - return - } - - var policyTabContent = document.createElement("policyTabContent"); - policyTab.appendChild(policyTabContent); - policyTabContent.setAttribute("id", "policyTabContent"); - policyTabContent.addEventListener('contextmenu', rightClickMenu_scopePreserver("policyTabContent", "Policy", null, null)); - - var policyTable = createTable("policyTable"); - policyTabContent.appendChild(policyTable); - - var policyTableHeader = document.createElement("thead"); - policyTable.appendChild(policyTableHeader); - policyTableHeader.setAttribute("id", "policyTableHeader"); - - var policyTableHeaderRow = document.createElement("tr"); - policyTableHeader.appendChild(policyTableHeaderRow); - policyTableHeaderRow.setAttribute("id", "policyTableHeaderRow"); - - var policyTableKeyHeader = document.createElement("th"); - policyTableHeaderRow.appendChild(policyTableKeyHeader); - policyTableKeyHeader.setAttribute("id", "policyTableKeyHeader"); - policyTableKeyHeader.appendChild(document.createTextNode("Policy")); - - var policyTableTemplateHeader = document.createElement("th"); - policyTableHeaderRow.appendChild(policyTableTemplateHeader); - policyTableTemplateHeader.setAttribute("id", "policyTableTemplateHeader"); - policyTableTemplateHeader.appendChild(document.createTextNode("Template")); - - var policyTableFirstStateHeader = document.createElement("th"); - policyTableHeaderRow.appendChild(policyTableFirstStateHeader); - policyTableFirstStateHeader.setAttribute("id", "policyTableFirstStateHeader"); - policyTableFirstStateHeader.appendChild(document.createTextNode("First State")); - - var policyTableStatesHeader = document.createElement("th"); - policyTableHeaderRow.appendChild(policyTableStatesHeader); - policyTableStatesHeader.setAttribute("id", "policyTableStatesHeader"); - policyTableStatesHeader.appendChild(document.createTextNode("States")); - - var policyTableBody = document.createElement("tbody"); - policyTable.appendChild(policyTableBody); - policyTable.setAttribute("id", "policyTableBody"); -} \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/js/ApexResultForm.js b/client/client-editor/src/main/resources/webapp/js/ApexResultForm.js deleted file mode 100644 index 123643b93..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexResultForm.js +++ /dev/null @@ -1,88 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function resultForm_activate(formParent, formHeading, formText) { - apexUtils_removeElement("newModelDivBackground"); - - var contentelement = document.createElement("resultFormDiv"); - var formDiv = document.createElement("div"); - var backgroundDiv = document.createElement("div"); - backgroundDiv.setAttribute("id", "newModelDivBackground"); - backgroundDiv.setAttribute("class", "newModelDivBackground"); - - backgroundDiv.appendChild(formDiv); - contentelement.appendChild(backgroundDiv); - formParent.appendChild(contentelement); - - formDiv.setAttribute("id", "resultFormDiv"); - formDiv.setAttribute("class", "resultFormDiv"); - - var headingSpan = document.createElement("span"); - formDiv.appendChild(headingSpan); - - headingSpan.setAttribute("class", "headingSpan"); - headingSpan.innerHTML = formHeading; - - var form = document.createElement("resultForm"); - formDiv.appendChild(form); - - form.setAttribute("id", "resultForm"); - form.setAttribute("class", "form-style-1"); - form.setAttribute("method", "post"); - - var ul = document.createElement("ul"); - form.appendChild(ul); - - var resultTextLI = document.createElement("li"); - form.appendChild(resultTextLI); - - var resultTextLabel = document.createElement("label"); - resultTextLI.appendChild(resultTextLabel); - resultTextLabel.setAttribute("for", "resultFormTextArea"); - resultTextLabel.innerHTML = "resultText: "; - - var resultTextArea = document.createElement("textarea"); - resultTextLI.appendChild(resultTextArea); - - resultTextArea.setAttribute("id", "resultFormTextArea"); - resultTextArea.setAttribute("resultText", "resultFormTextArea"); - resultTextArea.setAttribute("class", "field-long field-textarea ebTextArea ebTextArea_width_full eb_scrollbar"); - resultTextArea.setAttribute("readonly", "readonly"); - resultTextArea.style.cursor = "text"; - - resultTextArea.value = formText; - - var inputLI = document.createElement("li"); - form.appendChild(inputLI); - - var okInput = document.createElement("input"); - inputLI.appendChild(okInput); - - okInput.setAttribute("id", "generateDescription"); - okInput.setAttribute("class", "okButton ebBtn"); - okInput.setAttribute("type", "submit"); - okInput.setAttribute("value", "OK"); - - okInput.onclick = resultForm_okPressed; -} - -function resultForm_okPressed() { - apexUtils_removeElement("newModelDivBackground"); -} diff --git a/client/client-editor/src/main/resources/webapp/js/ApexTable.js b/client/client-editor/src/main/resources/webapp/js/ApexTable.js deleted file mode 100644 index af5e7e3db..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexTable.js +++ /dev/null @@ -1,36 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function createTable(id) { - var table = document.createElement("table"); - table.setAttribute("id", id); - table.setAttribute("class", "apexTable ebTable elTablelib-Table-table ebTable_striped"); - return table; -} - -function setRowHover(rowElement) { - rowElement.className = "ebTableRow"; - rowElement.onmouseover = function() { - this.className = "ebTableRow ebTableRow_hover"; - }; - rowElement.onmouseout = function() { - this.className = "ebTableRow"; - }; -} diff --git a/client/client-editor/src/main/resources/webapp/js/ApexTaskEditForm.js b/client/client-editor/src/main/resources/webapp/js/ApexTaskEditForm.js deleted file mode 100644 index d4021c003..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexTaskEditForm.js +++ /dev/null @@ -1,1003 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * Modifications Copyright (C) 2020 Nordix Foundation. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function editTaskForm_createTask(formParent) { - // Get all contextSchemas too for task input/outputfields - var requestURL = restRootURL + "/ContextSchema/Get?name=&version="; - var contextSchemas = new Array(); - ajax_get(requestURL, function(data2) { - for (var i = 0; i < data2.messages.message.length; i++) { - var contextSchema = JSON.parse(data2.messages.message[i]).apexContextSchema; - var dt = { - "name" : contextSchema.key.name, - "version" : contextSchema.key.version, - "displaytext" : contextSchema.key.name + ":" + contextSchema.key.version, - "contextSchema" : contextSchema - }; - contextSchemas.push(dt); - } - // Get all contextAlbums too for task context album references - var requestURL = restRootURL + "/ContextAlbum/Get?name=&version="; - var contextAlbums = new Array(); - ajax_get(requestURL, function(data3) { - for (var i = 0; i < data3.messages.message.length; i++) { - var contextAlbum = JSON.parse(data3.messages.message[i]).apexContextAlbum; - var ca = { - "name" : contextAlbum.key.name, - "version" : contextAlbum.key.version, - "displaytext" : contextAlbum.key.name + ":" + contextAlbum.key.version, - "contextAlbum" : contextAlbum - }; - contextAlbums.push(ca); - } - editTaskForm_activate(formParent, "CREATE", null, contextSchemas, contextAlbums); - }); - }); -} - -function editTaskForm_deleteTask(parent, name, version) { - var message = "Are you sure you want to delete Task \"" + name + ":" + version + "\"?"; - if (apexUtils_areYouSure(message)) { - var requestURL = restRootURL + "/Task/Delete?name=" + name + "&version=" + version; - ajax_delete(requestURL, function(data) { - apexUtils_removeElement("editTaskFormDiv"); - taskTab_reset(); - keyInformationTab_reset() - }); - } -} - -function editTaskForm_viewTask(formParent, name, version) { - editTaskForm_editTask_inner(formParent, name, version, "VIEW"); -} - -function editTaskForm_editTask(formParent, name, version) { - editTaskForm_editTask_inner(formParent, name, version, "EDIT"); -} - -function editTaskForm_editTask_inner(formParent, name, version, viewOrEdit) { - var requestURL = restRootURL + "/Task/Get?name=" + name + "&version=" + version; - ajax_getWithKeyInfo(requestURL, "apexTask", function(task) { - // Get all contextSchemas too for task inputfields - var requestURL = restRootURL + "/ContextSchema/Get?name=&version="; - var contextSchemas = new Array(); - ajax_get(requestURL, function(data2) { - for (var i = 0; i < data2.messages.message.length; i++) { - var contextSchema = JSON.parse(data2.messages.message[i]).apexContextSchema; - contextSchemas.push({ - "name" : contextSchema.key.name, - "version" : contextSchema.key.version, - "displaytext" : contextSchema.key.name + ":" + contextSchema.key.version, - "contextSchema" : contextSchema - }); - } - // Get all contextAlbums too for task context album references - var requestURL = restRootURL + "/ContextAlbum/Get?name=&version="; - var contextAlbums = new Array(); - ajax_get(requestURL, function(data3) { - for (var i = 0; i < data3.messages.message.length; i++) { - var contextAlbum = JSON.parse(data3.messages.message[i]).apexContextAlbum; - var ca = { - "name" : contextAlbum.key.name, - "version" : contextAlbum.key.version, - "displaytext" : contextAlbum.key.name + ":" + contextAlbum.key.version, - "contextAlbum" : contextAlbum - }; - contextAlbums.push(ca); - } - editTaskForm_activate(formParent, viewOrEdit, task, contextSchemas, contextAlbums); - }); - }); - }); -} - -function editTaskForm_activate(parent, operation, task, contextSchemas, contextAlbums) { - apexUtils_removeElement("editTaskFormDiv"); - var formParent = document.getElementById(parent); - apexUtils_emptyElement(parent); - - var isedit = false; - var createEditOrView = ""; - - if (!operation) { - console.warn("No operation specified for TaskForm form") - } else { - createEditOrView = operation.toUpperCase(); - } - - if (createEditOrView == "CREATE") { - isedit = true; - } else if (createEditOrView == "EDIT" || createEditOrView == "VIEW") { - if (createEditOrView == "EDIT") { - isedit = true; - } - - if (!task) { - console.warn("Invalid value (\"" + task + "\") passed as a value for \"task\" for TaskForm form."); - } else { - if (!task.key || !task.key.name || task.key.name == "") { - console.warn("Invalid value (\"" + task.key.name - + "\") passed as a value for \"name\" for TaskForm form."); - } - if (!task.key || !task.key.version || task.key.version == "") { - console.warn("Invalid value (\"" + task.key.version - + "\") passed as a value for \"version\" for TaskForm form."); - } - if (!task.uuid || task.uuid == "") { - console.warn("Invalid value (\"" + task.uuid + "\") passed as a value for \"uuid\" for TaskForm form."); - } - } - } else { - console.warn("Invalid operation (\"" + operation - + "\") specified for TaskForm form. Only \"Create\", \"Edit\" and \"View\" operations are supported"); - } - - var contentelement = document.createElement("editTaskFormDiv"); - var formDiv = document.createElement("div"); - contentelement.appendChild(formDiv); - formDiv.setAttribute("id", "editTaskFormDiv"); - formDiv.setAttribute("class", "editTaskFormDiv"); - - var headingSpan = document.createElement("h2"); - formDiv.appendChild(headingSpan); - headingSpan.innerHTML = "Task Editor"; - - var form = document.createElement("editTaskForm"); - formDiv.appendChild(form); - - form.setAttribute("id", "editTaskForm"); - form.setAttribute("class", "form-style-1"); - form.setAttribute("method", "post"); - form.setAttribute("createEditOrView", createEditOrView); - - var formul = document.createElement("ul"); - form.appendChild(formul); - - var nameLI = document.createElement("li"); - formul.appendChild(nameLI); - var nameLabel = document.createElement("label"); - nameLI.appendChild(nameLabel); - nameLabel.setAttribute("for", "editTaskFormNameInput"); - nameLabel.innerHTML = "Name: "; - var nameLabelSpan = document.createElement("span"); - nameLabel.appendChild(nameLabelSpan); - nameLabelSpan.setAttribute("class", "required"); - nameLabelSpan.innerHTML = "*"; - var nameInput = document.createElement("input"); - nameLI.appendChild(nameInput); - nameInput.setAttribute("id", "editTaskFormNameInput"); - nameInput.setAttribute("type", "text"); - nameInput.setAttribute("name", "editTaskFormNameInput"); - nameInput.setAttribute("class", "field ebInput"); - nameInput.setAttribute("placeholder", "name"); - if (task && task.key && task.key.name) { - nameInput.value = task.key.name; - } - if (createEditOrView != "CREATE") { - nameInput.readOnly = true; - } - - var versionLI = document.createElement("li"); - formul.appendChild(versionLI); - var versionLabel = document.createElement("label"); - versionLI.appendChild(versionLabel); - versionLabel.setAttribute("for", "editTaskFormVersionInput"); - versionLabel.innerHTML = "Version: "; - var versionInput = document.createElement("input"); - versionLI.appendChild(versionInput); - versionInput.setAttribute("id", "editTaskFormVersionInput"); - versionInput.setAttribute("type", "text"); - versionInput.setAttribute("name", "editTaskFormVersionInput"); - versionInput.setAttribute("class", "field ebInput"); - versionInput.setAttribute("placeholder", "0.0.1"); - if (task && task.key && task.key.version) { - versionInput.value = task.key.version; - } - if (createEditOrView != "CREATE") { - versionInput.readOnly = true; - } - - var uuidLI = document.createElement("li"); - formul.appendChild(uuidLI); - var uuidLabel = document.createElement("label"); - uuidLI.appendChild(uuidLabel); - uuidLabel.setAttribute("for", "editTaskFormUuidInput"); - uuidLabel.innerHTML = "UUID: "; - var uuidInput = document.createElement("input"); - uuidLI.appendChild(uuidInput); - uuidInput.setAttribute("id", "editTaskFormUuidInput"); - uuidInput.setAttribute("type", "text"); - uuidInput.setAttribute("name", "editTaskFormUuidInput"); - uuidInput.setAttribute("class", "field-long ebInput ebInput_width_full"); - uuidInput.setAttribute("placeholder", "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"); - if (task && task.uuid) { - uuidInput.value = task.uuid; - } - if (createEditOrView != "CREATE") { - uuidInput.readOnly = true; - } - - var edit_disabled = (createEditOrView != "CREATE" && createEditOrView != "EDIT"); - - // description - var descriptionLI = document.createElement("li"); - formul.appendChild(descriptionLI); - var descriptionLabel = document.createElement("label"); - descriptionLI.appendChild(descriptionLabel); - descriptionLabel.setAttribute("for", "editTaskFormDescriptionTextArea"); - descriptionLabel.innerHTML = "Description: "; - var descriptionTextArea = document.createElement("textarea"); - descriptionLI.appendChild(descriptionTextArea); - descriptionTextArea.setAttribute("id", "editTaskFormDescriptionTextArea"); - descriptionTextArea.setAttribute("name", "editTaskFormDescriptionTextArea"); - descriptionTextArea.setAttribute("class", "field-long field-textarea ebTextArea ebTextArea_width_full"); - if (task && task.description) { - descriptionTextArea.value = task.description; - } - descriptionTextArea.readOnly = edit_disabled; - - // input fields - var inputfieldsLI = document.createElement("li"); - formul.appendChild(inputfieldsLI); - var inputfieldsLabel = document.createElement("label"); - inputfieldsLI.appendChild(inputfieldsLabel); - inputfieldsLabel.setAttribute("for", "editTaskFormInputFieldsTable"); - inputfieldsLabel.innerHTML = "Task Input Fields: "; - var inputfieldstable = document.createElement("table"); - inputfieldstable.setAttribute("id", "editTaskFormInputFieldsTable"); - inputfieldstable.setAttribute("name", "editTaskFormInputFieldsTable"); - inputfieldstable.setAttribute("class", "table-taskinputfield"); - inputfieldsLI.appendChild(inputfieldstable); - var inputfieldstable_head = document.createElement("thead"); - inputfieldstable.appendChild(inputfieldstable_head); - var inputfieldstable_head_tr = document.createElement("tr"); - inputfieldstable_head.appendChild(inputfieldstable_head_tr); - inputfieldstable_head_tr.appendChild(document.createElement("th")); // empty, - // for - // delete - // button - var inputfieldstable_head_th = document.createElement("th"); - inputfieldstable_head_tr.appendChild(inputfieldstable_head_th); - inputfieldstable_head_th.innerHTML = "Input Field Name: "; - inputfieldstable_head_th.setAttribute("class", "table-taskinputfield-heading form-heading"); - inputfieldstable_head_th = document.createElement("th"); - inputfieldstable_head_tr.appendChild(inputfieldstable_head_th); - inputfieldstable_head_th.innerHTML = "Input Field Type/Schema: "; - inputfieldstable_head_th.setAttribute("class", "table-taskinputfield-heading form-heading"); - inputfieldstable_head_th = document.createElement("th"); - inputfieldstable_head_tr.appendChild(inputfieldstable_head_th); - inputfieldstable_head_th.innerHTML = "Optional: "; - inputfieldstable_head_th.setAttribute("class", "table-eventparam-heading form-heading"); - var inputfieldstable_body = document.createElement("tbody"); - inputfieldstable.appendChild(inputfieldstable_body); - // Add the inputfields - if (task && task.inputFields && task.inputFields.entry) { - for (var p = 0; p < task.inputFields.entry.length; p++) { - var inputfieldEntry = task.inputFields.entry[p]; - var contextSchema = inputfieldEntry.value.fieldSchemaKey; - contextSchema["displaytext"] = contextSchema.name + ":" + contextSchema.version; - editTaskForm_addTaskInputField(inputfieldstable_body, (createEditOrView == "VIEW"), inputfieldEntry.key, - inputfieldEntry.value.optional, contextSchema, contextSchemas); - } - } - // add the New Input Field button - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - var inputfieldTR = document.createElement("tr"); - inputfieldTR.setAttribute("class", "field-taskinputfield-tr.new"); - inputfieldstable_body.appendChild(inputfieldTR); - var inputfieldTD = document.createElement("td"); - inputfieldTD.setAttribute("colspan", "3"); - inputfieldTR.appendChild(inputfieldTD); - var addInputFieldInput = createAddFormButton(); - inputfieldTD.appendChild(addInputFieldInput); - addInputFieldInput.onclick = function() { - editTaskForm_addTaskInputField(inputfieldstable_body, false, null, false, null, contextSchemas); - }; - } - - // output fields - var outputfieldsLI = document.createElement("li"); - formul.appendChild(outputfieldsLI); - var outputfieldsLabel = document.createElement("label"); - outputfieldsLI.appendChild(outputfieldsLabel); - outputfieldsLabel.setAttribute("for", "editTaskFormOutputFieldsTable"); - outputfieldsLabel.innerHTML = "Task Output Fields: "; - var outputfieldstable = document.createElement("table"); - outputfieldstable.setAttribute("id", "editTaskFormOutputFieldsTable"); - outputfieldstable.setAttribute("name", "editTaskFormOutputFieldsTable"); - outputfieldstable.setAttribute("class", "table-taskoutputfield"); - outputfieldsLI.appendChild(outputfieldstable); - var outputfieldstable_head = document.createElement("thead"); - outputfieldstable.appendChild(outputfieldstable_head); - var outputfieldstable_head_tr = document.createElement("tr"); - outputfieldstable_head.appendChild(outputfieldstable_head_tr); - outputfieldstable_head_tr.appendChild(document.createElement("th")); // empty, - // for - // delete - // button - var outputfieldstable_head_th = document.createElement("th"); - outputfieldstable_head_tr.appendChild(outputfieldstable_head_th); - outputfieldstable_head_th.innerHTML = "Output Field Name: "; - outputfieldstable_head_th.setAttribute("class", "table-taskoutputfield-heading form-heading"); - outputfieldstable_head_th = document.createElement("th"); - outputfieldstable_head_tr.appendChild(outputfieldstable_head_th); - outputfieldstable_head_th.innerHTML = "Output Field Type/Schema: "; - outputfieldstable_head_th.setAttribute("class", "table-taskoutputfield-heading form-heading"); - outputfieldstable_head_th = document.createElement("th"); - outputfieldstable_head_tr.appendChild(outputfieldstable_head_th); - outputfieldstable_head_th.innerHTML = "Optional: "; - outputfieldstable_head_th.setAttribute("class", "table-eventparam-heading form-heading"); - var outputfieldstable_body = document.createElement("tbody"); - outputfieldstable.appendChild(outputfieldstable_body); - // Add the outputfields - if (task && task.outputFields && task.outputFields.entry) { - for (var p = 0; p < task.outputFields.entry.length; p++) { - var outputfieldEntry = task.outputFields.entry[p]; - var contextSchema = outputfieldEntry.value.fieldSchemaKey; - contextSchema["displaytext"] = contextSchema.name + ":" + contextSchema.version; - editTaskForm_addTaskOutputField(outputfieldstable_body, (createEditOrView == "VIEW"), outputfieldEntry.key, - outputfieldEntry.value.optional, contextSchema, contextSchemas); - } - } - // add the New Output Field button - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - var outputfieldTR = document.createElement("tr"); - outputfieldTR.setAttribute("class", "field-taskoutputfield-tr.new"); - outputfieldstable_body.appendChild(outputfieldTR); - var outputfieldTD = document.createElement("td"); - outputfieldTD.setAttribute("colspan", "3"); - outputfieldTR.appendChild(outputfieldTD); - var addOutputFieldInput = createAddFormButton(); - outputfieldTD.appendChild(addOutputFieldInput); - addOutputFieldInput.onclick = function() { - editTaskForm_addTaskOutputField(outputfieldstable_body, false, null, false, null, contextSchemas); - }; - } - - // tasklogic - var tasklogicLI = document.createElement("li"); - formul.appendChild(tasklogicLI); - var tasklogicLabel = document.createElement("label"); - tasklogicLI.appendChild(tasklogicLabel); - tasklogicLabel.setAttribute("for", "editTaskFormTaskLogicTextArea"); - tasklogicLabel.innerHTML = "Task Logic: "; - var tlogic = null; - if (task && task.taskLogic && task.taskLogic.logic) { - tlogic = task.taskLogic.logic; - } - // showHideTextarea(id_prefix, content, initialshow, editable, disabled) - var textarea = showHideTextarea("editTaskFormTaskLogicTextArea", tlogic, false, !edit_disabled, false); - - tasklogicLI.appendChild(textarea); - - // tasklogic type - var taskLogicTypeLI = document.createElement("li"); - formul.appendChild(taskLogicTypeLI); - var taskLogicTypeLabel = document.createElement("label"); - taskLogicTypeLI.appendChild(taskLogicTypeLabel); - taskLogicTypeLabel.setAttribute("for", "editTaskFormTaskLogicTypeInput"); - taskLogicTypeLabel.innerHTML = "Task Logic Type / Flavour: "; - var taskLogicTypeInput = document.createElement("input"); - taskLogicTypeLI.appendChild(taskLogicTypeInput); - taskLogicTypeInput.setAttribute("id", "editTaskFormTaskLogicTypeInput"); - taskLogicTypeInput.setAttribute("type", "text"); - taskLogicTypeInput.setAttribute("name", "editTaskFormTaskLogicTypeInput"); - taskLogicTypeInput.setAttribute("class", "field-taskLogicType ebInput"); - taskLogicTypeInput.setAttribute("placeholder", "MVEL"); - if (task && task.taskLogic && task.taskLogic.logicFlavour) { - taskLogicTypeInput.value = task.taskLogic.logicFlavour; - } - if (createEditOrView != "CREATE" && createEditOrView != "EDIT") { - taskLogicTypeInput.readOnly = true; - } - - // parameters - var paramsLI = document.createElement("li"); - formul.appendChild(paramsLI); - var paramsLabel = document.createElement("label"); - paramsLI.appendChild(paramsLabel); - paramsLabel.setAttribute("for", "editTaskFormParamsTable"); - paramsLabel.innerHTML = "Task Parameters: "; - var paramstable = document.createElement("table"); - paramstable.setAttribute("id", "editTaskFormParamsTable"); - paramstable.setAttribute("name", "editTaskFormParamsTable"); - paramstable.setAttribute("class", "table-taskparam"); - paramsLI.appendChild(paramstable); - var paramstable_head = document.createElement("thead"); - paramstable.appendChild(paramstable_head); - var paramstable_head_tr = document.createElement("tr"); - paramstable_head.appendChild(paramstable_head_tr); - paramstable_head_tr.appendChild(document.createElement("th")); // empty, - // for - // delete - // button - var paramstable_head_th = document.createElement("th"); - paramstable_head_tr.appendChild(paramstable_head_th); - paramstable_head_th.innerHTML = "Task Parameter Name: "; - paramstable_head_th.setAttribute("class", "table-taskparam-heading form-heading"); - paramstable_head_th = document.createElement("th"); - paramstable_head_tr.appendChild(paramstable_head_th); - paramstable_head_th.innerHTML = "Task Parameter Value: "; - paramstable_head_th.setAttribute("class", "table-taskparam-heading form-heading"); - var paramstable_body = document.createElement("tbody"); - paramstable.appendChild(paramstable_body); - // Add the params - if (task && task.taskParameters && task.taskParameters.entry) { - for (var p = 0; p < task.taskParameters.entry.length; p++) { - var paramEntry = task.taskParameters.entry[p]; - var paramName = paramEntry.key; - var paramValue = paramEntry.value.defaultValue; - editTaskForm_addTaskParameter(paramstable_body, (createEditOrView == "VIEW"), paramName, paramValue); - } - } - // add the Task Parameter button - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - var paramTR = document.createElement("tr"); - paramTR.setAttribute("class", "field-taskparam-tr.new"); - paramstable_body.appendChild(paramTR); - var paramTD = document.createElement("td"); - paramTD.setAttribute("colspan", "3"); - paramTR.appendChild(paramTD); - var addParamInput = createAddFormButton(); - paramTD.appendChild(addParamInput); - addParamInput.onclick = function() { - editTaskForm_addTaskParameter(paramstable_body, false, null, null); - }; - } - - // Context Albums references - var contextsLI = document.createElement("li"); - formul.appendChild(contextsLI); - var contextsLabel = document.createElement("label"); - contextsLI.appendChild(contextsLabel); - contextsLabel.setAttribute("for", "editTaskFormContextsTable"); - contextsLabel.innerHTML = "Context Albums used in Task Logic: "; - var contextstable = document.createElement("table"); - contextstable.setAttribute("id", "editTaskFormContextsTable"); - contextstable.setAttribute("name", "editTaskFormContextsTable"); - contextstable.setAttribute("class", "table-taskcontext"); - contextsLI.appendChild(contextstable); - var contextstable_head = document.createElement("thead"); - contextstable.appendChild(contextstable_head); - var contextstable_head_tr = document.createElement("tr"); - contextstable_head.appendChild(contextstable_head_tr); - contextstable_head_tr.appendChild(document.createElement("th")); // empty, - // for - // delete - // button - var contextstable_head_th = document.createElement("th"); - contextstable_head_tr.appendChild(contextstable_head_th); - contextstable_head_th.innerHTML = "Context Album: "; - contextstable_head_th.setAttribute("class", "table-taskcontext-heading form-heading"); - var contextstable_body = document.createElement("tbody"); - contextstable.appendChild(contextstable_body); - // Add the contexts - if (task && task.contextAlbumReference && $.isArray(task.contextAlbumReference)) { - for (var p = 0; p < task.contextAlbumReference.length; p++) { - var contextEntry = task.contextAlbumReference[p]; - var contextName = contextEntry.name + ":" + contextEntry.version; - var ce = { - "name" : contextEntry.name, - "version" : contextEntry.version, - "displaytext" : contextName - }; - editTaskForm_addTaskContext(contextstable_body, (createEditOrView == "VIEW"), contextName, ce, - contextAlbums); - } - } - // add the Task Context button - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - var contextTR = document.createElement("tr"); - contextTR.setAttribute("class", "field-taskcontext-tr.new"); - contextstable_body.appendChild(contextTR); - var contextTD = document.createElement("td"); - contextTD.setAttribute("colspan", "2"); - contextTR.appendChild(contextTD); - var addContextInput = createAddFormButton(); - contextTD.appendChild(addContextInput); - addContextInput.onclick = function() { - editTaskForm_addTaskContext(contextstable_body, false, null, null, contextAlbums); - }; - } - - // buttons - var inputLI = document.createElement("li"); - formul.appendChild(inputLI); - if (createEditOrView == "CREATE") { - var generateUUIDInput = document.createElement("button"); - inputLI.appendChild(generateUUIDInput); - generateUUIDInput.setAttribute("id", "generateUUID"); - generateUUIDInput.setAttribute("class", "ebBtn ebBtn_large"); - generateUUIDInput.setAttribute("type", "submit"); - generateUUIDInput.setAttribute("value", "Generate UUID"); - generateUUIDInput.onclick = editTaskForm_generateUUIDPressed; - generateUUIDInput.innerHTML = generateUUIDInput.getAttribute("value"); - var inputSpan0 = document.createElement("span"); - inputLI.appendChild(inputSpan0); - inputSpan0.setAttribute("class", "required"); - inputSpan0.innerHTML = " "; - - var generateDescriptionInput = document.createElement("button"); - inputLI.appendChild(generateDescriptionInput); - generateDescriptionInput.setAttribute("id", "generateDescription"); - generateDescriptionInput.setAttribute("class", "ebBtn ebBtn_large"); - generateDescriptionInput.setAttribute("type", "submit"); - generateDescriptionInput.setAttribute("value", "Generate Description"); - generateDescriptionInput.onclick = editTaskForm_generateDescriptionPressed; - generateDescriptionInput.innerHTML = generateDescriptionInput.getAttribute("value"); - var inputSpan1 = document.createElement("span"); - inputLI.appendChild(inputSpan1); - inputSpan1.setAttribute("class", "required"); - inputSpan1.innerHTML = " "; - } - - var cancelInput = document.createElement("button"); - inputLI.appendChild(cancelInput); - cancelInput.setAttribute("id", "cancel"); - cancelInput.setAttribute("class", "ebBtn ebBtn_large"); - cancelInput.setAttribute("type", "submit"); - cancelInput.setAttribute("value", "Cancel"); - cancelInput.onclick = editTaskForm_cancelPressed; - cancelInput.innerHTML = cancelInput.getAttribute("value"); - - if (createEditOrView == "CREATE" || createEditOrView == "EDIT") { - var inputSpan2 = document.createElement("span"); - inputLI.appendChild(inputSpan2); - inputSpan2.setAttribute("class", "required"); - inputSpan2.innerHTML = " "; - var submitInput = document.createElement("button"); - inputLI.appendChild(submitInput); - submitInput.setAttribute("id", "submit"); - submitInput.setAttribute("class", "ebBtn ebBtn_large"); - submitInput.setAttribute("type", "submit"); - submitInput.setAttribute("value", "Submit"); - submitInput.onclick = editTaskForm_submitPressed; - submitInput.innerHTML = submitInput.getAttribute("value"); - } - - formParent.appendChild(contentelement); - scrollToTop(); -} - -function editTaskForm_addTaskInputField(parentTBody, disabled, name, optional, contextSchema, contextSchemas) { - var random_suffix = formUtils_generateUUID(); - - var inputfieldTR = parentTBody.insertRow(parentTBody.rows.length - 1); - inputfieldTR.setAttribute("inputfield_id", random_suffix); - inputfieldTR.setAttribute("class", "field-taskinputfield-tr"); - if (name == null && contextSchema == null && !disabled) { - inputfieldTR.setAttribute("class", "field-taskinputfield-tr.new field-add-new"); - $(inputfieldTR).show("fast"); - } - - var deleteTD = document.createElement("td"); - inputfieldTR.appendChild(deleteTD); - var deleteDiv = document.createElement("div"); - deleteTD.appendChild(deleteDiv); - if (!disabled) { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete"); - deleteDiv.onclick = function(event) { - $(inputfieldTR).hide("fast", function() { - inputfieldTR.parentNode.removeChild(inputfieldTR); - }); - } - } else { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled"); - } - var nameTD = document.createElement("td"); - inputfieldTR.appendChild(nameTD); - var nameInput = document.createElement("input"); - nameTD.appendChild(nameInput); - nameInput.setAttribute("id", "editTaskFormInputFieldName" + "_" + random_suffix); - nameInput.setAttribute("type", "text"); - nameInput.setAttribute("name", "editTaskFormInputFieldName" + "_" + random_suffix); - nameInput.setAttribute("class", "field-taskinputfield-name ebInput ebInput_width_xLong"); - if (name == null && contextSchema == null && !disabled) { - nameInput.setAttribute("class", "field-taskinputfield-name.new ebInput ebInput_width_xLong"); - } - nameInput.setAttribute("placeholder", "Input Field Name"); - if (name) { - nameInput.value = name; - } - nameInput.readOnly = disabled; - - var contextSchemaTD = document.createElement("td"); - inputfieldTR.appendChild(contextSchemaTD); - - var selectDiv = dropdownList("editTaskFormInputFieldContextSchema" + "_" + random_suffix, contextSchemas, - contextSchema, disabled, null) - contextSchemaTD.appendChild(selectDiv); - - var inputOptionalTD = document.createElement("td"); - inputOptionalTD.setAttribute("class", "field-checkbox-center"); - inputfieldTR.appendChild(inputOptionalTD); - var inputOptional = document.createElement("input"); - inputOptional.setAttribute("type", "checkbox"); - inputOptional.setAttribute("id", "editTaskFormInputFieldOptional" + "_" + random_suffix); - inputOptional.setAttribute("name", "editTaskFormInputFieldOptional" + "_" + random_suffix); - inputOptional.setAttribute("class", "field-eventparam-optional"); - if (name == null && contextSchema == null && !disabled) { - inputOptional.setAttribute("class", "field-eventparam-optional.new"); - } - if (optional == true) { - inputOptional.checked = true; - } else { - inputOptional.checked = false; - } - inputOptional.disabled = disabled; - inputOptionalTD.appendChild(inputOptional); -} - -function editTaskForm_addTaskOutputField(parentTBody, disabled, name, optional, contextSchema, contextSchemas) { - var random_suffix = formUtils_generateUUID(); - - var outputfieldTR = parentTBody.insertRow(parentTBody.rows.length - 1); - outputfieldTR.setAttribute("outputfield_id", random_suffix); - outputfieldTR.setAttribute("class", "field-taskoutputfield-tr"); - if (name == null && contextSchema == null && !disabled) { - outputfieldTR.setAttribute("class", "field-taskoutputfield-tr.new field-add-new"); - $(outputfieldTR).show("fast"); - } - - var deleteTD = document.createElement("td"); - outputfieldTR.appendChild(deleteTD); - var deleteDiv = document.createElement("div"); - deleteTD.appendChild(deleteDiv); - if (!disabled) { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete"); - deleteDiv.onclick = function(event) { - $(outputfieldTR).hide("fast", function() { - outputfieldTR.parentNode.removeChild(outputfieldTR); - }); - } - } else { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon ebIcon_disabled"); - } - var nameTD = document.createElement("td"); - outputfieldTR.appendChild(nameTD); - var nameInput = document.createElement("input"); - nameTD.appendChild(nameInput); - nameInput.setAttribute("id", "editTaskFormOutputFieldName" + "_" + random_suffix); - nameInput.setAttribute("type", "text"); - nameInput.setAttribute("name", "editTaskFormOutputFieldName" + "_" + random_suffix); - nameInput.setAttribute("class", "field-taskoutputfield-name ebInput ebInput_width_xLong"); - if (name == null && contextSchema == null && !disabled) { - nameInput.setAttribute("class", "field-taskoutputfield-name.new ebInput ebInput_width_xLong"); - } - nameInput.setAttribute("placeholder", "Output Field Name"); - if (name) { - nameInput.value = name; - } - nameInput.readOnly = disabled; - - var contextSchemaTD = document.createElement("td"); - outputfieldTR.appendChild(contextSchemaTD); - - var selectDiv = dropdownList("editTaskFormOutputFieldContextSchema" + "_" + random_suffix, contextSchemas, - contextSchema, disabled, null) - contextSchemaTD.appendChild(selectDiv); - - var outputOptionalTD = document.createElement("td"); - outputOptionalTD.setAttribute("class", "field-checkbox-center"); - outputfieldTR.appendChild(outputOptionalTD); - var outputOptional = document.createElement("input"); - outputOptional.setAttribute("type", "checkbox"); - outputOptional.setAttribute("id", "editTaskFormOutputFieldOptional" + "_" + random_suffix); - outputOptional.setAttribute("name", "editTaskFormOutputFieldOptional" + "_" + random_suffix); - outputOptional.setAttribute("class", "field-eventparam-optional"); - if (name == null && contextSchema == null && !disabled) { - outputOptional.setAttribute("class", "field-eventparam-optional.new"); - } - if (optional == true) { - outputOptional.checked = true; - } else { - outputOptional.checked = false; - } - outputOptional.disabled = disabled; - outputOptionalTD.appendChild(outputOptional); -} - -function editTaskForm_addTaskParameter(parentTBody, disabled, name, value) { - var random_suffix = formUtils_generateUUID(); - - var paramTR = parentTBody.insertRow(parentTBody.rows.length - 1); - paramTR.setAttribute("param_id", random_suffix); - paramTR.setAttribute("class", "field-taskparam-tr"); - if (name == null && value == null && !disabled) { - paramTR.setAttribute("class", "field-taskparam-tr.new field-add-new"); - $(paramTR).show("fast"); - } - - var deleteTD = document.createElement("td"); - paramTR.appendChild(deleteTD); - var deleteDiv = document.createElement("div"); - deleteTD.appendChild(deleteDiv); - if (!disabled) { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete"); - deleteDiv.onclick = function(event) { - $(paramTR).hide("fast", function() { - paramTR.parentNode.removeChild(paramTR); - }); - } - } else { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled"); - } - var nameTD = document.createElement("td"); - paramTR.appendChild(nameTD); - var nameInput = document.createElement("input"); - nameTD.appendChild(nameInput); - nameInput.setAttribute("id", "editTaskFormParamName" + "_" + random_suffix); - nameInput.setAttribute("type", "text"); - nameInput.setAttribute("name", "editTaskFormParamName" + "_" + random_suffix); - nameInput.setAttribute("class", "field-taskparam-name ebInput ebInput_width_xLong"); - if (name == null && value == null && !disabled) { - nameInput.setAttribute("class", "field-taskparam-name.new ebInput ebInput_width_xLong"); - } - nameInput.setAttribute("placeholder", "Task Parameter Name"); - if (name) { - nameInput.value = name; - } - nameInput.readOnly = disabled; - - var valueTD = document.createElement("td"); - paramTR.appendChild(valueTD); - var paramInput = document.createElement("input"); - valueTD.appendChild(paramInput); - paramInput.setAttribute("id", "editTaskFormParamValue" + "_" + random_suffix); - paramInput.setAttribute("type", "text"); - paramInput.setAttribute("name", "editTaskFormParamValue" + "_" + random_suffix); - paramInput.setAttribute("class", "field-taskparam-value ebInput ebInput_width_xLong"); - if (name == null && value == null && !disabled) { - paramInput.setAttribute("class", "field-taskparam-value.new ebInput ebInput_width_xLong"); - } - paramInput.setAttribute("placeholder", "Task Parameter Value"); - if (value) { - paramInput.value = value; - } - paramInput.readOnly = disabled; -} - -function editTaskForm_addTaskContext(parentTBody, disabled, name, albumreference, contextAlbums) { - var random_suffix = formUtils_generateUUID(); - - var contextTR = parentTBody.insertRow(parentTBody.rows.length - 1); - contextTR.setAttribute("context_id", random_suffix); - contextTR.setAttribute("class", "field-taskcontext-tr"); - if (name == null && albumreference == null && !disabled) { - contextTR.setAttribute("class", "field-taskcontext-tr.new field-add-new"); - $(contextTR).show("fast"); - } - - var deleteTD = document.createElement("td"); - contextTR.appendChild(deleteTD); - var deleteDiv = document.createElement("div"); - deleteTD.appendChild(deleteDiv); - if (!disabled) { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete"); - deleteDiv.onclick = function(event) { - $(contextTR).hide("fast", function() { - contextTR.parentNode.removeChild(contextTR); - }); - } - } else { - deleteDiv.setAttribute("class", "ebIcon ebIcon_interactive ebIcon_delete ebIcon_disabled"); - } - var valueTD = document.createElement("td"); - contextTR.appendChild(valueTD); - - var selectDiv = dropdownList("editTaskFormContextValue" + "_" + random_suffix, contextAlbums, albumreference, - disabled, null); - valueTD.appendChild(selectDiv); -} - -function editTaskForm_generateUUIDPressed() { - document.getElementById("editTaskFormUuidInput").value = formUtils_generateUUID(); -} - -function editTaskForm_generateDescriptionPressed() { - document.getElementById("editTaskFormDescriptionTextArea").value = formUtils_generateDescription(document - .getElementById("editTaskFormNameInput").value, document.getElementById("editTaskFormVersionInput").value, - document.getElementById("editTaskFormUuidInput").value); -} - -function editTaskForm_cancelPressed() { - apexUtils_removeElement("editTaskFormDiv"); - taskTab_reset(); -} - -function editTaskForm_submitPressed() { - var createEditOrView = document.getElementById("editTaskForm").getAttribute("createEditOrView"); - if (!createEditOrView || createEditOrView == "" || (createEditOrView != "CREATE" && createEditOrView != "EDIT")) { - console.error("Invalid operation \"" + createEditOrView - + "\" passed to editTaskForm_submitPressed function. Edit failed"); - apexUtils_removeElement("editTaskFormDiv"); - taskTab_reset(); - return; - } - - var name = document.getElementById('editTaskFormNameInput').value; - var version = document.getElementById('editTaskFormVersionInput').value; - - // get the task inputfields - var taskbean_inputfields = null; - var inputfieldstablerows = document.getElementById("editTaskFormInputFieldsTable").rows; - if (inputfieldstablerows && inputfieldstablerows.length > 2) { - taskbean_inputfields = new Object(); - for (var i = 1; i < inputfieldstablerows.length - 1; i++) { - var inputfieldTR = inputfieldstablerows[i]; - if (inputfieldTR && inputfieldTR.getAttribute("inputfield_id")) { - var inputfield_id = inputfieldTR.getAttribute("inputfield_id"); - var inputfieldname = document.getElementById("editTaskFormInputFieldName" + "_" + inputfield_id).value; - var inputfield_optional = document.getElementById("editTaskFormInputFieldOptional" + "_" - + inputfield_id).checked; - var inputfield_dt = document.getElementById("editTaskFormInputFieldContextSchema" + "_" + inputfield_id - + "_dropdownList").selectedOption; - if (taskbean_inputfields[inputfieldname]) { - alert("Task \"" + name + "\" contains more than one Input Field called \"" + inputfieldname + "\""); - return false; - } - if (inputfield_dt == null) { - alert("Task \"" + name + "\" has no selected Context Item Schema for the Input Field called \"" - + inputfieldname + "\""); - return false; - } - var inputfield_dt_name = inputfield_dt.name; - var inputfield_dt_version = inputfield_dt.version; - taskbean_inputfields[inputfieldname] = { - "localName" : inputfieldname, - "name" : inputfield_dt_name, - "version" : inputfield_dt_version, - "optional" : inputfield_optional - }; - } - } - } - // get the task outputfields - var taskbean_outputfields = null; - var outputfieldstablerows = document.getElementById("editTaskFormOutputFieldsTable").rows; - if (outputfieldstablerows && outputfieldstablerows.length > 2) { - taskbean_outputfields = new Object(); - for (var i = 1; i < outputfieldstablerows.length - 1; i++) { - var outputfieldTR = outputfieldstablerows[i]; - if (outputfieldTR && outputfieldTR.getAttribute("outputfield_id")) { - var outputfield_id = outputfieldTR.getAttribute("outputfield_id"); - var outputfieldname = document.getElementById("editTaskFormOutputFieldName" + "_" + outputfield_id).value; - var outputfield_optional = document.getElementById("editTaskFormOutputFieldOptional" + "_" - + outputfield_id).checked; - var outputfield_dt = document.getElementById("editTaskFormOutputFieldContextSchema" + "_" - + outputfield_id + "_dropdownList").selectedOption; - if (taskbean_outputfields[outputfieldname]) { - alert("Task \"" + name + "\" contains more than one Output Field called \"" + outputfieldname - + "\""); - return false; - } - if (outputfield_dt == null) { - alert("Task \"" + name + "\" has no selected Context Item Schema for the Output Field called \"" - + outputfieldname + "\""); - return false; - } - var outputfield_dt_name = outputfield_dt.name; - var outputfield_dt_version = outputfield_dt.version; - taskbean_outputfields[outputfieldname] = { - "localName" : outputfieldname, - "name" : outputfield_dt_name, - "version" : outputfield_dt_version, - "optional" : outputfield_optional - }; - } - } - } - // get the logic fields - var logicfield = document.getElementById("editTaskFormTaskLogicTextArea_textarea").value; - var logictype = document.getElementById("editTaskFormTaskLogicTypeInput").value; - if (logictype == null || logictype == "") { - alert("Task \"" + name + "\" has no Task Logic Type"); - return false; - } - var tasklogic = { - "logic" : logicfield, - "logicFlavour" : logictype - }; - // get the task parameters - var taskbean_parameters = null; - var paramstablerows = document.getElementById("editTaskFormParamsTable").rows; - if (paramstablerows && paramstablerows.length > 2) { - taskbean_parameters = new Object(); - for (var i = 1; i < paramstablerows.length - 1; i++) { - var paramTR = paramstablerows[i]; - if (paramTR && paramTR.getAttribute("param_id")) { - var param_id = paramTR.getAttribute("param_id"); - var paramname = document.getElementById("editTaskFormParamName" + "_" + param_id).value; - var paramvalue = document.getElementById("editTaskFormParamValue" + "_" + param_id).value; - if (taskbean_parameters[paramname]) { - alert("Task \"" + name + "\" contains more than one Task Parameters called \"" + paramname + "\""); - return false; - } - taskbean_parameters[paramname] = { - "parameterName" : paramname, - "defaultValue" : paramvalue - }; - } - } - } - // get the context album references - var taskbean_context = null; - var contextstablerows = document.getElementById("editTaskFormContextsTable").rows; - if (contextstablerows && contextstablerows.length > 2) { - taskbean_context = new Array(); - for (var i = 1; i < contextstablerows.length - 1; i++) { - var contextTR = contextstablerows[i]; - if (contextTR && contextTR.getAttribute("context_id")) { - var context_id = contextTR.getAttribute("context_id"); - var contextalbumvalue = document.getElementById("editTaskFormContextValue" + "_" + context_id - + "_dropdownList").selectedOption; - if (contextalbumvalue == null) { - alert("Task \"" + name + "\" has Context Album reference, but no Context Album is selected"); - return false; - } - var contextalbumname = contextalbumvalue.displaytext; - for (var j = 0; j < taskbean_context.length; j++) { - if (taskbean_context[j] != null && taskbean_context[j].name == contextalbumvalue.name - && taskbean_context[j].version == contextalbumvalue.version) { - alert("Task \"" + name + "\" references Context Album \"" + contextalbumname - + "\" more than once"); - return false; - } - } - taskbean_context.push({ - "name" : contextalbumvalue.name, - "version" : contextalbumvalue.version - }); - } - } - } - - // generate an task bean to json-ify and send in rest request - var taskbean = { - "name" : name, - "version" : version, - "uuid" : document.getElementById('editTaskFormUuidInput').value, - "description" : document.getElementById('editTaskFormDescriptionTextArea').value, - "taskLogic" : tasklogic, - "inputFields" : taskbean_inputfields, - "outputFields" : taskbean_outputfields, - "parameters" : taskbean_parameters, - "contexts" : taskbean_context - } - var jsonString = JSON.stringify(taskbean); - - if (createEditOrView == "CREATE") { - var requestURL = restRootURL + "/Task/Create"; - ajax_post(requestURL, jsonString, function(resultData) { - apexUtils_removeElement("editTaskFormDiv"); - taskTab_reset(); - keyInformationTab_reset() - }); - } else if (createEditOrView == "EDIT") { - var requestURL = restRootURL + "/Task/Update"; - ajax_put(requestURL, jsonString, function(resultData) { - apexUtils_removeElement("editTaskFormDiv"); - taskTab_reset(); - keyInformationTab_reset() - }); - } - -} diff --git a/client/client-editor/src/main/resources/webapp/js/ApexTaskTab.js b/client/client-editor/src/main/resources/webapp/js/ApexTaskTab.js deleted file mode 100644 index 5671cca86..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexTaskTab.js +++ /dev/null @@ -1,175 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function taskTab_reset() { - taskTab_deactivate(); - taskTab_activate(); -} - -function taskTab_activate() { - taskTab_create(); - - var requestURL = restRootURL + "/Task/Get?name=&version="; - - ajax_get(requestURL, function(data) { - $("#taskTableBody").find("tr:gt(0)").remove(); - - for (var i = 0; i < data.messages.message.length; i++) { - var task = JSON.parse(data.messages.message[i]).apexTask; - - var taskRow_tr = document.createElement("tr"); - var taskid = task.key.name + ":" + task.key.version; - - var taskTableRow = - "" + - task.key.name + ":" + task.key.version + - "" + - "" + - task.taskLogic.logicFlavour + - ""; - - taskTableRow += ""; - for (var f = 0; f < task.inputFields.entry.length; f++) { - var fieldEntry = task.inputFields.entry[f]; - - taskTableRow += - "" + - ""; - } - taskTableRow += "
Field NameField Type/SchemaOptional
" + - fieldEntry.key + - "" + - fieldEntry.value.fieldSchemaKey.name + ":" + fieldEntry.value.fieldSchemaKey.version + - "" + - fieldEntry.value.optional + - "
"; - - taskTableRow += ""; - for (var f = 0; f < task.outputFields.entry.length; f++) { - var fieldEntry = task.outputFields.entry[f]; - - taskTableRow += - "" + - ""; - } - taskTableRow += "
Field NameField Type/SchemaOptional
" + - fieldEntry.key + - "" + - fieldEntry.value.fieldSchemaKey.name + ":" + fieldEntry.value.fieldSchemaKey.version + - "" + - fieldEntry.value.optional + - "
"; - - taskTableRow += ""; - for (var p = 0; p < task.taskParameters.entry.length; p++) { - var parameterEntry = task.taskParameters.entry[p]; - - taskTableRow += - "" + - ""; - } - taskTableRow += "
Parameter NameDefault Value
" + - parameterEntry.key + - "" + - parameterEntry.value.defaultValue + - "
"; - - taskTableRow += ""; - for (var c = 0; c < task.contextAlbumReference.length; c++) { - var contextAlbumReference = task.contextAlbumReference[c]; - - taskTableRow += - ""; - } - taskTableRow += "
" + - contextAlbumReference.name + ":" + contextAlbumReference.version + - "
"; - - taskRow_tr.innerHTML = taskTableRow; - taskRow_tr.addEventListener('contextmenu', rightClickMenu_scopePreserver("taskTabContent", "Task", task.key.name, task.key.version)); - - $("#taskTableBody").append(taskRow_tr); - - } - }); -} - -function taskTab_deactivate() { - apexUtils_removeElement("taskTabContent"); -} - -function taskTab_create() { - var taskTab = document.getElementById("tasksTab"); - - var taskTabContent = document.getElementById("taskTabContent"); - if (taskTabContent != null) { - return - } - - var taskTabContent = document.createElement("taskTabContent"); - taskTab.appendChild(taskTabContent); - taskTabContent.setAttribute("id", "taskTabContent"); - taskTabContent.addEventListener('contextmenu', rightClickMenu_scopePreserver("taskTabContent", "Task", null, null)); - - var taskTable = createTable("taskTable"); - taskTabContent.appendChild(taskTable); - - var taskTableHeader = document.createElement("thead"); - taskTable.appendChild(taskTableHeader); - taskTableHeader.setAttribute("id", "taskTableHeader"); - - var taskTableHeaderRow = document.createElement("tr"); - taskTableHeader.appendChild(taskTableHeaderRow); - taskTableHeaderRow.setAttribute("id", "taskTableHeaderRow"); - - var taskTableKeyHeader = document.createElement("th"); - taskTableHeaderRow.appendChild(taskTableKeyHeader); - taskTableKeyHeader.setAttribute("id", "taskTableKeyHeader"); - taskTableKeyHeader.appendChild(document.createTextNode("Task")); - - var taskTableLogicFlavourHeader = document.createElement("th"); - taskTableHeaderRow.appendChild(taskTableLogicFlavourHeader); - taskTableLogicFlavourHeader.setAttribute("id", "taskTableLogicFlavourHeader"); - taskTableLogicFlavourHeader.appendChild(document.createTextNode("Logic Flavour")); - - var taskTableInputFieldHeader = document.createElement("th"); - taskTableHeaderRow.appendChild(taskTableInputFieldHeader); - taskTableInputFieldHeader.setAttribute("id", "taskTableInputFieldHeader"); - taskTableInputFieldHeader.appendChild(document.createTextNode("Input Fields")); - - var taskTableOutputFieldHeader = document.createElement("th"); - taskTableHeaderRow.appendChild(taskTableOutputFieldHeader); - taskTableOutputFieldHeader.setAttribute("id", "taskTableOutputFieldHeader"); - taskTableOutputFieldHeader.appendChild(document.createTextNode("Output Fields")); - - var taskTableParameterHeader = document.createElement("th"); - taskTableHeaderRow.appendChild(taskTableParameterHeader); - taskTableParameterHeader.setAttribute("id", "taskTableParameterHeader"); - taskTableParameterHeader.appendChild(document.createTextNode("Parameters")); - - var taskTableContextReferenceHeader = document.createElement("th"); - taskTableHeaderRow.appendChild(taskTableContextReferenceHeader); - taskTableContextReferenceHeader.setAttribute("id", "taskTableContextReferenceHeader"); - taskTableContextReferenceHeader.appendChild(document.createTextNode("Context Album References")); - - var taskTableBody = document.createElement("tbody"); - taskTable.appendChild(taskTableBody); - taskTable.setAttribute("id", "taskTableBody"); -} \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/js/ApexUtils.js b/client/client-editor/src/main/resources/webapp/js/ApexUtils.js deleted file mode 100644 index 71098e838..000000000 --- a/client/client-editor/src/main/resources/webapp/js/ApexUtils.js +++ /dev/null @@ -1,126 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function apexUtils_areYouSure(message) { - return confirm(message); -} - -function apexUtils_emptyElement(elementname) { - var element = document.getElementById(elementname); - if (element != null) { - while (element.firstChild) { - element.removeChild(element.firstChild); - } - } -} - -function apexUtils_removeElement(elementname) { - var element = document.getElementById(elementname); - if (element != null) { - element.parentNode.removeChild(element); - } -} - -var _entityMap = { - '&' : '&', - '<' : '<', - '>' : '>', - '"' : '"', - "'" : ''', - '/' : '/', - '`' : '`', - '=' : '=', - '\n' : '
', - '\t' : '    ', - ' ' : ' ', -}; - -function apexUtils_escapeHtml(string) { - return String(string).replace(/[&<>"'\/\t\n ]/g, function(s) { - return _entityMap[s]; - }); -} - -function apexUtils_deleteTableRow(tablename, tablerowindex) { - document.getElementById(tablename).deleteRow(tablerowindex) -} - -function createAddFormButton(_text) { - var text = _text ? _text : "Add"; - var element = document.createElement("div"); - element.setAttribute("class", "add-field") - var addIcon = document.createElement("i"); - addIcon.setAttribute("class", "form-add-icon ebIcon ebIcon_add"); - var addText = document.createElement("span"); - addText.setAttribute("class", "form-add-text"); - addText.innerHTML = text; - element.appendChild(addIcon); - element.appendChild(addText); - return element; -} - -function createEditArea(id, options, callback) { - options = options ? options : {}; - var syntax = options.syntax ? options.syntax : "java"; - var start_highlight = options.start_highlight ? options.start_highlight : true; - var min_height = options.min_height ? options.min_height : 400; - var font_size = options.font_size ? options.font_size : 12 - var is_editable = options.hasOwnProperty("is_editable") ? options.is_editable : true; - var toolbar = options.toolbar ? options.toolbar : "select_font, |, highlight, reset_highlight"; - - setTimeout(function() { - editAreaLoader.init({ - id : id, - is_editable : is_editable, - syntax : syntax, - start_highlight : start_highlight, - min_height : min_height, - font_size : font_size, - toolbar : toolbar, - change_callback : "onEditAreaChange" - }); - }, 100); - -} - -function onEditAreaChange(id) { - $("#" + id).val(editAreaLoader.getValue(id)); -} - -function isFirefox() { - return (navigator.userAgent.indexOf("Firefox") != -1); -} - -function scrollToTop(element) { - element = element ? element : "html, body"; - $(element).animate({ - scrollTop : 0 - }, 'fast'); -} - -function getHomepageURL() { - var homepageURL = location.protocol - + "//" - + window.location.hostname - + (location.port ? ':' + location.port : '') - + (location.pathname.endsWith("/editor/") ? location.pathname.substring(0, location.pathname - .indexOf("editor/")) : location.pathname); - location.href = homepageURL; -} \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/js/contextMenu.js b/client/client-editor/src/main/resources/webapp/js/contextMenu.js deleted file mode 100644 index 1640019f8..000000000 --- a/client/client-editor/src/main/resources/webapp/js/contextMenu.js +++ /dev/null @@ -1,198 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -//hide the context menu, if it's shown, anytime the user clicks anywhere. -$(document).on("click", function(event) { - if (document.getElementById("rightClickMenu")) - document.getElementById("rightClickMenu").className = "ebContextMenu-body_visible_false"; -}); - -// Hack: need to maintain each passed parameter in a way it can be referenced by -// the onContextMenu handler function for -// each iteration inside a loop, after the passed parameter goes out of scope -// and changes. -// see -// http://stackoverflow.com/questions/750486/javascript-closure-inside-loops-simple-practical-example -function rightClickMenu_scopePreserver(parent, type, name, version) { - return function(clickevent) { - rightClickMenu(clickevent, parent, type, name, version); - } -} - -// Context menu when user right-clicks inside one of the display tabs -function rightClickMenu(event, parent, type, name, version) { - var rclickdiv = document.getElementById('rightClickMenu'); - if (rclickdiv == null) { - rclickdiv = document.createElement("div"); - document.body.appendChild(rclickdiv); - } - // clear the div - apexUtils_emptyElement('rightClickMenu'); - rclickdiv.setAttribute("id", "rightClickMenu"); - rclickdiv.setAttribute("title", type + " menu"); - rclickdiv.addEventListener("contextmenu", function(e) { - e.preventDefault(); - }, false); - - var ul = document.createElement("div"); - ul.setAttribute("class", "ebComponentList") - rclickdiv.appendChild(ul); - - var li1 = document.createElement("div"); - li1.setAttribute("class", "ebComponentList-item") - li1.onclick = function() { - return rightClickMenuCreate(parent, type); - }; - li1.innerHTML = "Create new " + type + ""; - if (type.toUpperCase() == "KEYINFORMATION") { - li1.setAttribute("class", "ebComponentList-item ebComponentList-item_disabled"); - } - ul.appendChild(li1); - - if (name) { - var value = name + ":" + version; - - var li4 = document.createElement("div"); - li4.setAttribute("class", "ebComponentList-item") - li4.onclick = function() { - return rightClickMenuView(parent, type, name, version); - }; - li4.innerHTML = "View " + type + " " + value + ""; - ul.appendChild(li4); - - var li2 = document.createElement("div"); - li2.setAttribute("class", "ebComponentList-item") - li2.onclick = function() { - return rightClickMenuEdit(parent, type, name, version); - }; - li2.innerHTML = "Edit " + type + " " + value + ""; - ul.appendChild(li2); - - var li3 = document.createElement("div"); - li3.setAttribute("class", "ebComponentList-item") - li3.onclick = function() { - return rightClickMenuDelete(parent, type, name, version); - }; - li3.innerHTML = "Delete " + type + " " + value + ""; - ul.appendChild(li3); - if (type.toUpperCase() == "KEYINFORMATION") { - li3.setAttribute("class", "ebComponentList-item ebComponentList-item_disabled"); - } - } - - // rclickdiv.setAttribute("class", "contextmenu_show"); ewatkmi: swapped - // with ebContextMenu - rclickdiv.setAttribute("class", - "ebContextMenu-body ebContextMenu-body_corner_default ebContextMenu-body_visible_true"); - rclickdiv.style.position = "absolute"; - rclickdiv.style.top = mouseY(event); - rclickdiv.style.left = mouseX(event); - - // prevent event bubbling up to parent elements for their on-click - event.stopPropagation(); - // prevent default context menu - event.returnValue = false; - event.preventDefault(); - return false; -} -function rightClickMenuCreate(parent, type) { - document.getElementById("rightClickMenu").className = "ebContextMenu-body_visible_false"; - if (type.toUpperCase() == "CONTEXTSCHEMA") { - editContextSchemaForm_createContextSchema(parent); - } else if (type.toUpperCase() == "EVENT") { - editEventForm_createEvent(parent); - } else if (type.toUpperCase() == "TASK") { - editTaskForm_createTask(parent); - } else if (type.toUpperCase() == "POLICY") { - editPolicyForm_createPolicy(parent); - } else if (type.toUpperCase() == "CONTEXTALBUM") { - editContextAlbumForm_createContextAlbum(parent); - } else { - alert("So you want to create a new " + type); - } -} -function rightClickMenuView(parent, type, value_name, value_version) { - document.getElementById("rightClickMenu").className = "ebContextMenu-body_visible_false"; - if (type.toUpperCase() == "CONTEXTSCHEMA") { - editContextSchemaForm_viewContextSchema(parent, value_name, value_version); - } else if (type.toUpperCase() == "EVENT") { - editEventForm_viewEvent(parent, value_name, value_version); - } else if (type.toUpperCase() == "TASK") { - editTaskForm_viewTask(parent, value_name, value_version); - } else if (type.toUpperCase() == "POLICY") { - editPolicyForm_viewPolicy(parent, value_name, value_version); - } else if (type.toUpperCase() == "CONTEXTALBUM") { - editContextAlbumForm_viewContextAlbum(parent, value_name, value_version); - } else { - alert("So you want to view " + type + " " + value_name + ":" + value_version); - } -} -function rightClickMenuEdit(parent, type, value_name, value_version) { - document.getElementById("rightClickMenu").className = "ebContextMenu-body_visible_false"; - if (type.toUpperCase() == "CONTEXTSCHEMA") { - editContextSchemaForm_editContextSchema(parent, value_name, value_version); - } else if (type.toUpperCase() == "EVENT") { - editEventForm_editEvent(parent, value_name, value_version); - } else if (type.toUpperCase() == "TASK") { - editTaskForm_editTask(parent, value_name, value_version); - } else if (type.toUpperCase() == "POLICY") { - editPolicyForm_editPolicy(parent, value_name, value_version); - } else if (type.toUpperCase() == "CONTEXTALBUM") { - editContextAlbumForm_editContextAlbum(parent, value_name, value_version); - } else { - alert("So you want to edit " + type + " " + value_name + ":" + value_version); - } -} -function rightClickMenuDelete(parent, type, value_name, value_version) { - document.getElementById("rightClickMenu").className = "ebContextMenu-body_visible_false"; - if (type.toUpperCase() == "CONTEXTSCHEMA") { - editContextSchemaForm_deleteContextSchema(parent, value_name, value_version); - } else if (type.toUpperCase() == "EVENT") { - editEventForm_deleteEvent(parent, value_name, value_version); - } else if (type.toUpperCase() == "TASK") { - editTaskForm_deleteTask(parent, value_name, value_version); - } else if (type.toUpperCase() == "POLICY") { - editPolicyForm_deletePolicy(parent, value_name, value_version); - } else if (type.toUpperCase() == "CONTEXTALBUM") { - editContextAlbumForm_deleteContextAlbum(parent, value_name, value_version); - } else { - alert("So you want to delete " + type + " " + value_name + ":" + value_version); - } -} -function mouseX(evt) { - if (evt.pageX) { - return evt.pageX; - } else if (evt.clientX) { - return evt.clientX - + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); - } else { - return null; - } -} -function mouseY(evt) { - if (evt.pageY) { - return evt.pageY; - } else if (evt.clientY) { - return evt.clientY - + (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop); - } else { - return null; - } -} diff --git a/client/client-editor/src/main/resources/webapp/js/dropdownList.js b/client/client-editor/src/main/resources/webapp/js/dropdownList.js deleted file mode 100644 index 8f42b8a84..000000000 --- a/client/client-editor/src/main/resources/webapp/js/dropdownList.js +++ /dev/null @@ -1,200 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -function dropdownList_option_select_scopePreserver(optionDiv, selectedOption, onselect) { - return function(event) { - dropdownList_option_select(optionDiv, selectedOption, onselect); - } -} -function dropdownList_filter_scopePreserver(optionDiv, optionUl) { - return function(event) { - dropdownList_filter(optionDiv, optionUl); - } -} -function dropdownList_option_select(divname, selectedOption, onselect) { - document.getElementById(divname + "_display").innerHTML = selectedOption.displaytext; - document.getElementById(divname)["selectedOption"] = selectedOption; - dropdownList_display_hide(divname); - if (onselect) { - onselect(selectedOption); - } -} -function dropdownList_display_click(divname, options, selected, disabled, getoptions) { - if (!document.getElementById(divname + "_options").classList.contains("dropdownList_show")) { - if (getoptions != null) { - var new_options = getoptions(); - dropdownList_ChangeOptions(document.getElementById(divname), new_options, selected, disabled, getoptions); - } - document.getElementById(divname + "_options").classList - .add("dropdownList_show", "dropdownList_display_clicked"); - } else { - document.getElementById(divname + "_options").classList.remove("dropdownList_show", - "dropdownList_display_clicked"); - } -} -function dropdownList_display_hide(optionDiv) { - document.getElementById(optionDiv + "_options").classList.remove("dropdownList_show"); -} -function dropdownList_filter(optionDiv, optionUl) { - var input, filter, ul; - var input = document.getElementById(optionDiv + "_search"); - var filter = input.value.toUpperCase(); - var ul = document.getElementById(optionDiv + "_options_list_ul"); - var lis = ul.querySelectorAll("#" + ul.id + " > li"); // get li direct - // child elements - for (var i = 0; i < lis.length; i++) { - if (lis[i].innerHTML.toUpperCase().indexOf(filter) > -1) { - lis[i].style.display = ""; - } else { - lis[i].style.display = "none"; - } - } -} - -/* - * Create a dropdown list, with a search function. - * - * Each dropdownList must have a unique "id_prefix" value as a unique identifier - * prefix "options" is an array of objects for options, where each object has a - * field called name. options[i].displaytext is a displayed text for the option - * "selected" is one of the options contained in list in the "options" - * parameter. "selected" must contain at least one field: selected.displaytext, - * where the value of selected.displaytext should be the same as - * options[i].displaytext for one of the values in options. "disabled" is a - * boolean, whether the drop down is enabled or disabled "onselect" is a - * function that is called when an option is selected, with a parameter that is - * the selected option from the passed "options" "getoptions" is a function that - * is called to dynamically retrieve options. It is called when the drop-down - * list is checked. If this is set the "options" parameter is ignored. - * - * Returns a DIV representing the dropdown list. The returned DIV will have a - * new field "selectedOption" containing one of the options in the "options" - * array, or null if no option is selected/ The returned DIV will have an id - * with value "id_prefix+'_dropdownList'", which should be unique. - */ -function dropdownList(id_prefix, options, selected, disabled, onselect, getoptions) { - var retdiv = document.createElement("div"); - var divname = id_prefix + "_dropdownList"; - retdiv.setAttribute("id", divname); - retdiv.setAttribute("class", "dropdownList"); - retdiv["_isDropDownList"] = true; - retdiv["_dropDownList_listener"] = onselect; - return dropdownList_ChangeOptions(retdiv, options, selected, disabled, getoptions); -} - -function dropdownList_ChangeOptions(dropdownListDIV, options, selected, disabled, getoptions) { - var retdiv = dropdownListDIV; - var divname = retdiv.getAttribute("id"); - if (!retdiv["_isDropDownList"]) { - console.error("Cannot provision dropdown list " + divname + " DIV because it is not a dropdown list"); - return null; - } - if (options == null && getoptions == null) { - console.error("Cannot provision dropdown list " + divname - + " DIV because it has no options and no function to get options"); - return null; - } - if (disabled && !selected) { - console.warn("Provisioning dropdown list " + divname + " that is disabled, but there is no value selected!") - } - var subdivs = retdiv.querySelectorAll("#" + divname + " > div, button"); // get - // direct - // children - // or - // retdiv - // that - // are - // divs - for (var d = 0; d < subdivs.length; d++) { - retdiv.removeChild(subdivs[d]); - } - var onselect = null; - if (retdiv["_dropDownList_listener"]) { - onselect = retdiv["_dropDownList_listener"]; - } - var display = document.createElement("div"); - retdiv.appendChild(display); - display.setAttribute("id", divname + "_display"); - retdiv["selectedOption"] = null; - - var button = document.createElement("button"); - button.setAttribute("class", "ebCombobox-helper"); - var iconHolder = document.createElement("span"); - iconHolder.setAttribute("class", "ebCombobox-iconHolder"); - var icon = document.createElement("i"); - var iconStyle = "ebIcon ebIcon_small ebIcon_downArrow_10px eb_noVertAlign"; - if (disabled) { - iconStyle += " ebIcon_disabled"; - } - icon.setAttribute("class", iconStyle); - iconHolder.appendChild(icon); - button.appendChild(iconHolder); - retdiv.appendChild(button); - - if (disabled) { - display.setAttribute("class", "dropdownList_display_disabled ebInput_width_xLong"); - } else { - display.setAttribute("class", "dropdownList_display ebInput_width_xLong"); - var onClickFunction = function(event) { - dropdownList_display_click(divname, options, selected, disabled, getoptions); - }; - display.onclick = onClickFunction; - button.onclick = onClickFunction; - } - var optionsDIV = document.createElement("div"); - retdiv.appendChild(optionsDIV); - optionsDIV.setAttribute("id", divname + "_options"); - optionsDIV.setAttribute("class", "dropdownList_options"); - var optionsSearch = document.createElement("input"); - optionsDIV.appendChild(optionsSearch); - optionsSearch.setAttribute("id", divname + "_search"); - optionsSearch.setAttribute("type", "input"); - optionsSearch.setAttribute("placeholder", "Search.."); - optionsSearch.setAttribute("class", "ebInput ebInput_width_full"); - optionsSearch.onkeyup = dropdownList_filter_scopePreserver(divname, divname + "_options_list"); - var optionsUL = document.createElement("ul"); - optionsUL.setAttribute("class", "dropdownList_options_body"); - optionsSearch.setAttribute("id", divname + "_search"); - optionsDIV.appendChild(optionsUL); - optionsUL.setAttribute("id", divname + "_options_list_ul"); - if (options) { - for (var i = 0; i < options.length; i++) { - var option = document.createElement("li"); - optionsUL.appendChild(option); - option.onclick = dropdownList_option_select_scopePreserver(divname, options[i], onselect); - option.innerHTML = options[i].displaytext; - if (selected && selected.displaytext && selected.displaytext == options[i].displaytext) { - retdiv["selectedOption"] = options[i]; - } - } - } else if (getoptions != null && selected != null) { - retdiv["selectedOption"] = selected; - } - - if (retdiv["selectedOption"] != null) { - display.innerHTML = retdiv["selectedOption"].displaytext; - display.title = display.innerHTML; - } else if (retdiv["selectedOption"] == null && !disabled) { - display.innerHTML = "Select an Option"; - } else if (retdiv["selectedOption"] == null && disabled) { - display.innerHTML = "No Option Selected"; - } - return retdiv; -} diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/edit_area_full.js b/client/client-editor/src/main/resources/webapp/js/edit_area/edit_area_full.js deleted file mode 100644 index 3521d8301..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/edit_area_full.js +++ /dev/null @@ -1,1235 +0,0 @@ - function EAL() { - var t = this; - t.version = "0.8.2"; - date = new Date(); - t.start_time = date.getTime(); - t.win = "loading"; - t.error = false; - t.baseURL = ""; - t.template = ""; - t.lang = {}; - t.load_syntax = {}; - t.syntax = {}; - t.loadedFiles = []; - t.waiting_loading = {}; - t.scripts_to_load = []; - t.sub_scripts_to_load = []; - t.syntax_display_name = { - 'basic': 'Basic', - 'brainfuck': 'Brainfuck', - 'c': 'C', - 'coldfusion': 'Coldfusion', - 'cpp': 'CPP', - 'css': 'CSS', - 'html': 'HTML', - 'java': 'Java', - 'js': 'Javascript', - 'pas': 'Pascal', - 'perl': 'Perl', - 'php': 'Php', - 'python': 'Python', - 'robotstxt': 'Robots txt', - 'ruby': 'Ruby', - 'sql': 'SQL', - 'tsql': 'T-SQL', - 'vb': 'Visual Basic', - 'xml': 'XML' - }; - t.resize = []; - t.hidden = {}; - t.default_settings = { - debug: false, - smooth_selection: true, - font_size: "10", - font_family: "monospace", - start_highlight: false, - toolbar: "search,go_to_line,fullscreen,|,undo,redo,|,select_font,|,change_smooth_selection,highlight,reset_highlight,word_wrap,|,help", - begin_toolbar: "", - end_toolbar: "", - is_multi_files: false, - allow_resize: "both", - show_line_colors: false, - min_width: 400, - min_height: 125, - replace_tab_by_spaces: false, - allow_toggle: true, - language: "en", - syntax: "", - syntax_selection_allow: "basic,brainfuck,c,coldfusion,cpp,css,html,java,js,pas,perl,php,python,ruby,robotstxt,sql,tsql,vb,xml", - display: "onload", - max_undo: 30, - browsers: "known", - plugins: "", - gecko_spellcheck: false, - fullscreen: false, - is_editable: true, - cursor_position: "begin", - word_wrap: false, - autocompletion: false, - load_callback: "", - save_callback: "", - change_callback: "", - submit_callback: "", - EA_init_callback: "", - EA_delete_callback: "", - EA_load_callback: "", - EA_unload_callback: "", - EA_toggle_on_callback: "", - EA_toggle_off_callback: "", - EA_file_switch_on_callback: "", - EA_file_switch_off_callback: "", - EA_file_close_callback: "" - }; - t.advanced_buttons = [ - ['new_document', 'newdocument.gif', 'new_document', false], - ['search', 'search.gif', 'show_search', false], - ['go_to_line', 'go_to_line.gif', 'go_to_line', false], - ['undo', 'undo.gif', 'undo', true], - ['redo', 'redo.gif', 'redo', true], - ['change_smooth_selection', 'smooth_selection.gif', 'change_smooth_selection_mode', true], - ['reset_highlight', 'reset_highlight.gif', 'resync_highlight', true], - ['highlight', 'highlight.gif', 'change_highlight', true], - ['help', 'help.gif', 'show_help', false], - ['save', 'save.gif', 'save', false], - ['load', 'load.gif', 'load', false], - ['fullscreen', 'fullscreen.gif', 'toggle_full_screen', false], - ['word_wrap', 'word_wrap.gif', 'toggle_word_wrap', true], - ['autocompletion', 'autocompletion.gif', 'toggle_autocompletion', true] - ]; - t.set_browser_infos(t); - if (t.isIE >= 6 || t.isGecko || (t.isWebKit && !t.isSafari < 3) || t.isOpera >= 9 || t.isCamino) t.isValidBrowser = true; - else t.isValidBrowser = false; - t.set_base_url(); - for (var i = 0; i < t.scripts_to_load.length; i++) { - setTimeout("eAL.load_script('" + t.baseURL + t.scripts_to_load[i] + ".js');", 1); - t.waiting_loading[t.scripts_to_load[i] + ".js"] = false; - } - t.add_event(window, "load", EAL.prototype.window_loaded); - }; - EAL.prototype = { - has_error: function() { - this.error = true; - for (var i in EAL.prototype) { - EAL.prototype[i] = function() {}; - } - }, - set_browser_infos: function(o) { - ua = navigator.userAgent; - o.isWebKit = /WebKit/.test(ua); - o.isGecko = !o.isWebKit && /Gecko/.test(ua); - o.isMac = /Mac/.test(ua); - o.isIE = (navigator.appName == "Microsoft Internet Explorer"); - if (o.isIE) { - o.isIE = ua.replace(/^.*?MSIE\s+([0-9\.]+).*$/, "$1"); - if (o.isIE < 6) o.has_error(); - } - if (o.isOpera = (ua.indexOf('Opera') != -1)) { - o.isOpera = ua.replace(/^.*?Opera.*?([0-9\.]+).*$/i, "$1"); - if (o.isOpera < 9) o.has_error(); - o.isIE = false; - } - if (o.isFirefox = (ua.indexOf('Firefox') != -1)) o.isFirefox = ua.replace(/^.*?Firefox.*?([0-9\.]+).*$/i, "$1"); - if (ua.indexOf('Iceweasel') != -1) o.isFirefox = ua.replace(/^.*?Iceweasel.*?([0-9\.]+).*$/i, "$1"); - if (ua.indexOf('GranParadiso') != -1) o.isFirefox = ua.replace(/^.*?GranParadiso.*?([0-9\.]+).*$/i, "$1"); - if (ua.indexOf('BonEcho') != -1) o.isFirefox = ua.replace(/^.*?BonEcho.*?([0-9\.]+).*$/i, "$1"); - if (ua.indexOf('SeaMonkey') != -1) o.isFirefox = (ua.replace(/^.*?SeaMonkey.*?([0-9\.]+).*$/i, "$1")) + 1; - if (o.isCamino = (ua.indexOf('Camino') != -1)) o.isCamino = ua.replace(/^.*?Camino.*?([0-9\.]+).*$/i, "$1"); - if (o.isSafari = (ua.indexOf('Safari') != -1)) o.isSafari = ua.replace(/^.*?Version\/([0-9]+\.[0-9]+).*$/i, "$1"); - if (o.isChrome = (ua.indexOf('Chrome') != -1)) { - o.isChrome = ua.replace(/^.*?Chrome.*?([0-9\.]+).*$/i, "$1"); - o.isSafari = false; - } - }, - window_loaded: function() { - eAL.win = "loaded"; - if (document.forms) { - for (var i = 0; i < document.forms.length; i++) { - var form = document.forms[i]; - form.edit_area_replaced_submit = null; - try { - form.edit_area_replaced_submit = form.onsubmit; - form.onsubmit = ""; - } catch (e) {} - eAL.add_event(form, "submit", EAL.prototype.submit); - eAL.add_event(form, "reset", EAL.prototype.reset); - } - } - eAL.add_event(window, "unload", function() { - for (var i in eAs) { - eAL.delete_instance(i); - } - }); - }, - init_ie_textarea: function(id) { - var a = document.getElementById(id); - try { - if (a && typeof(a.focused) == "undefined") { - a.focus(); - a.focused = true; - a.selectionStart = a.selectionEnd = 0; - get_IE_selection(a); - eAL.add_event(a, "focus", IE_textarea_focus); - eAL.add_event(a, "blur", IE_textarea_blur); - } - } catch (ex) {} - }, - init: function(settings) { - var t = this, - s = settings, - i; - if (!s["id"]) t.has_error(); - if (t.error) return; - if (eAs[s["id"]]) t.delete_instance(s["id"]); - for (i in t.default_settings) { - if (typeof(s[i]) == "undefined") s[i] = t.default_settings[i]; - } - if (s["browsers"] == "known" && t.isValidBrowser == false) { - return; - } - if (s["begin_toolbar"].length > 0) s["toolbar"] = s["begin_toolbar"] + "," + s["toolbar"]; - if (s["end_toolbar"].length > 0) s["toolbar"] = s["toolbar"] + "," + s["end_toolbar"]; - s["tab_toolbar"] = s["toolbar"].replace(/ /g, "").split(","); - s["plugins"] = s["plugins"].replace(/ /g, "").split(","); - for (i = 0; i < s["plugins"].length; i++) { - if (s["plugins"][i].length == 0) s["plugins"].splice(i, 1); - } - t.get_template(); - t.load_script(t.baseURL + "langs/" + s["language"] + ".js"); - if (s["syntax"].length > 0) { - s["syntax"] = s["syntax"].toLowerCase(); - t.load_script(t.baseURL + "reg_syntax/" + s["syntax"] + ".js"); - } - eAs[s["id"]] = { - "settings": s - }; - eAs[s["id"]]["displayed"] = false; - eAs[s["id"]]["hidden"] = false; - t.start(s["id"]); - }, - delete_instance: function(id) { - var d = document, - fs = window.frames, - span, iframe; - eAL.execCommand(id, "EA_delete"); - if (fs["frame_" + id] && fs["frame_" + id].editArea) { - if (eAs[id]["displayed"]) eAL.toggle(id, "off"); - fs["frame_" + id].editArea.execCommand("EA_unload"); - } - span = d.getElementById("EditAreaArroundInfos_" + id); - if (span) span.parentNode.removeChild(span); - iframe = d.getElementById("frame_" + id); - if (iframe) { - iframe.parentNode.removeChild(iframe); - try { - delete fs["frame_" + id]; - } catch (e) {} - } - delete eAs[id]; - }, - start: function(id) { - var t = this, - d = document, - f, span, father, next, html = '', - html_toolbar_content = '', - template, content, i; - if (t.win != "loaded") { - setTimeout("eAL.start('" + id + "');", 50); - return; - } - for (i in t.waiting_loading) { - if (t.waiting_loading[i] != "loaded" && typeof(t.waiting_loading[i]) != "function") { - setTimeout("eAL.start('" + id + "');", 50); - return; - } - } - if (!t.lang[eAs[id]["settings"]["language"]] || (eAs[id]["settings"]["syntax"].length > 0 && !t.load_syntax[eAs[id]["settings"]["syntax"]])) { - setTimeout("eAL.start('" + id + "');", 50); - return; - } - if (eAs[id]["settings"]["syntax"].length > 0) t.init_syntax_regexp(); - if (!d.getElementById("EditAreaArroundInfos_" + id) && (eAs[id]["settings"]["debug"] || eAs[id]["settings"]["allow_toggle"])) { - span = d.createElement("span"); - span.id = "EditAreaArroundInfos_" + id; - if (eAs[id]["settings"]["allow_toggle"]) { - checked = (eAs[id]["settings"]["display"] == "onload") ? "checked='checked'" : ""; - html += "
"; - html += ""; - html += "
"; - } - if (eAs[id]["settings"]["debug"]) html += "
"; - html = t.translate(html, eAs[id]["settings"]["language"]); - span.innerHTML = html; - father = d.getElementById(id).parentNode; - next = d.getElementById(id).nextSibling; - if (next == null) father.appendChild(span); - else father.insertBefore(span, next); - } - if (!eAs[id]["initialized"]) { - t.execCommand(id, "EA_init"); - if (eAs[id]["settings"]["display"] == "later") { - eAs[id]["initialized"] = true; - return; - } - } - if (t.isIE) { - t.init_ie_textarea(id); - } - var area = eAs[id]; - for (i = 0; i < area["settings"]["tab_toolbar"].length; i++) { - html_toolbar_content += t.get_control_html(area["settings"]["tab_toolbar"][i], area["settings"]["language"]); - } - html_toolbar_content = t.translate(html_toolbar_content, area["settings"]["language"], "template"); - if (!t.iframe_script) { - t.iframe_script = ""; - for (i = 0; i < t.sub_scripts_to_load.length; i++) t.iframe_script += ''; - } - for (i = 0; i < area["settings"]["plugins"].length; i++) { - if (!t.all_plugins_loaded) t.iframe_script += ''; - t.iframe_script += ''; - } - if (!t.iframe_css) { - t.iframe_css = ""; - } - template = t.template.replace(/\[__BASEURL__\]/g, t.baseURL); - template = template.replace("[__TOOLBAR__]", html_toolbar_content); - template = t.translate(template, area["settings"]["language"], "template"); - template = template.replace("[__CSSRULES__]", t.iframe_css); - template = template.replace("[__JSCODE__]", t.iframe_script); - template = template.replace("[__EA_VERSION__]", t.version); - area.textarea = d.getElementById(area["settings"]["id"]); - eAs[area["settings"]["id"]]["textarea"] = area.textarea; - if (typeof(window.frames["frame_" + area["settings"]["id"]]) != 'undefined') delete window.frames["frame_" + area["settings"]["id"]]; - father = area.textarea.parentNode; - content = d.createElement("iframe"); - content.name = "frame_" + area["settings"]["id"]; - content.id = "frame_" + area["settings"]["id"]; - content.style.borderWidth = "0px"; - setAttribute(content, "frameBorder", "0"); - content.style.overflow = "hidden"; - content.style.display = "none"; - next = area.textarea.nextSibling; - if (next == null) father.appendChild(content); - else father.insertBefore(content, next); - f = window.frames["frame_" + area["settings"]["id"]]; - f.document.open(); - f.eAs = eAs; - f.area_id = area["settings"]["id"]; - f.document.area_id = area["settings"]["id"]; - f.document.write(template); - f.document.close(); - }, - toggle: function(id, toggle_to) { - if (!toggle_to) toggle_to = (eAs[id]["displayed"] == true) ? "off" : "on"; - if (eAs[id]["displayed"] == true && toggle_to == "off") { - this.toggle_off(id); - } else if (eAs[id]["displayed"] == false && toggle_to == "on") { - this.toggle_on(id); - } - return false; - }, - toggle_off: function(id) { - var fs = window.frames, - f, t, parNod, nxtSib, selStart, selEnd, scrollTop, scrollLeft; - if (fs["frame_" + id]) { - f = fs["frame_" + id]; - t = eAs[id]["textarea"]; - if (f.editArea.fullscreen['isFull']) f.editArea.toggle_full_screen(false); - eAs[id]["displayed"] = false; - t.wrap = "off"; - setAttribute(t, "wrap", "off"); - parNod = t.parentNode; - nxtSib = t.nextSibling; - parNod.removeChild(t); - parNod.insertBefore(t, nxtSib); - t.value = f.editArea.textarea.value; - selStart = f.editArea.last_selection["selectionStart"]; - selEnd = f.editArea.last_selection["selectionEnd"]; - scrollTop = f.document.getElementById("result").scrollTop; - scrollLeft = f.document.getElementById("result").scrollLeft; - document.getElementById("frame_" + id).style.display = 'none'; - t.style.display = "inline"; - try { - t.focus(); - } catch (e) {}; - if (this.isIE) { - t.selectionStart = selStart; - t.selectionEnd = selEnd; - t.focused = true; - set_IE_selection(t); - } else { - if (this.isOpera && this.isOpera < 9.6) { - t.setSelectionRange(0, 0); - } - try { - t.setSelectionRange(selStart, selEnd); - } catch (e) {}; - } - t.scrollTop = scrollTop; - t.scrollLeft = scrollLeft; - f.editArea.execCommand("toggle_off"); - } - }, - toggle_on: function(id) { - var fs = window.frames, - f, t, selStart = 0, - selEnd = 0, - scrollTop = 0, - scrollLeft = 0, - curPos, elem; - if (fs["frame_" + id]) { - f = fs["frame_" + id]; - t = eAs[id]["textarea"]; - area = f.editArea; - area.textarea.value = t.value; - curPos = eAs[id]["settings"]["cursor_position"]; - if (t.use_last == true) { - selStart = t.last_selectionStart; - selEnd = t.last_selectionEnd; - scrollTop = t.last_scrollTop; - scrollLeft = t.last_scrollLeft; - t.use_last = false; - } else if (curPos == "auto") { - try { - selStart = t.selectionStart; - selEnd = t.selectionEnd; - scrollTop = t.scrollTop; - scrollLeft = t.scrollLeft; - } catch (ex) {} - } - this.set_editarea_size_from_textarea(id, document.getElementById("frame_" + id)); - t.style.display = "none"; - document.getElementById("frame_" + id).style.display = "inline"; - area.execCommand("focus"); - eAs[id]["displayed"] = true; - area.execCommand("update_size"); - f.document.getElementById("result").scrollTop = scrollTop; - f.document.getElementById("result").scrollLeft = scrollLeft; - area.area_select(selStart, selEnd - selStart); - area.execCommand("toggle_on"); - } else { - elem = document.getElementById(id); - elem.last_selectionStart = elem.selectionStart; - elem.last_selectionEnd = elem.selectionEnd; - elem.last_scrollTop = elem.scrollTop; - elem.last_scrollLeft = elem.scrollLeft; - elem.use_last = true; - eAL.start(id); - } - }, - set_editarea_size_from_textarea: function(id, frame) { - var elem, width, height; - elem = document.getElementById(id); - width = Math.max(eAs[id]["settings"]["min_width"], elem.offsetWidth) + "px"; - height = Math.max(eAs[id]["settings"]["min_height"], elem.offsetHeight) + "px"; - if (elem.style.width.indexOf("%") != -1) width = elem.style.width; - if (elem.style.height.indexOf("%") != -1) height = elem.style.height; - frame.style.width = width; - frame.style.height = height; - }, - set_base_url: function() { - var t = this, - elems, i, docBasePath; - if (!this.baseURL) { - elems = document.getElementsByTagName('script'); - for (i = 0; i < elems.length; i++) { - if (elems[i].src && elems[i].src.match(/edit_area_[^\\\/]*$/i)) { - var src = unescape(elems[i].src); - src = src.substring(0, src.lastIndexOf('/')); - this.baseURL = src; - this.file_name = elems[i].src.substr(elems[i].src.lastIndexOf("/") + 1); - break; - } - } - } - docBasePath = document.location.href; - if (docBasePath.indexOf('?') != -1) docBasePath = docBasePath.substring(0, docBasePath.indexOf('?')); - docBasePath = docBasePath.substring(0, docBasePath.lastIndexOf('/')); - if (t.baseURL.indexOf('://') == -1 && t.baseURL.charAt(0) != '/') { - t.baseURL = docBasePath + "/" + t.baseURL; - } - t.baseURL += "/"; - }, - get_button_html: function(id, img, exec, isFileSpecific, baseURL) { - var cmd, html; - if (!baseURL) baseURL = this.baseURL; - cmd = 'editArea.execCommand(\'' + exec + '\')'; - html = ''; - html += ''; - return html; - }, - get_control_html: function(button_name, lang) { - var t = this, - i, but, html, si; - for (i = 0; i < t.advanced_buttons.length; i++) { - but = t.advanced_buttons[i]; - if (but[0] == button_name) { - return t.get_button_html(but[0], but[1], but[2], but[3]); - } - } - switch (button_name) { - case "*": - case "return": - return "
"; - case "|": - case "separator": - return ''; - case "select_font": - html = ""; - return html; - case "syntax_selection": - html = ""; - return html; - } - return "[" + button_name + "]"; - }, - get_template: function() { - if (this.template == "") { - var xhr_object = null; - if (window.XMLHttpRequest) xhr_object = new XMLHttpRequest(); - else if (window.ActiveXObject) xhr_object = new ActiveXObject("Microsoft.XMLHTTP"); - else { - alert("XMLHTTPRequest not supported. EditArea not loaded"); - return; - } - xhr_object.open("GET", this.baseURL + "template.html", false); - xhr_object.send(null); - if (xhr_object.readyState == 4) this.template = xhr_object.responseText; - else this.has_error(); - } - }, - translate: function(text, lang, mode) { - if (mode == "word") text = eAL.get_word_translation(text, lang); - else if (mode = "template") { - eAL.current_language = lang; - text = text.replace(/\{\$([^\}]+)\}/gm, eAL.translate_template); - } - return text; - }, - translate_template: function() { - return eAL.get_word_translation(EAL.prototype.translate_template.arguments[1], eAL.current_language); - }, - get_word_translation: function(val, lang) { - var i; - for (i in eAL.lang[lang]) { - if (i == val) return eAL.lang[lang][i]; - } - return "_" + val; - }, - load_script: function(url) { - var t = this, - d = document, - script, head; - if (t.loadedFiles[url]) return; - try { - script = d.createElement("script"); - script.type = "text/javascript"; - script.src = url; - script.charset = "UTF-8"; - d.getElementsByTagName("head")[0].appendChild(script); - } catch (e) { - d.write(''); - } - t.loadedFiles[url] = true; - }, - add_event: function(obj, name, handler) { - try { - if (obj.attachEvent) { - obj.attachEvent("on" + name, handler); - } else { - obj.addEventListener(name, handler, false); - } - } catch (e) {} - }, - remove_event: function(obj, name, handler) { - try { - if (obj.detachEvent) obj.detachEvent("on" + name, handler); - else obj.removeEventListener(name, handler, false); - } catch (e) {} - }, - reset: function(e) { - var formObj, is_child, i, x; - formObj = eAL.isIE ? window.event.srcElement : e.target; - if (formObj.tagName != 'FORM') formObj = formObj.form; - for (i in eAs) { - is_child = false; - for (x = 0; x < formObj.elements.length; x++) { - if (formObj.elements[x].id == i) is_child = true; - } - if (window.frames["frame_" + i] && is_child && eAs[i]["displayed"] == true) { - var exec = 'window.frames["frame_' + i + '"].editArea.textarea.value=document.getElementById("' + i + '").value;'; - exec += 'window.frames["frame_' + i + '"].editArea.execCommand("focus");'; - exec += 'window.frames["frame_' + i + '"].editArea.check_line_selection();'; - exec += 'window.frames["frame_' + i + '"].editArea.execCommand("reset");'; - window.setTimeout(exec, 10); - } - } - return; - }, - submit: function(e) { - var formObj, is_child, fs = window.frames, - i, x; - formObj = eAL.isIE ? window.event.srcElement : e.target; - if (formObj.tagName != 'FORM') formObj = formObj.form; - for (i in eAs) { - is_child = false; - for (x = 0; x < formObj.elements.length; x++) { - if (formObj.elements[x].id == i) is_child = true; - } - if (is_child) { - if (fs["frame_" + i] && eAs[i]["displayed"] == true) document.getElementById(i).value = fs["frame_" + i].editArea.textarea.value; - eAL.execCommand(i, "EA_submit"); - } - } - if (typeof(formObj.edit_area_replaced_submit) == "function") { - res = formObj.edit_area_replaced_submit(); - if (res == false) { - if (eAL.isIE) return false; - else e.preventDefault(); - } - } - return; - }, - getValue: function(id) { - if (window.frames["frame_" + id] && eAs[id]["displayed"] == true) { - return window.frames["frame_" + id].editArea.textarea.value; - } else if (elem = document.getElementById(id)) { - return elem.value; - } - return false; - }, - setValue: function(id, new_val) { - var fs = window.frames; - if ((f = fs["frame_" + id]) && eAs[id]["displayed"] == true) { - f.editArea.textarea.value = new_val; - f.editArea.execCommand("focus"); - f.editArea.check_line_selection(false); - f.editArea.execCommand("onchange"); - } else if (elem = document.getElementById(id)) { - elem.value = new_val; - } - }, - getSelectionRange: function(id) { - var sel, eA, fs = window.frames; - sel = { - "start": 0, - "end": 0 - }; - if (fs["frame_" + id] && eAs[id]["displayed"] == true) { - eA = fs["frame_" + id].editArea; - sel["start"] = eA.textarea.selectionStart; - sel["end"] = eA.textarea.selectionEnd; - } else if (elem = document.getElementById(id)) { - sel = getSelectionRange(elem); - } - return sel; - }, - setSelectionRange: function(id, new_start, new_end) { - var fs = window.frames; - if (fs["frame_" + id] && eAs[id]["displayed"] == true) { - fs["frame_" + id].editArea.area_select(new_start, new_end - new_start); - if (!this.isIE) { - fs["frame_" + id].editArea.check_line_selection(false); - fs["frame_" + id].editArea.scroll_to_view(); - } - } else if (elem = document.getElementById(id)) { - setSelectionRange(elem, new_start, new_end); - } - }, - getSelectedText: function(id) { - var sel = this.getSelectionRange(id); - return this.getValue(id).substring(sel["start"], sel["end"]); - }, - setSelectedText: function(id, new_val) { - var fs = window.frames, - d = document, - sel, text, scrollTop, scrollLeft, new_sel_end; - new_val = new_val.replace(/\r/g, ""); - sel = this.getSelectionRange(id); - text = this.getValue(id); - if (fs["frame_" + id] && eAs[id]["displayed"] == true) { - scrollTop = fs["frame_" + id].document.getElementById("result").scrollTop; - scrollLeft = fs["frame_" + id].document.getElementById("result").scrollLeft; - } else { - scrollTop = d.getElementById(id).scrollTop; - scrollLeft = d.getElementById(id).scrollLeft; - } - text = text.substring(0, sel["start"]) + new_val + text.substring(sel["end"]); - this.setValue(id, text); - new_sel_end = sel["start"] + new_val.length; - this.setSelectionRange(id, sel["start"], new_sel_end); - if (new_val != this.getSelectedText(id).replace(/\r/g, "")) { - this.setSelectionRange(id, sel["start"], new_sel_end + new_val.split("\n").length - 1); - } - if (fs["frame_" + id] && eAs[id]["displayed"] == true) { - fs["frame_" + id].document.getElementById("result").scrollTop = scrollTop; - fs["frame_" + id].document.getElementById("result").scrollLeft = scrollLeft; - fs["frame_" + id].editArea.execCommand("onchange"); - } else { - d.getElementById(id).scrollTop = scrollTop; - d.getElementById(id).scrollLeft = scrollLeft; - } - }, - insertTags: function(id, open_tag, close_tag) { - var old_sel, new_sel; - old_sel = this.getSelectionRange(id); - text = open_tag + this.getSelectedText(id) + close_tag; - eAL.setSelectedText(id, text); - new_sel = this.getSelectionRange(id); - if (old_sel["end"] > old_sel["start"]) this.setSelectionRange(id, new_sel["end"], new_sel["end"]); - else this.setSelectionRange(id, old_sel["start"] + open_tag.length, old_sel["start"] + open_tag.length); - }, - hide: function(id) { - var fs = window.frames, - d = document, - t = this, - scrollTop, scrollLeft, span; - if (d.getElementById(id) && !t.hidden[id]) { - t.hidden[id] = {}; - t.hidden[id]["selectionRange"] = t.getSelectionRange(id); - if (d.getElementById(id).style.display != "none") { - t.hidden[id]["scrollTop"] = d.getElementById(id).scrollTop; - t.hidden[id]["scrollLeft"] = d.getElementById(id).scrollLeft; - } - if (fs["frame_" + id]) { - t.hidden[id]["toggle"] = eAs[id]["displayed"]; - if (fs["frame_" + id] && eAs[id]["displayed"] == true) { - scrollTop = fs["frame_" + id].document.getElementById("result").scrollTop; - scrollLeft = fs["frame_" + id].document.getElementById("result").scrollLeft; - } else { - scrollTop = d.getElementById(id).scrollTop; - scrollLeft = d.getElementById(id).scrollLeft; - } - t.hidden[id]["scrollTop"] = scrollTop; - t.hidden[id]["scrollLeft"] = scrollLeft; - if (eAs[id]["displayed"] == true) eAL.toggle_off(id); - } - span = d.getElementById("EditAreaArroundInfos_" + id); - if (span) { - span.style.display = 'none'; - } - d.getElementById(id).style.display = "none"; - } - }, - show: function(id) { - var fs = window.frames, - d = document, - t = this, - span; - if ((elem = d.getElementById(id)) && t.hidden[id]) { - elem.style.display = "inline"; - elem.scrollTop = t.hidden[id]["scrollTop"]; - elem.scrollLeft = t.hidden[id]["scrollLeft"]; - span = d.getElementById("EditAreaArroundInfos_" + id); - if (span) { - span.style.display = 'inline'; - } - if (fs["frame_" + id]) { - elem.style.display = "inline"; - if (t.hidden[id]["toggle"] == true) eAL.toggle_on(id); - scrollTop = t.hidden[id]["scrollTop"]; - scrollLeft = t.hidden[id]["scrollLeft"]; - if (fs["frame_" + id] && eAs[id]["displayed"] == true) { - fs["frame_" + id].document.getElementById("result").scrollTop = scrollTop; - fs["frame_" + id].document.getElementById("result").scrollLeft = scrollLeft; - } else { - elem.scrollTop = scrollTop; - elem.scrollLeft = scrollLeft; - } - } - sel = t.hidden[id]["selectionRange"]; - t.setSelectionRange(id, sel["start"], sel["end"]); - delete t.hidden[id]; - } - }, - getCurrentFile: function(id) { - return this.execCommand(id, 'get_file', this.execCommand(id, 'curr_file')); - }, - getFile: function(id, file_id) { - return this.execCommand(id, 'get_file', file_id); - }, - getAllFiles: function(id) { - return this.execCommand(id, 'get_all_files()'); - }, - openFile: function(id, file_infos) { - return this.execCommand(id, 'open_file', file_infos); - }, - closeFile: function(id, file_id) { - return this.execCommand(id, 'close_file', file_id); - }, - setFileEditedMode: function(id, file_id, to) { - var reg1, reg2; - reg1 = new RegExp('\\\\', 'g'); - reg2 = new RegExp('"', 'g'); - return this.execCommand(id, 'set_file_edited_mode("' + file_id.replace(reg1, '\\\\').replace(reg2, '\\"') + '",' + to + ')'); - }, - execCommand: function(id, cmd, fct_param) { - switch (cmd) { - case "EA_init": - if (eAs[id]['settings']["EA_init_callback"].length > 0) eval(eAs[id]['settings']["EA_init_callback"] + "('" + id + "');"); - break; - case "EA_delete": - if (eAs[id]['settings']["EA_delete_callback"].length > 0) eval(eAs[id]['settings']["EA_delete_callback"] + "('" + id + "');"); - break; - case "EA_submit": - if (eAs[id]['settings']["submit_callback"].length > 0) eval(eAs[id]['settings']["submit_callback"] + "('" + id + "');"); - break; - } - if (window.frames["frame_" + id] && window.frames["frame_" + id].editArea) { - if (fct_param != undefined) return eval('window.frames["frame_' + id + '"].editArea.' + cmd + '(fct_param);'); - else return eval('window.frames["frame_' + id + '"].editArea.' + cmd + ';'); - } - return false; - } - }; - var eAL = new EAL(); - var eAs = {}; - - function getAttribute(elm, aName) { - var aValue, taName, i; - try { - aValue = elm.getAttribute(aName); - } catch (exept) {} - if (!aValue) { - for (i = 0; i < elm.attributes.length; i++) { - taName = elm.attributes[i].name.toLowerCase(); - if (taName == aName) { - aValue = elm.attributes[i].value; - return aValue; - } - } - } - return aValue; - }; - - function setAttribute(elm, attr, val) { - if (attr == "class") { - elm.setAttribute("className", val); - elm.setAttribute("class", val); - } else { - elm.setAttribute(attr, val); - } - }; - - function getChildren(elem, elem_type, elem_attribute, elem_attribute_match, option, depth) { - if (!option) var option = "single"; - if (!depth) var depth = -1; - if (elem) { - var children = elem.childNodes; - var result = null; - var results = []; - for (var x = 0; x < children.length; x++) { - strTagName = new String(children[x].tagName); - children_class = "?"; - if (strTagName != "undefined") { - child_attribute = getAttribute(children[x], elem_attribute); - if ((strTagName.toLowerCase() == elem_type.toLowerCase() || elem_type == "") && (elem_attribute == "" || child_attribute == elem_attribute_match)) { - if (option == "all") { - results.push(children[x]); - } else { - return children[x]; - } - } - if (depth != 0) { - result = getChildren(children[x], elem_type, elem_attribute, elem_attribute_match, option, depth - 1); - if (option == "all") { - if (result.length > 0) { - results = results.concat(result); - } - } else if (result != null) { - return result; - } - } - } - } - if (option == "all") return results; - } - return null; - }; - - function isChildOf(elem, parent) { - if (elem) { - if (elem == parent) return true; - while (elem.parentNode != 'undefined') { - return isChildOf(elem.parentNode, parent); - } - } - return false; - }; - - function getMouseX(e) { - if (e != null && typeof(e.pageX) != "undefined") { - return e.pageX; - } else { - return (e != null ? e.x : event.x) + document.documentElement.scrollLeft; - } - }; - - function getMouseY(e) { - if (e != null && typeof(e.pageY) != "undefined") { - return e.pageY; - } else { - return (e != null ? e.y : event.y) + document.documentElement.scrollTop; - } - }; - - function calculeOffsetLeft(r) { - return calculeOffset(r, "offsetLeft") - }; - - function calculeOffsetTop(r) { - return calculeOffset(r, "offsetTop") - }; - - function calculeOffset(element, attr) { - var offset = 0; - while (element) { - offset += element[attr]; - element = element.offsetParent - } - return offset; - }; - - function get_css_property(elem, prop) { - if (document.defaultView) { - return document.defaultView.getComputedStyle(elem, null).getPropertyValue(prop); - } else if (elem.currentStyle) { - var prop = prop.replace(/-\D/gi, function(sMatch) { - return sMatch.charAt(sMatch.length - 1).toUpperCase(); - }); - return elem.currentStyle[prop]; - } else return null; - } - var _mCE; - - function start_move_element(e, id, frame) { - var elem_id = (e.target || e.srcElement).id; - if (id) elem_id = id; - if (!frame) frame = window; - if (frame.event) e = frame.event; - _mCE = frame.document.getElementById(elem_id); - _mCE.frame = frame; - frame.document.onmousemove = move_element; - frame.document.onmouseup = end_move_element; - mouse_x = getMouseX(e); - mouse_y = getMouseY(e); - _mCE.start_pos_x = mouse_x - (_mCE.style.left.replace("px", "") || calculeOffsetLeft(_mCE)); - _mCE.start_pos_y = mouse_y - (_mCE.style.top.replace("px", "") || calculeOffsetTop(_mCE)); - return false; - }; - - function end_move_element(e) { - _mCE.frame.document.onmousemove = ""; - _mCE.frame.document.onmouseup = ""; - _mCE = null; - }; - - function move_element(e) { - var newTop, newLeft, maxLeft; - if (_mCE.frame && _mCE.frame.event) e = _mCE.frame.event; - newTop = getMouseY(e) - _mCE.start_pos_y; - newLeft = getMouseX(e) - _mCE.start_pos_x; - maxLeft = _mCE.frame.document.body.offsetWidth - _mCE.offsetWidth; - max_top = _mCE.frame.document.body.offsetHeight - _mCE.offsetHeight; - newTop = Math.min(Math.max(0, newTop), max_top); - newLeft = Math.min(Math.max(0, newLeft), maxLeft); - _mCE.style.top = newTop + "px"; - _mCE.style.left = newLeft + "px"; - return false; - }; - var nav = eAL.nav; - - function getSelectionRange(textarea) { - return { - "start": textarea.selectionStart, - "end": textarea.selectionEnd - }; - }; - - function setSelectionRange(t, start, end) { - t.focus(); - start = Math.max(0, Math.min(t.value.length, start)); - end = Math.max(start, Math.min(t.value.length, end)); - if (nav.isOpera && nav.isOpera < 9.6) { - t.selectionEnd = 1; - t.selectionStart = 0; - t.selectionEnd = 1; - t.selectionStart = 0; - } - t.selectionStart = start; - t.selectionEnd = end; - if (nav.isIE) set_IE_selection(t); - }; - - function get_IE_selection(t) { - var d = document, - div, range, stored_range, elem, scrollTop, relative_top, line_start, line_nb, range_start, range_end, tab; - if (t && t.focused) { - if (!t.ea_line_height) { - div = d.createElement("div"); - div.style.fontFamily = get_css_property(t, "font-family"); - div.style.fontSize = get_css_property(t, "font-size"); - div.style.visibility = "hidden"; - div.innerHTML = "0"; - d.body.appendChild(div); - t.ea_line_height = div.offsetHeight; - d.body.removeChild(div); - } - range = d.selection.createRange(); - try { - stored_range = range.duplicate(); - stored_range.moveToElementText(t); - stored_range.setEndPoint('EndToEnd', range); - if (stored_range.parentElement() == t) { - elem = t; - scrollTop = 0; - while (elem.parentNode) { - scrollTop += elem.scrollTop; - elem = elem.parentNode; - } - relative_top = range.offsetTop - calculeOffsetTop(t) + scrollTop; - line_start = Math.round((relative_top / t.ea_line_height) + 1); - line_nb = Math.round(range.boundingHeight / t.ea_line_height); - range_start = stored_range.text.length - range.text.length; - tab = t.value.substr(0, range_start).split("\n"); - range_start += (line_start - tab.length) * 2; - t.selectionStart = range_start; - range_end = t.selectionStart + range.text.length; - tab = t.value.substr(0, range_start + range.text.length).split("\n"); - range_end += (line_start + line_nb - 1 - tab.length) * 2; - t.selectionEnd = range_end; - } - } catch (e) {} - } - if (t && t.id) { - setTimeout("get_IE_selection(document.getElementById('" + t.id + "'));", 50); - } - }; - - function IE_textarea_focus() { - event.srcElement.focused = true; - } - - function IE_textarea_blur() { - event.srcElement.focused = false; - } - - function set_IE_selection(t) { - var nbLineStart, nbLineStart, nbLineEnd, range; - if (!window.closed) { - nbLineStart = t.value.substr(0, t.selectionStart).split("\n").length - 1; - nbLineEnd = t.value.substr(0, t.selectionEnd).split("\n").length - 1; - try { - range = document.selection.createRange(); - range.moveToElementText(t); - range.setEndPoint('EndToStart', range); - range.moveStart('character', t.selectionStart - nbLineStart); - range.moveEnd('character', t.selectionEnd - nbLineEnd - (t.selectionStart - nbLineStart)); - range.select(); - } catch (e) {} - } - }; - eAL.waiting_loading["elements_functions.js"] = "loaded"; - EAL.prototype.start_resize_area = function() { - var d = document, - a, div, width, height, father; - d.onmouseup = eAL.end_resize_area; - d.onmousemove = eAL.resize_area; - eAL.toggle(eAL.resize["id"]); - a = eAs[eAL.resize["id"]]["textarea"]; - div = d.getElementById("edit_area_resize"); - if (!div) { - div = d.createElement("div"); - div.id = "edit_area_resize"; - div.style.border = "dashed #888888 1px"; - } - width = a.offsetWidth - 2; - height = a.offsetHeight - 2; - div.style.display = "block"; - div.style.width = width + "px"; - div.style.height = height + "px"; - father = a.parentNode; - father.insertBefore(div, a); - a.style.display = "none"; - eAL.resize["start_top"] = calculeOffsetTop(div); - eAL.resize["start_left"] = calculeOffsetLeft(div); - }; - EAL.prototype.end_resize_area = function(e) { - var d = document, - div, a, width, height; - d.onmouseup = ""; - d.onmousemove = ""; - div = d.getElementById("edit_area_resize"); - a = eAs[eAL.resize["id"]]["textarea"]; - width = Math.max(eAs[eAL.resize["id"]]["settings"]["min_width"], div.offsetWidth - 4); - height = Math.max(eAs[eAL.resize["id"]]["settings"]["min_height"], div.offsetHeight - 4); - if (eAL.isIE == 6) { - width -= 2; - height -= 2; - } - a.style.width = width + "px"; - a.style.height = height + "px"; - div.style.display = "none"; - a.style.display = "inline"; - a.selectionStart = eAL.resize["selectionStart"]; - a.selectionEnd = eAL.resize["selectionEnd"]; - eAL.toggle(eAL.resize["id"]); - return false; - }; - EAL.prototype.resize_area = function(e) { - var allow, newHeight, newWidth; - allow = eAs[eAL.resize["id"]]["settings"]["allow_resize"]; - if (allow == "both" || allow == "y") { - newHeight = Math.max(20, getMouseY(e) - eAL.resize["start_top"]); - document.getElementById("edit_area_resize").style.height = newHeight + "px"; - } - if (allow == "both" || allow == "x") { - newWidth = Math.max(20, getMouseX(e) - eAL.resize["start_left"]); - document.getElementById("edit_area_resize").style.width = newWidth + "px"; - } - return false; - }; - eAL.waiting_loading["resize_area.js"] = "loaded"; - EAL.prototype.get_regexp = function(text_array) { - res = "(\\b)("; - for (i = 0; i < text_array.length; i++) { - if (i > 0) res += "|"; - res += this.get_escaped_regexp(text_array[i]); - } - res += ")(\\b)"; - reg = new RegExp(res); - return res; - }; - EAL.prototype.get_escaped_regexp = function(str) { - return str.toString().replace(/(\.|\?|\*|\+|\\|\(|\)|\[|\]|\}|\{|\$|\^|\|)/g, "\\$1"); - }; - EAL.prototype.init_syntax_regexp = function() { - var lang_style = {}; - for (var lang in this.load_syntax) { - if (!this.syntax[lang]) { - this.syntax[lang] = {}; - this.syntax[lang]["keywords_reg_exp"] = {}; - this.keywords_reg_exp_nb = 0; - if (this.load_syntax[lang]['KEYWORDS']) { - param = "g"; - if (this.load_syntax[lang]['KEYWORD_CASE_SENSITIVE'] === false) param += "i"; - for (var i in this.load_syntax[lang]['KEYWORDS']) { - if (typeof(this.load_syntax[lang]['KEYWORDS'][i]) == "function") continue; - this.syntax[lang]["keywords_reg_exp"][i] = new RegExp(this.get_regexp(this.load_syntax[lang]['KEYWORDS'][i]), param); - this.keywords_reg_exp_nb++; - } - } - if (this.load_syntax[lang]['OPERATORS']) { - var str = ""; - var nb = 0; - for (var i in this.load_syntax[lang]['OPERATORS']) { - if (typeof(this.load_syntax[lang]['OPERATORS'][i]) == "function") continue; - if (nb > 0) str += "|"; - str += this.get_escaped_regexp(this.load_syntax[lang]['OPERATORS'][i]); - nb++; - } - if (str.length > 0) this.syntax[lang]["operators_reg_exp"] = new RegExp("(" + str + ")", "g"); - } - if (this.load_syntax[lang]['DELIMITERS']) { - var str = ""; - var nb = 0; - for (var i in this.load_syntax[lang]['DELIMITERS']) { - if (typeof(this.load_syntax[lang]['DELIMITERS'][i]) == "function") continue; - if (nb > 0) str += "|"; - str += this.get_escaped_regexp(this.load_syntax[lang]['DELIMITERS'][i]); - nb++; - } - if (str.length > 0) this.syntax[lang]["delimiters_reg_exp"] = new RegExp("(" + str + ")", "g"); - } - var syntax_trace = []; - this.syntax[lang]["quotes"] = {}; - var quote_tab = []; - if (this.load_syntax[lang]['QUOTEMARKS']) { - for (var i in this.load_syntax[lang]['QUOTEMARKS']) { - if (typeof(this.load_syntax[lang]['QUOTEMARKS'][i]) == "function") continue; - var x = this.get_escaped_regexp(this.load_syntax[lang]['QUOTEMARKS'][i]); - this.syntax[lang]["quotes"][x] = x; - quote_tab[quote_tab.length] = "(" + x + "(\\\\.|[^" + x + "])*(?:" + x + "|$))"; - syntax_trace.push(x); - } - } - this.syntax[lang]["comments"] = {}; - if (this.load_syntax[lang]['COMMENT_SINGLE']) { - for (var i in this.load_syntax[lang]['COMMENT_SINGLE']) { - if (typeof(this.load_syntax[lang]['COMMENT_SINGLE'][i]) == "function") continue; - var x = this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_SINGLE'][i]); - quote_tab[quote_tab.length] = "(" + x + "(.|\\r|\\t)*(\\n|$))"; - syntax_trace.push(x); - this.syntax[lang]["comments"][x] = "\n"; - } - } - if (this.load_syntax[lang]['COMMENT_MULTI']) { - for (var i in this.load_syntax[lang]['COMMENT_MULTI']) { - if (typeof(this.load_syntax[lang]['COMMENT_MULTI'][i]) == "function") continue; - var start = this.get_escaped_regexp(i); - var end = this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_MULTI'][i]); - quote_tab[quote_tab.length] = "(" + start + "(.|\\n|\\r)*?(" + end + "|$))"; - syntax_trace.push(start); - syntax_trace.push(end); - this.syntax[lang]["comments"][i] = this.load_syntax[lang]['COMMENT_MULTI'][i]; - } - } - if (quote_tab.length > 0) this.syntax[lang]["comment_or_quote_reg_exp"] = new RegExp("(" + quote_tab.join("|") + ")", "gi"); - if (syntax_trace.length > 0) this.syntax[lang]["syntax_trace_regexp"] = new RegExp("((.|\n)*?)(\\\\*(" + syntax_trace.join("|") + "|$))", "gmi"); - if (this.load_syntax[lang]['SCRIPT_DELIMITERS']) { - this.syntax[lang]["script_delimiters"] = {}; - for (var i in this.load_syntax[lang]['SCRIPT_DELIMITERS']) { - if (typeof(this.load_syntax[lang]['SCRIPT_DELIMITERS'][i]) == "function") continue; - this.syntax[lang]["script_delimiters"][i] = this.load_syntax[lang]['SCRIPT_DELIMITERS']; - } - } - this.syntax[lang]["custom_regexp"] = {}; - if (this.load_syntax[lang]['REGEXPS']) { - for (var i in this.load_syntax[lang]['REGEXPS']) { - if (typeof(this.load_syntax[lang]['REGEXPS'][i]) == "function") continue; - var val = this.load_syntax[lang]['REGEXPS'][i]; - if (!this.syntax[lang]["custom_regexp"][val['execute']]) this.syntax[lang]["custom_regexp"][val['execute']] = {}; - this.syntax[lang]["custom_regexp"][val['execute']][i] = { - 'regexp': new RegExp(val['search'], val['modifiers']), - 'class': val['class'] - }; - } - } - if (this.load_syntax[lang]['STYLES']) { - lang_style[lang] = {}; - for (var i in this.load_syntax[lang]['STYLES']) { - if (typeof(this.load_syntax[lang]['STYLES'][i]) == "function") continue; - if (typeof(this.load_syntax[lang]['STYLES'][i]) != "string") { - for (var j in this.load_syntax[lang]['STYLES'][i]) { - lang_style[lang][j] = this.load_syntax[lang]['STYLES'][i][j]; - } - } else { - lang_style[lang][i] = this.load_syntax[lang]['STYLES'][i]; - } - } - } - var style = ""; - for (var i in lang_style[lang]) { - if (lang_style[lang][i].length > 0) { - style += "." + lang + " ." + i.toLowerCase() + " span{" + lang_style[lang][i] + "}\n"; - style += "." + lang + " ." + i.toLowerCase() + "{" + lang_style[lang][i] + "}\n"; - } - } - this.syntax[lang]["styles"] = style; - } - } - }; - eAL.waiting_loading["reg_syntax.js"] = "loaded"; - var editAreaLoader = eAL; - var editAreas = eAs; - EditAreaLoader = EAL; - editAreaLoader.iframe_script = "".replace(/Á/g, 'this').replace(/Â/g, 'textarea').replace(/Ã/g, 'function').replace(/Ä/g, 'prototype').replace(/Å/g, 'settings').replace(/Æ/g, 'length').replace(/Ç/g, 'style').replace(/È/g, 'parent').replace(/É/g, 'last_selection').replace(/Ê/g, 'value').replace(/Ë/g, 'true').replace(/Ì/g, 'false'); - editAreaLoader.template = " EditArea [__CSSRULES__] [__JSCODE__]
[__TOOLBAR__]
 
 
{$position}: {$line_abbr} 0, {$char_abbr} 0 {$total}: {$line_abbr} 0, {$char_abbr} 0 resize
{$processing}
{$search} {$close_popup}
{$replace} {$move_popup}

{$find_next} {$replace} {$replace_all}
{$close_popup}

Editarea [__EA_VERSION__]


{$shortcuts}:

{$tab}: {$add_tab}
{$shift}+{$tab}: {$remove_tab}
{$ctrl}+f: {$search_command}
{$ctrl}+r: {$replace_command}
{$ctrl}+h: {$highlight}
{$ctrl}+g: {$go_to_line}
{$ctrl}+z: {$undo}
{$ctrl}+y: {$redo}
{$ctrl}+e: {$help}
{$ctrl}+q, {$esc}: {$close_popup}
{$accesskey} E: {$toggle}

{$about_notice}
"; - editAreaLoader.iframe_css = ""; \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/images/autocompletion.gif b/client/client-editor/src/main/resources/webapp/js/edit_area/images/autocompletion.gif deleted file mode 100644 index f3dfc2e3a9098846711136f051eef77653916032..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 359 zcmZ?wbhEHb6k!lyxXQpFA|mo}EA!@Q4nOYHgolT(Sh3>UDThDr4mvqG+1lE6cXyvT zbEdhu`ST&IJNwfAetYoaa@wzFON@<;j~+dGc75dc@83V|k@#`5`0Fu`@8^QOy}f_l zoA&F)_Ivm4iHV8*|NnpA0K$->Ca zV8NgRk_7pQfvv@1PJxGxRR4)5AD8ItQrh9n_PxQZP?AGs^G?I{vqiEPHk)`(kj_zC zY{6sdQ9OBKsGUg2J2J%5W!T*=ehGSSWLA@7<@xDYx&$NiRnRYXF=ypOpXr diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/images/close.gif b/client/client-editor/src/main/resources/webapp/js/edit_area/images/close.gif deleted file mode 100644 index 679ca2aa47644793fc7096142233af6d18cfc9ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 102 zcmZ?wbhEHb6ky2ivBykw!ot@6bd$)Ew*2Dq{%MuzLU-VNrt;$I z{;0?PSAE;|`To-4{r~^~A^8LW000jFEC2ui02BZe000DY@X1N5y*O(ey8oUPG-PQu zh5=L~;SvlX%mSjURO>jy;xC1Q4L8xD48CAu$Z8M;}RUJf0>sOc_ z4h#giNmy{Z(DeG+E>qDAdHB(q-q8pM40A&O(_`XwX{XYr&z?PRr~gK;d)>WX|G+!v(`@O7 z#gQbEOxp+vsv_Jf61NO&~~uOm_QM5vt=)9^-2GdKQc?)(;>#1N8f<|iMC zmfD0;+g#c2!gPCdc7LqAKSnW@pd1qCo=N!3p0wI2Uh9Zk=lo!cD>>j-uGI1o**BAk z+nGfbcNcGeD*Jw7fy$G-la=mZQupAaAFx7wCr5K@**^bL3Q~$qtHmc2WOevhi_fWl z(sfv=`%6)ajg-4YJ5{Q^m(#*3no)Srli%PkY(#z&y{Z+f+pwX9E^Yd+_%OYx&Ar(` z=b4djMwtQYk78Xr3Od-lZnm`j;kQO??xYJWs4$_>f=Uxp*o#UtRAz5wJ9c-WrBlt9O#3t52`azorU%kROg@@ z^zE{v@mJLUhW&Q0+TqtY**eGbY8Q-WL0yJ%2*zQUhhcE~^jDa6JM<&|E(h8!`+6?G zauKFcruQPOmtb}IdR;i-!l|q1zlPIe7`*NuypEwiaDEc5N!oD}u3H$rjgdPTzwMiF zW73U3-MIHR?mx!VBe)-7`Y}8GFP?hv%!?T>JTLH^W@!ct!!mxbeim#%0DiolK>dFZ zzu?Szn}8&d0Ixnlcr-z9tlW0gQOy(ZIijL;LUHC4jE8fT{5fxlGUc6R6Y~{@_~J%= ziZgCiQ%F{M*H(S!QUO0gbU~ZjkzrMe*Qfr{5E{fyU6VLfTYp$-lRvr9@jypuf+~_C zDj$qCCpH(=w|2(Q4(4zKVf!L10!gkpb3pTD`L)o<*}R1hzkBo0vAn*uM>IjYsOYG9 zv0-1Q$7SopSqDij=l!TwL4r~y5zZS4c_*b{JYyhnO!uxVTX;N-(&|NuHN*7jINqW6 zg#4dMC#VB0%WI7CoA*nyGUuv1R~CH1U1>^NB9Y7#b@4?RyG&}ev|@Q}Xsl)1T~msP Gq`d@2%&Q{+ diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/images/help.gif b/client/client-editor/src/main/resources/webapp/js/edit_area/images/help.gif deleted file mode 100644 index 51a1ee42073402ce787b60d151219ef7ce367615..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 295 zcmV+?0oeXWNk%w1VH5xq0Mrfu6i>3FyW3udp6K!Ub&;kbTH+f8tqUysbN$lQ^w;v!hW z!pq(wXY{hj_W%F@A^8LW0018VEC2ui02BZe000G~;3tk`X`X1Ru1KI+h83(|W>rq^ zR7RF&f!#zRnN$X{6T;$HBo?`WVllvQOo2)zp>TL49!J8HVVDe#NumhpbS0R9z=Ux~ zAoz}Cx7j!jCJ$n5dR`j(aXJcF2&#c0@g7@*TXJyAiI+Bx- z!osRT%E{EUw6tz+enw7G^6K)^$d=yS-J+Ue{{6y&f`-z%VxXFs!L^y{+>(HFVv>^L zOipLAk}~7mu>b%7A^8LW0018VEC2ui02BZe000Gj;3tk`X`X1RuBfCa3_CK)hB&I! z?6jS5DV>BNxhN371`1>FG$6!^gQF}JB8CHn;<-pFjYq{)@NCbANaf;iJjfX><#5Od z41@~dZSq94bpiqw6C4j!WCnJE77HB!h$k2WjE(>oEEpP%kC-wT1Ob;aBcK|jsHv(a GApkq`d~Wvu diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/images/load.gif b/client/client-editor/src/main/resources/webapp/js/edit_area/images/load.gif deleted file mode 100644 index 461698f56b1e5822f49ed10227b2e57e683c8a03..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1041 zcmdtPjZ>0$007{hgDIQsG-j@L*>tB)b60+}iD?OrA>k>g{a2QP=fy)QrO@924oIV@UURUC)| z_Hh8BRUmo->{0^i0Eit2)L}rq58_9_9yQoI0ru(0?>qtr=0Nh3sMI;iK}AgZ2uL@P zv!?cB{7K50jm$K~=L}H_^$ABuCzq*wkDptnZcdR`%IPfr6%FD zE9uMWOe#-mc0 zdbNSOGybW`IN~b2xCP6L&iUIvl!Pgr0!^ zgyGf}G~(fT2)$k$^Fj=R+dg6)!q7Gz2ta%rhJ%nGAPmD7c3yT#A#%j)UNN`xjj9kk>WZd!xmETTBh{YXI^b{t9!jGiW~Qp#VbtkipU(u58V$>o<`ED_LfQ)yM&!tudZ zO6ZtkL-u2)?nak`4w3~)2OMlB%CquCMW`EC1=ut*Geik9*l2SqO#J~;-aN z((?HJ(%tf+t-`|0-T(jqA^8LW000jFEC2ui02BZe000D6@X1N5y*TTfdRNNeY>8o> z4KQZPc^-wzx@G{}*+AEJzAuCxrm-U+gcqV~fj9y(hozB$v;>w-LA7!<0TB$xmeMs$ Y1>z^>8fd%Q>Wl40uW#=7ygmW|J7pwMu>b%7 diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/images/opacity.png b/client/client-editor/src/main/resources/webapp/js/edit_area/images/opacity.png deleted file mode 100644 index b4217cb212926ce7abfde5e045380e3f6a5d54b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^A|TAc1|)ksWqE-VOS+@4BLl_jZKS5jZLdL qklCGA#U1zK0aw_X$=hxGiT1+v}x0S96<3ux1VcBu(M-; ztC5}oGb2#H;!hSvE(Q(;9gtxlV;NXH1WtA`ESM2BJDuZdn+*H6+J_#~?s=}wnLTle zLdoPrg>AjBcimgdeCKBYhit0B2@x&{waK4q^pXsNww0L>hh!WVpKG)o&b3NQQ?5mIMo+7=AS21Oo%i<%fwhoMRy< z%r&om<6%ZJd`e=;WCaw%pB9{8VS>4w;Q?{M;sr8%x#87s0xU>|UnwlPY=B}oE5iv6 z7MRN&h%~$hWcYK-tKURekqj4MC=qrd`<&8udehy@~I>Xg(5^P9@hX|Ae U2cj76s&GPp1LpFB=!RPZ0F}Z{aR2}S diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/images/redo.gif b/client/client-editor/src/main/resources/webapp/js/edit_area/images/redo.gif deleted file mode 100644 index 3af90697f0b74d0b6b07b585614a6dc67ff87f1d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 169 zcmV;a09OA;Nk%w1VH5xq0K*FaEl-kjqwqa)*O$8QUUsNeit)O{)H!9gj;!cSf8=SD z@4U+CH(H=qeZQ%{>Hq)$A^8LW000jFEC2ui02BZe000D5@X1N5y*TU5@mkK(Nsfb@ zh`52taWqPx3Yb$cP21Nib_4)BqDn)z diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/images/reset_highlight.gif b/client/client-editor/src/main/resources/webapp/js/edit_area/images/reset_highlight.gif deleted file mode 100644 index 0fa3cb79734b6ddadaded7a30dbbab4cdf7ee11a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 168 zcmV;Z09XG3d^!9RvqL!@E;^*>mjy!E|{0<7#0>aHWEL6BndDU8;y+&e4jmm66%_}QC6xvn4h#bW3={_x jpoxPV4gmok9t#w=ts@#{Ko1AM7r_@1E5*jg#vuSZ^a*OP diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/images/search.gif b/client/client-editor/src/main/resources/webapp/js/edit_area/images/search.gif deleted file mode 100644 index cfe76b5d5b06afde765a8f9559c7b2c3fb0d2bf0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 191 zcmV;w06_moNk%w1VH5xq0K*6XAwYSPrOj1uq2J{2d5^L-QjNRF;a`BY`TG5IgsOa& z#YJeCAx49!wa3EN@&Et;A^8LW000jFEC2ui02BZe000DR@X1N5y*TU5Zy?LmfLnqv zlZj@dP!!MS!kB^>3Thj{dMSt5;y`fuDmH}Uz$g$9N~Xo|3t6qtjy*E#3&d$!w&zD+OKB~ULl7eEw((m;2 z^kQ<7@$qtYhNk=Uwg3PCA^8LW000jFEC2ui02BZe000DA@X1N5y*TU5`(_{rgp5Wq zV<-tiQw0DJpz-{)hcHm#IKm8pA~9I(Ca@SvR8S0cm6VSWFgTt^N>UaxG!szEiFzP_ cvz1f8Q5b|bYX=qJK_CnUx@XVt`!Nv!J5VM>-~a#s diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/images/spacer.gif b/client/client-editor/src/main/resources/webapp/js/edit_area/images/spacer.gif deleted file mode 100644 index 388486517fa8da13ebd150e8f65d5096c3e10c3a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43 ncmZ?wbhEHbWMp7un7{x9ia%KxMSyG_5FaGNz{KRj$Y2csb)f_x diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/images/statusbar_resize.gif b/client/client-editor/src/main/resources/webapp/js/edit_area/images/statusbar_resize.gif deleted file mode 100644 index af89d803f8f0eeb965d9443473d5be009641cacf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 79 zcmZ?wbhEHbX*~6o0ZXGB7YP=m6OaAbAERg(>|jPrv0~%%#ha d_MXKm)lqT2YSDtso)?w9Z@gz^T^C`n1_07v8bkm9 diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/images/undo.gif b/client/client-editor/src/main/resources/webapp/js/edit_area/images/undo.gif deleted file mode 100644 index 520796d69defa118055d191eec33cc67f7551710..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 175 zcmV;g08sx&Nk%w1VH5xq0K*FaI$fTWtk6Go+_}Zyr?=K#e#T#ZwX4DHa-Hu#XSz{; z-OtzKVv^{Tv+z=g@&Et;A^8LW000jFEC2ui02BZe000DB@X1N5y*TU5^*Z3vJx60U zVAe<_A|#2DUTDd{g#kDRhWrRvKmt&#E(`|)VHiweM~gz>Krlp-Snncu!2ps)!r>e} d2m*##Qg9H=3xcDt9yk*#vbLC%?J3FW@M$~JQa5Ev-;z1A z)~s2z{lkZ^zkdG#>lh_QLtvPMfZ|UUMh1re3_2kHfbs+b#}tPDoH8C8794Em5Y}?B zaA-K(E+EgRq4A)Rxm!#>Yl}w1qh>Z9F%5@?1_$SMJ}V)S2Md;-o~{?lx8_Dd}92xuMm{~Hst~OlmcK9DUrR(EC#?}7vDR-^5 rW;U&7J=9lwVCt*zRY{Adt>r4$y|X)H^SquD<&O^SZ{TKQVXy`OIJ8`? diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/bg.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/bg.js deleted file mode 100644 index 9fdcec43c..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/bg.js +++ /dev/null @@ -1,54 +0,0 @@ -/* - * Bulgarian translation - * Author: Valentin Hristov - * Company: SOFTKIT Bulgarian - * Site: http://www.softkit-bg.com - */ -editAreaLoader.lang["bg"]={ -new_document: "нов документ", -search_button: "търсене и замяна", -search_command: "търси следващия / отвори прозорец с търсачка", -search: "търсене", -replace: "замяна", -replace_command: "замяна / отвори прозорец с търсачка", -find_next: "намери следващия", -replace_all: "замени всички", -reg_exp: "реголярни изрази", -match_case: "чуствителен към регистъра", -not_found: "няма резултат.", -occurrence_replaced: "замяната е осъществена.", -search_field_empty: "Полето за търсене е празно", -restart_search_at_begin: "До края на документа. Почни с началото.", -move_popup: "премести прозореца с търсачката", -font_size: "--Размер на шрифта--", -go_to_line: "премени към реда", -go_to_line_prompt: "премени към номера на реда:", -undo: "отмени", -redo: "върни", -change_smooth_selection: "включи/изключи някой от функциите за преглед (по красиво, но повече натоварва)", -highlight: "превключване на оцветяване на синтаксиса включена/изключена", -reset_highlight: "въстанови оцветяване на синтаксиса (ако не е синхронизиран с текста)", -word_wrap: "режим на пренасяне на дълги редове", -help: "за програмата", -save: "съхрани", -load: "зареди", -line_abbr: "Стр", -char_abbr: "Стлб", -position: "Позиция", -total: "Всичко", -close_popup: "затвори прозореца", -shortcuts: "Бързи клавиши", -add_tab: "добави табулация в текста", -remove_tab: "премахни табулацията в текста", -about_notice: "Внимание: използвайте функцията оцветяване на синтаксиса само за малки текстове", -toggle: "Превключи редактор", -accesskey: "Бърз клавиш", -tab: "Tab", -shift: "Shift", -ctrl: "Ctrl", -esc: "Esc", -processing: "Зареждане...", -fullscreen: "на цял екран", -syntax_selection: "--Синтаксис--", -close_tab: "Затвори файла" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/cs.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/cs.js deleted file mode 100644 index b09a2771a..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/cs.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["cs"]={ -new_document: "Nový dokument", -search_button: "Najdi a nahraď", -search_command: "Hledej další / otevři vyhledávací pole", -search: "Hledej", -replace: "Nahraď", -replace_command: "Nahraď / otevři vyhledávací pole", -find_next: "Najdi další", -replace_all: "Nahraď vÅ¡e", -reg_exp: "platné výrazy", -match_case: "vyhodnocené výrazy", -not_found: "nenalezené.", -occurrence_replaced: "výskyty nahrazené.", -search_field_empty: "Pole vyhledávání je prázdné", -restart_search_at_begin: "Dosažen konec souboru, začínám od začátku.", -move_popup: "Přesuň vyhledávací okno", -font_size: "--Velikost textu--", -go_to_line: "Přejdi na řádek", -go_to_line_prompt: "Přejdi na řádek:", -undo: "krok zpět", -redo: "znovu", -change_smooth_selection: "Povolit nebo zakázat některé ze zobrazených funkcí (účelnější zobrazení požaduje větší zatížení procesoru)", -highlight: "Zvýrazňování syntaxe zap./vyp.", -reset_highlight: "Obnovit zvýraznění (v případě nesrovnalostí)", -word_wrap: "toggle word wrapping mode", -help: "O programu", -save: "Uložit", -load: "Otevřít", -line_abbr: "Ř.", -char_abbr: "S.", -position: "Pozice", -total: "Celkem", -close_popup: "Zavřít okno", -shortcuts: "Zkratky", -add_tab: "Přidat tabulování textu", -remove_tab: "Odtsranit tabulování textu", -about_notice: "Upozornění! Funkce zvýrazňování textu je k dispozici pouze pro malý text", -toggle: "Přepnout editor", -accesskey: "Přístupová klávesa", -tab: "Záložka", -shift: "Shift", -ctrl: "Ctrl", -esc: "Esc", -processing: "Zpracovávám ...", -fullscreen: "Celá obrazovka", -syntax_selection: "--vyber zvýrazňovač--", -close_tab: "Close file" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/de.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/de.js deleted file mode 100644 index f23ea7b49..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/de.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["de"]={ -new_document: "Neues Dokument", -search_button: "Suchen und Ersetzen", -search_command: "Weitersuchen / öffne Suchfeld", -search: "Suchen", -replace: "Ersetzen", -replace_command: "Ersetzen / öffne Suchfeld", -find_next: "Weitersuchen", -replace_all: "Ersetze alle Treffer", -reg_exp: "reguläre Ausdrücke", -match_case: "passt auf den Begriff
", -not_found: "Nicht gefunden.", -occurrence_replaced: "Die Vorkommen wurden ersetzt.", -search_field_empty: "Leeres Suchfeld", -restart_search_at_begin: "Ende des zu durchsuchenden Bereiches erreicht. Es wird die Suche von Anfang an fortgesetzt.", //find a shorter translation -move_popup: "Suchfenster bewegen", -font_size: "--Schriftgröße--", -go_to_line: "Gehe zu Zeile", -go_to_line_prompt: "Gehe zu Zeilennummmer:", -undo: "Rückgängig", -redo: "Wiederherstellen", -change_smooth_selection: "Aktiviere/Deaktiviere einige Features (weniger Bildschirmnutzung aber mehr CPU-Belastung)", -highlight: "Syntax Highlighting an- und ausschalten", -reset_highlight: "Highlighting zurücksetzen (falls mit Text nicht konform)", -word_wrap: "Toggle word wrapping mode", -help: "Info", -save: "Speichern", -load: "Öffnen", -line_abbr: "Ln", -char_abbr: "Ch", -position: "Position", -total: "Gesamt", -close_popup: "Popup schließen", -shortcuts: "Shortcuts", -add_tab: "Tab zum Text hinzufügen", -remove_tab: "Tab aus Text entfernen", -about_notice: "Bemerkung: Syntax Highlighting ist nur für kurze Texte", -toggle: "Editor an- und ausschalten", -accesskey: "Accesskey", -tab: "Tab", -shift: "Shift", -ctrl: "Ctrl", -esc: "Esc", -processing: "In Bearbeitung...", -fullscreen: "Full-Screen", -syntax_selection: "--Syntax--", -close_tab: "Close file" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/dk.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/dk.js deleted file mode 100644 index 1381de2db..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/dk.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["dk"]={ -new_document: "nyt tomt dokument", -search_button: "søg og erstat", -search_command: "find næste / åben søgefelt", -search: "søg", -replace: "erstat", -replace_command: "erstat / åben søgefelt", -find_next: "find næste", -replace_all: "erstat alle", -reg_exp: "regular expressions", -match_case: "forskel pÃ¥ store/små bogstaver
", -not_found: "not found.", -occurrence_replaced: "occurences replaced.", -search_field_empty: "Search field empty", -restart_search_at_begin: "End of area reached. Restart at begin.", -move_popup: "flyt søgepopup", -font_size: "--Skriftstørrelse--", -go_to_line: "gå til linie", -go_to_line_prompt: "gÃ¥ til linienummer:", -undo: "fortryd", -redo: "gentag", -change_smooth_selection: "slå display funktioner til/fra (smartere display men mere CPU krævende)", -highlight: "slå syntax highlight til/fra", -reset_highlight: "nulstil highlight (hvis den er desynkroniseret fra teksten)", -word_wrap: "toggle word wrapping mode", -help: "om", -save: "gem", -load: "hent", -line_abbr: "Ln", -char_abbr: "Ch", -position: "Position", -total: "Total", -close_popup: "luk popup", -shortcuts: "Genveje", -add_tab: "tilføj tabulation til tekst", -remove_tab: "fjern tabulation fra tekst", -about_notice: "Husk: syntax highlight funktionen bør kun bruge til små tekster", -toggle: "Slå editor til / fra", -accesskey: "Accesskey", -tab: "Tab", -shift: "Skift", -ctrl: "Ctrl", -esc: "Esc", -processing: "Processing...", -fullscreen: "fullscreen", -syntax_selection: "--Syntax--", -close_tab: "Close file" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/en.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/en.js deleted file mode 100644 index 9209f8947..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/en.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["en"]={ -new_document: "new empty document", -search_button: "search and replace", -search_command: "search next / open search area", -search: "search", -replace: "replace", -replace_command: "replace / open search area", -find_next: "find next", -replace_all: "replace all", -reg_exp: "regular expressions", -match_case: "match case", -not_found: "not found.", -occurrence_replaced: "occurences replaced.", -search_field_empty: "Search field empty", -restart_search_at_begin: "End of area reached. Restart at begin.", -move_popup: "move search popup", -font_size: "--Font size--", -go_to_line: "go to line", -go_to_line_prompt: "go to line number:", -undo: "undo", -redo: "redo", -change_smooth_selection: "enable/disable some display features (smarter display but more CPU charge)", -highlight: "toggle syntax highlight on/off", -reset_highlight: "reset highlight (if desyncronized from text)", -word_wrap: "toggle word wrapping mode", -help: "about", -save: "save", -load: "load", -line_abbr: "Ln", -char_abbr: "Ch", -position: "Position", -total: "Total", -close_popup: "close popup", -shortcuts: "Shortcuts", -add_tab: "add tabulation to text", -remove_tab: "remove tabulation to text", -about_notice: "Notice: syntax highlight function is only for small text", -toggle: "Toggle editor", -accesskey: "Accesskey", -tab: "Tab", -shift: "Shift", -ctrl: "Ctrl", -esc: "Esc", -processing: "Processing...", -fullscreen: "fullscreen", -syntax_selection: "--Syntax--", -close_tab: "Close file" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/eo.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/eo.js deleted file mode 100644 index 6583609cb..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/eo.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["eo"]={ -new_document: "nova dokumento (vakigas la enhavon)", -search_button: "serĉi / anstataŭigi", -search_command: "pluserĉi / malfermi la serĉo-fenestron", -search: "serĉi", -replace: "anstataŭigi", -replace_command: "anstataŭigi / malfermi la serĉo-fenestron", -find_next: "serĉi", -replace_all: "anstataŭigi ĉion", -reg_exp: "regula esprimo", -match_case: "respekti la usklecon", -not_found: "ne trovita.", -occurrence_replaced: "anstataŭigoj plenumitaj.", -search_field_empty: "La kampo estas malplena.", -restart_search_at_begin: "Fino de teksto ĝisrirata, ĉu daŭrigi el la komenco?", -move_popup: "movi la serĉo-fenestron", -font_size: "--Tipara grando--", -go_to_line: "iri al la linio", -go_to_line_prompt: "iri al la linio numero:", -undo: "rezigni", -redo: "refari", -change_smooth_selection: "ebligi/malebligi la funkcioj de vidigo (pli bona vidigo, sed pli da ŝarĝo de la ĉeforgano)", -highlight: "ebligi/malebligi la sintaksan kolorigon", -reset_highlight: "repravalorizi la sintaksan kolorigon (se malsinkronigon de la teksto)", -word_wrap: "toggle word wrapping mode", -help: "pri", -save: "registri", -load: "ŝarĝi", -line_abbr: "Ln", -char_abbr: "Sg", -position: "Pozicio", -total: "Sumo", -close_popup: "fermi la ŝprucfenestron", -shortcuts: "Fulmoklavo", -add_tab: "aldoni tabon en la tekston", -remove_tab: "forigi tablon el la teksto", -about_notice: "Noto: la sintaksa kolorigo estas nur prikalkulita por mallongaj tekstoj.", -toggle: "baskuligi la redaktilon", -accesskey: "Fulmoklavo", -tab: "Tab", -shift: "Maj", -ctrl: "Ktrl", -esc: "Esk", -processing: "ŝargante...", -fullscreen: "plenekrane", -syntax_selection: "--Sintakso--", -close_tab: "Fermi la dosieron" -}; \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/es.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/es.js deleted file mode 100644 index 3892c1cd2..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/es.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["es"]={ -new_document: "nuevo documento vacío", -search_button: "buscar y reemplazar", -search_command: "buscar siguiente / abrir área de búsqueda", -search: "buscar", -replace: "reemplazar", -replace_command: "reemplazar / abrir área de búsqueda", -find_next: "encontrar siguiente", -replace_all: "reemplazar todos", -reg_exp: "expresiones regulares", -match_case: "coincidir capitalización", -not_found: "no encontrado.", -occurrence_replaced: "ocurrencias reemplazadas.", -search_field_empty: "Campo de búsqueda vacío", -restart_search_at_begin: "Se ha llegado al final del área. Se va a seguir desde el principio.", -move_popup: "mover la ventana de búsqueda", -font_size: "--Tamaño de la fuente--", -go_to_line: "ir a la línea", -go_to_line_prompt: "ir a la línea número:", -undo: "deshacer", -redo: "rehacer", -change_smooth_selection: "activar/desactivar algunas características de visualización (visualización más inteligente pero más carga de CPU)", -highlight: "intercambiar resaltado de sintaxis", -reset_highlight: "reinicializar resaltado (si no esta sincronizado con el texto)", -word_wrap: "toggle word wrapping mode", -help: "acerca", -save: "guardar", -load: "cargar", -line_abbr: "Ln", -char_abbr: "Ch", -position: "Posición", -total: "Total", -close_popup: "recuadro de cierre", -shortcuts: "Atajos", -add_tab: "añadir tabulado al texto", -remove_tab: "borrar tabulado del texto", -about_notice: "Aviso: el resaltado de sintaxis sólo funciona para texto pequeño", -toggle: "Cambiar editor", -accesskey: "Tecla de acceso", -tab: "Tab", -shift: "Mayúsc", -ctrl: "Ctrl", -esc: "Esc", -processing: "Procesando...", -fullscreen: "pantalla completa", -syntax_selection: "--Syntax--", -close_tab: "Close file" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/fi.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/fi.js deleted file mode 100644 index 1837883e6..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/fi.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["fi"]={ -new_document: "uusi tyhjä dokumentti", -search_button: "etsi ja korvaa", -search_command: "etsi seuraava / avaa etsintävalikko", -search: "etsi", -replace: "korvaa", -replace_command: "korvaa / avaa etsintävalikko", -find_next: "etsi seuraava", -replace_all: "korvaa kaikki", -reg_exp: "säännölliset lausekkeet", -match_case: "täsmää kirjainkokoon", -not_found: "ei löytynyt.", -occurrence_replaced: "esiintymää korvattu.", -search_field_empty: "Haettava merkkijono on tyhjä", -restart_search_at_begin: "Alueen loppu saavutettiin. Aloitetaan alusta.", -move_popup: "siirrä etsintävalikkoa", -font_size: "--Fontin koko--", -go_to_line: "siirry riville", -go_to_line_prompt: "mene riville:", -undo: "peruuta", -redo: "tee uudelleen", -change_smooth_selection: "kytke/sammuta joitakin näyttötoimintoja (Älykkäämpi toiminta, mutta suurempi CPU kuormitus)", -highlight: "kytke syntaksikorostus päälle/pois", -reset_highlight: "resetoi syntaksikorostus (jos teksti ei ole synkassa korostuksen kanssa)", -word_wrap: "toggle word wrapping mode", -help: "tietoja", -save: "tallenna", -load: "lataa", -line_abbr: "Rv", -char_abbr: "Pos", -position: "Paikka", -total: "Yhteensä", -close_popup: "sulje valikko", -shortcuts: "Pikatoiminnot", -add_tab: "lisää sisennys tekstiin", -remove_tab: "poista sisennys tekstistä", -about_notice: "Huomautus: syntaksinkorostus toimii vain pienelle tekstille", -toggle: "Kytke editori", -accesskey: "Pikanäppäin", -tab: "Tab", -shift: "Shift", -ctrl: "Ctrl", -esc: "Esc", -processing: "Odota...", -fullscreen: "koko ruutu", -syntax_selection: "--Syntaksi--", -close_tab: "Sulje tiedosto" -}; \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/fr.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/fr.js deleted file mode 100644 index f77416334..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/fr.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["fr"]={ -new_document: "nouveau document (efface le contenu)", -search_button: "rechercher / remplacer", -search_command: "rechercher suivant / ouvrir la fenêtre de recherche", -search: "rechercher", -replace: "remplacer", -replace_command: "remplacer / ouvrir la fenêtre de recherche", -find_next: "rechercher", -replace_all: "tout remplacer", -reg_exp: "expr. régulière", -match_case: "respecter la casse", -not_found: "pas trouvé.", -occurrence_replaced: "remplacements éffectués.", -search_field_empty: "Le champ de recherche est vide.", -restart_search_at_begin: "Fin du texte atteint, poursuite au début.", -move_popup: "déplacer la fenêtre de recherche", -font_size: "--Taille police--", -go_to_line: "aller à la ligne", -go_to_line_prompt: "aller a la ligne numero:", -undo: "annuler", -redo: "refaire", -change_smooth_selection: "activer/désactiver des fonctions d'affichage (meilleur affichage mais plus de charge processeur)", -highlight: "activer/désactiver la coloration syntaxique", -reset_highlight: "réinitialiser la coloration syntaxique (si désyncronisée du texte)", -word_wrap: "activer/désactiver les retours à la ligne automatiques", -help: "à propos", -save: "sauvegarder", -load: "charger", -line_abbr: "Ln", -char_abbr: "Ch", -position: "Position", -total: "Total", -close_popup: "fermer le popup", -shortcuts: "Racourcis clavier", -add_tab: "ajouter une tabulation dans le texte", -remove_tab: "retirer une tabulation dans le texte", -about_notice: "Note: la coloration syntaxique n'est prévue que pour de courts textes.", -toggle: "basculer l'éditeur", -accesskey: "Accesskey", -tab: "Tab", -shift: "Maj", -ctrl: "Ctrl", -esc: "Esc", -processing: "chargement...", -fullscreen: "plein écran", -syntax_selection: "--Syntaxe--", -close_tab: "Fermer le fichier" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/hr.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/hr.js deleted file mode 100644 index 0429d3afc..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/hr.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["hr"]={ -new_document: "Novi dokument", -search_button: "Traži i izmijeni", -search_command: "Traži dalje / Otvori prozor za traženje", -search: "Traži", -replace: "Izmijeni", -replace_command: "Izmijeni / Otvori prozor za traženje", -find_next: "Traži dalje", -replace_all: "Izmjeni sve", -reg_exp: "Regularni izrazi", -match_case: "Bitna vel. slova", -not_found: "nije naðeno.", -occurrence_replaced: "izmjenjenih.", -search_field_empty: "Prazno polje za traženje!", -restart_search_at_begin: "DoÅ¡ao do kraja. Poèeo od poèetka.", -move_popup: "Pomakni prozor", -font_size: "--Velièina teksta--", -go_to_line: "Odi na redak", -go_to_line_prompt: "Odi na redak:", -undo: "Vrati natrag", -redo: "Napravi ponovo", -change_smooth_selection: "Ukljuèi/iskljuèi neke moguænosti prikaza (pametniji prikaz, ali zaguÅ¡eniji CPU)", -highlight: "Ukljuèi/iskljuèi bojanje sintakse", -reset_highlight: "Ponovi kolorizaciju (ako je nesinkronizirana s tekstom)", -word_wrap: "toggle word wrapping mode", -help: "O edit_area", -save: "Spremi", -load: "Uèitaj", -line_abbr: "Ln", -char_abbr: "Zn", -position: "Pozicija", -total: "Ukupno", -close_popup: "Zatvori prozor", -shortcuts: "Kratice", -add_tab: "Dodaj tabulaciju", -remove_tab: "Makni tabulaciju", -about_notice: "Napomena: koloriziranje sintakse je samo za kratke kodove", -toggle: "Prebaci naèin ureðivanja", -accesskey: "Accesskey", -tab: "Tab", -shift: "Shift", -ctrl: "Ctrl", -esc: "Esc", -processing: "Procesiram...", -fullscreen: "Cijeli prozor", -syntax_selection: "--Syntax--", -close_tab: "Close file" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/it.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/it.js deleted file mode 100644 index e614367d5..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/it.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["it"]={ -new_document: "nuovo documento vuoto", -search_button: "cerca e sostituisci", -search_command: "trova successivo / apri finestra di ricerca", -search: "cerca", -replace: "sostituisci", -replace_command: "sostituisci / apri finestra di ricerca", -find_next: "trova successivo", -replace_all: "sostituisci tutti", -reg_exp: "espressioni regolari", -match_case: "confronta maiuscole/minuscole
", -not_found: "non trovato.", -occurrence_replaced: "occorrenze sostituite.", -search_field_empty: "Campo ricerca vuoto", -restart_search_at_begin: "Fine del testo raggiunta. Ricomincio dall'inizio.", -move_popup: "sposta popup di ricerca", -font_size: "-- Dimensione --", -go_to_line: "vai alla linea", -go_to_line_prompt: "vai alla linea numero:", -undo: "annulla", -redo: "ripeti", -change_smooth_selection: "abilita/disabilita alcune caratteristiche della visualizzazione", -highlight: "abilita/disabilita colorazione della sintassi", -reset_highlight: "aggiorna colorazione (se non sincronizzata)", -word_wrap: "toggle word wrapping mode", -help: "informazioni su...", -save: "salva", -load: "carica", -line_abbr: "Ln", -char_abbr: "Ch", -position: "Posizione", -total: "Totale", -close_popup: "chiudi popup", -shortcuts: "Scorciatoie", -add_tab: "aggiungi tabulazione", -remove_tab: "rimuovi tabulazione", -about_notice: "Avviso: la colorazione della sintassi vale solo con testo piccolo", -toggle: "Abilita/disabilita editor", -accesskey: "Accesskey", -tab: "Tab", -shift: "Shift", -ctrl: "Ctrl", -esc: "Esc", -processing: "In corso...", -fullscreen: "fullscreen", -syntax_selection: "--Syntax--", -close_tab: "Close file" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/ja.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/ja.js deleted file mode 100644 index 91b490936..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/ja.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["ja"]={ -new_document: "新規作成", -search_button: "検索・置換", -search_command: "次を検索 / 検索窓を表示", -search: "検索", -replace: "置換", -replace_command: "置換 / 置換窓を表示", -find_next: "次を検索", -replace_all: "全置換", -reg_exp: "正規表現", -match_case: "大文字小文字の区別", -not_found: "見つかりません。", -occurrence_replaced: "置換しました。", -search_field_empty: "検索対象文字列が空です。", -restart_search_at_begin: "終端に達しました、始めに戻ります", -move_popup: "検索窓を移動", -font_size: "--フォントサイズ--", -go_to_line: "指定行へ移動", -go_to_line_prompt: "指定行へ移動します:", -undo: "元に戻す", -redo: "やり直し", -change_smooth_selection: "スムース表示の切り替え(CPUを使います)", -highlight: "構文強調表示の切り替え", -reset_highlight: "構文強調表示のリセット", -word_wrap: "toggle word wrapping mode", -help: "ヘルプを表示", -save: "保存", -load: "読み込み", -line_abbr: "行", -char_abbr: "文字", -position: "位置", -total: "合計", -close_popup: "ポップアップを閉じる", -shortcuts: "ショートカット", -add_tab: "タブを挿入する", -remove_tab: "タブを削除する", -about_notice: "注意:構文強調表示は短いテキストでしか有効に機能しません。", -toggle: "テキストエリアとeditAreaの切り替え", -accesskey: "アクセスキー", -tab: "Tab", -shift: "Shift", -ctrl: "Ctrl", -esc: "Esc", -processing: "処理中です...", -fullscreen: "fullscreen", -syntax_selection: "--Syntax--", -close_tab: "Close file" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/mk.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/mk.js deleted file mode 100644 index 4e14d128a..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/mk.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["mk"]={ -new_document: "Нов документ", -search_button: "Најди и замени", -search_command: "Барај следно / Отвори нов прозорец за пребарување", -search: "Барај", -replace: "Замени", -replace_command: "Замени / Отвори прозорец за пребарување", -find_next: "најди следно", -replace_all: "Замени ги сите", -reg_exp: "Регуларни изрази", -match_case: "Битна е големината на буквите", -not_found: "не е пронајдено.", -occurrence_replaced: "замени.", -search_field_empty: "Полето за пребарување е празно", -restart_search_at_begin: "Крај на областа. Стартувај од почеток.", -move_popup: "Помести го прозорецот", -font_size: "--Големина на текстот--", -go_to_line: "Оди на линија", -go_to_line_prompt: "Оди на линија со број:", -undo: "Врати", -redo: "Повтори", -change_smooth_selection: "Вклучи/исклучи некои карактеристики за приказ (попаметен приказ, но поголемо оптеретување за процесорот)", -highlight: "Вклучи/исклучи осветлување на синтакса", -reset_highlight: "Ресетирај го осветлувањето на синтакса (доколку е десинхронизиранo со текстот)", -word_wrap: "toggle word wrapping mode", -help: "За", -save: "Зачувај", -load: "Вчитај", -line_abbr: "Лн", -char_abbr: "Зн", -position: "Позиција", -total: "Вкупно", -close_popup: "Затвори го прозорецот", -shortcuts: "Кратенки", -add_tab: "Додај табулација на текстот", -remove_tab: "Отстрани ја табулацијата", -about_notice: "Напомена: Осветлувањето на синтанса е само за краток текст", -toggle: "Смени начин на уредување", -accesskey: "Accesskey", -tab: "Tab", -shift: "Shift", -ctrl: "Ctrl", -esc: "Esc", -processing: "Обработувам...", -fullscreen: "Цел прозорец", -syntax_selection: "--Синтакса--", -close_tab: "Избери датотека" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/nl.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/nl.js deleted file mode 100644 index 84aa17719..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/nl.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["nl"]={ -new_document: "nieuw leeg document", -search_button: "zoek en vervang", -search_command: "zoek volgende / zoekscherm openen", -search: "zoek", -replace: "vervang", -replace_command: "vervang / zoekscherm openen", -find_next: "volgende vinden", -replace_all: "alles vervangen", -reg_exp: "reguliere expressies", -match_case: "hoofdletter gevoelig", -not_found: "niet gevonden.", -occurrence_replaced: "object vervangen.", -search_field_empty: "Zoek veld leeg", -restart_search_at_begin: "Niet meer instanties gevonden, begin opnieuw", -move_popup: "versleep zoek scherm", -font_size: "--Letter grootte--", -go_to_line: "Ga naar regel", -go_to_line_prompt: "Ga naar regel nummer:", -undo: "Ongedaan maken", -redo: "Opnieuw doen", -change_smooth_selection: "zet wat schermopties aan/uit (kan langzamer zijn)", -highlight: "zet syntax highlight aan/uit", -reset_highlight: "reset highlight (indien gedesynchronizeerd)", -word_wrap: "toggle word wrapping mode", -help: "informatie", -save: "opslaan", -load: "laden", -line_abbr: "Ln", -char_abbr: "Ch", -position: "Positie", -total: "Totaal", -close_popup: "Popup sluiten", -shortcuts: "Snelkoppelingen", -add_tab: "voeg tabs toe in tekst", -remove_tab: "verwijder tabs uit tekst", -about_notice: "Notitie: syntax highlight functie is alleen voor kleine tekst", -toggle: "geavanceerde bewerkingsopties", -accesskey: "Accessknop", -tab: "Tab", -shift: "Shift", -ctrl: "Ctrl", -esc: "Esc", -processing: "Verwerken...", -fullscreen: "fullscreen", -syntax_selection: "--Syntax--", -close_tab: "Close file" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/pl.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/pl.js deleted file mode 100644 index ae03d6049..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/pl.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["pl"]={ -new_document: "nowy dokument", -search_button: "znajdź i zamień", -search_command: "znajdź następny", -search: "znajdź", -replace: "zamień", -replace_command: "zamień", -find_next: "następny", -replace_all: "zamień wszystko", -reg_exp: "wyrażenie regularne", -match_case: "uwzględnij wielkość liter
", -not_found: "nie znaleziono.", -occurrence_replaced: "wystąpień zamieniono.", -search_field_empty: "Nie wprowadzono tekstu", -restart_search_at_begin: "Koniec dokumentu. Wyszukiwanie od początku.", -move_popup: "przesuń okienko wyszukiwania", -font_size: "Rozmiar", -go_to_line: "idź do linii", -go_to_line_prompt: "numer linii:", -undo: "cofnij", -redo: "przywróć", -change_smooth_selection: "włącz/wyłącz niektóre opcje wyglądu (zaawansowane opcje wyglądu obciążają procesor)", -highlight: "włącz/wyłącz podświetlanie składni", -reset_highlight: "odśwież podświetlanie składni (jeśli rozsynchronizowało się z tekstem)", -word_wrap: "toggle word wrapping mode", -help: "o programie", -save: "zapisz", -load: "otwórz", -line_abbr: "Ln", -char_abbr: "Zn", -position: "Pozycja", -total: "W sumie", -close_popup: "zamknij okienko", -shortcuts: "Skróty klawiaturowe", -add_tab: "dodaj wcięcie do zaznaczonego tekstu", -remove_tab: "usuń wcięcie", -about_notice: "Uwaga: podświetlanie składni nie jest zalecane dla długich tekstów", -toggle: "Włącz/wyłącz edytor", -accesskey: "Alt+", -tab: "Tab", -shift: "Shift", -ctrl: "Ctrl", -esc: "Esc", -processing: "Przetwarzanie...", -fullscreen: "fullscreen", -syntax_selection: "--Syntax--", -close_tab: "Close file" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/pt.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/pt.js deleted file mode 100644 index d785ec124..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/pt.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["pt"]={ -new_document: "Novo documento", -search_button: "Localizar e substituir", -search_command: "Localizar próximo", -search: "Localizar", -replace: "Substituir", -replace_command: "Substituir", -find_next: "Localizar", -replace_all: "Subst. tudo", -reg_exp: "Expressões regulares", -match_case: "Diferenciar maiúsculas e minúsculas", -not_found: "Não encontrado.", -occurrence_replaced: "Ocorrências substituidas", -search_field_empty: "Campo localizar vazio.", -restart_search_at_begin: "Fim das ocorrências. Recomeçar do inicio.", -move_popup: "Mover janela", -font_size: "--Tamanho da fonte--", -go_to_line: "Ir para linha", -go_to_line_prompt: "Ir para a linha:", -undo: "Desfazer", -redo: "Refazer", -change_smooth_selection: "Opções visuais", -highlight: "Cores de sintaxe", -reset_highlight: "Resetar cores (se não sincronizado)", -word_wrap: "toggle word wrapping mode", -help: "Sobre", -save: "Salvar", -load: "Carregar", -line_abbr: "Ln", -char_abbr: "Ch", -position: "Posição", -total: "Total", -close_popup: "Fechar", -shortcuts: "Shortcuts", -add_tab: "Adicionar tabulação", -remove_tab: "Remover tabulação", -about_notice: "Atenção: Cores de sintaxe são indicados somente para textos pequenos", -toggle: "Exibir editor", -accesskey: "Accesskey", -tab: "Tab", -shift: "Shift", -ctrl: "Ctrl", -esc: "Esc", -processing: "Processando...", -fullscreen: "fullscreen", -syntax_selection: "--Syntax--", -close_tab: "Close file" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/ru.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/ru.js deleted file mode 100644 index 081e6b08e..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/ru.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["ru"]={ -new_document: "новый пустой документ", -search_button: "поиск и замена", -search_command: "искать следующий / открыть панель поиска", -search: "поиск", -replace: "замена", -replace_command: "заменить / открыть панель поиска", -find_next: "найти следующее", -replace_all: "заменить все", -reg_exp: "регулярное выражение", -match_case: "учитывать регистр", -not_found: "не найдено.", -occurrence_replaced: "вхождение заменено.", -search_field_empty: "Поле поиска пустое", -restart_search_at_begin: "Достигнут конец документа. Начинаю с начала.", -move_popup: "переместить окно поиска", -font_size: "--Размер шрифта--", -go_to_line: "перейти к строке", -go_to_line_prompt: "перейти к строке номер:", -undo: "отменить", -redo: "вернуть", -change_smooth_selection: "включить/отключить некоторые функции просмотра (более красиво, но больше использует процессор)", -highlight: "переключить подсветку синтаксиса включена/выключена", -reset_highlight: "восстановить подсветку (если разсинхронизирована от текста)", -word_wrap: "toggle word wrapping mode", -help: "о программе", -save: "сохранить", -load: "загрузить", -line_abbr: "Стр", -char_abbr: "Стлб", -position: "Позиция", -total: "Всего", -close_popup: "закрыть всплывающее окно", -shortcuts: "Горячие клавиши", -add_tab: "добавить табуляцию в текст", -remove_tab: "убрать табуляцию из текста", -about_notice: "Внимание: функция подсветки синтаксиса только для небольших текстов", -toggle: "Переключить редактор", -accesskey: "Горячая клавиша", -tab: "Tab", -shift: "Shift", -ctrl: "Ctrl", -esc: "Esc", -processing: "Обработка...", -fullscreen: "полный экран", -syntax_selection: "--Синтакс--", -close_tab: "Закрыть файл" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/sk.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/sk.js deleted file mode 100644 index c0b95c308..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/sk.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["sk"]={ -new_document: "nový prázdy dokument", -search_button: "vyhľadaj a nahraď", -search_command: "hľadaj ďalsšie / otvor vyhľadávacie pole", -search: "hľadaj", -replace: "nahraď", -replace_command: "nahraď / otvor vyhľadávacie pole", -find_next: "nájdi ďalšie", -replace_all: "nahraď všetko", -reg_exp: "platné výrazy", -match_case: "zhodujúce sa výrazy", -not_found: "nenájdené.", -occurrence_replaced: "výskyty nahradené.", -search_field_empty: "Pole vyhľadávanie je prádzne", -restart_search_at_begin: "End of area reached. Restart at begin.", -move_popup: "presuň vyhľadávacie okno", -font_size: "--Veľkosť textu--", -go_to_line: "prejdi na riadok", -go_to_line_prompt: "prejdi na riadok:", -undo: "krok späť", -redo: "prepracovať", -change_smooth_selection: "povoliť/zamietnúť niektoré zo zobrazených funkcií (účelnejšie zobrazenie vyžaduje väčšie zaťaženie procesora CPU)", -highlight: "prepnúť zvýrazňovanie syntaxe zap/vyp", -reset_highlight: "zrušiť zvýrazňovanie (ak je nesynchronizované s textom)", -word_wrap: "toggle word wrapping mode", -help: "o programe", -save: "uložiť", -load: "načítať", -line_abbr: "Ln", -char_abbr: "Ch", -position: "Pozícia", -total: "Spolu", -close_popup: "zavrieť okno", -shortcuts: "Skratky", -add_tab: "pridať tabulovanie textu", -remove_tab: "odstrániť tabulovanie textu", -about_notice: "Upozornenie: funkcia zvýrazňovania syntaxe je dostupná iba pre malý text", -toggle: "Prepnúť editor", -accesskey: "Accesskey", -tab: "Záložka", -shift: "Shift", -ctrl: "Ctrl", -esc: "Esc", -processing: "Spracúvam...", -fullscreen: "cel=a obrazovka", -syntax_selection: "--Vyber Syntax--", -close_tab: "Close file" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/zh.js b/client/client-editor/src/main/resources/webapp/js/edit_area/langs/zh.js deleted file mode 100644 index e51c5320d..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/langs/zh.js +++ /dev/null @@ -1,48 +0,0 @@ -editAreaLoader.lang["zh"]={ -new_document: "新建空白文档", -search_button: "查找与替换", -search_command: "查找下一个 / 打开查找框", -search: "查找", -replace: "替换", -replace_command: "替换 / 打开查找框", -find_next: "查找下一个", -replace_all: "全部替换", -reg_exp: "正则表达式", -match_case: "匹配大小写", -not_found: "未找到.", -occurrence_replaced: "处被替换.", -search_field_empty: "查找框没有内容", -restart_search_at_begin: "已到到文档末尾. 从头重新查找.", -move_popup: "移动查找对话框", -font_size: "--字体大小--", -go_to_line: "转到行", -go_to_line_prompt: "转到行:", -undo: "恢复", -redo: "重做", -change_smooth_selection: "启用/禁止一些显示特性(更好看但更耗费资源)", -highlight: "启用/禁止语法高亮", -reset_highlight: "重置语法高亮(当文本显示不同步时)", -word_wrap: "toggle word wrapping mode", -help: "关于", -save: "保存", -load: "加载", -line_abbr: "行", -char_abbr: "字符", -position: "位置", -total: "总计", -close_popup: "关闭对话框", -shortcuts: "快捷键", -add_tab: "添加制表符(Tab)", -remove_tab: "移除制表符(Tab)", -about_notice: "注意:语法高亮功能仅用于较少内容的文本(文件内容太大会导致浏览器反应慢)", -toggle: "切换编辑器", -accesskey: "快捷键", -tab: "Tab", -shift: "Shift", -ctrl: "Ctrl", -esc: "Esc", -processing: "正在处理中...", -fullscreen: "全屏编辑", -syntax_selection: "--语法--", -close_tab: "关闭文件" -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/license_apache.txt b/client/client-editor/src/main/resources/webapp/js/edit_area/license_apache.txt deleted file mode 100644 index 38311718e..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/license_apache.txt +++ /dev/null @@ -1,7 +0,0 @@ -Copyright 2008 Christophe Dolivet - -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. \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/basic.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/basic.js deleted file mode 100644 index 96ccc5b8f..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/basic.js +++ /dev/null @@ -1,70 +0,0 @@ -editAreaLoader.load_syntax["basic"] = { - 'DISPLAY_NAME' : 'Basic' - ,'COMMENT_SINGLE' : {1 : "'", 2 : 'rem'} - ,'COMMENT_MULTI' : { } - ,'QUOTEMARKS' : {1: '"'} - ,'KEYWORD_CASE_SENSITIVE' : false - ,'KEYWORDS' : { - 'statements' : [ - 'if','then','for','wend','while', - 'else','elseif','select','case','end select', - 'until','next','step','to','end if', 'call' - ] - ,'keywords' : [ - 'sub', 'end sub', 'function', 'end function', 'exit', - 'exit function', 'dim', 'redim', 'shared', 'const', - 'is', 'absolute', 'access', 'any', 'append', 'as', - 'base', 'beep', 'binary', 'bload', 'bsave', 'chain', - 'chdir', 'circle', 'clear', 'close', 'cls', 'color', - 'com', 'common', 'data', 'date', 'declare', 'def', - 'defdbl', 'defint', 'deflng', 'defsng', 'defstr', - 'double', 'draw', 'environ', 'erase', 'error', 'field', - 'files', 'fn', 'get', 'gosub', 'goto', 'integer', 'key', - 'kill', 'let', 'line', 'list', 'locate', 'lock', 'long', - 'lprint', 'lset', 'mkdir', 'name', 'off', 'on', 'open', - 'option', 'out', 'output', 'paint', 'palette', 'pcopy', - 'poke', 'preset', 'print', 'pset', 'put', 'random', - 'randomize', 'read', 'reset', 'restore', 'resume', - 'return', 'rmdir', 'rset', 'run', 'screen', 'seg', - 'shell', 'single', 'sleep', 'sound', 'static', 'stop', - 'strig', 'string', 'swap', 'system', 'time', 'timer', - 'troff', 'tron', 'type', 'unlock', 'using', 'view', - 'wait', 'width', 'window', 'write' - ] - ,'functions' : [ - 'abs', 'asc', 'atn', 'cdbl', 'chr', 'cint', 'clng', - 'cos', 'csng', 'csrlin', 'cvd', 'cvdmbf', 'cvi', 'cvl', - 'cvs', 'cvsmbf', 'eof', 'erdev', 'erl', 'err', 'exp', - 'fileattr', 'fix', 'fre', 'freefile', 'hex', 'inkey', - 'inp', 'input', 'instr', 'int', 'ioctl', 'lbound', - 'lcase', 'left', 'len', 'loc', 'lof', 'log', 'lpos', - 'ltrim', 'mid', 'mkd', 'mkdmbf', 'mki', 'mkl', 'mks', - 'mksmbf', 'oct', 'peek', 'pen', 'play', 'pmap', 'point', - 'pos', 'right', 'rnd', 'rtrim', 'seek', 'sgn', 'sin', - 'space', 'spc', 'sqr', 'stick', 'str', 'tab', 'tan', - 'ubound', 'ucase', 'val', 'varptr', 'varseg' - ] - ,'operators' : [ - 'and', 'eqv', 'imp', 'mod', 'not', 'or', 'xor' - ] - } - ,'OPERATORS' :[ - '+', '-', '/', '*', '=', '<', '>', '!', '&' - ] - ,'DELIMITERS' :[ - '(', ')', '[', ']', '{', '}' - ] - ,'STYLES' : { - 'COMMENTS': 'color: #99CC00;' - ,'QUOTESMARKS': 'color: #333399;' - ,'KEYWORDS' : { - 'keywords' : 'color: #3366FF;' - ,'functions' : 'color: #0000FF;' - ,'statements' : 'color: #3366FF;' - ,'operators' : 'color: #FF0000;' - } - ,'OPERATORS' : 'color: #FF0000;' - ,'DELIMITERS' : 'color: #0000FF;' - - } -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/brainfuck.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/brainfuck.js deleted file mode 100644 index e6306b0c3..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/brainfuck.js +++ /dev/null @@ -1,45 +0,0 @@ -editAreaLoader.load_syntax["brainfuck"] = { - 'DISPLAY_NAME' : 'Brainfuck' - ,'COMMENT_SINGLE' : {} - ,'COMMENT_MULTI' : {} - ,'QUOTEMARKS' : {} - ,'KEYWORD_CASE_SENSITIVE' : true - ,'OPERATORS' :[ - '+', '-' - ] - ,'DELIMITERS' :[ - '[', ']' - ] - ,'REGEXPS' : { - 'bfispis' : { - 'search' : '()(\\.)()' - ,'class' : 'bfispis' - ,'modifiers' : 'g' - ,'execute' : 'before' - } - ,'bfupis' : { - 'search' : '()(\\,)()' - ,'class' : 'bfupis' - ,'modifiers' : 'g' - ,'execute' : 'before' - } - ,'bfmemory' : { - 'search' : '()([<>])()' - ,'class' : 'bfmemory' - ,'modifiers' : 'g' - ,'execute' : 'before' - } - } - ,'STYLES' : { - 'COMMENTS': 'color: #AAAAAA;' - ,'QUOTESMARKS': 'color: #6381F8;' - ,'OPERATORS' : 'color: #88AA00;' - ,'DELIMITERS' : 'color: #00C138;' - ,'REGEXPS' : { - 'bfispis' : 'color: #EE0000;' - ,'bfupis' : 'color: #4455ee;' - ,'bfmemory' : 'color: #DD00DD;' - } - } -}; - diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/c.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/c.js deleted file mode 100644 index 05d978c77..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/c.js +++ /dev/null @@ -1,63 +0,0 @@ -editAreaLoader.load_syntax["c"] = { - 'DISPLAY_NAME' : 'C' - ,'COMMENT_SINGLE' : {1 : '//'} - ,'COMMENT_MULTI' : {'/*' : '*/'} - ,'QUOTEMARKS' : {1: "'", 2: '"'} - ,'KEYWORD_CASE_SENSITIVE' : true - ,'KEYWORDS' : { - 'constants' : [ - 'NULL', 'false', 'stdin', 'stdout', 'stderr', 'true' - ] - ,'types' : [ - 'FILE', 'auto', 'char', 'const', 'double', - 'extern', 'float', 'inline', 'int', 'long', 'register', - 'short', 'signed', 'size_t', 'static', 'struct', - 'time_t', 'typedef', 'union', 'unsigned', 'void', - 'volatile' - ] - ,'statements' : [ - 'do', 'else', 'enum', 'for', 'goto', 'if', 'sizeof', - 'switch', 'while' - ] - ,'keywords' : [ - 'break', 'case', 'continue', 'default', 'delete', - 'return' - ] - } - ,'OPERATORS' :[ - '+', '-', '/', '*', '=', '<', '>', '%', '!', '?', ':', '&' - ] - ,'DELIMITERS' :[ - '(', ')', '[', ']', '{', '}' - ] - ,'REGEXPS' : { - 'precompiler' : { - 'search' : '()(#[^\r\n]*)()' - ,'class' : 'precompiler' - ,'modifiers' : 'g' - ,'execute' : 'before' - } -/* ,'precompilerstring' : { - 'search' : '(#[\t ]*include[\t ]*)([^\r\n]*)([^\r\n]*[\r\n])' - ,'class' : 'precompilerstring' - ,'modifiers' : 'g' - ,'execute' : 'before' - }*/ - } - ,'STYLES' : { - 'COMMENTS': 'color: #AAAAAA;' - ,'QUOTESMARKS': 'color: #6381F8;' - ,'KEYWORDS' : { - 'constants' : 'color: #EE0000;' - ,'types' : 'color: #0000EE;' - ,'statements' : 'color: #60CA00;' - ,'keywords' : 'color: #48BDDF;' - } - ,'OPERATORS' : 'color: #FF00FF;' - ,'DELIMITERS' : 'color: #0038E1;' - ,'REGEXPS' : { - 'precompiler' : 'color: #009900;' - ,'precompilerstring' : 'color: #994400;' - } - } -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/coldfusion.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/coldfusion.js deleted file mode 100644 index d70657f6a..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/coldfusion.js +++ /dev/null @@ -1,120 +0,0 @@ -editAreaLoader.load_syntax["coldfusion"] = { - 'DISPLAY_NAME' : 'Coldfusion' - ,'COMMENT_SINGLE' : {1 : '//', 2 : '#'} - ,'COMMENT_MULTI' : {''} - ,'COMMENT_MULTI2' : {''} - ,'QUOTEMARKS' : {1: "'", 2: '"'} - ,'KEYWORD_CASE_SENSITIVE' : false - ,'KEYWORDS' : { - 'statements' : [ - 'include', 'require', 'include_once', 'require_once', - 'for', 'foreach', 'as', 'if', 'elseif', 'else', 'while', 'do', 'endwhile', - 'endif', 'switch', 'case', 'endswitch', - 'return', 'break', 'continue' - ] - ,'reserved' : [ - 'AND', 'break', 'case', 'CONTAIN', 'CONTAINS', 'continue', 'default', 'do', - 'DOES', 'else', 'EQ', 'EQUAL', 'EQUALTO', 'EQV', 'FALSE', 'for', 'GE', - 'GREATER', 'GT', 'GTE', 'if', 'IMP', 'in', 'IS', 'LE', 'LESS', 'LT', 'LTE', - 'MOD', 'NEQ', 'NOT', 'OR', 'return', 'switch', 'THAN', 'TO', 'TRUE', 'var', - 'while', 'XOR' - ] - ,'functions' : [ - 'Abs', 'ACos', 'ArrayAppend', 'ArrayAvg', 'ArrayClear', 'ArrayDeleteAt', 'ArrayInsertAt', - 'ArrayIsEmpty', 'ArrayLen', 'ArrayMax', 'ArrayMin', 'ArrayNew', 'ArrayPrepend', 'ArrayResize', - 'ArraySet', 'ArraySort', 'ArraySum', 'ArraySwap', 'ArrayToList', 'Asc', 'ASin', 'Atn', 'AuthenticatedContext', - 'AuthenticatedUser', 'BitAnd', 'BitMaskClear', 'BitMaskRead', 'BitMaskSet', 'BitNot', 'BitOr', - 'BitSHLN', 'BitSHRN', 'BitXor', 'Ceiling', 'Chr', 'CJustify', 'Compare', 'CompareNoCase', 'Cos', - 'CreateDate', 'CreateDateTime', 'CreateODBCDate', 'CreateODBCDateTime', 'CreateODBCTime', - 'CreateTime', 'CreateTimeSpan', 'DateAdd', 'DateCompare', 'DateConvert', 'DateDiff', - 'DateFormat', 'DatePart', 'Day', 'DayOfWeek', 'DayOfWeekAsString', 'DayOfYear', 'DaysInMonth', - 'DaysInYear', 'DE', 'DecimalFormat', 'DecrementValue', 'Decrypt', 'DeleteClientVariable', - 'DirectoryExists', 'DollarFormat', 'Duplicate', 'Encrypt', 'Evaluate', 'Exp', 'ExpandPath', - 'FileExists', 'Find', 'FindNoCase', 'FindOneOf', 'FirstDayOfMonth', 'Fix', 'FormatBaseN', - 'GetBaseTagData', 'GetBaseTagList', 'GetBaseTemplatePath', 'GetClientVariablesList', - 'GetCurrentTemplatePath', 'GetDirectoryFromPath', 'GetException', 'GetFileFromPath', - 'GetFunctionList', 'GetHttpTimeString', 'GetHttpRequestData', 'GetLocale', 'GetMetricData', - 'GetProfileString', 'GetTempDirectory', 'GetTempFile', 'GetTemplatePath', 'GetTickCount', - 'GetTimeZoneInfo', 'GetToken', 'Hash', 'Hour', 'HTMLCodeFormat', 'HTMLEditFormat', 'IIf', - 'IncrementValue', 'InputBaseN', 'Insert', 'Int', 'IsArray', 'IsAuthenticated', 'IsAuthorized', - 'IsBoolean', 'IsBinary', 'IsCustomFunction', 'IsDate', 'IsDebugMode', 'IsDefined', 'IsLeapYear', - 'IsNumeric', 'IsNumericDate', 'IsProtected', 'IsQuery', 'IsSimpleValue', 'IsStruct', 'IsWDDX', - 'JavaCast', 'JSStringFormat', 'LCase', 'Left', 'Len', 'ListAppend', 'ListChangeDelims', - 'ListContains', 'ListContainsNoCase', 'ListDeleteAt', 'ListFind', 'ListFindNoCase', 'ListFirst', - 'ListGetAt', 'ListInsertAt', 'ListLast', 'ListLen', 'ListPrepend', 'ListQualify', 'ListRest', - 'ListSetAt', 'ListSort', 'ListToArray', 'ListValueCount', 'ListValueCountNoCase', 'LJustify', - 'Log', 'Log10', 'LSCurrencyFormat', 'LSDateFormat', 'LSEuroCurrencyFormat', 'LSIsCurrency', - 'LSIsDate', 'LSIsNumeric', 'LSNumberFormat', 'LSParseCurrency', 'LSParseDateTime', 'LSParseNumber', - 'LSTimeFormat', 'LTrim', 'Max', 'Mid', 'Min', 'Minute', 'Month', 'MonthAsString', 'Now', 'NumberFormat', - 'ParagraphFormat', 'ParameterExists', 'ParseDateTime', 'Pi', 'PreserveSingleQuotes', 'Quarter', - 'QueryAddRow', 'QueryNew', 'QuerySetCell', 'QuotedValueList', 'Rand', 'Randomize', 'RandRange', - 'REFind', 'REFindNoCase', 'RemoveChars', 'RepeatString', 'Replace', 'ReplaceList', 'ReplaceNoCase', - 'REReplace', 'REReplaceNoCase', 'Reverse', 'Right', 'RJustify', 'Round', 'RTrim', 'Second', 'SetLocale', - 'SetProfileString', 'SetVariable', 'Sgn', 'Sin', 'SpanExcluding', 'SpanIncluding', 'Sqr', 'StripCR', - 'StructAppend', 'StructClear', 'StructCopy', 'StructCount', 'StructDelete', 'StructFind', 'StructFindKey', - 'StructFindValue', 'StructGet', 'StructInsert', 'StructIsEmpty', 'StructKeyArray', 'StructKeyExists', - 'StructKeyList', 'StructNew', 'StructSort', 'StructUpdate', 'Tan', 'TimeFormat', 'ToBase64', 'ToBinary', - 'ToString', 'Trim', 'UCase', 'URLDecode', 'URLEncodedFormat', 'Val', 'ValueList', 'Week', 'WriteOutput', - 'XMLFormat', 'Year', 'YesNoFormat' - ] - } - ,'OPERATORS' :[ - '+', '-', '/', '*', '%', '!', '&&', '||' - ] - ,'DELIMITERS' :[ - '(', ')', '[', ']', '{', '}' - ] - ,'REGEXPS' : { - 'doctype' : { - 'search' : '()(]*>)()' - ,'class' : 'doctype' - ,'modifiers' : '' - ,'execute' : 'before' // before or after - } - ,'cftags' : { - 'search' : '(<)(/cf[a-z][^ \r\n\t>]*)([^>]*>)' - ,'class' : 'cftags' - ,'modifiers' : 'gi' - ,'execute' : 'before' // before or after - } - ,'cftags2' : { - 'search' : '(<)(cf[a-z][^ \r\n\t>]*)([^>]*>)' - ,'class' : 'cftags2' - ,'modifiers' : 'gi' - ,'execute' : 'before' // before or after - } - ,'tags' : { - 'search' : '(<)(/?[a-z][^ \r\n\t>]*)([^>]*>)' - ,'class' : 'tags' - ,'modifiers' : 'gi' - ,'execute' : 'before' // before or after - } - ,'attributes' : { - 'search' : '( |\n|\r|\t)([^ \r\n\t=]+)(=)' - ,'class' : 'attributes' - ,'modifiers' : 'g' - ,'execute' : 'before' // before or after - } - } - ,'STYLES' : { - 'COMMENTS': 'color: #AAAAAA;' - ,'QUOTESMARKS': 'color: #6381F8;' - ,'KEYWORDS' : { - 'reserved' : 'color: #48BDDF;' - ,'functions' : 'color: #0000FF;' - ,'statements' : 'color: #60CA00;' - } - ,'OPERATORS' : 'color: #E775F0;' - ,'DELIMITERS' : '' - ,'REGEXPS' : { - 'attributes': 'color: #990033;' - ,'cftags': 'color: #990033;' - ,'cftags2': 'color: #990033;' - ,'tags': 'color: #000099;' - ,'doctype': 'color: #8DCFB5;' - ,'test': 'color: #00FF00;' - } - } -}; - - diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/cpp.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/cpp.js deleted file mode 100644 index 98e649347..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/cpp.js +++ /dev/null @@ -1,66 +0,0 @@ -editAreaLoader.load_syntax["cpp"] = { - 'DISPLAY_NAME' : 'CPP' - ,'COMMENT_SINGLE' : {1 : '//'} - ,'COMMENT_MULTI' : {'/*' : '*/'} - ,'QUOTEMARKS' : {1: "'", 2: '"'} - ,'KEYWORD_CASE_SENSITIVE' : true - ,'KEYWORDS' : { - 'constants' : [ - 'NULL', 'false', 'std', 'stdin', 'stdout', 'stderr', - 'true' - ] - ,'types' : [ - 'FILE', 'auto', 'char', 'class', 'const', 'double', - 'extern', 'float', 'friend', 'inline', 'int', - 'iterator', 'long', 'map', 'operator', 'queue', - 'register', 'short', 'signed', 'size_t', 'stack', - 'static', 'string', 'struct', 'time_t', 'typedef', - 'union', 'unsigned', 'vector', 'void', 'volatile' - ] - ,'statements' : [ - 'catch', 'do', 'else', 'enum', 'for', 'goto', 'if', - 'sizeof', 'switch', 'this', 'throw', 'try', 'while' - ] - ,'keywords' : [ - 'break', 'case', 'continue', 'default', 'delete', - 'namespace', 'new', 'private', 'protected', 'public', - 'return', 'using' - ] - } - ,'OPERATORS' :[ - '+', '-', '/', '*', '=', '<', '>', '%', '!', '?', ':', '&' - ] - ,'DELIMITERS' :[ - '(', ')', '[', ']', '{', '}' - ] - ,'REGEXPS' : { - 'precompiler' : { - 'search' : '()(#[^\r\n]*)()' - ,'class' : 'precompiler' - ,'modifiers' : 'g' - ,'execute' : 'before' - } -/* ,'precompilerstring' : { - 'search' : '(#[\t ]*include[\t ]*)([^\r\n]*)([^\r\n]*[\r\n])' - ,'class' : 'precompilerstring' - ,'modifiers' : 'g' - ,'execute' : 'before' - }*/ - } - ,'STYLES' : { - 'COMMENTS': 'color: #AAAAAA;' - ,'QUOTESMARKS': 'color: #6381F8;' - ,'KEYWORDS' : { - 'constants' : 'color: #EE0000;' - ,'types' : 'color: #0000EE;' - ,'statements' : 'color: #60CA00;' - ,'keywords' : 'color: #48BDDF;' - } - ,'OPERATORS' : 'color: #FF00FF;' - ,'DELIMITERS' : 'color: #0038E1;' - ,'REGEXPS' : { - 'precompiler' : 'color: #009900;' - ,'precompilerstring' : 'color: #994400;' - } - } -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/css.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/css.js deleted file mode 100644 index cff605aad..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/css.js +++ /dev/null @@ -1,85 +0,0 @@ -editAreaLoader.load_syntax["css"] = { - 'DISPLAY_NAME' : 'CSS' - ,'COMMENT_SINGLE' : {1 : '@'} - ,'COMMENT_MULTI' : {'/*' : '*/'} - ,'QUOTEMARKS' : ['"', "'"] - ,'KEYWORD_CASE_SENSITIVE' : false - ,'KEYWORDS' : { - 'attributes' : [ - 'aqua', 'azimuth', 'background-attachment', 'background-color', - 'background-image', 'background-position', 'background-repeat', - 'background', 'border-bottom-color', 'border-bottom-style', - 'border-bottom-width', 'border-left-color', 'border-left-style', - 'border-left-width', 'border-right', 'border-right-color', - 'border-right-style', 'border-right-width', 'border-top-color', - 'border-top-style', 'border-top-width','border-bottom', 'border-collapse', - 'border-left', 'border-width', 'border-color', 'border-spacing', - 'border-style', 'border-top', 'border', 'caption-side', - 'clear', 'clip', 'color', 'content', 'counter-increment', 'counter-reset', - 'cue-after', 'cue-before', 'cue', 'cursor', 'direction', 'display', - 'elevation', 'empty-cells', 'float', 'font-family', 'font-size', - 'font-size-adjust', 'font-stretch', 'font-style', 'font-variant', - 'font-weight', 'font', 'height', 'letter-spacing', 'line-height', - 'list-style', 'list-style-image', 'list-style-position', 'list-style-type', - 'margin-bottom', 'margin-left', 'margin-right', 'margin-top', 'margin', - 'marker-offset', 'marks', 'max-height', 'max-width', 'min-height', - 'min-width', 'opacity', 'orphans', 'outline', 'outline-color', 'outline-style', - 'outline-width', 'overflow', 'padding-bottom', 'padding-left', - 'padding-right', 'padding-top', 'padding', 'page', 'page-break-after', - 'page-break-before', 'page-break-inside', 'pause-after', 'pause-before', - 'pause', 'pitch', 'pitch-range', 'play-during', 'position', 'quotes', - 'richness', 'right', 'size', 'speak-header', 'speak-numeral', 'speak-punctuation', - 'speak', 'speech-rate', 'stress', 'table-layout', 'text-align', 'text-decoration', - 'text-indent', 'text-shadow', 'text-transform', 'top', 'unicode-bidi', - 'vertical-align', 'visibility', 'voice-family', 'volume', 'white-space', 'widows', - 'width', 'word-spacing', 'z-index', 'bottom', 'left' - ] - ,'values' : [ - 'above', 'absolute', 'always', 'armenian', 'aural', 'auto', 'avoid', - 'baseline', 'behind', 'below', 'bidi-override', 'black', 'blue', 'blink', 'block', 'bold', 'bolder', 'both', - 'capitalize', 'center-left', 'center-right', 'center', 'circle', 'cjk-ideographic', - 'close-quote', 'collapse', 'condensed', 'continuous', 'crop', 'crosshair', 'cross', 'cursive', - 'dashed', 'decimal-leading-zero', 'decimal', 'default', 'digits', 'disc', 'dotted', 'double', - 'e-resize', 'embed', 'extra-condensed', 'extra-expanded', 'expanded', - 'fantasy', 'far-left', 'far-right', 'faster', 'fast', 'fixed', 'fuchsia', - 'georgian', 'gray', 'green', 'groove', 'hebrew', 'help', 'hidden', 'hide', 'higher', - 'high', 'hiragana-iroha', 'hiragana', 'icon', 'inherit', 'inline-table', 'inline', - 'inset', 'inside', 'invert', 'italic', 'justify', 'katakana-iroha', 'katakana', - 'landscape', 'larger', 'large', 'left-side', 'leftwards', 'level', 'lighter', 'lime', 'line-through', 'list-item', 'loud', 'lower-alpha', 'lower-greek', 'lower-roman', 'lowercase', 'ltr', 'lower', 'low', - 'maroon', 'medium', 'message-box', 'middle', 'mix', 'monospace', - 'n-resize', 'narrower', 'navy', 'ne-resize', 'no-close-quote', 'no-open-quote', 'no-repeat', 'none', 'normal', 'nowrap', 'nw-resize', - 'oblique', 'olive', 'once', 'open-quote', 'outset', 'outside', 'overline', - 'pointer', 'portrait', 'purple', 'px', - 'red', 'relative', 'repeat-x', 'repeat-y', 'repeat', 'rgb', 'ridge', 'right-side', 'rightwards', - 's-resize', 'sans-serif', 'scroll', 'se-resize', 'semi-condensed', 'semi-expanded', 'separate', 'serif', 'show', 'silent', 'silver', 'slow', 'slower', 'small-caps', 'small-caption', 'smaller', 'soft', 'solid', 'spell-out', 'square', - 'static', 'status-bar', 'super', 'sw-resize', - 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row', 'table-row-group', 'teal', 'text', 'text-bottom', 'text-top', 'thick', 'thin', 'transparent', - 'ultra-condensed', 'ultra-expanded', 'underline', 'upper-alpha', 'upper-latin', 'upper-roman', 'uppercase', 'url', - 'visible', - 'w-resize', 'wait', 'white', 'wider', - 'x-fast', 'x-high', 'x-large', 'x-loud', 'x-low', 'x-small', 'x-soft', 'xx-large', 'xx-small', - 'yellow', 'yes' - ] - ,'specials' : [ - 'important' - ] - } - ,'OPERATORS' :[ - ':', ';', '!', '.', '#' - ] - ,'DELIMITERS' :[ - '{', '}' - ] - ,'STYLES' : { - 'COMMENTS': 'color: #AAAAAA;' - ,'QUOTESMARKS': 'color: #6381F8;' - ,'KEYWORDS' : { - 'attributes' : 'color: #48BDDF;' - ,'values' : 'color: #2B60FF;' - ,'specials' : 'color: #FF0000;' - } - ,'OPERATORS' : 'color: #FF00FF;' - ,'DELIMITERS' : 'color: #60CA00;' - - } -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/html.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/html.js deleted file mode 100644 index 66490b171..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/html.js +++ /dev/null @@ -1,51 +0,0 @@ -/* -* last update: 2006-08-24 -*/ - -editAreaLoader.load_syntax["html"] = { - 'DISPLAY_NAME' : 'HTML' - ,'COMMENT_SINGLE' : {} - ,'COMMENT_MULTI' : {''} - ,'QUOTEMARKS' : {1: "'", 2: '"'} - ,'KEYWORD_CASE_SENSITIVE' : false - ,'KEYWORDS' : { - } - ,'OPERATORS' :[ - ] - ,'DELIMITERS' :[ - ] - ,'REGEXPS' : { - 'doctype' : { - 'search' : '()(]*>)()' - ,'class' : 'doctype' - ,'modifiers' : '' - ,'execute' : 'before' // before or after - } - ,'tags' : { - 'search' : '(<)(/?[a-z][^ \r\n\t>]*)([^>]*>)' - ,'class' : 'tags' - ,'modifiers' : 'gi' - ,'execute' : 'before' // before or after - } - ,'attributes' : { - 'search' : '( |\n|\r|\t)([^ \r\n\t=]+)(=)' - ,'class' : 'attributes' - ,'modifiers' : 'g' - ,'execute' : 'before' // before or after - } - } - ,'STYLES' : { - 'COMMENTS': 'color: #AAAAAA;' - ,'QUOTESMARKS': 'color: #6381F8;' - ,'KEYWORDS' : { - } - ,'OPERATORS' : 'color: #E775F0;' - ,'DELIMITERS' : '' - ,'REGEXPS' : { - 'attributes': 'color: #B1AC41;' - ,'tags': 'color: #E62253;' - ,'doctype': 'color: #8DCFB5;' - ,'test': 'color: #00FF00;' - } - } -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/java.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/java.js deleted file mode 100644 index e14009bfd..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/java.js +++ /dev/null @@ -1,57 +0,0 @@ -editAreaLoader.load_syntax["java"] = { - 'DISPLAY_NAME' : 'Java' - ,'COMMENT_SINGLE': { 1: '//', 2: '@' } - , 'COMMENT_MULTI': { '/*': '*/' } - , 'QUOTEMARKS': { 1: "'", 2: '"' } - , 'KEYWORD_CASE_SENSITIVE': true - , 'KEYWORDS': { - 'constants': [ - 'null', 'false', 'true' - ] - , 'types': [ - 'String', 'int', 'short', 'long', 'char', 'double', 'byte', - 'float', 'static', 'void', 'private', 'boolean', 'protected', - 'public', 'const', 'class', 'final', 'abstract', 'volatile', - 'enum', 'transient', 'interface' - ] - , 'statements': [ - 'this', 'extends', 'if', 'do', 'while', 'try', 'catch', 'finally', - 'throw', 'throws', 'else', 'for', 'switch', 'continue', 'implements', - 'break', 'case', 'default', 'goto' - ] - , 'keywords': [ - 'new', 'return', 'import', 'native', 'super', 'package', 'assert', 'synchronized', - 'instanceof', 'strictfp' - ] - } - , 'OPERATORS': [ - '+', '-', '/', '*', '=', '<', '>', '%', '!', '?', ':', '&' - ] - , 'DELIMITERS': [ - '(', ')', '[', ']', '{', '}' - ] - , 'REGEXPS': { - 'precompiler': { - 'search': '()(#[^\r\n]*)()' - , 'class': 'precompiler' - , 'modifiers': 'g' - , 'execute': 'before' - } - } - , 'STYLES': { - 'COMMENTS': 'color: #AAAAAA;' - , 'QUOTESMARKS': 'color: #6381F8;' - , 'KEYWORDS': { - 'constants': 'color: #EE0000;' - , 'types': 'color: #0000EE;' - , 'statements': 'color: #60CA00;' - , 'keywords': 'color: #48BDDF;' - } - , 'OPERATORS': 'color: #FF00FF;' - , 'DELIMITERS': 'color: #0038E1;' - , 'REGEXPS': { - 'precompiler': 'color: #009900;' - , 'precompilerstring': 'color: #994400;' - } - } -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/js.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/js.js deleted file mode 100644 index 556566bd5..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/js.js +++ /dev/null @@ -1,94 +0,0 @@ -editAreaLoader.load_syntax["js"] = { - 'DISPLAY_NAME' : 'Javascript' - ,'COMMENT_SINGLE' : {1 : '//'} - ,'COMMENT_MULTI' : {'/*' : '*/'} - ,'QUOTEMARKS' : {1: "'", 2: '"'} - ,'KEYWORD_CASE_SENSITIVE' : false - ,'KEYWORDS' : { - 'statements' : [ - 'as', 'break', 'case', 'catch', 'continue', 'decodeURI', 'delete', 'do', - 'else', 'encodeURI', 'eval', 'finally', 'for', 'if', 'in', 'is', 'item', - 'instanceof', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'void', - 'while', 'write', 'with' - ] - ,'keywords' : [ - 'class', 'const', 'default', 'debugger', 'export', 'extends', 'false', - 'function', 'import', 'namespace', 'new', 'null', 'package', 'private', - 'protected', 'public', 'super', 'true', 'use', 'var', 'window', 'document', - // the list below must be sorted and checked (if it is a keywords or a function and if it is not present twice - 'Link ', 'outerHeight ', 'Anchor', 'FileUpload', - 'location', 'outerWidth', 'Select', 'Area', 'find', 'Location', 'Packages', 'self', - 'arguments', 'locationbar', 'pageXoffset', 'Form', - 'Math', 'pageYoffset', 'setTimeout', 'assign', 'Frame', 'menubar', 'parent', 'status', - 'blur', 'frames', 'MimeType', 'parseFloat', 'statusbar', 'Boolean', 'Function', 'moveBy', - 'parseInt', 'stop', 'Button', 'getClass', 'moveTo', 'Password', 'String', 'callee', 'Hidden', - 'name', 'personalbar', 'Submit', 'caller', 'history', 'NaN', 'Plugin', 'sun', 'captureEvents', - 'History', 'navigate', 'print', 'taint', 'Checkbox', 'home', 'navigator', 'prompt', 'Text', - 'Image', 'Navigator', 'prototype', 'Textarea', 'clearTimeout', 'Infinity', - 'netscape', 'Radio', 'toolbar', 'close', 'innerHeight', 'Number', 'ref', 'top', 'closed', - 'innerWidth', 'Object', 'RegExp', 'toString', 'confirm', 'isFinite', 'onBlur', 'releaseEvents', - 'unescape', 'constructor', 'isNan', 'onError', 'Reset', 'untaint', 'Date', 'java', 'onFocus', - 'resizeBy', 'unwatch', 'defaultStatus', 'JavaArray', 'onLoad', 'resizeTo', 'valueOf', 'document', - 'JavaClass', 'onUnload', 'routeEvent', 'watch', 'Document', 'JavaObject', 'open', 'scroll', 'window', - 'Element', 'JavaPackage', 'opener', 'scrollbars', 'Window', 'escape', 'length', 'Option', 'scrollBy' - ] - ,'functions' : [ - // common functions for Window object - 'alert', 'Array', 'back', 'blur', 'clearInterval', 'close', 'confirm', 'eval ', 'focus', 'forward', 'home', - 'name', 'navigate', 'onblur', 'onerror', 'onfocus', 'onload', 'onmove', - 'onresize', 'onunload', 'open', 'print', 'prompt', 'scroll', 'scrollTo', 'setInterval', 'status', - 'stop' - ] - } - ,'OPERATORS' :[ - '+', '-', '/', '*', '=', '<', '>', '%', '!' - ] - ,'DELIMITERS' :[ - '(', ')', '[', ']', '{', '}' - ] - ,'STYLES' : { - 'COMMENTS': 'color: #AAAAAA;' - ,'QUOTESMARKS': 'color: #6381F8;' - ,'KEYWORDS' : { - 'statements' : 'color: #60CA00;' - ,'keywords' : 'color: #48BDDF;' - ,'functions' : 'color: #2B60FF;' - } - ,'OPERATORS' : 'color: #FF00FF;' - ,'DELIMITERS' : 'color: #0038E1;' - - } - ,'AUTO_COMPLETION' : { - "default": { // the name of this definition group. It's posisble to have different rules inside the same definition file - "REGEXP": { "before_word": "[^a-zA-Z0-9_]|^" // \\s|\\.| - ,"possible_words_letters": "[a-zA-Z0-9_]+" - ,"letter_after_word_must_match": "[^a-zA-Z0-9_]|$" - ,"prefix_separator": "\\." - } - ,"CASE_SENSITIVE": true - ,"MAX_TEXT_LENGTH": 100 // the maximum length of the text being analyzed before the cursor position - ,"KEYWORDS": { - '': [ // the prefix of thoses items - /** - * 0 : the keyword the user is typing - * 1 : (optionnal) the string inserted in code ("{@}" being the new position of the cursor, "§" beeing the equivalent to the value the typed string indicated if the previous ) - * If empty the keyword will be displayed - * 2 : (optionnal) the text that appear in the suggestion box (if empty, the string to insert will be displayed) - */ - ['Array', '§()', ''] - ,['alert', '§({@})', 'alert(String message)'] - ,['document'] - ,['window'] - ] - ,'window' : [ - ['location'] - ,['document'] - ,['scrollTo', 'scrollTo({@})', 'scrollTo(Int x,Int y)'] - ] - ,'location' : [ - ['href'] - ] - } - } - } -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/pas.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/pas.js deleted file mode 100644 index 26fb74832..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/pas.js +++ /dev/null @@ -1,83 +0,0 @@ -editAreaLoader.load_syntax["pas"] = { - 'DISPLAY_NAME' : 'Pascal' - ,'COMMENT_SINGLE' : {} - ,'COMMENT_MULTI' : {'{' : '}', '(*':'*)'} - ,'QUOTEMARKS' : {1: '"', 2: "'"} - ,'KEYWORD_CASE_SENSITIVE' : false - ,'KEYWORDS' : { - 'constants' : [ - 'Blink', 'Black', 'Blue', 'Green', 'Cyan', 'Red', - 'Magenta', 'Brown', 'LightGray', 'DarkGray', - 'LightBlue', 'LightGreen', 'LightCyan', 'LightRed', - 'LightMagenta', 'Yellow', 'White', 'MaxSIntValue', - 'MaxUIntValue', 'maxint', 'maxLongint', 'maxSmallint', - 'erroraddr', 'errorcode', 'LineEnding' - ] - ,'keywords' : [ - 'in', 'or', 'div', 'mod', 'and', 'shl', 'shr', 'xor', - 'pow', 'is', 'not','Absolute', 'And_then', 'Array', - 'Begin', 'Bindable', 'Case', 'Const', 'Do', 'Downto', - 'Else', 'End', 'Export', 'File', 'For', 'Function', - 'Goto', 'If', 'Import', 'Implementation', 'Inherited', - 'Inline', 'Interface', 'Label', 'Module', 'Nil', - 'Object', 'Of', 'Only', 'Operator', 'Or_else', - 'Otherwise', 'Packed', 'Procedure', 'Program', - 'Protected', 'Qualified', 'Record', 'Repeat', - 'Restricted', 'Set', 'Then', 'To', 'Type', 'Unit', - 'Until', 'Uses', 'Value', 'Var', 'Virtual', 'While', - 'With' - ] - ,'functions' : [ - 'Abs', 'Addr', 'Append', 'Arctan', 'Assert', 'Assign', - 'Assigned', 'BinStr', 'Blockread', 'Blockwrite', - 'Break', 'Chdir', 'Chr', 'Close', 'CompareByte', - 'CompareChar', 'CompareDWord', 'CompareWord', 'Concat', - 'Continue', 'Copy', 'Cos', 'CSeg', 'Dec', 'Delete', - 'Dispose', 'DSeg', 'Eof', 'Eoln', 'Erase', 'Exclude', - 'Exit', 'Exp', 'Filepos', 'Filesize', 'FillByte', - 'Fillchar', 'FillDWord', 'Fillword', 'Flush', 'Frac', - 'Freemem', 'Getdir', 'Getmem', 'GetMemoryManager', - 'Halt', 'HexStr', 'Hi', 'High', 'Inc', 'Include', - 'IndexByte', 'IndexChar', 'IndexDWord', 'IndexWord', - 'Insert', 'IsMemoryManagerSet', 'Int', 'IOresult', - 'Length', 'Ln', 'Lo', 'LongJmp', 'Low', 'Lowercase', - 'Mark', 'Maxavail', 'Memavail', 'Mkdir', 'Move', - 'MoveChar0', 'New', 'Odd', 'OctStr', 'Ofs', 'Ord', - 'Paramcount', 'Paramstr', 'Pi', 'Pos', 'Power', 'Pred', - 'Ptr', 'Random', 'Randomize', 'Read', 'Readln', - 'Real2Double', 'Release', 'Rename', 'Reset', 'Rewrite', - 'Rmdir', 'Round', 'Runerror', 'Seek', 'SeekEof', - 'SeekEoln', 'Seg', 'SetMemoryManager', 'SetJmp', - 'SetLength', 'SetString', 'SetTextBuf', 'Sin', 'SizeOf', - 'Sptr', 'Sqr', 'Sqrt', 'SSeg', 'Str', 'StringOfChar', - 'Succ', 'Swap', 'Trunc', 'Truncate', 'Upcase', 'Val', - 'Write', 'WriteLn' - ] - ,'types' : [ - 'Integer', 'Shortint', 'SmallInt', 'Longint', - 'Longword', 'Int64', 'Byte', 'Word', 'Cardinal', - 'QWord', 'Boolean', 'ByteBool', 'LongBool', 'Char', - 'Real', 'Single', 'Double', 'Extended', 'Comp', - 'String', 'ShortString', 'AnsiString', 'PChar' - ] - } - ,'OPERATORS' :[ - '@', '*', '+', '-', '/', '^', ':=', '<', '=', '>' - ] - ,'DELIMITERS' :[ - '(', ')', '[', ']' - ] - ,'STYLES' : { - 'COMMENTS': 'color: #AAAAAA;' - ,'QUOTESMARKS': 'color: #6381F8;' - ,'KEYWORDS' : { - 'specials' : 'color: #EE0000;' - ,'constants' : 'color: #654321;' - ,'keywords' : 'color: #48BDDF;' - ,'functions' : 'color: #449922;' - ,'types' : 'color: #2B60FF;' - } - ,'OPERATORS' : 'color: #FF00FF;' - ,'DELIMITERS' : 'color: #60CA00;' - } -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/perl.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/perl.js deleted file mode 100644 index 0313c0c68..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/perl.js +++ /dev/null @@ -1,88 +0,0 @@ -/*************************************************************************** - * (c) 2008 - file created by Christoph Pinkel, MTC Infomedia OHG. - * - * You may choose any license of the current release or any future release - * of editarea to use, modify and/or redistribute this file. - * - * This language specification file supports for syntax checking on - * a large subset of Perl 5.x. - * The basic common syntax of Perl is fully supported, but as for - * the highlighting of built-in operations, it's mainly designed - * to support for hightlighting Perl code in a Safe environment (compartment) - * as used by CoMaNet for evaluation of administrative scripts. This Safe - * compartment basically allows for all of Opcode's :default operations, - * but little others. See http://perldoc.perl.org/Opcode.html to learn - * more. - ***************************************************************************/ - -editAreaLoader.load_syntax["perl"] = { - 'DISPLAY_NAME' : 'Perl', - 'COMMENT_SINGLE' : {1 : '#'}, - 'QUOTEMARKS' : {1: "'", 2: '"'}, - 'KEYWORD_CASE_SENSITIVE' : true, - 'KEYWORDS' : - { - 'core' : - [ "if", "else", "elsif", "while", "for", "each", "foreach", - "next", "last", "goto", "exists", "delete", "undef", - "my", "our", "local", "use", "require", "package", "keys", "values", - "sub", "bless", "ref", "return" ], - 'functions' : - [ - //from :base_core - "int", "hex", "oct", "abs", "substr", "vec", "study", "pos", - "length", "index", "rindex", "ord", "chr", "ucfirst", "lcfirst", - "uc", "lc", "quotemeta", "chop", "chomp", "split", "list", "splice", - "push", "pop", "shift", "unshift", "reverse", "and", "or", "dor", - "xor", "warn", "die", "prototype", - //from :base_mem - "concat", "repeat", "join", "range", - //none from :base_loop, as we'll see them as basic statements... - //from :base_orig - "sprintf", "crypt", "tie", "untie", "select", "localtime", "gmtime", - //others - "print", "open", "close" - ] - }, - 'OPERATORS' : - [ '+', '-', '/', '*', '=', '<', '>', '!', '||', '.', '&&', - ' eq ', ' ne ', '=~' ], - 'DELIMITERS' : - [ '(', ')', '[', ']', '{', '}' ], - 'REGEXPS' : - { - 'packagedecl' : { 'search': '(package )([^ \r\n\t#;]*)()', - 'class' : 'scopingnames', - 'modifiers' : 'g', 'execute' : 'before' }, - 'subdecl' : { 'search': '(sub )([^ \r\n\t#]*)()', - 'class' : 'scopingnames', - 'modifiers' : 'g', 'execute' : 'before' }, - 'scalars' : { 'search': '()(\\\$[a-zA-Z0-9_:]*)()', - 'class' : 'vars', - 'modifiers' : 'g', 'execute' : 'after' }, - 'arrays' : { 'search': '()(@[a-zA-Z0-9_:]*)()', - 'class' : 'vars', - 'modifiers' : 'g', 'execute' : 'after' }, - 'hashs' : { 'search': '()(%[a-zA-Z0-9_:]*)()', - 'class' : 'vars', - 'modifiers' : 'g', 'execute' : 'after' }, - }, - - 'STYLES' : - { - 'COMMENTS': 'color: #AAAAAA;', - 'QUOTESMARKS': 'color: #DC0000;', - 'KEYWORDS' : - { - 'core' : 'color: #8aca00;', - 'functions' : 'color: #2B60FF;' - }, - 'OPERATORS' : 'color: #8aca00;', - 'DELIMITERS' : 'color: #0038E1;', - 'REGEXPS': - { - 'scopingnames' : 'color: #ff0000;', - 'vars' : 'color: #00aaaa;', - } - } //'STYLES' -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/php.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/php.js deleted file mode 100644 index f53dc8895..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/php.js +++ /dev/null @@ -1,157 +0,0 @@ -editAreaLoader.load_syntax["php"] = { - 'DISPLAY_NAME' : 'Php' - ,'COMMENT_SINGLE' : {1 : '//', 2 : '#'} - ,'COMMENT_MULTI' : {'/*' : '*/'} - ,'QUOTEMARKS' : {1: "'", 2: '"'} - ,'KEYWORD_CASE_SENSITIVE' : false - ,'KEYWORDS' : { - 'statements' : [ - 'include', 'require', 'include_once', 'require_once', - 'for', 'foreach', 'as', 'if', 'elseif', 'else', 'while', 'do', 'endwhile', - 'endif', 'switch', 'case', 'endswitch', - 'return', 'break', 'continue' - ] - ,'reserved' : [ - '_GET', '_POST', '_SESSION', '_SERVER', '_FILES', '_ENV', '_COOKIE', '_REQUEST', - 'null', '__LINE__', '__FILE__', - 'false', '<?php', '?>', '<?', - '<script language', '</script>', - 'true', 'var', 'default', - 'function', 'class', 'new', '&new', 'this', - '__FUNCTION__', '__CLASS__', '__METHOD__', 'PHP_VERSION', - 'PHP_OS', 'DEFAULT_INCLUDE_PATH', 'PEAR_INSTALL_DIR', 'PEAR_EXTENSION_DIR', - 'PHP_EXTENSION_DIR', 'PHP_BINDIR', 'PHP_LIBDIR', 'PHP_DATADIR', 'PHP_SYSCONFDIR', - 'PHP_LOCALSTATEDIR', 'PHP_CONFIG_FILE_PATH', 'PHP_OUTPUT_HANDLER_START', 'PHP_OUTPUT_HANDLER_CONT', - 'PHP_OUTPUT_HANDLER_END', 'E_ERROR', 'E_WARNING', 'E_PARSE', 'E_NOTICE', - 'E_CORE_ERROR', 'E_CORE_WARNING', 'E_COMPILE_ERROR', 'E_COMPILE_WARNING', 'E_USER_ERROR', - 'E_USER_WARNING', 'E_USER_NOTICE', 'E_ALL' - - ] - ,'functions' : [ - 'func_num_args', 'func_get_arg', 'func_get_args', 'strlen', 'strcmp', 'strncmp', 'strcasecmp', 'strncasecmp', 'each', 'error_reporting', 'define', 'defined', - 'trigger_error', 'user_error', 'set_error_handler', 'restore_error_handler', 'get_declared_classes', 'get_loaded_extensions', - 'extension_loaded', 'get_extension_funcs', 'debug_backtrace', - 'constant', 'bin2hex', 'sleep', 'usleep', 'time', 'mktime', 'gmmktime', 'strftime', 'gmstrftime', 'strtotime', 'date', 'gmdate', 'getdate', 'localtime', 'checkdate', 'flush', 'wordwrap', 'htmlspecialchars', 'htmlentities', 'html_entity_decode', 'md5', 'md5_file', 'crc32', 'getimagesize', 'image_type_to_mime_type', 'phpinfo', 'phpversion', 'phpcredits', 'strnatcmp', 'strnatcasecmp', 'substr_count', 'strspn', 'strcspn', 'strtok', 'strtoupper', 'strtolower', 'strpos', 'strrpos', 'strrev', 'hebrev', 'hebrevc', 'nl2br', 'basename', 'dirname', 'pathinfo', 'stripslashes', 'stripcslashes', 'strstr', 'stristr', 'strrchr', 'str_shuffle', 'str_word_count', 'strcoll', 'substr', 'substr_replace', 'quotemeta', 'ucfirst', 'ucwords', 'strtr', 'addslashes', 'addcslashes', 'rtrim', 'str_replace', 'str_repeat', 'count_chars', 'chunk_split', 'trim', 'ltrim', 'strip_tags', 'similar_text', 'explode', 'implode', 'setlocale', 'localeconv', - 'parse_str', 'str_pad', 'chop', 'strchr', 'sprintf', 'printf', 'vprintf', 'vsprintf', 'sscanf', 'fscanf', 'parse_url', 'urlencode', 'urldecode', 'rawurlencode', 'rawurldecode', 'readlink', 'linkinfo', 'link', 'unlink', 'exec', 'system', 'escapeshellcmd', 'escapeshellarg', 'passthru', 'shell_exec', 'proc_open', 'proc_close', 'rand', 'srand', 'getrandmax', 'mt_rand', 'mt_srand', 'mt_getrandmax', 'base64_decode', 'base64_encode', 'abs', 'ceil', 'floor', 'round', 'is_finite', 'is_nan', 'is_infinite', 'bindec', 'hexdec', 'octdec', 'decbin', 'decoct', 'dechex', 'base_convert', 'number_format', 'fmod', 'ip2long', 'long2ip', 'getenv', 'putenv', 'getopt', 'microtime', 'gettimeofday', 'getrusage', 'uniqid', 'quoted_printable_decode', 'set_time_limit', 'get_cfg_var', 'magic_quotes_runtime', 'set_magic_quotes_runtime', 'get_magic_quotes_gpc', 'get_magic_quotes_runtime', - 'import_request_variables', 'error_log', 'serialize', 'unserialize', 'memory_get_usage', 'var_dump', 'var_export', 'debug_zval_dump', 'print_r','highlight_file', 'show_source', 'highlight_string', 'ini_get', 'ini_get_all', 'ini_set', 'ini_alter', 'ini_restore', 'get_include_path', 'set_include_path', 'restore_include_path', 'setcookie', 'header', 'headers_sent', 'connection_aborted', 'connection_status', 'ignore_user_abort', 'parse_ini_file', 'is_uploaded_file', 'move_uploaded_file', 'intval', 'floatval', 'doubleval', 'strval', 'gettype', 'settype', 'is_null', 'is_resource', 'is_bool', 'is_long', 'is_float', 'is_int', 'is_integer', 'is_double', 'is_real', 'is_numeric', 'is_string', 'is_array', 'is_object', 'is_scalar', - 'ereg', 'ereg_replace', 'eregi', 'eregi_replace', 'split', 'spliti', 'join', 'sql_regcase', 'dl', 'pclose', 'popen', 'readfile', 'rewind', 'rmdir', 'umask', 'fclose', 'feof', 'fgetc', 'fgets', 'fgetss', 'fread', 'fopen', 'fpassthru', 'ftruncate', 'fstat', 'fseek', 'ftell', 'fflush', 'fwrite', 'fputs', 'mkdir', 'rename', 'copy', 'tempnam', 'tmpfile', 'file', 'file_get_contents', 'stream_select', 'stream_context_create', 'stream_context_set_params', 'stream_context_set_option', 'stream_context_get_options', 'stream_filter_prepend', 'stream_filter_append', 'fgetcsv', 'flock', 'get_meta_tags', 'stream_set_write_buffer', 'set_file_buffer', 'set_socket_blocking', 'stream_set_blocking', 'socket_set_blocking', 'stream_get_meta_data', 'stream_register_wrapper', 'stream_wrapper_register', 'stream_set_timeout', 'socket_set_timeout', 'socket_get_status', 'realpath', 'fnmatch', 'fsockopen', 'pfsockopen', 'pack', 'unpack', 'get_browser', 'crypt', 'opendir', 'closedir', 'chdir', 'getcwd', 'rewinddir', 'readdir', 'dir', 'glob', 'fileatime', 'filectime', 'filegroup', 'fileinode', 'filemtime', 'fileowner', 'fileperms', 'filesize', 'filetype', 'file_exists', 'is_writable', 'is_writeable', 'is_readable', 'is_executable', 'is_file', 'is_dir', 'is_link', 'stat', 'lstat', 'chown', - 'touch', 'clearstatcache', 'mail', 'ob_start', 'ob_flush', 'ob_clean', 'ob_end_flush', 'ob_end_clean', 'ob_get_flush', 'ob_get_clean', 'ob_get_length', 'ob_get_level', 'ob_get_status', 'ob_get_contents', 'ob_implicit_flush', 'ob_list_handlers', 'ksort', 'krsort', 'natsort', 'natcasesort', 'asort', 'arsort', 'sort', 'rsort', 'usort', 'uasort', 'uksort', 'shuffle', 'array_walk', 'count', 'end', 'prev', 'next', 'reset', 'current', 'key', 'min', 'max', 'in_array', 'array_search', 'extract', 'compact', 'array_fill', 'range', 'array_multisort', 'array_push', 'array_pop', 'array_shift', 'array_unshift', 'array_splice', 'array_slice', 'array_merge', 'array_merge_recursive', 'array_keys', 'array_values', 'array_count_values', 'array_reverse', 'array_reduce', 'array_pad', 'array_flip', 'array_change_key_case', 'array_rand', 'array_unique', 'array_intersect', 'array_intersect_assoc', 'array_diff', 'array_diff_assoc', 'array_sum', 'array_filter', 'array_map', 'array_chunk', 'array_key_exists', 'pos', 'sizeof', 'key_exists', 'assert', 'assert_options', 'version_compare', 'ftok', 'str_rot13', 'aggregate', - 'session_name', 'session_module_name', 'session_save_path', 'session_id', 'session_regenerate_id', 'session_decode', 'session_register', 'session_unregister', 'session_is_registered', 'session_encode', - 'session_start', 'session_destroy', 'session_unset', 'session_set_save_handler', 'session_cache_limiter', 'session_cache_expire', 'session_set_cookie_params', 'session_get_cookie_params', 'session_write_close', 'preg_match', 'preg_match_all', 'preg_replace', 'preg_replace_callback', 'preg_split', 'preg_quote', 'preg_grep', 'overload', 'ctype_alnum', 'ctype_alpha', 'ctype_cntrl', 'ctype_digit', 'ctype_lower', 'ctype_graph', 'ctype_print', 'ctype_punct', 'ctype_space', 'ctype_upper', 'ctype_xdigit', 'virtual', 'apache_request_headers', 'apache_note', 'apache_lookup_uri', 'apache_child_terminate', 'apache_setenv', 'apache_response_headers', 'apache_get_version', 'getallheaders', 'mysql_connect', 'mysql_pconnect', 'mysql_close', 'mysql_select_db', 'mysql_create_db', 'mysql_drop_db', 'mysql_query', 'mysql_unbuffered_query', 'mysql_db_query', 'mysql_list_dbs', 'mysql_list_tables', 'mysql_list_fields', 'mysql_list_processes', 'mysql_error', 'mysql_errno', 'mysql_affected_rows', 'mysql_insert_id', 'mysql_result', 'mysql_num_rows', 'mysql_num_fields', 'mysql_fetch_row', 'mysql_fetch_array', 'mysql_fetch_assoc', 'mysql_fetch_object', 'mysql_data_seek', 'mysql_fetch_lengths', 'mysql_fetch_field', 'mysql_field_seek', 'mysql_free_result', 'mysql_field_name', 'mysql_field_table', 'mysql_field_len', 'mysql_field_type', 'mysql_field_flags', 'mysql_escape_string', 'mysql_real_escape_string', 'mysql_stat', - 'mysql_thread_id', 'mysql_client_encoding', 'mysql_get_client_info', 'mysql_get_host_info', 'mysql_get_proto_info', 'mysql_get_server_info', 'mysql_info', 'mysql', 'mysql_fieldname', 'mysql_fieldtable', 'mysql_fieldlen', 'mysql_fieldtype', 'mysql_fieldflags', 'mysql_selectdb', 'mysql_createdb', 'mysql_dropdb', 'mysql_freeresult', 'mysql_numfields', 'mysql_numrows', 'mysql_listdbs', 'mysql_listtables', 'mysql_listfields', 'mysql_db_name', 'mysql_dbname', 'mysql_tablename', 'mysql_table_name', 'pg_connect', 'pg_pconnect', 'pg_close', 'pg_connection_status', 'pg_connection_busy', 'pg_connection_reset', 'pg_host', 'pg_dbname', 'pg_port', 'pg_tty', 'pg_options', 'pg_ping', 'pg_query', 'pg_send_query', 'pg_cancel_query', 'pg_fetch_result', 'pg_fetch_row', 'pg_fetch_assoc', 'pg_fetch_array', 'pg_fetch_object', 'pg_fetch_all', 'pg_affected_rows', 'pg_get_result', 'pg_result_seek', 'pg_result_status', 'pg_free_result', 'pg_last_oid', 'pg_num_rows', 'pg_num_fields', 'pg_field_name', 'pg_field_num', 'pg_field_size', 'pg_field_type', 'pg_field_prtlen', 'pg_field_is_null', 'pg_get_notify', 'pg_get_pid', 'pg_result_error', 'pg_last_error', 'pg_last_notice', 'pg_put_line', 'pg_end_copy', 'pg_copy_to', 'pg_copy_from', - 'pg_trace', 'pg_untrace', 'pg_lo_create', 'pg_lo_unlink', 'pg_lo_open', 'pg_lo_close', 'pg_lo_read', 'pg_lo_write', 'pg_lo_read_all', 'pg_lo_import', 'pg_lo_export', 'pg_lo_seek', 'pg_lo_tell', 'pg_escape_string', 'pg_escape_bytea', 'pg_unescape_bytea', 'pg_client_encoding', 'pg_set_client_encoding', 'pg_meta_data', 'pg_convert', 'pg_insert', 'pg_update', 'pg_delete', 'pg_select', 'pg_exec', 'pg_getlastoid', 'pg_cmdtuples', 'pg_errormessage', 'pg_numrows', 'pg_numfields', 'pg_fieldname', 'pg_fieldsize', 'pg_fieldtype', 'pg_fieldnum', 'pg_fieldprtlen', 'pg_fieldisnull', 'pg_freeresult', 'pg_result', 'pg_loreadall', 'pg_locreate', 'pg_lounlink', 'pg_loopen', 'pg_loclose', 'pg_loread', 'pg_lowrite', 'pg_loimport', 'pg_loexport', - 'echo', 'print', 'global', 'static', 'exit', 'array', 'empty', 'eval', 'isset', 'unset', 'die' - - ] - } - ,'OPERATORS' :[ - '+', '-', '/', '*', '=', '<', '>', '%', '!', '&&', '||' - ] - ,'DELIMITERS' :[ - '(', ')', '[', ']', '{', '}' - ] - ,'REGEXPS' : { - // highlight all variables ($...) - 'variables' : { - 'search' : '()(\\$\\w+)()' - ,'class' : 'variables' - ,'modifiers' : 'g' - ,'execute' : 'before' // before or after - } - } - ,'STYLES' : { - 'COMMENTS': 'color: #AAAAAA;' - ,'QUOTESMARKS': 'color: #879EFA;' - ,'KEYWORDS' : { - 'reserved' : 'color: #48BDDF;' - ,'functions' : 'color: #0040FD;' - ,'statements' : 'color: #60CA00;' - } - ,'OPERATORS' : 'color: #FF00FF;' - ,'DELIMITERS' : 'color: #2B60FF;' - ,'REGEXPS' : { - 'variables' : 'color: #E0BD54;' - } - } - ,'AUTO_COMPLETION' : { - "default": { // the name of this definition group. It's posisble to have different rules inside the same definition file - "REGEXP": { "before_word": "[^a-zA-Z0-9_]|^" // \\s|\\.| - ,"possible_words_letters": "[a-zA-Z0-9_\$]+" - ,"letter_after_word_must_match": "[^a-zA-Z0-9_]|$" - ,"prefix_separator": "\\-\\>|\\:\\:" - } - ,"CASE_SENSITIVE": true - ,"MAX_TEXT_LENGTH": 100 // the maximum length of the text being analyzed before the cursor position - ,"KEYWORDS": { - '': [ // the prefix of thoses items - /** - * 0 : the keyword the user is typing - * 1 : (optionnal) the string inserted in code ("{@}" being the new position of the cursor, "§" beeing the equivalent to the value the typed string indicated if the previous ) - * If empty the keyword will be displayed - * 2 : (optionnal) the text that appear in the suggestion box (if empty, the string to insert will be displayed) - */ - ['$_POST'] - ,['$_GET'] - ,['$_SESSION'] - ,['$_SERVER'] - ,['$_FILES'] - ,['$_ENV'] - ,['$_COOKIE'] - ,['$_REQUEST'] - // magic methods - ,['__construct', '§( {@} )'] - ,['__destruct', '§( {@} )'] - ,['__sleep', '§( {@} )'] - ,['__wakeup', '§( {@} )'] - ,['__toString', '§( {@} )'] - // include - ,['include', '§ "{@}";'] - ,['include_once', '§ "{@}";'] - ,['require', '§ "{@}";'] - ,['require_once', '§ "{@}";'] - // statements - ,['for', '§( {@} )'] - ,['foreach', '§( {@} )'] - ,['if', '§( {@} )'] - ,['elseif', '§( {@} )'] - ,['while', '§( {@} )'] - ,['switch', '§( {@} )'] - ,['break'] - ,['case'] - ,['continue'] - ,['do'] - ,['else'] - ,['endif'] - ,['endswitch'] - ,['endwhile'] - ,['return'] - // function - ,['unset', '§( {@} )'] - ] - } - } - ,"live": { - - // class NAME: /class\W+([a-z]+)\W+/gi - // method: /^(public|private|protected)?\s*function\s+([a-z][a-z0-9\_]*)\s*(\([^\{]*\))/gmi - // static: /^(public|private|protected)?\s+static\s+(public|private|protected)?\s*function\s+([a-z][a-z0-9\_]*)\s*(\([^\{]*\))/gmi - // attributes: /(\$this\-\>|(?:var|public|protected|private)\W+\$)([a-z0-9\_]+)(?!\()\b/gi - // v1 : /(\$this\-\>|var\W+|public\W+|protected\W+|private\W+)([a-z0-9\_]+)\W*(=|;)/gi - // var type: /(\$(this\-\>)?[a-z0-9\_]+)\s*\=\s*new\s+([a-z0-9\_])+/gi - - - "REGEXP": { "before_word": "[^a-zA-Z0-9_]|^" // \\s|\\.| - ,"possible_words_letters": "[a-zA-Z0-9_\$]+" - ,"letter_after_word_must_match": "[^a-zA-Z0-9_]|$" - ,"prefix_separator": "\\-\\>" - } - ,"CASE_SENSITIVE": true - ,"MAX_TEXT_LENGTH": 100 // the maximum length of the text being analyzed before the cursor position - ,"KEYWORDS": { - '$this': [ // the prefix of thoses items - ['test'] - ] - } - } - } -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/python.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/python.js deleted file mode 100644 index e9f4314ed..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/python.js +++ /dev/null @@ -1,145 +0,0 @@ -/** - * Python syntax v 1.1 - * - * v1.1 by Andre Roberge (2006/12/27) - * -**/ -editAreaLoader.load_syntax["python"] = { - 'DISPLAY_NAME' : 'Python' - ,'COMMENT_SINGLE' : {1 : '#'} - ,'COMMENT_MULTI' : {} - ,'QUOTEMARKS' : {1: "'", 2: '"'} - ,'KEYWORD_CASE_SENSITIVE' : true - ,'KEYWORDS' : { - /* - ** Set 1: reserved words - ** http://python.org/doc/current/ref/keywords.html - ** Note: 'as' and 'with' have been added starting with Python 2.5 - */ - 'reserved' : [ - 'and', 'as', 'assert', 'break', 'class', 'continue', 'def', 'del', 'elif', - 'else', 'except', 'exec', 'finally', 'for', 'from', 'global', 'if', - 'import', 'is', 'in', 'lambda', 'not', 'or', 'pass', 'print', 'raise', - 'return', 'try', 'while', 'with', 'yield' - //the following are *almost* reserved; we'll treat them as such - , 'False', 'True', 'None' - ] - /* - ** Set 2: builtins - ** http://python.org/doc/current/lib/built-in-funcs.html - */ - ,'builtins' : [ - '__import__', 'abs', 'basestring', 'bool', 'callable', 'chr', 'classmethod', 'cmp', - 'compile', 'complex', 'delattr', 'dict', 'dir', 'divmod', 'enumerate', 'eval', 'execfile', - 'file', 'filter', 'float', 'frozenset', 'getattr', 'globals', 'hasattr', 'hash', 'help', - 'hex', 'id', 'input', 'int', 'isinstance', 'issubclass', 'iter', 'len', 'list', 'locals', - 'long', 'map', 'max', 'min', 'object', 'oct', 'open', 'ord', 'pow', 'property', 'range', - 'raw_input', 'reduce', 'reload', 'repr', 'reversed', 'round', 'set', 'setattr', 'slice', - 'sorted', 'staticmethod', 'str', 'sum', 'super', 'tuple', 'type', 'unichr', 'unicode', - 'vars', 'xrange', 'zip', - // Built-in constants: http://www.python.org/doc/2.4.1/lib/node35.html - //'False', 'True', 'None' have been included in 'reserved' - 'NotImplemented', 'Ellipsis', - // Built-in Exceptions: http://python.org/doc/current/lib/module-exceptions.html - 'Exception', 'StandardError', 'ArithmeticError', 'LookupError', 'EnvironmentError', - 'AssertionError', 'AttributeError', 'EOFError', 'FloatingPointError', 'IOError', - 'ImportError', 'IndexError', 'KeyError', 'KeyboardInterrupt', 'MemoryError', 'NameError', - 'NotImplementedError', 'OSError', 'OverflowError', 'ReferenceError', 'RuntimeError', - 'StopIteration', 'SyntaxError', 'SystemError', 'SystemExit', 'TypeError', - 'UnboundlocalError', 'UnicodeError', 'UnicodeEncodeError', 'UnicodeDecodeError', - 'UnicodeTranslateError', 'ValueError', 'WindowsError', 'ZeroDivisionError', 'Warning', - 'UserWarning', 'DeprecationWarning', 'PendingDeprecationWarning', 'SyntaxWarning', - 'RuntimeWarning', 'FutureWarning', - // we will include the string methods as well - // http://python.org/doc/current/lib/string-methods.html - 'capitalize', 'center', 'count', 'decode', 'encode', 'endswith', 'expandtabs', - 'find', 'index', 'isalnum', 'isaplpha', 'isdigit', 'islower', 'isspace', 'istitle', - 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'replace', 'rfind', 'rindex', 'rjust', - 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', - 'translate', 'upper', 'zfill' - ] - /* - ** Set 3: standard library - ** http://python.org/doc/current/lib/modindex.html - */ - ,'stdlib' : [ - '__builtin__', '__future__', '__main__', '_winreg', 'aifc', 'AL', 'al', 'anydbm', - 'array', 'asynchat', 'asyncore', 'atexit', 'audioop', 'base64', 'BaseHTTPServer', - 'Bastion', 'binascii', 'binhex', 'bisect', 'bsddb', 'bz2', 'calendar', 'cd', 'cgi', - 'CGIHTTPServer', 'cgitb', 'chunk', 'cmath', 'cmd', 'code', 'codecs', 'codeop', - 'collections', 'colorsys', 'commands', 'compileall', 'compiler', 'compiler', - 'ConfigParser', 'Cookie', 'cookielib', 'copy', 'copy_reg', 'cPickle', 'crypt', - 'cStringIO', 'csv', 'curses', 'datetime', 'dbhash', 'dbm', 'decimal', 'DEVICE', - 'difflib', 'dircache', 'dis', 'distutils', 'dl', 'doctest', 'DocXMLRPCServer', 'dumbdbm', - 'dummy_thread', 'dummy_threading', 'email', 'encodings', 'errno', 'exceptions', 'fcntl', - 'filecmp', 'fileinput', 'FL', 'fl', 'flp', 'fm', 'fnmatch', 'formatter', 'fpectl', - 'fpformat', 'ftplib', 'gc', 'gdbm', 'getopt', 'getpass', 'gettext', 'GL', 'gl', 'glob', - 'gopherlib', 'grp', 'gzip', 'heapq', 'hmac', 'hotshot', 'htmlentitydefs', 'htmllib', - 'HTMLParser', 'httplib', 'imageop', 'imaplib', 'imgfile', 'imghdr', 'imp', 'inspect', - 'itertools', 'jpeg', 'keyword', 'linecache', 'locale', 'logging', 'mailbox', 'mailcap', - 'marshal', 'math', 'md5', 'mhlib', 'mimetools', 'mimetypes', 'MimeWriter', 'mimify', - 'mmap', 'msvcrt', 'multifile', 'mutex', 'netrc', 'new', 'nis', 'nntplib', 'operator', - 'optparse', 'os', 'ossaudiodev', 'parser', 'pdb', 'pickle', 'pickletools', 'pipes', - 'pkgutil', 'platform', 'popen2', 'poplib', 'posix', 'posixfile', 'pprint', 'profile', - 'pstats', 'pty', 'pwd', 'py_compile', 'pyclbr', 'pydoc', 'Queue', 'quopri', 'random', - 're', 'readline', 'repr', 'resource', 'rexec', 'rfc822', 'rgbimg', 'rlcompleter', - 'robotparser', 'sched', 'ScrolledText', 'select', 'sets', 'sgmllib', 'sha', 'shelve', - 'shlex', 'shutil', 'signal', 'SimpleHTTPServer', 'SimpleXMLRPCServer', 'site', 'smtpd', - 'smtplib', 'sndhdr', 'socket', 'SocketServer', 'stat', 'statcache', 'statvfs', 'string', - 'StringIO', 'stringprep', 'struct', 'subprocess', 'sunau', 'SUNAUDIODEV', 'sunaudiodev', - 'symbol', 'sys', 'syslog', 'tabnanny', 'tarfile', 'telnetlib', 'tempfile', 'termios', - 'test', 'textwrap', 'thread', 'threading', 'time', 'timeit', 'Tix', 'Tkinter', 'token', - 'tokenize', 'traceback', 'tty', 'turtle', 'types', 'unicodedata', 'unittest', 'urllib2', - 'urllib', 'urlparse', 'user', 'UserDict', 'UserList', 'UserString', 'uu', 'warnings', - 'wave', 'weakref', 'webbrowser', 'whichdb', 'whrandom', 'winsound', 'xdrlib', 'xml', - 'xmllib', 'xmlrpclib', 'zipfile', 'zipimport', 'zlib' - - ] - /* - ** Set 4: special methods - ** http://python.org/doc/current/ref/specialnames.html - */ - ,'special' : [ - // Basic customization: http://python.org/doc/current/ref/customization.html - '__new__', '__init__', '__del__', '__repr__', '__str__', - '__lt__', '__le__', '__eq__', '__ne__', '__gt__', '__ge__', '__cmp__', '__rcmp__', - '__hash__', '__nonzero__', '__unicode__', '__dict__', - // Attribute access: http://python.org/doc/current/ref/attribute-access.html - '__setattr__', '__delattr__', '__getattr__', '__getattribute__', '__get__', '__set__', - '__delete__', '__slots__', - // Class creation, callable objects - '__metaclass__', '__call__', - // Container types: http://python.org/doc/current/ref/sequence-types.html - '__len__', '__getitem__', '__setitem__', '__delitem__', '__iter__', '__contains__', - '__getslice__', '__setslice__', '__delslice__', - // Numeric types: http://python.org/doc/current/ref/numeric-types.html - '__abs__','__add__','__and__','__coerce__','__div__','__divmod__','__float__', - '__hex__','__iadd__','__isub__','__imod__','__idiv__','__ipow__','__iand__', - '__ior__','__ixor__', '__ilshift__','__irshift__','__invert__','__int__', - '__long__','__lshift__', - '__mod__','__mul__','__neg__','__oct__','__or__','__pos__','__pow__', - '__radd__','__rdiv__','__rdivmod__','__rmod__','__rpow__','__rlshift__','__rrshift__', - '__rshift__','__rsub__','__rmul__','__repr__','__rand__','__rxor__','__ror__', - '__sub__','__xor__' - ] - } - ,'OPERATORS' :[ - '+', '-', '/', '*', '=', '<', '>', '%', '!', '&', ';', '?', '`', ':', ',' - ] - ,'DELIMITERS' :[ - '(', ')', '[', ']', '{', '}' - ] - ,'STYLES' : { - 'COMMENTS': 'color: #AAAAAA;' - ,'QUOTESMARKS': 'color: #660066;' - ,'KEYWORDS' : { - 'reserved' : 'color: #0000FF;' - ,'builtins' : 'color: #009900;' - ,'stdlib' : 'color: #009900;' - ,'special': 'color: #006666;' - } - ,'OPERATORS' : 'color: #993300;' - ,'DELIMITERS' : 'color: #993300;' - - } -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/robotstxt.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/robotstxt.js deleted file mode 100644 index 5bca8fe6e..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/robotstxt.js +++ /dev/null @@ -1,25 +0,0 @@ -editAreaLoader.load_syntax["robotstxt"] = { - 'DISPLAY_NAME' : 'Robots txt', - 'COMMENT_SINGLE' : {1 : '#'}, - 'COMMENT_MULTI' : {}, - 'QUOTEMARKS' : [], - 'KEYWORD_CASE_SENSITIVE' : false, - 'KEYWORDS' : { - 'attributes' : ['User-agent', 'Disallow', 'Allow', 'Crawl-delay'], - 'values' : ['*'], - 'specials' : ['*'] - }, - 'OPERATORS' :[':'], - 'DELIMITERS' :[], - 'STYLES' : { - 'COMMENTS': 'color: #AAAAAA;', - 'QUOTESMARKS': 'color: #6381F8;', - 'KEYWORDS' : { - 'attributes' : 'color: #48BDDF;', - 'values' : 'color: #2B60FF;', - 'specials' : 'color: #FF0000;' - }, - 'OPERATORS' : 'color: #FF00FF;', - 'DELIMITERS' : 'color: #60CA00;' - } -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/ruby.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/ruby.js deleted file mode 100644 index 2049cf50e..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/ruby.js +++ /dev/null @@ -1,68 +0,0 @@ -/** - * Ruby syntax v 1.0 - * - * v1.0 by Patrice De Saint Steban (2007/01/03) - * -**/ -editAreaLoader.load_syntax["ruby"] = { - 'DISPLAY_NAME' : 'Ruby' - ,'COMMENT_SINGLE' : {1 : '#'} - ,'COMMENT_MULTI' : {} - ,'QUOTEMARKS' : {1: "'", 2: '"'} - ,'KEYWORD_CASE_SENSITIVE' : true - ,'KEYWORDS' : { - 'reserved' : [ - 'alias', 'and', 'BEGIN', 'begin', 'break', 'case', 'class', 'def', 'defined', 'do', 'else', - 'elsif', 'END', 'end', 'ensure', 'false', 'for', 'if', - 'in', 'module', 'next', 'not', 'or', 'redo', 'rescue', 'retry', - 'return', 'self', 'super', 'then', 'true', 'undef', 'unless', 'until', 'when', 'while', 'yield' - ] - } - ,'OPERATORS' :[ - '+', '-', '/', '*', '=', '<', '>', '%', '!', '&', ';', '?', '`', ':', ',' - ] - ,'DELIMITERS' :[ - '(', ')', '[', ']', '{', '}' - ] - ,'REGEXPS' : { - 'constants' : { - 'search' : '()([A-Z]\\w*)()' - ,'class' : 'constants' - ,'modifiers' : 'g' - ,'execute' : 'before' - } - ,'variables' : { - 'search' : '()([\$\@\%]+\\w+)()' - ,'class' : 'variables' - ,'modifiers' : 'g' - ,'execute' : 'before' - } - ,'numbers' : { - 'search' : '()(-?[0-9]+)()' - ,'class' : 'numbers' - ,'modifiers' : 'g' - ,'execute' : 'before' - } - ,'symbols' : { - 'search' : '()(:\\w+)()' - ,'class' : 'symbols' - ,'modifiers' : 'g' - ,'execute' : 'before' - } - } - ,'STYLES' : { - 'COMMENTS': 'color: #AAAAAA;' - ,'QUOTESMARKS': 'color: #660066;' - ,'KEYWORDS' : { - 'reserved' : 'font-weight: bold; color: #0000FF;' - } - ,'OPERATORS' : 'color: #993300;' - ,'DELIMITERS' : 'color: #993300;' - ,'REGEXPS' : { - 'variables' : 'color: #E0BD54;' - ,'numbers' : 'color: green;' - ,'constants' : 'color: #00AA00;' - ,'symbols' : 'color: #879EFA;' - } - } -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/sql.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/sql.js deleted file mode 100644 index 2f6dbda7b..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/sql.js +++ /dev/null @@ -1,56 +0,0 @@ -editAreaLoader.load_syntax["sql"] = { - 'DISPLAY_NAME' : 'SQL' - ,'COMMENT_SINGLE' : {1 : '--'} - ,'COMMENT_MULTI' : {'/*' : '*/'} - ,'QUOTEMARKS' : {1: "'", 2: '"', 3: '`'} - ,'KEYWORD_CASE_SENSITIVE' : false - ,'KEYWORDS' : { - 'statements' : [ - 'select', 'SELECT', 'where', 'order', 'by', - 'insert', 'from', 'update', 'grant', 'left join', 'right join', - 'union', 'group', 'having', 'limit', 'alter', 'LIKE','IN','CASE' - ] - ,'reserved' : [ - 'null', 'enum', 'int', 'boolean', 'add', 'varchar' - - ] - ,'functions' : [ - 'ABS','ACOS','ADDDATE','ADDTIME','AES_DECRYPT','AES_ENCRYPT','ASCII','ASIN','ATAN2 ATAN','ATAN','AVG','BENCHMARK','DISTINCT','BIN','BIT_AND','BIT_COUNT','BIT_LENGTH','BIT_OR','BIT_XOR','CAST','CEILING CEIL','CHAR_LENGTH','CHAR', -'CHARACTER_LENGTH','CHARSET','COALESCE','COERCIBILITY','COLLATION','COMPRESS','CONCAT_WS','CONCAT','CONNECTION_ID','CONV','CONVERT_TZ','COS','COT','COUNT','CRC32','CURDATE','CURRENT_DATE','CURRENT_TIME','CURRENT_TIMESTAMP','CURRENT_USER','CURTIME','DATABASE','DATE_ADD','DATE_FORMAT','DATE_SUB','DATE','DATEDIFF','DAY','DAYNAME','DAYOFMONTH', -'DAYOFWEEK','DAYOFYEAR','DECODE','DEFAULT','DEGREES','DES_DECRYPT','DES_ENCRYPT','ELT','ENCODE','ENCRYPT','EXP','EXPORT_SET','EXTRACT','FIELD','FIND_IN_SET','FLOOR','FORMAT','FOUND_ROWS','FROM_DAYS','FROM_UNIXTIME','GET_FORMAT','GET_LOCK','GREATEST','GROUP_CONCAT','HEX','HOUR','IF','IFNULL','INET_ATON','INET_NTOA', -'INSERT','INSTR','INTERVAL','IS_FREE_LOCK','IS_USED_LOCK','ISNULL','LAST_DAY','LAST_INSERT_ID','LCASE','LEAST','LEFT','LENGTH','LN','LOAD_FILE','LOCALTIME','LOCALTIMESTAMP','LOCATE','LOG10','LOG2','LOG','LOWER','LPAD','LTRIM','MAKE_SET','MAKEDATE','MAKETIME','MASTER_POS_WAIT','MAX','MD5','MICROSECOND', -'MID','MIN','MINUTE','MOD','MONTH','MONTHNAME','NOW','NULLIF','OCT','OCTET_LENGTH','OLD_PASSWORD','ORD','PASSWORD','PERIOD_ADD','PERIOD_DIFF','PI','POSITION','POW','POWER','PROCEDURE ANALYSE','QUARTER','QUOTE','RADIANS','RAND','RELEASE_LOCK','REPEAT','REPLACE','REVERSE','RIGHT','ROUND', -'RPAD','RTRIM','SEC_TO_TIME','SECOND','SESSION_USER','SHA1','SHA','SIGN','SIN','SOUNDEX','SOUNDS LIKE','SPACE','SQRT','STD','STDDEV','STR_TO_DATE','STRCMP','SUBDATE','SUBSTRING_INDEX','SUBSTRING','SUBSTR','SUBTIME','SUM','SYSDATE','SYSTEM_USER','TAN','TIME_FORMAT','TIME_TO_SEC','TIME','TIMEDIFF', -'TIMESTAMP','TO_DAYS','TRIM','TRUNCATE','UCASE','UNCOMPRESS','UNCOMPRESSED_LENGTH','UNHEX','UNIX_TIMESTAMP','UPPER','USER','UTC_DATE','UTC_TIME','UTC_TIMESTAMP','UUID','VALUES','VARIANCE','WEEK','WEEKDAY','WEEKOFYEAR','YEAR','YEARWEEK' - ] - } - ,'OPERATORS' :[ - 'AND','&&','BETWEEN','BINARY','&','|','^','/','DIV','<=>','=','>=','>','<<','>>','IS','NULL','<=','<','-','%','!=','<>','!','||','OR','+','REGEXP','RLIKE','XOR','~','*' - ] - ,'DELIMITERS' :[ - '(', ')', '[', ']', '{', '}' - ] - ,'REGEXPS' : { - // highlight all variables (@...) - 'variables' : { - 'search' : '()(\\@\\w+)()' - ,'class' : 'variables' - ,'modifiers' : 'g' - ,'execute' : 'before' // before or after - } - } - ,'STYLES' : { - 'COMMENTS': 'color: #AAAAAA;' - ,'QUOTESMARKS': 'color: #879EFA;' - ,'KEYWORDS' : { - 'reserved' : 'color: #48BDDF;' - ,'functions' : 'color: #0040FD;' - ,'statements' : 'color: #60CA00;' - } - ,'OPERATORS' : 'color: #FF00FF;' - ,'DELIMITERS' : 'color: #2B60FF;' - ,'REGEXPS' : { - 'variables' : 'color: #E0BD54;' - } - } -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/tsql.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/tsql.js deleted file mode 100644 index 2da6464d5..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/tsql.js +++ /dev/null @@ -1,88 +0,0 @@ -editAreaLoader.load_syntax["tsql"] = { - 'DISPLAY_NAME' : 'T-SQL' - ,'COMMENT_SINGLE' : {1 : '--'} - ,'COMMENT_MULTI' : {'/*' : '*/'} - ,'QUOTEMARKS' : {1: "'" } - ,'KEYWORD_CASE_SENSITIVE' : false - ,'KEYWORDS' : { - 'statements': [ - 'ADD', 'EXCEPT', 'PERCENT', 'EXEC', 'PLAN', 'ALTER', 'EXECUTE', 'PRECISION', - 'PRIMARY', 'EXIT', 'PRINT', 'AS', 'FETCH', 'PROC', 'ASC', - 'FILE', 'PROCEDURE', 'AUTHORIZATION', 'FILLFACTOR', 'PUBLIC', 'BACKUP', 'FOR', 'RAISERROR', - 'BEGIN', 'FOREIGN', 'READ', 'FREETEXT', 'READTEXT', 'BREAK', 'FREETEXTTABLE', - 'RECONFIGURE', 'BROWSE', 'FROM', 'REFERENCES', 'BULK', 'FULL', 'REPLICATION', 'BY', - 'FUNCTION', 'RESTORE', 'CASCADE', 'GOTO', 'RESTRICT', 'CASE', 'GRANT', 'RETURN', - 'CHECK', 'GROUP', 'REVOKE', 'CHECKPOINT', 'HAVING', 'RIGHT', 'CLOSE', 'HOLDLOCK', 'ROLLBACK', - 'CLUSTERED', 'IDENTITY', 'ROWCOUNT', 'IDENTITY_INSERT', 'ROWGUIDCOL', 'COLLATE', - 'IDENTITYCOL', 'RULE', 'COLUMN', 'IF', 'SAVE', 'COMMIT', 'SCHEMA', 'COMPUTE', 'INDEX', - 'SELECT', 'CONSTRAINT', 'CONTAINS', 'INSERT', 'SET', - 'CONTAINSTABLE', 'INTERSECT', 'SETUSER', 'CONTINUE', 'INTO', 'SHUTDOWN', 'SOME', - 'CREATE', 'STATISTICS', 'KEY', 'CURRENT', 'KILL', 'TABLE', - 'CURRENT_DATE', 'TEXTSIZE', 'CURRENT_TIME', 'THEN', 'LINENO', - 'TO', 'LOAD', 'TOP', 'CURSOR', 'NATIONAL', 'TRAN', 'DATABASE', 'NOCHECK', - 'TRANSACTION', 'DBCC', 'NONCLUSTERED', 'TRIGGER', 'DEALLOCATE', 'TRUNCATE', - 'DECLARE', 'TSEQUAL', 'DEFAULT', 'UNION', 'DELETE', 'OF', 'UNIQUE', - 'DENY', 'OFF', 'UPDATE', 'DESC', 'OFFSETS', 'UPDATETEXT', 'DISK', 'ON', 'USE', 'DISTINCT', 'OPEN', - 'DISTRIBUTED', 'OPENDATASOURCE', 'VALUES', 'DOUBLE', 'OPENQUERY', 'VARYING', 'DROP', - 'OPENROWSET', 'VIEW', 'DUMMY', 'OPENXML', 'WAITFOR', 'DUMP', 'OPTION', 'WHEN', 'ELSE', 'WHERE', - 'END', 'ORDER', 'WHILE', 'ERRLVL', 'WITH', 'ESCAPE', 'OVER', 'WRITETEXT' - ], - 'functions': [ - 'COALESCE', 'SESSION_USER', 'CONVERT', 'SYSTEM_USER', 'CURRENT_TIMESTAMP', 'CURRENT_USER', 'NULLIF', 'USER', - 'AVG', 'MIN', 'CHECKSUM', 'SUM', 'CHECKSUM_AGG', 'STDEV', 'COUNT', 'STDEVP', 'COUNT_BIG', 'VAR', 'GROUPING', 'VARP', 'MAX', - '@@DATEFIRST', '@@OPTIONS', '@@DBTS', '@@REMSERVER', '@@LANGID', '@@SERVERNAME', '@@LANGUAGE', '@@SERVICENAME', '@@LOCK_TIMEOUT', - '@@SPID', '@@MAX_CONNECTIONS', '@@TEXTSIZE', '@@MAX_PRECISION', '@@VERSION', '@@NESTLEVEL', - '@@CURSOR_ROWS', 'CURSOR_STATUS', '@@FETCH_STATUS', - 'DATEADD', 'DATEDIFF', 'DATENAME', 'DATEPART', 'DAY', 'GETDATE', 'GETUTCDATE', 'MONTH', 'YEAR', - 'ABS', 'DEGREES', 'RAND', 'ACOS', 'EXP', 'ROUND', 'ASIN', 'FLOOR', 'SIGN', 'ATAN', 'LOG', 'SIN', 'ATN2', 'LOG10', 'SQRT', - 'CEILING', 'PI ', 'SQUARE', 'COS', 'POWER', 'TAN', 'COT', 'RADIANS', - '@@PROCID', 'COL_LENGTH', 'FULLTEXTCATALOGPROPERTY', 'COL_NAME', 'FULLTEXTSERVICEPROPERTY', 'COLUMNPROPERTY', 'INDEX_COL', - 'DATABASEPROPERTY', 'INDEXKEY_PROPERTY', 'DATABASEPROPERTYEX', 'INDEXPROPERTY', 'DB_ID', 'OBJECT_ID', 'DB_NAME', 'OBJECT_NAME', - 'FILE_ID', 'OBJECTPROPERTY', 'OBJECTPROPERTYEX', 'FILE_NAME', 'SQL_VARIANT_PROPERTY', 'FILEGROUP_ID', 'FILEGROUP_NAME', - 'FILEGROUPPROPERTY', 'TYPEPROPERTY', 'FILEPROPERTY', - 'CURRENT_USER', 'SUSER_ID', 'SUSER_SID', 'IS_MEMBER', 'SUSER_SNAME', 'IS_SRVROLEMEMBER', 'PERMISSIONS', 'SYSTEM_USER', - 'SUSER_NAME', 'USER_ID', 'SESSION_USER', 'USER_NAME', 'ASCII', 'SOUNDEX', 'PATINDEX', 'SPACE', 'CHARINDEX', 'QUOTENAME', - 'STR', 'DIFFERENCE', 'REPLACE', 'STUFF', 'REPLICATE', 'SUBSTRING', 'LEN', 'REVERSE', 'UNICODE', 'LOWER', - 'UPPER', 'LTRIM', 'RTRIM', 'APP_NAME', 'CAST', 'CONVERT', 'COALESCE', 'COLLATIONPROPERTY', 'COLUMNS_UPDATED', 'CURRENT_TIMESTAMP', - 'CURRENT_USER', 'DATALENGTH', '@@ERROR', 'FORMATMESSAGE', 'GETANSINULL', 'HOST_ID', 'HOST_NAME', 'IDENT_CURRENT', 'IDENT_INCR', - 'IDENT_SEED', '@@IDENTITY', 'ISDATE', 'ISNULL', 'ISNUMERIC', 'NEWID', 'NULLIF', 'PARSENAME', '@@ROWCOUNT', - 'SCOPE_IDENTITY', 'SERVERPROPERTY', 'SESSIONPROPERTY', 'SESSION_USER', 'STATS_DATE', 'SYSTEM_USER', '@@TRANCOUNT', 'USER_NAME', - '@@CONNECTIONS', '@@PACK_RECEIVED', '@@CPU_BUSY', '@@PACK_SENT', '@@TIMETICKS', '@@IDLE', '@@TOTAL_ERRORS', '@@IO_BUSY', '@@TOTAL_READ', - '@@PACKET_ERRORS', '@@TOTAL_WRITE', 'PATINDEX', 'TEXTVALID', 'TEXTPTR' - ], - 'reserved': [ - 'RIGHT', 'INNER', 'IS', 'JOIN', 'CROSS', 'LEFT', 'NULL', 'OUTER' - ] - } - ,'OPERATORS' :[ - '+', '-', '*', '/', '%', '=', '&' ,'|', '^', '>', '<', '>=', '<=', '<>', '!=', '!<', '!>', 'ALL', 'AND', 'ANY', 'BETWEEN', 'EXISTS', 'IN', 'LIKE', 'NOT', 'OR', '~' - ] - ,'DELIMITERS' :[ - '(', ')', '[', ']', '{', '}' - ] - ,'REGEXPS' : { - // highlight all variables (@...) - 'variables' : { - 'search' : '()(\\@\\w+)()' - ,'class' : 'variables' - ,'modifiers' : 'g' - ,'execute' : 'before' // before or after - } - } - ,'STYLES' : { - 'COMMENTS': 'color: #008000;' - ,'QUOTESMARKS': 'color: #FF0000;' - ,'KEYWORDS' : { - 'reserved' : 'color: #808080;' - ,'functions' : 'color: #FF00FF;' - ,'statements' : 'color: #0000FF;' - } - ,'OPERATORS' : 'color: #808080;' - ,'DELIMITERS' : 'color: #FF8000;' - ,'REGEXPS' : { - 'variables' : 'color: #E0BD54;' - } - } -}; - - diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/vb.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/vb.js deleted file mode 100644 index 6af501f0d..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/vb.js +++ /dev/null @@ -1,53 +0,0 @@ -editAreaLoader.load_syntax["vb"] = { - 'DISPLAY_NAME' : 'Visual Basic' - ,'COMMENT_SINGLE' : {1 : "'"} - ,'COMMENT_MULTI' : { } - ,'QUOTEMARKS' : {1: '"'} - ,'KEYWORD_CASE_SENSITIVE' : false - ,'KEYWORDS' : { - 'statements' : [ - 'if','then','for','each','while','do','loop', - 'else','elseif','select','case','end select', - 'until','next','step','to','in','end if' - ] - ,'keywords' : [ - 'empty','isempty','nothing','null','isnull','true','false', - 'set','call', - 'sub','end sub','function','end function','exit','exit function', - 'dim','Mod','In','private','public','shared','const' - ] - - ,'functions' : [ - 'CDate','Date','DateAdd','DateDiff','DatePart','DateSerial','DateValue','Day','FormatDateTime', - 'Hour','IsDate','Minute','Month', - 'MonthName','Now','Second','Time','Timer','TimeSerial','TimeValue','Weekday','WeekdayName ','Year', - 'Asc','CBool','CByte','CCur','CDate','CDbl','Chr','CInt','CLng','CSng','CStr','Hex','Oct','FormatCurrency', - 'FormatDateTime','FormatNumber','FormatPercent','Abs','Atn','Cos','Exp','Hex','Int','Fix','Log','Oct', - 'Rnd','Sgn','Sin','Sqr','Tan', - 'Array','Filter','IsArray','Join','LBound','Split','UBound', - 'InStr','InStrRev','LCase','Left','Len','LTrim','RTrim','Trim','Mid','Replace','Right','Space','StrComp', - 'String','StrReverse','UCase', - 'CreateObject','Eval','GetLocale','GetObject','GetRef','InputBox','IsEmpty','IsNull','IsNumeric', - 'IsObject','LoadPicture','MsgBox','RGB','Round','ScriptEngine','ScriptEngineBuildVersion','ScriptEngineMajorVersion', - 'ScriptEngineMinorVersion','SetLocale','TypeName','VarType' - ] - } - ,'OPERATORS' :[ - '+', '-', '/', '*', '=', '<', '>', '!', '&' - ] - ,'DELIMITERS' :[ - '(', ')', '[', ']', '{', '}' - ] - ,'STYLES' : { - 'COMMENTS': 'color: #99CC00;' - ,'QUOTESMARKS': 'color: #333399;' - ,'KEYWORDS' : { - 'keywords' : 'color: #3366FF;' - ,'functions' : 'color: #0000FF;' - ,'statements' : 'color: #3366FF;' - } - ,'OPERATORS' : 'color: #FF0000;' - ,'DELIMITERS' : 'color: #0000FF;' - - } -}; diff --git a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/xml.js b/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/xml.js deleted file mode 100644 index 074d8885c..000000000 --- a/client/client-editor/src/main/resources/webapp/js/edit_area/reg_syntax/xml.js +++ /dev/null @@ -1,57 +0,0 @@ -/* -* last update: 2006-08-24 -*/ - -editAreaLoader.load_syntax["xml"] = { - 'DISPLAY_NAME' : 'XML' - ,'COMMENT_SINGLE' : {} - ,'COMMENT_MULTI' : {''} - ,'QUOTEMARKS' : {1: "'", 2: '"'} - ,'KEYWORD_CASE_SENSITIVE' : false - ,'KEYWORDS' : { - } - ,'OPERATORS' :[ - ] - ,'DELIMITERS' :[ - ] - ,'REGEXPS' : { - 'xml' : { - 'search' : '()(<\\?[^>]*?\\?>)()' - ,'class' : 'xml' - ,'modifiers' : 'g' - ,'execute' : 'before' // before or after - } - ,'cdatas' : { - 'search' : '()()()' - ,'class' : 'cdata' - ,'modifiers' : 'g' - ,'execute' : 'before' // before or after - } - ,'tags' : { - 'search' : '(<)(/?[a-z][^ \r\n\t>]*)([^>]*>)' - ,'class' : 'tags' - ,'modifiers' : 'gi' - ,'execute' : 'before' // before or after - } - ,'attributes' : { - 'search' : '( |\n|\r|\t)([^ \r\n\t=]+)(=)' - ,'class' : 'attributes' - ,'modifiers' : 'g' - ,'execute' : 'before' // before or after - } - } - ,'STYLES' : { - 'COMMENTS': 'color: #AAAAAA;' - ,'QUOTESMARKS': 'color: #6381F8;' - ,'KEYWORDS' : { - } - ,'OPERATORS' : 'color: #E775F0;' - ,'DELIMITERS' : '' - ,'REGEXPS' : { - 'attributes': 'color: #B1AC41;' - ,'tags': 'color: #E62253;' - ,'xml': 'color: #8DCFB5;' - ,'cdata': 'color: #50B020;' - } - } -}; diff --git a/client/client-editor/src/main/resources/webapp/js/fileMenu.js b/client/client-editor/src/main/resources/webapp/js/fileMenu.js deleted file mode 100644 index e42a268ff..000000000 --- a/client/client-editor/src/main/resources/webapp/js/fileMenu.js +++ /dev/null @@ -1,145 +0,0 @@ -/* - * ============LICENSE_START======================================================= - * Copyright (C) 2016-2018 Ericsson. All rights reserved. - * ================================================================================ - * 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. - * - * SPDX-License-Identifier: Apache-2.0 - * ============LICENSE_END========================================================= - */ - -/*global define,jQuery,window */ - -(function(factory) { - - "use strict"; - - if (typeof (define) === 'function' && define.amd) { - define([ 'jquery' ], factory); - } else { - factory(jQuery); - } -}(function($) { - - "use strict"; - - $.fileMenu = function(el, options) { - - var base = this; - - base.$el = $(el); - base.el = el; - - base.options = $.extend({}, $.fileMenu.defaultOptions, options); - base.touch = false; - - base.$ = function(query) { - return base.$el.find(query); - }; - - base.hideMenu = function() { - base.$('.selected ul').slideUp(base.options.slideSpeed); - base.$('.selected').removeClass('selected'); - base.$el.removeClass('active'); - }; - - base.showMenu = function($this) { - var $parent = $this.parent(), $menu = $this.children('ul').first(), offsets = $this.offset(); - - $parent.addClass('active'); - - $this.addClass('selected'); - $menu.css({ - 'left' : offsets.left, - 'top' : offsets.top + $parent.height() - }); - $menu.slideDown(base.options.slideSpeed); - }; - - base.addListeners = function() { - base.$el.children('li').on('click', function(e) { - var $this = $(this); - - if ($this.hasClass('selected')) { - base.hideMenu(); - } else { - base.hideMenu(); - base.showMenu($this); - } - e.stopPropagation(); - }); - - base.$el.children('li').on('mouseenter', function() { - var $this = $(this); - if (!$this.parent().hasClass('active')) { - return; - } - if ($this.hasClass('selected')) { - return; - } - - base.hideMenu(); - base.showMenu($this); - }); - - /* Don't slide up if submenu, divider or disabled item is clicked */ - base.$('ul').on('click', function(e) { - var $this = $(e.target); - if ($this.get(0).tagName === 'LI' && !$this.hasClass('sub')) { - return; - } - e.stopPropagation(); - }); - - /* Handle toggle elements */ - base.$('ul').on('click', '.toggle', function(e) { - $(this).toggleClass('active'); - e.stopPropagation(); - }); - - /* Position sub menus */ - base.$el.on('mouseenter', 'ul li', function() { - var $this = $(this); - - $this.find('ul').first().css({ - 'left' : $this.parent().width(), - 'margin-top' : -$this.height() - }); - }); - - /* Hide menu on click outside the menu */ - $('html').on('click', function() { - base.hideMenu(); - }); - }; - - base.init = function() { - base.addListeners(); - base.$el.addClass('fileMenu'); - - }; - - base.init(); - }; - - $.fileMenu.defaultOptions = { - slideSpeed : 100 - }; - - $.fn.fileMenu = function(options) { - return this.each(function() { - var fm = new $.fileMenu(this, options); - }); - }; - -})); \ No newline at end of file diff --git a/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/AUTHORS.txt b/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/AUTHORS.txt deleted file mode 100644 index 2f54e1b0a..000000000 --- a/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/AUTHORS.txt +++ /dev/null @@ -1,337 +0,0 @@ -# ! jQuery UI - v1.12.1 - 2016-09-14 -# http://jqueryui.com -# Copyright jQuery Foundation and other contributors; Licensed MIT */ - -Authors ordered by first contribution -A list of current team members is available at http://jqueryui.com/about - -Paul Bakaus -Richard Worth -Yehuda Katz -Sean Catchpole -John Resig -Tane Piper -Dmitri Gaskin -Klaus Hartl -Stefan Petre -Gilles van den Hoven -Micheil Bryan Smith -Jörn Zaefferer -Marc Grabanski -Keith Wood -Brandon Aaron -Scott González -Eduardo Lundgren -Aaron Eisenberger -Joan Piedra -Bruno Basto -Remy Sharp -Bohdan Ganicky -David Bolter -Chi Cheng -Ca-Phun Ung -Ariel Flesler -Maggie Wachs -Scott Jehl -Todd Parker -Andrew Powell -Brant Burnett -Douglas Neiner -Paul Irish -Ralph Whitbeck -Thibault Duplessis -Dominique Vincent -Jack Hsu -Adam Sontag -Carl Fürstenberg -Kevin Dalman -Alberto Fernández Capel -Jacek Jędrzejewski (http://jacek.jedrzejewski.name) -Ting Kuei -Samuel Cormier-Iijima -Jon Palmer -Ben Hollis -Justin MacCarthy -Eyal Kobrigo -Tiago Freire -Diego Tres -Holger Rüprich -Ziling Zhao -Mike Alsup -Robson Braga Araujo -Pierre-Henri Ausseil -Christopher McCulloh -Andrew Newcomb -Lim Chee Aun -Jorge Barreiro -Daniel Steigerwald -John Firebaugh -John Enters -Andrey Kapitcyn -Dmitry Petrov -Eric Hynds -Chairat Sunthornwiphat -Josh Varner -Stéphane Raimbault -Jay Merrifield -J. Ryan Stinnett -Peter Heiberg -Alex Dovenmuehle -Jamie Gegerson -Raymond Schwartz -Phillip Barnes -Kyle Wilkinson -Khaled AlHourani -Marian Rudzynski -Jean-Francois Remy -Doug Blood -Filippo Cavallarin -Heiko Henning -Aliaksandr Rahalevich -Mario Visic -Xavi Ramirez -Max Schnur -Saji Nediyanchath -Corey Frang -Aaron Peterson -Ivan Peters -Mohamed Cherif Bouchelaghem -Marcos Sousa -Michael DellaNoce -George Marshall -Tobias Brunner -Martin Solli -David Petersen -Dan Heberden -William Kevin Manire -Gilmore Davidson -Michael Wu -Adam Parod -Guillaume Gautreau -Marcel Toele -Dan Streetman -Matt Hoskins -Giovanni Giacobbi -Kyle Florence -Pavol Hluchý -Hans Hillen -Mark Johnson -Trey Hunner -Shane Whittet -Edward A Faulkner -Adam Baratz -Kato Kazuyoshi -Eike Send -Kris Borchers -Eddie Monge -Israel Tsadok -Carson McDonald -Jason Davies -Garrison Locke -David Murdoch -Benjamin Scott Boyle -Jesse Baird -Jonathan Vingiano -Dylan Just -Hiroshi Tomita -Glenn Goodrich -Tarafder Ashek-E-Elahi -Ryan Neufeld -Marc Neuwirth -Philip Graham -Benjamin Sterling -Wesley Walser -Kouhei Sutou -Karl Kirch -Chris Kelly -Jason Oster -Felix Nagel -Alexander Polomoshnov -David Leal -Igor Milla -Dave Methvin -Florian Gutmann -Marwan Al Jubeh -Milan Broum -Sebastian Sauer -Gaëtan Muller -Michel Weimerskirch -William Griffiths -Stojce Slavkovski -David Soms -David De Sloovere -Michael P. Jung -Shannon Pekary -Dan Wellman -Matthew Edward Hutton -James Khoury -Rob Loach -Alberto Monteiro -Alex Rhea -Krzysztof Rosiński -Ryan Olton -Genie <386@mail.com> -Rick Waldron -Ian Simpson -Lev Kitsis -TJ VanToll -Justin Domnitz -Douglas Cerna -Bert ter Heide -Jasvir Nagra -Yuriy Khabarov <13real008@gmail.com> -Harri Kilpiö -Lado Lomidze -Amir E. Aharoni -Simon Sattes -Jo Liss -Guntupalli Karunakar -Shahyar Ghobadpour -Lukasz Lipinski -Timo Tijhof -Jason Moon -Martin Frost -Eneko Illarramendi -EungJun Yi -Courtland Allen -Viktar Varvanovich -Danny Trunk -Pavel Stetina -Michael Stay -Steven Roussey -Michael Hollis -Lee Rowlands -Timmy Willison -Karl Swedberg -Baoju Yuan -Maciej Mroziński -Luis Dalmolin -Mark Aaron Shirley -Martin Hoch -Jiayi Yang -Philipp Benjamin Köppchen -Sindre Sorhus -Bernhard Sirlinger -Jared A. Scheel -Rafael Xavier de Souza -John Chen -Robert Beuligmann -Dale Kocian -Mike Sherov -Andrew Couch -Marc-Andre Lafortune -Nate Eagle -David Souther -Mathias Stenbom -Sergey Kartashov -Avinash R -Ethan Romba -Cory Gackenheimer -Juan Pablo Kaniefsky -Roman Salnikov -Anika Henke -Samuel Bovée -Fabrício Matté -Viktor Kojouharov -Pawel Maruszczyk (http://hrabstwo.net) -Pavel Selitskas -Bjørn Johansen -Matthieu Penant -Dominic Barnes -David Sullivan -Thomas Jaggi -Vahid Sohrabloo -Travis Carden -Bruno M. Custódio -Nathanael Silverman -Christian Wenz -Steve Urmston -Zaven Muradyan -Woody Gilk -Zbigniew Motyka -Suhail Alkowaileet -Toshi MARUYAMA -David Hansen -Brian Grinstead -Christian Klammer -Steven Luscher -Gan Eng Chin -Gabriel Schulhof -Alexander Schmitz -Vilhjálmur Skúlason -Siebrand Mazeland -Mohsen Ekhtiari -Pere Orga -Jasper de Groot -Stephane Deschamps -Jyoti Deka -Andrei Picus -Ondrej Novy -Jacob McCutcheon -Monika Piotrowicz -Imants Horsts -Eric Dahl -Dave Stein -Dylan Barrell -Daniel DeGroff -Michael Wiencek -Thomas Meyer -Ruslan Yakhyaev -Brian J. Dowling -Ben Higgins -Yermo Lamers -Patrick Stapleton -Trisha Crowley -Usman Akeju -Rodrigo Menezes -Jacques Perrault -Frederik Elvhage -Will Holley -Uri Gilad -Richard Gibson -Simen Bekkhus -Chen Eshchar -Bruno Pérel -Mohammed Alshehri -Lisa Seacat DeLuca -Anne-Gaelle Colom -Adam Foster -Luke Page -Daniel Owens -Michael Orchard -Marcus Warren -Nils Heuermann -Marco Ziech -Patricia Juarez -Ben Mosher -Ablay Keldibek -Thomas Applencourt -Jiabao Wu -Eric Lee Carraway -Victor Homyakov -Myeongjin Lee -Liran Sharir -Weston Ruter -Mani Mishra -Hannah Methvin -Leonardo Balter -Benjamin Albert -Michał Gołębiowski -Alyosha Pushak -Fahad Ahmad -Matt Brundage -Francesc Baeta -Piotr Baran -Mukul Hase -Konstantin Dinev -Rand Scullard -Dan Strohl -Maksim Ryzhikov -Amine HADDAD -Amanpreet Singh -Alexey Balchunas -Peter Kehl -Peter Dave Hello -Johannes Schäfer -Ville Skyttä -Ryan Oriecuia diff --git a/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/LICENSE.txt b/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/LICENSE.txt deleted file mode 100644 index 4819e5421..000000000 --- a/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/LICENSE.txt +++ /dev/null @@ -1,43 +0,0 @@ -Copyright jQuery Foundation and other contributors, https://jquery.org/ - -This software consists of voluntary contributions made by many -individuals. For exact contribution history, see the revision history -available at https://github.com/jquery/jquery-ui - -The following license applies to all parts of this software except as -documented below: - -==== - -Permission is hereby granted, free of charge, to any person obtaining -a copy of this software and associated documentation files (the -"Software"), to deal in the Software without restriction, including -without limitation the rights to use, copy, modify, merge, publish, -distribute, sublicense, and/or sell copies of the Software, and to -permit persons to whom the Software is furnished to do so, subject to -the following conditions: - -The above copyright notice and this permission notice shall be -included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, -EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF -MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND -NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE -LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION -OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION -WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. - -==== - -Copyright and related rights for sample code are waived via CC0. Sample -code is defined as all source code contained within the demos directory. - -CC0: http://creativecommons.org/publicdomain/zero/1.0/ - -==== - -All files located in the node_modules and external directories are -externally maintained libraries used by this software which have their -own licenses; we recommend you read them, as their terms may differ from -the terms above. diff --git a/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/external/jquery/jquery.js b/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/external/jquery/jquery.js deleted file mode 100644 index a1c07fd80..000000000 --- a/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/external/jquery/jquery.js +++ /dev/null @@ -1,2 +0,0 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0J6)kLh)UaF?Rpqdju<$Xc!K-1EZvg;m2Sr&a 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 W$6)X8PycD00qQC`%4LeS5&s7ix^mY5 diff --git a/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/images/ui-icons_777620_256x240.png b/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/images/ui-icons_777620_256x240.png deleted file mode 100644 index d2f58d25581c605a5538fa50408fe09c4a30740d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4676 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 diff --git a/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/images/ui-icons_777777_256x240.png b/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/images/ui-icons_777777_256x240.png deleted file mode 100644 index 1d532588b989c5fd03e7a63f7e829b017c35d3cf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7013 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 ZrDX-T^mH1q5`RzvpbBd8WwK_0{|mNJD+vGq diff --git a/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/images/ui-icons_cc0000_256x240.png b/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/images/ui-icons_cc0000_256x240.png deleted file mode 100644 index 2825f2004d10b413a76317d47384e6139abcbe00..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4632 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 Hjt~C}Fe}Pt diff --git a/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/index.html b/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/index.html deleted file mode 100644 index 8429de14f..000000000 --- a/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/index.html +++ /dev/null @@ -1,565 +0,0 @@ - - - - - - - jQuery UI Example Page - - - - - -

Welcome to jQuery UI!

- -
-

This page demonstrates the widgets and theme you selected in Download Builder. Please make sure you are using them with a compatible jQuery version.

-
- -

YOUR COMPONENTS:

- - - -

Accordion

-
-

First

-
Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet.
-

Second

-
Phasellus mattis tincidunt nibh.
-

Third

-
Nam dui erat, auctor a, dignissim quis.
-
- - - - -

Autocomplete

-
- -
- - - - -

Button

- - - - - - -

Checkboxradio

-
-
- - - -
-
- - - - -

Controlgroup

-
- Rental Car -
- - - - - - - - - - -
-
- - - - -

Tabs

-
- -
Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
-
Phasellus mattis tincidunt nibh. Cras orci urna, blandit id, pretium vel, aliquet ornare, felis. Maecenas scelerisque sem non nisl. Fusce sed lorem in enim dictum bibendum.
-
Nam dui erat, auctor a, dignissim quis, sollicitudin eu, felis. Pellentesque nisi urna, interdum eget, sagittis et, consequat vestibulum, lacus. Mauris porttitor ullamcorper augue.
-
- - - -

Dialog

-

- -

- -

Overlay and Shadow Classes

-
-

Lorem ipsum dolor sit amet, Nulla nec tortor. Donec id elit quis purus consectetur consequat.

Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci.

Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat.

Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante. Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam.

Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi. Aliquam ante.

Suspendisse scelerisque dui nec velit. Duis augue augue, gravida euismod, vulputate ac, facilisis id, sem. Morbi in orci. Nulla purus lacus, pulvinar vel, malesuada ac, mattis nec, quam. Nam molestie scelerisque quam. Nullam feugiat cursus lacus.orem ipsum dolor sit amet, consectetur adipiscing elit. Donec libero risus, commodo vitae, pharetra mollis, posuere eu, pede. Nulla nec tortor. Donec id elit quis purus consectetur consequat. Nam congue semper tellus. Sed erat dolor, dapibus sit amet, venenatis ornare, ultrices ut, nisi.

- - -
-
- Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. -
- -
- - -
-

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.

-
- - - -

Framework Icons (content color preview)

-
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
- - - -

Slider

-
- - - - -

Datepicker

-
- - - - -

Progressbar

-
- - - - -

Selectmenu

- - - - - -

Spinner

- - - - - -

Menu

- - - - - -

Tooltip

-

- Tooltips can be attached to any element. When you hover -the element with your mouse, the title attribute is displayed in a little box next to the element, just like a native tooltip. -

- - - -

Highlight / Error

-
-
-

- Hey! Sample ui-state-highlight style.

-
-
-
-
-
-

- Alert: Sample ui-state-error style.

-
-
- - - - - - diff --git a/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/jquery-ui.css b/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/jquery-ui.css deleted file mode 100644 index e73a29b3e..000000000 --- a/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/jquery-ui.css +++ /dev/null @@ -1,1312 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2016-09-14 -* http://jqueryui.com -* Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css -* To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6 -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -/* Layout helpers -----------------------------------*/ -.ui-helper-hidden { - display: none; -} -.ui-helper-hidden-accessible { - border: 0; - clip: rect(0 0 0 0); - height: 1px; - margin: -1px; - overflow: hidden; - padding: 0; - position: absolute; - width: 1px; -} -.ui-helper-reset { - margin: 0; - padding: 0; - border: 0; - outline: 0; - line-height: 1.3; - text-decoration: none; - font-size: 100%; - list-style: none; -} -.ui-helper-clearfix:before, -.ui-helper-clearfix:after { - content: ""; - display: table; - border-collapse: collapse; -} -.ui-helper-clearfix:after { - clear: both; -} -.ui-helper-zfix { - width: 100%; - height: 100%; - top: 0; - left: 0; - position: absolute; - opacity: 0; - filter:Alpha(Opacity=0); /* support: IE8 */ -} - -.ui-front { - z-index: 100; -} - - -/* Interaction Cues -----------------------------------*/ -.ui-state-disabled { - cursor: default !important; - pointer-events: none; -} - - -/* Icons -----------------------------------*/ -.ui-icon { - display: inline-block; - vertical-align: middle; - margin-top: -.25em; - position: relative; - text-indent: -99999px; - overflow: hidden; - background-repeat: no-repeat; -} - -.ui-widget-icon-block { - left: 50%; - margin-left: -8px; - display: block; -} - -/* Misc visuals -----------------------------------*/ - -/* Overlays */ -.ui-widget-overlay { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100%; -} -.ui-accordion .ui-accordion-header { - display: block; - cursor: pointer; - position: relative; - margin: 2px 0 0 0; - padding: .5em .5em .5em .7em; - font-size: 100%; -} -.ui-accordion .ui-accordion-content { - padding: 1em 2.2em; - border-top: 0; - overflow: auto; -} -.ui-autocomplete { - position: absolute; - top: 0; - left: 0; - cursor: default; -} -.ui-menu { - list-style: none; - padding: 0; - margin: 0; - display: block; - outline: 0; -} -.ui-menu .ui-menu { - position: absolute; -} -.ui-menu .ui-menu-item { - margin: 0; - cursor: pointer; - /* support: IE10, see #8844 */ - list-style-image: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7"); -} -.ui-menu .ui-menu-item-wrapper { - position: relative; - padding: 3px 1em 3px .4em; -} -.ui-menu .ui-menu-divider { - margin: 5px 0; - height: 0; - font-size: 0; - line-height: 0; - border-width: 1px 0 0 0; -} -.ui-menu .ui-state-focus, -.ui-menu .ui-state-active { - margin: -1px; -} - -/* icon support */ -.ui-menu-icons { - position: relative; -} -.ui-menu-icons .ui-menu-item-wrapper { - padding-left: 2em; -} - -/* left-aligned */ -.ui-menu .ui-icon { - position: absolute; - top: 0; - bottom: 0; - left: .2em; - margin: auto 0; -} - -/* right-aligned */ -.ui-menu .ui-menu-icon { - left: auto; - right: 0; -} -.ui-button { - padding: .4em 1em; - display: inline-block; - position: relative; - line-height: normal; - margin-right: .1em; - cursor: pointer; - vertical-align: middle; - text-align: center; - -webkit-user-select: none; - -moz-user-select: none; - -ms-user-select: none; - user-select: none; - - /* Support: IE <= 11 */ - overflow: visible; -} - -.ui-button, -.ui-button:link, -.ui-button:visited, -.ui-button:hover, -.ui-button:active { - text-decoration: none; -} - -/* to make room for the icon, a width needs to be set here */ -.ui-button-icon-only { - width: 2em; - box-sizing: border-box; - text-indent: -9999px; - white-space: nowrap; -} - -/* no icon support for input elements */ -input.ui-button.ui-button-icon-only { - text-indent: 0; -} - -/* button icon element(s) */ -.ui-button-icon-only .ui-icon { - position: absolute; - top: 50%; - left: 50%; - margin-top: -8px; - margin-left: -8px; -} - -.ui-button.ui-icon-notext .ui-icon { - padding: 0; - width: 2.1em; - height: 2.1em; - text-indent: -9999px; - white-space: nowrap; - -} - -input.ui-button.ui-icon-notext .ui-icon { - width: auto; - height: auto; - text-indent: 0; - white-space: normal; - padding: .4em 1em; -} - -/* workarounds */ -/* Support: Firefox 5 - 40 */ -input.ui-button::-moz-focus-inner, -button.ui-button::-moz-focus-inner { - border: 0; - padding: 0; -} -.ui-controlgroup { - vertical-align: middle; - display: inline-block; -} -.ui-controlgroup > .ui-controlgroup-item { - float: left; - margin-left: 0; - margin-right: 0; -} -.ui-controlgroup > .ui-controlgroup-item:focus, -.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus { - z-index: 9999; -} -.ui-controlgroup-vertical > .ui-controlgroup-item { - display: block; - float: none; - width: 100%; - margin-top: 0; - margin-bottom: 0; - text-align: left; -} -.ui-controlgroup-vertical .ui-controlgroup-item { - box-sizing: border-box; -} -.ui-controlgroup .ui-controlgroup-label { - padding: .4em 1em; -} -.ui-controlgroup .ui-controlgroup-label span { - font-size: 80%; -} -.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item { - border-left: none; -} -.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item { - border-top: none; -} -.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content { - border-right: none; -} -.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content { - border-bottom: none; -} - -/* Spinner specific style fixes */ -.ui-controlgroup-vertical .ui-spinner-input { - - /* Support: IE8 only, Android < 4.4 only */ - width: 75%; - width: calc( 100% - 2.4em ); -} -.ui-controlgroup-vertical .ui-spinner .ui-spinner-up { - border-top-style: solid; -} - -.ui-checkboxradio-label .ui-icon-background { - box-shadow: inset 1px 1px 1px #ccc; - border-radius: .12em; - border: none; -} -.ui-checkboxradio-radio-label .ui-icon-background { - width: 16px; - height: 16px; - border-radius: 1em; - overflow: visible; - border: none; -} -.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon, -.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon { - background-image: none; - width: 8px; - height: 8px; - border-width: 4px; - border-style: solid; -} -.ui-checkboxradio-disabled { - pointer-events: none; -} -.ui-datepicker { - width: 17em; - padding: .2em .2em 0; - display: none; -} -.ui-datepicker .ui-datepicker-header { - position: relative; - padding: .2em 0; -} -.ui-datepicker .ui-datepicker-prev, -.ui-datepicker .ui-datepicker-next { - position: absolute; - top: 2px; - width: 1.8em; - height: 1.8em; -} -.ui-datepicker .ui-datepicker-prev-hover, -.ui-datepicker .ui-datepicker-next-hover { - top: 1px; -} -.ui-datepicker .ui-datepicker-prev { - left: 2px; -} -.ui-datepicker .ui-datepicker-next { - right: 2px; -} -.ui-datepicker .ui-datepicker-prev-hover { - left: 1px; -} -.ui-datepicker .ui-datepicker-next-hover { - right: 1px; -} -.ui-datepicker .ui-datepicker-prev span, -.ui-datepicker .ui-datepicker-next span { - display: block; - position: absolute; - left: 50%; - margin-left: -8px; - top: 50%; - margin-top: -8px; -} -.ui-datepicker .ui-datepicker-title { - margin: 0 2.3em; - line-height: 1.8em; - text-align: center; -} -.ui-datepicker .ui-datepicker-title select { - font-size: 1em; - margin: 1px 0; -} -.ui-datepicker select.ui-datepicker-month, -.ui-datepicker select.ui-datepicker-year { - width: 45%; -} -.ui-datepicker table { - width: 100%; - font-size: .9em; - border-collapse: collapse; - margin: 0 0 .4em; -} -.ui-datepicker th { - padding: .7em .3em; - text-align: center; - font-weight: bold; - border: 0; -} -.ui-datepicker td { - border: 0; - padding: 1px; -} -.ui-datepicker td span, -.ui-datepicker td a { - display: block; - padding: .2em; - text-align: right; - text-decoration: none; -} -.ui-datepicker .ui-datepicker-buttonpane { - background-image: none; - margin: .7em 0 0 0; - padding: 0 .2em; - border-left: 0; - border-right: 0; - border-bottom: 0; -} -.ui-datepicker .ui-datepicker-buttonpane button { - float: right; - margin: .5em .2em .4em; - cursor: pointer; - padding: .2em .6em .3em .6em; - width: auto; - overflow: visible; -} -.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { - float: left; -} - -/* with multiple calendars */ -.ui-datepicker.ui-datepicker-multi { - width: auto; -} -.ui-datepicker-multi .ui-datepicker-group { - float: left; -} -.ui-datepicker-multi .ui-datepicker-group table { - width: 95%; - margin: 0 auto .4em; -} -.ui-datepicker-multi-2 .ui-datepicker-group { - width: 50%; -} -.ui-datepicker-multi-3 .ui-datepicker-group { - width: 33.3%; -} -.ui-datepicker-multi-4 .ui-datepicker-group { - width: 25%; -} -.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header, -.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { - border-left-width: 0; -} -.ui-datepicker-multi .ui-datepicker-buttonpane { - clear: left; -} -.ui-datepicker-row-break { - clear: both; - width: 100%; - font-size: 0; -} - -/* RTL support */ -.ui-datepicker-rtl { - direction: rtl; -} -.ui-datepicker-rtl .ui-datepicker-prev { - right: 2px; - left: auto; -} -.ui-datepicker-rtl .ui-datepicker-next { - left: 2px; - right: auto; -} -.ui-datepicker-rtl .ui-datepicker-prev:hover { - right: 1px; - left: auto; -} -.ui-datepicker-rtl .ui-datepicker-next:hover { - left: 1px; - right: auto; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane { - clear: right; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane button { - float: left; -} -.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current, -.ui-datepicker-rtl .ui-datepicker-group { - float: right; -} -.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header, -.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { - border-right-width: 0; - border-left-width: 1px; -} - -/* Icons */ -.ui-datepicker .ui-icon { - display: block; - text-indent: -99999px; - overflow: hidden; - background-repeat: no-repeat; - left: .5em; - top: .3em; -} -.ui-dialog { - position: absolute; - top: 0; - left: 0; - padding: .2em; - outline: 0; -} -.ui-dialog .ui-dialog-titlebar { - padding: .4em 1em; - position: relative; -} -.ui-dialog .ui-dialog-title { - float: left; - margin: .1em 0; - white-space: nowrap; - width: 90%; - overflow: hidden; - text-overflow: ellipsis; -} -.ui-dialog .ui-dialog-titlebar-close { - position: absolute; - right: .3em; - top: 50%; - width: 20px; - margin: -10px 0 0 0; - padding: 1px; - height: 20px; -} -.ui-dialog .ui-dialog-content { - position: relative; - border: 0; - padding: .5em 1em; - background: none; - overflow: auto; -} -.ui-dialog .ui-dialog-buttonpane { - text-align: left; - border-width: 1px 0 0 0; - background-image: none; - margin-top: .5em; - padding: .3em 1em .5em .4em; -} -.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { - float: right; -} -.ui-dialog .ui-dialog-buttonpane button { - margin: .5em .4em .5em 0; - cursor: pointer; -} -.ui-dialog .ui-resizable-n { - height: 2px; - top: 0; -} -.ui-dialog .ui-resizable-e { - width: 2px; - right: 0; -} -.ui-dialog .ui-resizable-s { - height: 2px; - bottom: 0; -} -.ui-dialog .ui-resizable-w { - width: 2px; - left: 0; -} -.ui-dialog .ui-resizable-se, -.ui-dialog .ui-resizable-sw, -.ui-dialog .ui-resizable-ne, -.ui-dialog .ui-resizable-nw { - width: 7px; - height: 7px; -} -.ui-dialog .ui-resizable-se { - right: 0; - bottom: 0; -} -.ui-dialog .ui-resizable-sw { - left: 0; - bottom: 0; -} -.ui-dialog .ui-resizable-ne { - right: 0; - top: 0; -} -.ui-dialog .ui-resizable-nw { - left: 0; - top: 0; -} -.ui-draggable .ui-dialog-titlebar { - cursor: move; -} -.ui-draggable-handle { - -ms-touch-action: none; - touch-action: none; -} -.ui-resizable { - position: relative; -} -.ui-resizable-handle { - position: absolute; - font-size: 0.1px; - display: block; - -ms-touch-action: none; - touch-action: none; -} -.ui-resizable-disabled .ui-resizable-handle, -.ui-resizable-autohide .ui-resizable-handle { - display: none; -} -.ui-resizable-n { - cursor: n-resize; - height: 7px; - width: 100%; - top: -5px; - left: 0; -} -.ui-resizable-s { - cursor: s-resize; - height: 7px; - width: 100%; - bottom: -5px; - left: 0; -} -.ui-resizable-e { - cursor: e-resize; - width: 7px; - right: -5px; - top: 0; - height: 100%; -} -.ui-resizable-w { - cursor: w-resize; - width: 7px; - left: -5px; - top: 0; - height: 100%; -} -.ui-resizable-se { - cursor: se-resize; - width: 12px; - height: 12px; - right: 1px; - bottom: 1px; -} -.ui-resizable-sw { - cursor: sw-resize; - width: 9px; - height: 9px; - left: -5px; - bottom: -5px; -} -.ui-resizable-nw { - cursor: nw-resize; - width: 9px; - height: 9px; - left: -5px; - top: -5px; -} -.ui-resizable-ne { - cursor: ne-resize; - width: 9px; - height: 9px; - right: -5px; - top: -5px; -} -.ui-progressbar { - height: 2em; - text-align: left; - overflow: hidden; -} -.ui-progressbar .ui-progressbar-value { - margin: -1px; - height: 100%; -} -.ui-progressbar .ui-progressbar-overlay { - background: url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw=="); - height: 100%; - filter: alpha(opacity=25); /* support: IE8 */ - opacity: 0.25; -} -.ui-progressbar-indeterminate .ui-progressbar-value { - background-image: none; -} -.ui-selectable { - -ms-touch-action: none; - touch-action: none; -} -.ui-selectable-helper { - position: absolute; - z-index: 100; - border: 1px dotted black; -} -.ui-selectmenu-menu { - padding: 0; - margin: 0; - position: absolute; - top: 0; - left: 0; - display: none; -} -.ui-selectmenu-menu .ui-menu { - overflow: auto; - overflow-x: hidden; - padding-bottom: 1px; -} -.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup { - font-size: 1em; - font-weight: bold; - line-height: 1.5; - padding: 2px 0.4em; - margin: 0.5em 0 0 0; - height: auto; - border: 0; -} -.ui-selectmenu-open { - display: block; -} -.ui-selectmenu-text { - display: block; - margin-right: 20px; - overflow: hidden; - text-overflow: ellipsis; -} -.ui-selectmenu-button.ui-button { - text-align: left; - white-space: nowrap; - width: 14em; -} -.ui-selectmenu-icon.ui-icon { - float: right; - margin-top: 0; -} -.ui-slider { - position: relative; - text-align: left; -} -.ui-slider .ui-slider-handle { - position: absolute; - z-index: 2; - width: 1.2em; - height: 1.2em; - cursor: default; - -ms-touch-action: none; - touch-action: none; -} -.ui-slider .ui-slider-range { - position: absolute; - z-index: 1; - font-size: .7em; - display: block; - border: 0; - background-position: 0 0; -} - -/* support: IE8 - See #6727 */ -.ui-slider.ui-state-disabled .ui-slider-handle, -.ui-slider.ui-state-disabled .ui-slider-range { - filter: inherit; -} - -.ui-slider-horizontal { - height: .8em; -} -.ui-slider-horizontal .ui-slider-handle { - top: -.3em; - margin-left: -.6em; -} -.ui-slider-horizontal .ui-slider-range { - top: 0; - height: 100%; -} -.ui-slider-horizontal .ui-slider-range-min { - left: 0; -} -.ui-slider-horizontal .ui-slider-range-max { - right: 0; -} - -.ui-slider-vertical { - width: .8em; - height: 100px; -} -.ui-slider-vertical .ui-slider-handle { - left: -.3em; - margin-left: 0; - margin-bottom: -.6em; -} -.ui-slider-vertical .ui-slider-range { - left: 0; - width: 100%; -} -.ui-slider-vertical .ui-slider-range-min { - bottom: 0; -} -.ui-slider-vertical .ui-slider-range-max { - top: 0; -} -.ui-sortable-handle { - -ms-touch-action: none; - touch-action: none; -} -.ui-spinner { - position: relative; - display: inline-block; - overflow: hidden; - padding: 0; - vertical-align: middle; -} -.ui-spinner-input { - border: none; - background: none; - color: inherit; - padding: .222em 0; - margin: .2em 0; - vertical-align: middle; - margin-left: .4em; - margin-right: 2em; -} -.ui-spinner-button { - width: 1.6em; - height: 50%; - font-size: .5em; - padding: 0; - margin: 0; - text-align: center; - position: absolute; - cursor: default; - display: block; - overflow: hidden; - right: 0; -} -/* more specificity required here to override default borders */ -.ui-spinner a.ui-spinner-button { - border-top-style: none; - border-bottom-style: none; - border-right-style: none; -} -.ui-spinner-up { - top: 0; -} -.ui-spinner-down { - bottom: 0; -} -.ui-tabs { - position: relative;/* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */ - padding: .2em; -} -.ui-tabs .ui-tabs-nav { - margin: 0; - padding: .2em .2em 0; -} -.ui-tabs .ui-tabs-nav li { - list-style: none; - float: left; - position: relative; - top: 0; - margin: 1px .2em 0 0; - border-bottom-width: 0; - padding: 0; - white-space: nowrap; -} -.ui-tabs .ui-tabs-nav .ui-tabs-anchor { - float: left; - padding: .5em 1em; - text-decoration: none; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-active { - margin-bottom: -1px; - padding-bottom: 1px; -} -.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor, -.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor, -.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor { - cursor: default; -} -.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor { - cursor: pointer; -} -.ui-tabs .ui-tabs-panel { - display: block; - border-width: 0; - padding: 1em 1.4em; - background: none; -} -.ui-tooltip { - padding: 8px; - position: absolute; - z-index: 9999; - max-width: 300px; -} -body .ui-tooltip { - border-width: 2px; -} - -/* Component containers -----------------------------------*/ -.ui-widget { - font-family: Arial,Helvetica,sans-serif; - font-size: 1em; -} -.ui-widget .ui-widget { - font-size: 1em; -} -.ui-widget input, -.ui-widget select, -.ui-widget textarea, -.ui-widget button { - font-family: Arial,Helvetica,sans-serif; - font-size: 1em; -} -.ui-widget.ui-widget-content { - border: 1px solid #c5c5c5; -} -.ui-widget-content { - border: 1px solid #dddddd; - background: #ffffff; - color: #333333; -} -.ui-widget-content a { - color: #333333; -} -.ui-widget-header { - border: 1px solid #dddddd; - background: #e9e9e9; - color: #333333; - font-weight: bold; -} -.ui-widget-header a { - color: #333333; -} - -/* Interaction states -----------------------------------*/ -.ui-state-default, -.ui-widget-content .ui-state-default, -.ui-widget-header .ui-state-default, -.ui-button, - -/* We use html here because we need a greater specificity to make sure disabled -works properly when clicked or hovered */ -html .ui-button.ui-state-disabled:hover, -html .ui-button.ui-state-disabled:active { - border: 1px solid #c5c5c5; - background: #f6f6f6; - font-weight: normal; - color: #454545; -} -.ui-state-default a, -.ui-state-default a:link, -.ui-state-default a:visited, -a.ui-button, -a:link.ui-button, -a:visited.ui-button, -.ui-button { - color: #454545; - text-decoration: none; -} -.ui-state-hover, -.ui-widget-content .ui-state-hover, -.ui-widget-header .ui-state-hover, -.ui-state-focus, -.ui-widget-content .ui-state-focus, -.ui-widget-header .ui-state-focus, -.ui-button:hover, -.ui-button:focus { - border: 1px solid #cccccc; - background: #ededed; - font-weight: normal; - color: #2b2b2b; -} -.ui-state-hover a, -.ui-state-hover a:hover, -.ui-state-hover a:link, -.ui-state-hover a:visited, -.ui-state-focus a, -.ui-state-focus a:hover, -.ui-state-focus a:link, -.ui-state-focus a:visited, -a.ui-button:hover, -a.ui-button:focus { - color: #2b2b2b; - text-decoration: none; -} - -.ui-visual-focus { - box-shadow: 0 0 3px 1px rgb(94, 158, 214); -} -.ui-state-active, -.ui-widget-content .ui-state-active, -.ui-widget-header .ui-state-active, -a.ui-button:active, -.ui-button:active, -.ui-button.ui-state-active:hover { - border: 1px solid #003eff; - background: #007fff; - font-weight: normal; - color: #ffffff; -} -.ui-icon-background, -.ui-state-active .ui-icon-background { - border: #003eff; - background-color: #ffffff; -} -.ui-state-active a, -.ui-state-active a:link, -.ui-state-active a:visited { - color: #ffffff; - text-decoration: none; -} - -/* Interaction Cues -----------------------------------*/ -.ui-state-highlight, -.ui-widget-content .ui-state-highlight, -.ui-widget-header .ui-state-highlight { - border: 1px solid #dad55e; - background: #fffa90; - color: #777620; -} -.ui-state-checked { - border: 1px solid #dad55e; - background: #fffa90; -} -.ui-state-highlight a, -.ui-widget-content .ui-state-highlight a, -.ui-widget-header .ui-state-highlight a { - color: #777620; -} -.ui-state-error, -.ui-widget-content .ui-state-error, -.ui-widget-header .ui-state-error { - border: 1px solid #f1a899; - background: #fddfdf; - color: #5f3f3f; -} -.ui-state-error a, -.ui-widget-content .ui-state-error a, -.ui-widget-header .ui-state-error a { - color: #5f3f3f; -} -.ui-state-error-text, -.ui-widget-content .ui-state-error-text, -.ui-widget-header .ui-state-error-text { - color: #5f3f3f; -} -.ui-priority-primary, -.ui-widget-content .ui-priority-primary, -.ui-widget-header .ui-priority-primary { - font-weight: bold; -} -.ui-priority-secondary, -.ui-widget-content .ui-priority-secondary, -.ui-widget-header .ui-priority-secondary { - opacity: .7; - filter:Alpha(Opacity=70); /* support: IE8 */ - font-weight: normal; -} -.ui-state-disabled, -.ui-widget-content .ui-state-disabled, -.ui-widget-header .ui-state-disabled { - opacity: .35; - filter:Alpha(Opacity=35); /* support: IE8 */ - background-image: none; -} -.ui-state-disabled .ui-icon { - filter:Alpha(Opacity=35); /* support: IE8 - See #6059 */ -} - -/* Icons -----------------------------------*/ - -/* states and images */ -.ui-icon { - width: 16px; - height: 16px; -} -.ui-icon, -.ui-widget-content .ui-icon { - background-image: url("images/ui-icons_444444_256x240.png"); -} -.ui-widget-header .ui-icon { - background-image: url("images/ui-icons_444444_256x240.png"); -} -.ui-state-hover .ui-icon, -.ui-state-focus .ui-icon, -.ui-button:hover .ui-icon, -.ui-button:focus .ui-icon { - background-image: url("images/ui-icons_555555_256x240.png"); -} -.ui-state-active .ui-icon, -.ui-button:active .ui-icon { - background-image: url("images/ui-icons_ffffff_256x240.png"); -} -.ui-state-highlight .ui-icon, -.ui-button .ui-state-highlight.ui-icon { - background-image: url("images/ui-icons_777620_256x240.png"); -} -.ui-state-error .ui-icon, -.ui-state-error-text .ui-icon { - background-image: url("images/ui-icons_cc0000_256x240.png"); -} -.ui-button .ui-icon { - background-image: url("images/ui-icons_777777_256x240.png"); -} - -/* positioning */ -.ui-icon-blank { background-position: 16px 16px; } -.ui-icon-caret-1-n { background-position: 0 0; } -.ui-icon-caret-1-ne { background-position: -16px 0; } -.ui-icon-caret-1-e { background-position: -32px 0; } -.ui-icon-caret-1-se { background-position: -48px 0; } -.ui-icon-caret-1-s { background-position: -65px 0; } -.ui-icon-caret-1-sw { background-position: -80px 0; } -.ui-icon-caret-1-w { background-position: -96px 0; } -.ui-icon-caret-1-nw { background-position: -112px 0; } -.ui-icon-caret-2-n-s { background-position: -128px 0; } -.ui-icon-caret-2-e-w { background-position: -144px 0; } -.ui-icon-triangle-1-n { background-position: 0 -16px; } -.ui-icon-triangle-1-ne { background-position: -16px -16px; } -.ui-icon-triangle-1-e { background-position: -32px -16px; } -.ui-icon-triangle-1-se { background-position: -48px -16px; } -.ui-icon-triangle-1-s { background-position: -65px -16px; } -.ui-icon-triangle-1-sw { background-position: -80px -16px; } -.ui-icon-triangle-1-w { background-position: -96px -16px; } -.ui-icon-triangle-1-nw { background-position: -112px -16px; } -.ui-icon-triangle-2-n-s { background-position: -128px -16px; } -.ui-icon-triangle-2-e-w { background-position: -144px -16px; } -.ui-icon-arrow-1-n { background-position: 0 -32px; } -.ui-icon-arrow-1-ne { background-position: -16px -32px; } -.ui-icon-arrow-1-e { background-position: -32px -32px; } -.ui-icon-arrow-1-se { background-position: -48px -32px; } -.ui-icon-arrow-1-s { background-position: -65px -32px; } -.ui-icon-arrow-1-sw { background-position: -80px -32px; } -.ui-icon-arrow-1-w { background-position: -96px -32px; } -.ui-icon-arrow-1-nw { background-position: -112px -32px; } -.ui-icon-arrow-2-n-s { background-position: -128px -32px; } -.ui-icon-arrow-2-ne-sw { background-position: -144px -32px; } -.ui-icon-arrow-2-e-w { background-position: -160px -32px; } -.ui-icon-arrow-2-se-nw { background-position: -176px -32px; } -.ui-icon-arrowstop-1-n { background-position: -192px -32px; } -.ui-icon-arrowstop-1-e { background-position: -208px -32px; } -.ui-icon-arrowstop-1-s { background-position: -224px -32px; } -.ui-icon-arrowstop-1-w { background-position: -240px -32px; } -.ui-icon-arrowthick-1-n { background-position: 1px -48px; } -.ui-icon-arrowthick-1-ne { background-position: -16px -48px; } -.ui-icon-arrowthick-1-e { background-position: -32px -48px; } -.ui-icon-arrowthick-1-se { background-position: -48px -48px; } -.ui-icon-arrowthick-1-s { background-position: -64px -48px; } -.ui-icon-arrowthick-1-sw { background-position: -80px -48px; } -.ui-icon-arrowthick-1-w { background-position: -96px -48px; } -.ui-icon-arrowthick-1-nw { background-position: -112px -48px; } -.ui-icon-arrowthick-2-n-s { background-position: -128px -48px; } -.ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; } -.ui-icon-arrowthick-2-e-w { background-position: -160px -48px; } -.ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; } -.ui-icon-arrowthickstop-1-n { background-position: -192px -48px; } -.ui-icon-arrowthickstop-1-e { background-position: -208px -48px; } -.ui-icon-arrowthickstop-1-s { background-position: -224px -48px; } -.ui-icon-arrowthickstop-1-w { background-position: -240px -48px; } -.ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; } -.ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; } -.ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; } -.ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; } -.ui-icon-arrowreturn-1-w { background-position: -64px -64px; } -.ui-icon-arrowreturn-1-n { background-position: -80px -64px; } -.ui-icon-arrowreturn-1-e { background-position: -96px -64px; } -.ui-icon-arrowreturn-1-s { background-position: -112px -64px; } -.ui-icon-arrowrefresh-1-w { background-position: -128px -64px; } -.ui-icon-arrowrefresh-1-n { background-position: -144px -64px; } -.ui-icon-arrowrefresh-1-e { background-position: -160px -64px; } -.ui-icon-arrowrefresh-1-s { background-position: -176px -64px; } -.ui-icon-arrow-4 { background-position: 0 -80px; } -.ui-icon-arrow-4-diag { background-position: -16px -80px; } -.ui-icon-extlink { background-position: -32px -80px; } -.ui-icon-newwin { background-position: -48px -80px; } -.ui-icon-refresh { background-position: -64px -80px; } -.ui-icon-shuffle { background-position: -80px -80px; } -.ui-icon-transfer-e-w { background-position: -96px -80px; } -.ui-icon-transferthick-e-w { background-position: -112px -80px; } -.ui-icon-folder-collapsed { background-position: 0 -96px; } -.ui-icon-folder-open { background-position: -16px -96px; } -.ui-icon-document { background-position: -32px -96px; } -.ui-icon-document-b { background-position: -48px -96px; } -.ui-icon-note { background-position: -64px -96px; } -.ui-icon-mail-closed { background-position: -80px -96px; } -.ui-icon-mail-open { background-position: -96px -96px; } -.ui-icon-suitcase { background-position: -112px -96px; } -.ui-icon-comment { background-position: -128px -96px; } -.ui-icon-person { background-position: -144px -96px; } -.ui-icon-print { background-position: -160px -96px; } -.ui-icon-trash { background-position: -176px -96px; } -.ui-icon-locked { background-position: -192px -96px; } -.ui-icon-unlocked { background-position: -208px -96px; } -.ui-icon-bookmark { background-position: -224px -96px; } -.ui-icon-tag { background-position: -240px -96px; } -.ui-icon-home { background-position: 0 -112px; } -.ui-icon-flag { background-position: -16px -112px; } -.ui-icon-calendar { background-position: -32px -112px; } -.ui-icon-cart { background-position: -48px -112px; } -.ui-icon-pencil { background-position: -64px -112px; } -.ui-icon-clock { background-position: -80px -112px; } -.ui-icon-disk { background-position: -96px -112px; } -.ui-icon-calculator { background-position: -112px -112px; } -.ui-icon-zoomin { background-position: -128px -112px; } -.ui-icon-zoomout { background-position: -144px -112px; } -.ui-icon-search { background-position: -160px -112px; } -.ui-icon-wrench { background-position: -176px -112px; } -.ui-icon-gear { background-position: -192px -112px; } -.ui-icon-heart { background-position: -208px -112px; } -.ui-icon-star { background-position: -224px -112px; } -.ui-icon-link { background-position: -240px -112px; } -.ui-icon-cancel { background-position: 0 -128px; } -.ui-icon-plus { background-position: -16px -128px; } -.ui-icon-plusthick { background-position: -32px -128px; } -.ui-icon-minus { background-position: -48px -128px; } -.ui-icon-minusthick { background-position: -64px -128px; } -.ui-icon-close { background-position: -80px -128px; } -.ui-icon-closethick { background-position: -96px -128px; } -.ui-icon-key { background-position: -112px -128px; } -.ui-icon-lightbulb { background-position: -128px -128px; } -.ui-icon-scissors { background-position: -144px -128px; } -.ui-icon-clipboard { background-position: -160px -128px; } -.ui-icon-copy { background-position: -176px -128px; } -.ui-icon-contact { background-position: -192px -128px; } -.ui-icon-image { background-position: -208px -128px; } -.ui-icon-video { background-position: -224px -128px; } -.ui-icon-script { background-position: -240px -128px; } -.ui-icon-alert { background-position: 0 -144px; } -.ui-icon-info { background-position: -16px -144px; } -.ui-icon-notice { background-position: -32px -144px; } -.ui-icon-help { background-position: -48px -144px; } -.ui-icon-check { background-position: -64px -144px; } -.ui-icon-bullet { background-position: -80px -144px; } -.ui-icon-radio-on { background-position: -96px -144px; } -.ui-icon-radio-off { background-position: -112px -144px; } -.ui-icon-pin-w { background-position: -128px -144px; } -.ui-icon-pin-s { background-position: -144px -144px; } -.ui-icon-play { background-position: 0 -160px; } -.ui-icon-pause { background-position: -16px -160px; } -.ui-icon-seek-next { background-position: -32px -160px; } -.ui-icon-seek-prev { background-position: -48px -160px; } -.ui-icon-seek-end { background-position: -64px -160px; } -.ui-icon-seek-start { background-position: -80px -160px; } -/* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */ -.ui-icon-seek-first { background-position: -80px -160px; } -.ui-icon-stop { background-position: -96px -160px; } -.ui-icon-eject { background-position: -112px -160px; } -.ui-icon-volume-off { background-position: -128px -160px; } -.ui-icon-volume-on { background-position: -144px -160px; } -.ui-icon-power { background-position: 0 -176px; } -.ui-icon-signal-diag { background-position: -16px -176px; } -.ui-icon-signal { background-position: -32px -176px; } -.ui-icon-battery-0 { background-position: -48px -176px; } -.ui-icon-battery-1 { background-position: -64px -176px; } -.ui-icon-battery-2 { background-position: -80px -176px; } -.ui-icon-battery-3 { background-position: -96px -176px; } -.ui-icon-circle-plus { background-position: 0 -192px; } -.ui-icon-circle-minus { background-position: -16px -192px; } -.ui-icon-circle-close { background-position: -32px -192px; } -.ui-icon-circle-triangle-e { background-position: -48px -192px; } -.ui-icon-circle-triangle-s { background-position: -64px -192px; } -.ui-icon-circle-triangle-w { background-position: -80px -192px; } -.ui-icon-circle-triangle-n { background-position: -96px -192px; } -.ui-icon-circle-arrow-e { background-position: -112px -192px; } -.ui-icon-circle-arrow-s { background-position: -128px -192px; } -.ui-icon-circle-arrow-w { background-position: -144px -192px; } -.ui-icon-circle-arrow-n { background-position: -160px -192px; } -.ui-icon-circle-zoomin { background-position: -176px -192px; } -.ui-icon-circle-zoomout { background-position: -192px -192px; } -.ui-icon-circle-check { background-position: -208px -192px; } -.ui-icon-circlesmall-plus { background-position: 0 -208px; } -.ui-icon-circlesmall-minus { background-position: -16px -208px; } -.ui-icon-circlesmall-close { background-position: -32px -208px; } -.ui-icon-squaresmall-plus { background-position: -48px -208px; } -.ui-icon-squaresmall-minus { background-position: -64px -208px; } -.ui-icon-squaresmall-close { background-position: -80px -208px; } -.ui-icon-grip-dotted-vertical { background-position: 0 -224px; } -.ui-icon-grip-dotted-horizontal { background-position: -16px -224px; } -.ui-icon-grip-solid-vertical { background-position: -32px -224px; } -.ui-icon-grip-solid-horizontal { background-position: -48px -224px; } -.ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; } -.ui-icon-grip-diagonal-se { background-position: -80px -224px; } - - -/* Misc visuals -----------------------------------*/ - -/* Corner radius */ -.ui-corner-all, -.ui-corner-top, -.ui-corner-left, -.ui-corner-tl { - border-top-left-radius: 3px; -} -.ui-corner-all, -.ui-corner-top, -.ui-corner-right, -.ui-corner-tr { - border-top-right-radius: 3px; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-left, -.ui-corner-bl { - border-bottom-left-radius: 3px; -} -.ui-corner-all, -.ui-corner-bottom, -.ui-corner-right, -.ui-corner-br { - border-bottom-right-radius: 3px; -} - -/* Overlays */ -.ui-widget-overlay { - background: #aaaaaa; - opacity: .003; - filter: Alpha(Opacity=.3); /* support: IE8 */ -} -.ui-widget-shadow { - -webkit-box-shadow: 0px 0px 5px #666666; - box-shadow: 0px 0px 5px #666666; -} diff --git a/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/jquery-ui.js b/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/jquery-ui.js deleted file mode 100644 index 021355237..000000000 --- a/client/client-editor/src/main/resources/webapp/js/jquery-ui-1.12.1/jquery-ui.js +++ /dev/null @@ -1,18706 +0,0 @@ -/*! jQuery UI - v1.12.1 - 2016-09-14 -* http://jqueryui.com -* Includes: widget.js, position.js, data.js, disable-selection.js, effect.js, effects/effect-blind.js, effects/effect-bounce.js, effects/effect-clip.js, effects/effect-drop.js, effects/effect-explode.js, effects/effect-fade.js, effects/effect-fold.js, effects/effect-highlight.js, effects/effect-puff.js, effects/effect-pulsate.js, effects/effect-scale.js, effects/effect-shake.js, effects/effect-size.js, effects/effect-slide.js, effects/effect-transfer.js, focusable.js, form-reset-mixin.js, jquery-1-7.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/accordion.js, widgets/autocomplete.js, widgets/button.js, widgets/checkboxradio.js, widgets/controlgroup.js, widgets/datepicker.js, widgets/dialog.js, widgets/draggable.js, widgets/droppable.js, widgets/menu.js, widgets/mouse.js, widgets/progressbar.js, widgets/resizable.js, widgets/selectable.js, widgets/selectmenu.js, widgets/slider.js, widgets/sortable.js, widgets/spinner.js, widgets/tabs.js, widgets/tooltip.js -* Copyright jQuery Foundation and other contributors; Licensed MIT */ - -(function( factory ) { - if ( typeof define === "function" && define.amd ) { - - // AMD. Register as an anonymous module. - define([ "jquery" ], factory ); - } else { - - // Browser globals - factory( jQuery ); - } -}(function( $ ) { - -$.ui = $.ui || {}; - -var version = $.ui.version = "1.12.1"; - - -/*! - * jQuery UI Widget 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Widget -//>>group: Core -//>>description: Provides a factory for creating stateful widgets with a common API. -//>>docs: http://api.jqueryui.com/jQuery.widget/ -//>>demos: http://jqueryui.com/widget/ - - - -var widgetUuid = 0; -var widgetSlice = Array.prototype.slice; - -$.cleanData = ( function( orig ) { - return function( elems ) { - var events, elem, i; - for ( i = 0; ( elem = elems[ i ] ) != null; i++ ) { - try { - - // Only trigger remove when necessary to save time - events = $._data( elem, "events" ); - if ( events && events.remove ) { - $( elem ).triggerHandler( "remove" ); - } - - // Http://bugs.jquery.com/ticket/8235 - } catch ( e ) {} - } - orig( elems ); - }; -} )( $.cleanData ); - -$.widget = function( name, base, prototype ) { - var existingConstructor, constructor, basePrototype; - - // ProxiedPrototype allows the provided prototype to remain unmodified - // so that it can be used as a mixin for multiple widgets (#8876) - var proxiedPrototype = {}; - - var namespace = name.split( "." )[ 0 ]; - name = name.split( "." )[ 1 ]; - var fullName = namespace + "-" + name; - - if ( !prototype ) { - prototype = base; - base = $.Widget; - } - - if ( $.isArray( prototype ) ) { - prototype = $.extend.apply( null, [ {} ].concat( prototype ) ); - } - - // Create selector for plugin - $.expr[ ":" ][ fullName.toLowerCase() ] = function( elem ) { - return !!$.data( elem, fullName ); - }; - - $[ namespace ] = $[ namespace ] || {}; - existingConstructor = $[ namespace ][ name ]; - constructor = $[ namespace ][ name ] = function( options, element ) { - - // Allow instantiation without "new" keyword - if ( !this._createWidget ) { - return new constructor( options, element ); - } - - // Allow instantiation without initializing for simple inheritance - // must use "new" keyword (the code above always passes args) - if ( arguments.length ) { - this._createWidget( options, element ); - } - }; - - // Extend with the existing constructor to carry over any static properties - $.extend( constructor, existingConstructor, { - version: prototype.version, - - // Copy the object used to create the prototype in case we need to - // redefine the widget later - _proto: $.extend( {}, prototype ), - - // Track widgets that inherit from this widget in case this widget is - // redefined after a widget inherits from it - _childConstructors: [] - } ); - - basePrototype = new base(); - - // We need to make the options hash a property directly on the new instance - // otherwise we'll modify the options hash on the prototype that we're - // inheriting from - basePrototype.options = $.widget.extend( {}, basePrototype.options ); - $.each( prototype, function( prop, value ) { - if ( !$.isFunction( value ) ) { - proxiedPrototype[ prop ] = value; - return; - } - proxiedPrototype[ prop ] = ( function() { - function _super() { - return base.prototype[ prop ].apply( this, arguments ); - } - - function _superApply( args ) { - return base.prototype[ prop ].apply( this, args ); - } - - return function() { - var __super = this._super; - var __superApply = this._superApply; - var returnValue; - - this._super = _super; - this._superApply = _superApply; - - returnValue = value.apply( this, arguments ); - - this._super = __super; - this._superApply = __superApply; - - return returnValue; - }; - } )(); - } ); - constructor.prototype = $.widget.extend( basePrototype, { - - // TODO: remove support for widgetEventPrefix - // always use the name + a colon as the prefix, e.g., draggable:start - // don't prefix for widgets that aren't DOM-based - widgetEventPrefix: existingConstructor ? ( basePrototype.widgetEventPrefix || name ) : name - }, proxiedPrototype, { - constructor: constructor, - namespace: namespace, - widgetName: name, - widgetFullName: fullName - } ); - - // If this widget is being redefined then we need to find all widgets that - // are inheriting from it and redefine all of them so that they inherit from - // the new version of this widget. We're essentially trying to replace one - // level in the prototype chain. - if ( existingConstructor ) { - $.each( existingConstructor._childConstructors, function( i, child ) { - var childPrototype = child.prototype; - - // Redefine the child widget using the same prototype that was - // originally used, but inherit from the new version of the base - $.widget( childPrototype.namespace + "." + childPrototype.widgetName, constructor, - child._proto ); - } ); - - // Remove the list of existing child constructors from the old constructor - // so the old child constructors can be garbage collected - delete existingConstructor._childConstructors; - } else { - base._childConstructors.push( constructor ); - } - - $.widget.bridge( name, constructor ); - - return constructor; -}; - -$.widget.extend = function( target ) { - var input = widgetSlice.call( arguments, 1 ); - var inputIndex = 0; - var inputLength = input.length; - var key; - var value; - - for ( ; inputIndex < inputLength; inputIndex++ ) { - for ( key in input[ inputIndex ] ) { - value = input[ inputIndex ][ key ]; - if ( input[ inputIndex ].hasOwnProperty( key ) && value !== undefined ) { - - // Clone objects - if ( $.isPlainObject( value ) ) { - target[ key ] = $.isPlainObject( target[ key ] ) ? - $.widget.extend( {}, target[ key ], value ) : - - // Don't extend strings, arrays, etc. with objects - $.widget.extend( {}, value ); - - // Copy everything else by reference - } else { - target[ key ] = value; - } - } - } - } - return target; -}; - -$.widget.bridge = function( name, object ) { - var fullName = object.prototype.widgetFullName || name; - $.fn[ name ] = function( options ) { - var isMethodCall = typeof options === "string"; - var args = widgetSlice.call( arguments, 1 ); - var returnValue = this; - - if ( isMethodCall ) { - - // If this is an empty collection, we need to have the instance method - // return undefined instead of the jQuery instance - if ( !this.length && options === "instance" ) { - returnValue = undefined; - } else { - this.each( function() { - var methodValue; - var instance = $.data( this, fullName ); - - if ( options === "instance" ) { - returnValue = instance; - return false; - } - - if ( !instance ) { - return $.error( "cannot call methods on " + name + - " prior to initialization; " + - "attempted to call method '" + options + "'" ); - } - - if ( !$.isFunction( instance[ options ] ) || options.charAt( 0 ) === "_" ) { - return $.error( "no such method '" + options + "' for " + name + - " widget instance" ); - } - - methodValue = instance[ options ].apply( instance, args ); - - if ( methodValue !== instance && methodValue !== undefined ) { - returnValue = methodValue && methodValue.jquery ? - returnValue.pushStack( methodValue.get() ) : - methodValue; - return false; - } - } ); - } - } else { - - // Allow multiple hashes to be passed on init - if ( args.length ) { - options = $.widget.extend.apply( null, [ options ].concat( args ) ); - } - - this.each( function() { - var instance = $.data( this, fullName ); - if ( instance ) { - instance.option( options || {} ); - if ( instance._init ) { - instance._init(); - } - } else { - $.data( this, fullName, new object( options, this ) ); - } - } ); - } - - return returnValue; - }; -}; - -$.Widget = function( /* options, element */ ) {}; -$.Widget._childConstructors = []; - -$.Widget.prototype = { - widgetName: "widget", - widgetEventPrefix: "", - defaultElement: "
", - - options: { - classes: {}, - disabled: false, - - // Callbacks - create: null - }, - - _createWidget: function( options, element ) { - element = $( element || this.defaultElement || this )[ 0 ]; - this.element = $( element ); - this.uuid = widgetUuid++; - this.eventNamespace = "." + this.widgetName + this.uuid; - - this.bindings = $(); - this.hoverable = $(); - this.focusable = $(); - this.classesElementLookup = {}; - - if ( element !== this ) { - $.data( element, this.widgetFullName, this ); - this._on( true, this.element, { - remove: function( event ) { - if ( event.target === element ) { - this.destroy(); - } - } - } ); - this.document = $( element.style ? - - // Element within the document - element.ownerDocument : - - // Element is window or document - element.document || element ); - this.window = $( this.document[ 0 ].defaultView || this.document[ 0 ].parentWindow ); - } - - this.options = $.widget.extend( {}, - this.options, - this._getCreateOptions(), - options ); - - this._create(); - - if ( this.options.disabled ) { - this._setOptionDisabled( this.options.disabled ); - } - - this._trigger( "create", null, this._getCreateEventData() ); - this._init(); - }, - - _getCreateOptions: function() { - return {}; - }, - - _getCreateEventData: $.noop, - - _create: $.noop, - - _init: $.noop, - - destroy: function() { - var that = this; - - this._destroy(); - $.each( this.classesElementLookup, function( key, value ) { - that._removeClass( value, key ); - } ); - - // We can probably remove the unbind calls in 2.0 - // all event bindings should go through this._on() - this.element - .off( this.eventNamespace ) - .removeData( this.widgetFullName ); - this.widget() - .off( this.eventNamespace ) - .removeAttr( "aria-disabled" ); - - // Clean up events and states - this.bindings.off( this.eventNamespace ); - }, - - _destroy: $.noop, - - widget: function() { - return this.element; - }, - - option: function( key, value ) { - var options = key; - var parts; - var curOption; - var i; - - if ( arguments.length === 0 ) { - - // Don't return a reference to the internal hash - return $.widget.extend( {}, this.options ); - } - - if ( typeof key === "string" ) { - - // Handle nested keys, e.g., "foo.bar" => { foo: { bar: ___ } } - options = {}; - parts = key.split( "." ); - key = parts.shift(); - if ( parts.length ) { - curOption = options[ key ] = $.widget.extend( {}, this.options[ key ] ); - for ( i = 0; i < parts.length - 1; i++ ) { - curOption[ parts[ i ] ] = curOption[ parts[ i ] ] || {}; - curOption = curOption[ parts[ i ] ]; - } - key = parts.pop(); - if ( arguments.length === 1 ) { - return curOption[ key ] === undefined ? null : curOption[ key ]; - } - curOption[ key ] = value; - } else { - if ( arguments.length === 1 ) { - return this.options[ key ] === undefined ? null : this.options[ key ]; - } - options[ key ] = value; - } - } - - this._setOptions( options ); - - return this; - }, - - _setOptions: function( options ) { - var key; - - for ( key in options ) { - this._setOption( key, options[ key ] ); - } - - return this; - }, - - _setOption: function( key, value ) { - if ( key === "classes" ) { - this._setOptionClasses( value ); - } - - this.options[ key ] = value; - - if ( key === "disabled" ) { - this._setOptionDisabled( value ); - } - - return this; - }, - - _setOptionClasses: function( value ) { - var classKey, elements, currentElements; - - for ( classKey in value ) { - currentElements = this.classesElementLookup[ classKey ]; - if ( value[ classKey ] === this.options.classes[ classKey ] || - !currentElements || - !currentElements.length ) { - continue; - } - - // We are doing this to create a new jQuery object because the _removeClass() call - // on the next line is going to destroy the reference to the current elements being - // tracked. We need to save a copy of this collection so that we can add the new classes - // below. - elements = $( currentElements.get() ); - this._removeClass( currentElements, classKey ); - - // We don't use _addClass() here, because that uses this.options.classes - // for generating the string of classes. We want to use the value passed in from - // _setOption(), this is the new value of the classes option which was passed to - // _setOption(). We pass this value directly to _classes(). - elements.addClass( this._classes( { - element: elements, - keys: classKey, - classes: value, - add: true - } ) ); - } - }, - - _setOptionDisabled: function( value ) { - this._toggleClass( this.widget(), this.widgetFullName + "-disabled", null, !!value ); - - // If the widget is becoming disabled, then nothing is interactive - if ( value ) { - this._removeClass( this.hoverable, null, "ui-state-hover" ); - this._removeClass( this.focusable, null, "ui-state-focus" ); - } - }, - - enable: function() { - return this._setOptions( { disabled: false } ); - }, - - disable: function() { - return this._setOptions( { disabled: true } ); - }, - - _classes: function( options ) { - var full = []; - var that = this; - - options = $.extend( { - element: this.element, - classes: this.options.classes || {} - }, options ); - - function processClassString( classes, checkOption ) { - var current, i; - for ( i = 0; i < classes.length; i++ ) { - current = that.classesElementLookup[ classes[ i ] ] || $(); - if ( options.add ) { - current = $( $.unique( current.get().concat( options.element.get() ) ) ); - } else { - current = $( current.not( options.element ).get() ); - } - that.classesElementLookup[ classes[ i ] ] = current; - full.push( classes[ i ] ); - if ( checkOption && options.classes[ classes[ i ] ] ) { - full.push( options.classes[ classes[ i ] ] ); - } - } - } - - this._on( options.element, { - "remove": "_untrackClassesElement" - } ); - - if ( options.keys ) { - processClassString( options.keys.match( /\S+/g ) || [], true ); - } - if ( options.extra ) { - processClassString( options.extra.match( /\S+/g ) || [] ); - } - - return full.join( " " ); - }, - - _untrackClassesElement: function( event ) { - var that = this; - $.each( that.classesElementLookup, function( key, value ) { - if ( $.inArray( event.target, value ) !== -1 ) { - that.classesElementLookup[ key ] = $( value.not( event.target ).get() ); - } - } ); - }, - - _removeClass: function( element, keys, extra ) { - return this._toggleClass( element, keys, extra, false ); - }, - - _addClass: function( element, keys, extra ) { - return this._toggleClass( element, keys, extra, true ); - }, - - _toggleClass: function( element, keys, extra, add ) { - add = ( typeof add === "boolean" ) ? add : extra; - var shift = ( typeof element === "string" || element === null ), - options = { - extra: shift ? keys : extra, - keys: shift ? element : keys, - element: shift ? this.element : element, - add: add - }; - options.element.toggleClass( this._classes( options ), add ); - return this; - }, - - _on: function( suppressDisabledCheck, element, handlers ) { - var delegateElement; - var instance = this; - - // No suppressDisabledCheck flag, shuffle arguments - if ( typeof suppressDisabledCheck !== "boolean" ) { - handlers = element; - element = suppressDisabledCheck; - suppressDisabledCheck = false; - } - - // No element argument, shuffle and use this.element - if ( !handlers ) { - handlers = element; - element = this.element; - delegateElement = this.widget(); - } else { - element = delegateElement = $( element ); - this.bindings = this.bindings.add( element ); - } - - $.each( handlers, function( event, handler ) { - function handlerProxy() { - - // Allow widgets to customize the disabled handling - // - disabled as an array instead of boolean - // - disabled class as method for disabling individual parts - if ( !suppressDisabledCheck && - ( instance.options.disabled === true || - $( this ).hasClass( "ui-state-disabled" ) ) ) { - return; - } - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - - // Copy the guid so direct unbinding works - if ( typeof handler !== "string" ) { - handlerProxy.guid = handler.guid = - handler.guid || handlerProxy.guid || $.guid++; - } - - var match = event.match( /^([\w:-]*)\s*(.*)$/ ); - var eventName = match[ 1 ] + instance.eventNamespace; - var selector = match[ 2 ]; - - if ( selector ) { - delegateElement.on( eventName, selector, handlerProxy ); - } else { - element.on( eventName, handlerProxy ); - } - } ); - }, - - _off: function( element, eventName ) { - eventName = ( eventName || "" ).split( " " ).join( this.eventNamespace + " " ) + - this.eventNamespace; - element.off( eventName ).off( eventName ); - - // Clear the stack to avoid memory leaks (#10056) - this.bindings = $( this.bindings.not( element ).get() ); - this.focusable = $( this.focusable.not( element ).get() ); - this.hoverable = $( this.hoverable.not( element ).get() ); - }, - - _delay: function( handler, delay ) { - function handlerProxy() { - return ( typeof handler === "string" ? instance[ handler ] : handler ) - .apply( instance, arguments ); - } - var instance = this; - return setTimeout( handlerProxy, delay || 0 ); - }, - - _hoverable: function( element ) { - this.hoverable = this.hoverable.add( element ); - this._on( element, { - mouseenter: function( event ) { - this._addClass( $( event.currentTarget ), null, "ui-state-hover" ); - }, - mouseleave: function( event ) { - this._removeClass( $( event.currentTarget ), null, "ui-state-hover" ); - } - } ); - }, - - _focusable: function( element ) { - this.focusable = this.focusable.add( element ); - this._on( element, { - focusin: function( event ) { - this._addClass( $( event.currentTarget ), null, "ui-state-focus" ); - }, - focusout: function( event ) { - this._removeClass( $( event.currentTarget ), null, "ui-state-focus" ); - } - } ); - }, - - _trigger: function( type, event, data ) { - var prop, orig; - var callback = this.options[ type ]; - - data = data || {}; - event = $.Event( event ); - event.type = ( type === this.widgetEventPrefix ? - type : - this.widgetEventPrefix + type ).toLowerCase(); - - // The original event may come from any element - // so we need to reset the target on the new event - event.target = this.element[ 0 ]; - - // Copy original event properties over to the new event - orig = event.originalEvent; - if ( orig ) { - for ( prop in orig ) { - if ( !( prop in event ) ) { - event[ prop ] = orig[ prop ]; - } - } - } - - this.element.trigger( event, data ); - return !( $.isFunction( callback ) && - callback.apply( this.element[ 0 ], [ event ].concat( data ) ) === false || - event.isDefaultPrevented() ); - } -}; - -$.each( { show: "fadeIn", hide: "fadeOut" }, function( method, defaultEffect ) { - $.Widget.prototype[ "_" + method ] = function( element, options, callback ) { - if ( typeof options === "string" ) { - options = { effect: options }; - } - - var hasOptions; - var effectName = !options ? - method : - options === true || typeof options === "number" ? - defaultEffect : - options.effect || defaultEffect; - - options = options || {}; - if ( typeof options === "number" ) { - options = { duration: options }; - } - - hasOptions = !$.isEmptyObject( options ); - options.complete = callback; - - if ( options.delay ) { - element.delay( options.delay ); - } - - if ( hasOptions && $.effects && $.effects.effect[ effectName ] ) { - element[ method ]( options ); - } else if ( effectName !== method && element[ effectName ] ) { - element[ effectName ]( options.duration, options.easing, callback ); - } else { - element.queue( function( next ) { - $( this )[ method ](); - if ( callback ) { - callback.call( element[ 0 ] ); - } - next(); - } ); - } - }; -} ); - -var widget = $.widget; - - -/*! - * jQuery UI Position 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * http://api.jqueryui.com/position/ - */ - -//>>label: Position -//>>group: Core -//>>description: Positions elements relative to other elements. -//>>docs: http://api.jqueryui.com/position/ -//>>demos: http://jqueryui.com/position/ - - -( function() { -var cachedScrollbarWidth, - max = Math.max, - abs = Math.abs, - rhorizontal = /left|center|right/, - rvertical = /top|center|bottom/, - roffset = /[\+\-]\d+(\.[\d]+)?%?/, - rposition = /^\w+/, - rpercent = /%$/, - _position = $.fn.position; - -function getOffsets( offsets, width, height ) { - return [ - parseFloat( offsets[ 0 ] ) * ( rpercent.test( offsets[ 0 ] ) ? width / 100 : 1 ), - parseFloat( offsets[ 1 ] ) * ( rpercent.test( offsets[ 1 ] ) ? height / 100 : 1 ) - ]; -} - -function parseCss( element, property ) { - return parseInt( $.css( element, property ), 10 ) || 0; -} - -function getDimensions( elem ) { - var raw = elem[ 0 ]; - if ( raw.nodeType === 9 ) { - return { - width: elem.width(), - height: elem.height(), - offset: { top: 0, left: 0 } - }; - } - if ( $.isWindow( raw ) ) { - return { - width: elem.width(), - height: elem.height(), - offset: { top: elem.scrollTop(), left: elem.scrollLeft() } - }; - } - if ( raw.preventDefault ) { - return { - width: 0, - height: 0, - offset: { top: raw.pageY, left: raw.pageX } - }; - } - return { - width: elem.outerWidth(), - height: elem.outerHeight(), - offset: elem.offset() - }; -} - -$.position = { - scrollbarWidth: function() { - if ( cachedScrollbarWidth !== undefined ) { - return cachedScrollbarWidth; - } - var w1, w2, - div = $( "
" + - "
" ), - innerDiv = div.children()[ 0 ]; - - $( "body" ).append( div ); - w1 = innerDiv.offsetWidth; - div.css( "overflow", "scroll" ); - - w2 = innerDiv.offsetWidth; - - if ( w1 === w2 ) { - w2 = div[ 0 ].clientWidth; - } - - div.remove(); - - return ( cachedScrollbarWidth = w1 - w2 ); - }, - getScrollInfo: function( within ) { - var overflowX = within.isWindow || within.isDocument ? "" : - within.element.css( "overflow-x" ), - overflowY = within.isWindow || within.isDocument ? "" : - within.element.css( "overflow-y" ), - hasOverflowX = overflowX === "scroll" || - ( overflowX === "auto" && within.width < within.element[ 0 ].scrollWidth ), - hasOverflowY = overflowY === "scroll" || - ( overflowY === "auto" && within.height < within.element[ 0 ].scrollHeight ); - return { - width: hasOverflowY ? $.position.scrollbarWidth() : 0, - height: hasOverflowX ? $.position.scrollbarWidth() : 0 - }; - }, - getWithinInfo: function( element ) { - var withinElement = $( element || window ), - isWindow = $.isWindow( withinElement[ 0 ] ), - isDocument = !!withinElement[ 0 ] && withinElement[ 0 ].nodeType === 9, - hasOffset = !isWindow && !isDocument; - return { - element: withinElement, - isWindow: isWindow, - isDocument: isDocument, - offset: hasOffset ? $( element ).offset() : { left: 0, top: 0 }, - scrollLeft: withinElement.scrollLeft(), - scrollTop: withinElement.scrollTop(), - width: withinElement.outerWidth(), - height: withinElement.outerHeight() - }; - } -}; - -$.fn.position = function( options ) { - if ( !options || !options.of ) { - return _position.apply( this, arguments ); - } - - // Make a copy, we don't want to modify arguments - options = $.extend( {}, options ); - - var atOffset, targetWidth, targetHeight, targetOffset, basePosition, dimensions, - target = $( options.of ), - within = $.position.getWithinInfo( options.within ), - scrollInfo = $.position.getScrollInfo( within ), - collision = ( options.collision || "flip" ).split( " " ), - offsets = {}; - - dimensions = getDimensions( target ); - if ( target[ 0 ].preventDefault ) { - - // Force left top to allow flipping - options.at = "left top"; - } - targetWidth = dimensions.width; - targetHeight = dimensions.height; - targetOffset = dimensions.offset; - - // Clone to reuse original targetOffset later - basePosition = $.extend( {}, targetOffset ); - - // Force my and at to have valid horizontal and vertical positions - // if a value is missing or invalid, it will be converted to center - $.each( [ "my", "at" ], function() { - var pos = ( options[ this ] || "" ).split( " " ), - horizontalOffset, - verticalOffset; - - if ( pos.length === 1 ) { - pos = rhorizontal.test( pos[ 0 ] ) ? - pos.concat( [ "center" ] ) : - rvertical.test( pos[ 0 ] ) ? - [ "center" ].concat( pos ) : - [ "center", "center" ]; - } - pos[ 0 ] = rhorizontal.test( pos[ 0 ] ) ? pos[ 0 ] : "center"; - pos[ 1 ] = rvertical.test( pos[ 1 ] ) ? pos[ 1 ] : "center"; - - // Calculate offsets - horizontalOffset = roffset.exec( pos[ 0 ] ); - verticalOffset = roffset.exec( pos[ 1 ] ); - offsets[ this ] = [ - horizontalOffset ? horizontalOffset[ 0 ] : 0, - verticalOffset ? verticalOffset[ 0 ] : 0 - ]; - - // Reduce to just the positions without the offsets - options[ this ] = [ - rposition.exec( pos[ 0 ] )[ 0 ], - rposition.exec( pos[ 1 ] )[ 0 ] - ]; - } ); - - // Normalize collision option - if ( collision.length === 1 ) { - collision[ 1 ] = collision[ 0 ]; - } - - if ( options.at[ 0 ] === "right" ) { - basePosition.left += targetWidth; - } else if ( options.at[ 0 ] === "center" ) { - basePosition.left += targetWidth / 2; - } - - if ( options.at[ 1 ] === "bottom" ) { - basePosition.top += targetHeight; - } else if ( options.at[ 1 ] === "center" ) { - basePosition.top += targetHeight / 2; - } - - atOffset = getOffsets( offsets.at, targetWidth, targetHeight ); - basePosition.left += atOffset[ 0 ]; - basePosition.top += atOffset[ 1 ]; - - return this.each( function() { - var collisionPosition, using, - elem = $( this ), - elemWidth = elem.outerWidth(), - elemHeight = elem.outerHeight(), - marginLeft = parseCss( this, "marginLeft" ), - marginTop = parseCss( this, "marginTop" ), - collisionWidth = elemWidth + marginLeft + parseCss( this, "marginRight" ) + - scrollInfo.width, - collisionHeight = elemHeight + marginTop + parseCss( this, "marginBottom" ) + - scrollInfo.height, - position = $.extend( {}, basePosition ), - myOffset = getOffsets( offsets.my, elem.outerWidth(), elem.outerHeight() ); - - if ( options.my[ 0 ] === "right" ) { - position.left -= elemWidth; - } else if ( options.my[ 0 ] === "center" ) { - position.left -= elemWidth / 2; - } - - if ( options.my[ 1 ] === "bottom" ) { - position.top -= elemHeight; - } else if ( options.my[ 1 ] === "center" ) { - position.top -= elemHeight / 2; - } - - position.left += myOffset[ 0 ]; - position.top += myOffset[ 1 ]; - - collisionPosition = { - marginLeft: marginLeft, - marginTop: marginTop - }; - - $.each( [ "left", "top" ], function( i, dir ) { - if ( $.ui.position[ collision[ i ] ] ) { - $.ui.position[ collision[ i ] ][ dir ]( position, { - targetWidth: targetWidth, - targetHeight: targetHeight, - elemWidth: elemWidth, - elemHeight: elemHeight, - collisionPosition: collisionPosition, - collisionWidth: collisionWidth, - collisionHeight: collisionHeight, - offset: [ atOffset[ 0 ] + myOffset[ 0 ], atOffset [ 1 ] + myOffset[ 1 ] ], - my: options.my, - at: options.at, - within: within, - elem: elem - } ); - } - } ); - - if ( options.using ) { - - // Adds feedback as second argument to using callback, if present - using = function( props ) { - var left = targetOffset.left - position.left, - right = left + targetWidth - elemWidth, - top = targetOffset.top - position.top, - bottom = top + targetHeight - elemHeight, - feedback = { - target: { - element: target, - left: targetOffset.left, - top: targetOffset.top, - width: targetWidth, - height: targetHeight - }, - element: { - element: elem, - left: position.left, - top: position.top, - width: elemWidth, - height: elemHeight - }, - horizontal: right < 0 ? "left" : left > 0 ? "right" : "center", - vertical: bottom < 0 ? "top" : top > 0 ? "bottom" : "middle" - }; - if ( targetWidth < elemWidth && abs( left + right ) < targetWidth ) { - feedback.horizontal = "center"; - } - if ( targetHeight < elemHeight && abs( top + bottom ) < targetHeight ) { - feedback.vertical = "middle"; - } - if ( max( abs( left ), abs( right ) ) > max( abs( top ), abs( bottom ) ) ) { - feedback.important = "horizontal"; - } else { - feedback.important = "vertical"; - } - options.using.call( this, props, feedback ); - }; - } - - elem.offset( $.extend( position, { using: using } ) ); - } ); -}; - -$.ui.position = { - fit: { - left: function( position, data ) { - var within = data.within, - withinOffset = within.isWindow ? within.scrollLeft : within.offset.left, - outerWidth = within.width, - collisionPosLeft = position.left - data.collisionPosition.marginLeft, - overLeft = withinOffset - collisionPosLeft, - overRight = collisionPosLeft + data.collisionWidth - outerWidth - withinOffset, - newOverRight; - - // Element is wider than within - if ( data.collisionWidth > outerWidth ) { - - // Element is initially over the left side of within - if ( overLeft > 0 && overRight <= 0 ) { - newOverRight = position.left + overLeft + data.collisionWidth - outerWidth - - withinOffset; - position.left += overLeft - newOverRight; - - // Element is initially over right side of within - } else if ( overRight > 0 && overLeft <= 0 ) { - position.left = withinOffset; - - // Element is initially over both left and right sides of within - } else { - if ( overLeft > overRight ) { - position.left = withinOffset + outerWidth - data.collisionWidth; - } else { - position.left = withinOffset; - } - } - - // Too far left -> align with left edge - } else if ( overLeft > 0 ) { - position.left += overLeft; - - // Too far right -> align with right edge - } else if ( overRight > 0 ) { - position.left -= overRight; - - // Adjust based on position and margin - } else { - position.left = max( position.left - collisionPosLeft, position.left ); - } - }, - top: function( position, data ) { - var within = data.within, - withinOffset = within.isWindow ? within.scrollTop : within.offset.top, - outerHeight = data.within.height, - collisionPosTop = position.top - data.collisionPosition.marginTop, - overTop = withinOffset - collisionPosTop, - overBottom = collisionPosTop + data.collisionHeight - outerHeight - withinOffset, - newOverBottom; - - // Element is taller than within - if ( data.collisionHeight > outerHeight ) { - - // Element is initially over the top of within - if ( overTop > 0 && overBottom <= 0 ) { - newOverBottom = position.top + overTop + data.collisionHeight - outerHeight - - withinOffset; - position.top += overTop - newOverBottom; - - // Element is initially over bottom of within - } else if ( overBottom > 0 && overTop <= 0 ) { - position.top = withinOffset; - - // Element is initially over both top and bottom of within - } else { - if ( overTop > overBottom ) { - position.top = withinOffset + outerHeight - data.collisionHeight; - } else { - position.top = withinOffset; - } - } - - // Too far up -> align with top - } else if ( overTop > 0 ) { - position.top += overTop; - - // Too far down -> align with bottom edge - } else if ( overBottom > 0 ) { - position.top -= overBottom; - - // Adjust based on position and margin - } else { - position.top = max( position.top - collisionPosTop, position.top ); - } - } - }, - flip: { - left: function( position, data ) { - var within = data.within, - withinOffset = within.offset.left + within.scrollLeft, - outerWidth = within.width, - offsetLeft = within.isWindow ? within.scrollLeft : within.offset.left, - collisionPosLeft = position.left - data.collisionPosition.marginLeft, - overLeft = collisionPosLeft - offsetLeft, - overRight = collisionPosLeft + data.collisionWidth - outerWidth - offsetLeft, - myOffset = data.my[ 0 ] === "left" ? - -data.elemWidth : - data.my[ 0 ] === "right" ? - data.elemWidth : - 0, - atOffset = data.at[ 0 ] === "left" ? - data.targetWidth : - data.at[ 0 ] === "right" ? - -data.targetWidth : - 0, - offset = -2 * data.offset[ 0 ], - newOverRight, - newOverLeft; - - if ( overLeft < 0 ) { - newOverRight = position.left + myOffset + atOffset + offset + data.collisionWidth - - outerWidth - withinOffset; - if ( newOverRight < 0 || newOverRight < abs( overLeft ) ) { - position.left += myOffset + atOffset + offset; - } - } else if ( overRight > 0 ) { - newOverLeft = position.left - data.collisionPosition.marginLeft + myOffset + - atOffset + offset - offsetLeft; - if ( newOverLeft > 0 || abs( newOverLeft ) < overRight ) { - position.left += myOffset + atOffset + offset; - } - } - }, - top: function( position, data ) { - var within = data.within, - withinOffset = within.offset.top + within.scrollTop, - outerHeight = within.height, - offsetTop = within.isWindow ? within.scrollTop : within.offset.top, - collisionPosTop = position.top - data.collisionPosition.marginTop, - overTop = collisionPosTop - offsetTop, - overBottom = collisionPosTop + data.collisionHeight - outerHeight - offsetTop, - top = data.my[ 1 ] === "top", - myOffset = top ? - -data.elemHeight : - data.my[ 1 ] === "bottom" ? - data.elemHeight : - 0, - atOffset = data.at[ 1 ] === "top" ? - data.targetHeight : - data.at[ 1 ] === "bottom" ? - -data.targetHeight : - 0, - offset = -2 * data.offset[ 1 ], - newOverTop, - newOverBottom; - if ( overTop < 0 ) { - newOverBottom = position.top + myOffset + atOffset + offset + data.collisionHeight - - outerHeight - withinOffset; - if ( newOverBottom < 0 || newOverBottom < abs( overTop ) ) { - position.top += myOffset + atOffset + offset; - } - } else if ( overBottom > 0 ) { - newOverTop = position.top - data.collisionPosition.marginTop + myOffset + atOffset + - offset - offsetTop; - if ( newOverTop > 0 || abs( newOverTop ) < overBottom ) { - position.top += myOffset + atOffset + offset; - } - } - } - }, - flipfit: { - left: function() { - $.ui.position.flip.left.apply( this, arguments ); - $.ui.position.fit.left.apply( this, arguments ); - }, - top: function() { - $.ui.position.flip.top.apply( this, arguments ); - $.ui.position.fit.top.apply( this, arguments ); - } - } -}; - -} )(); - -var position = $.ui.position; - - -/*! - * jQuery UI :data 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: :data Selector -//>>group: Core -//>>description: Selects elements which have data stored under the specified key. -//>>docs: http://api.jqueryui.com/data-selector/ - - -var data = $.extend( $.expr[ ":" ], { - data: $.expr.createPseudo ? - $.expr.createPseudo( function( dataName ) { - return function( elem ) { - return !!$.data( elem, dataName ); - }; - } ) : - - // Support: jQuery <1.8 - function( elem, i, match ) { - return !!$.data( elem, match[ 3 ] ); - } -} ); - -/*! - * jQuery UI Disable Selection 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: disableSelection -//>>group: Core -//>>description: Disable selection of text content within the set of matched elements. -//>>docs: http://api.jqueryui.com/disableSelection/ - -// This file is deprecated - - -var disableSelection = $.fn.extend( { - disableSelection: ( function() { - var eventType = "onselectstart" in document.createElement( "div" ) ? - "selectstart" : - "mousedown"; - - return function() { - return this.on( eventType + ".ui-disableSelection", function( event ) { - event.preventDefault(); - } ); - }; - } )(), - - enableSelection: function() { - return this.off( ".ui-disableSelection" ); - } -} ); - - -/*! - * jQuery UI Effects 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Effects Core -//>>group: Effects -// jscs:disable maximumLineLength -//>>description: Extends the internal jQuery effects. Includes morphing and easing. Required by all other effects. -// jscs:enable maximumLineLength -//>>docs: http://api.jqueryui.com/category/effects-core/ -//>>demos: http://jqueryui.com/effect/ - - - -var dataSpace = "ui-effects-", - dataSpaceStyle = "ui-effects-style", - dataSpaceAnimated = "ui-effects-animated", - - // Create a local jQuery because jQuery Color relies on it and the - // global may not exist with AMD and a custom build (#10199) - jQuery = $; - -$.effects = { - effect: {} -}; - -/*! - * jQuery Color Animations v2.1.2 - * https://github.com/jquery/jquery-color - * - * Copyright 2014 jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - * Date: Wed Jan 16 08:47:09 2013 -0600 - */ -( function( jQuery, undefined ) { - - var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor " + - "borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor", - - // Plusequals test for += 100 -= 100 - rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, - - // A set of RE's that can match strings and generate color tuples. - stringParsers = [ { - re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, - parse: function( execResult ) { - return [ - execResult[ 1 ], - execResult[ 2 ], - execResult[ 3 ], - execResult[ 4 ] - ]; - } - }, { - re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, - parse: function( execResult ) { - return [ - execResult[ 1 ] * 2.55, - execResult[ 2 ] * 2.55, - execResult[ 3 ] * 2.55, - execResult[ 4 ] - ]; - } - }, { - - // This regex ignores A-F because it's compared against an already lowercased string - re: /#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/, - parse: function( execResult ) { - return [ - parseInt( execResult[ 1 ], 16 ), - parseInt( execResult[ 2 ], 16 ), - parseInt( execResult[ 3 ], 16 ) - ]; - } - }, { - - // This regex ignores A-F because it's compared against an already lowercased string - re: /#([a-f0-9])([a-f0-9])([a-f0-9])/, - parse: function( execResult ) { - return [ - parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), - parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), - parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) - ]; - } - }, { - re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/, - space: "hsla", - parse: function( execResult ) { - return [ - execResult[ 1 ], - execResult[ 2 ] / 100, - execResult[ 3 ] / 100, - execResult[ 4 ] - ]; - } - } ], - - // JQuery.Color( ) - color = jQuery.Color = function( color, green, blue, alpha ) { - return new jQuery.Color.fn.parse( color, green, blue, alpha ); - }, - spaces = { - rgba: { - props: { - red: { - idx: 0, - type: "byte" - }, - green: { - idx: 1, - type: "byte" - }, - blue: { - idx: 2, - type: "byte" - } - } - }, - - hsla: { - props: { - hue: { - idx: 0, - type: "degrees" - }, - saturation: { - idx: 1, - type: "percent" - }, - lightness: { - idx: 2, - type: "percent" - } - } - } - }, - propTypes = { - "byte": { - floor: true, - max: 255 - }, - "percent": { - max: 1 - }, - "degrees": { - mod: 360, - floor: true - } - }, - support = color.support = {}, - - // Element for support tests - supportElem = jQuery( "

" )[ 0 ], - - // Colors = jQuery.Color.names - colors, - - // Local aliases of functions called often - each = jQuery.each; - -// Determine rgba support immediately -supportElem.style.cssText = "background-color:rgba(1,1,1,.5)"; -support.rgba = supportElem.style.backgroundColor.indexOf( "rgba" ) > -1; - -// Define cache name and alpha properties -// for rgba and hsla spaces -each( spaces, function( spaceName, space ) { - space.cache = "_" + spaceName; - space.props.alpha = { - idx: 3, - type: "percent", - def: 1 - }; -} ); - -function clamp( value, prop, allowEmpty ) { - var type = propTypes[ prop.type ] || {}; - - if ( value == null ) { - return ( allowEmpty || !prop.def ) ? null : prop.def; - } - - // ~~ is an short way of doing floor for positive numbers - value = type.floor ? ~~value : parseFloat( value ); - - // IE will pass in empty strings as value for alpha, - // which will hit this case - if ( isNaN( value ) ) { - return prop.def; - } - - if ( type.mod ) { - - // We add mod before modding to make sure that negatives values - // get converted properly: -10 -> 350 - return ( value + type.mod ) % type.mod; - } - - // For now all property types without mod have min and max - return 0 > value ? 0 : type.max < value ? type.max : value; -} - -function stringParse( string ) { - var inst = color(), - rgba = inst._rgba = []; - - string = string.toLowerCase(); - - each( stringParsers, function( i, parser ) { - var parsed, - match = parser.re.exec( string ), - values = match && parser.parse( match ), - spaceName = parser.space || "rgba"; - - if ( values ) { - parsed = inst[ spaceName ]( values ); - - // If this was an rgba parse the assignment might happen twice - // oh well.... - inst[ spaces[ spaceName ].cache ] = parsed[ spaces[ spaceName ].cache ]; - rgba = inst._rgba = parsed._rgba; - - // Exit each( stringParsers ) here because we matched - return false; - } - } ); - - // Found a stringParser that handled it - if ( rgba.length ) { - - // If this came from a parsed string, force "transparent" when alpha is 0 - // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) - if ( rgba.join() === "0,0,0,0" ) { - jQuery.extend( rgba, colors.transparent ); - } - return inst; - } - - // Named colors - return colors[ string ]; -} - -color.fn = jQuery.extend( color.prototype, { - parse: function( red, green, blue, alpha ) { - if ( red === undefined ) { - this._rgba = [ null, null, null, null ]; - return this; - } - if ( red.jquery || red.nodeType ) { - red = jQuery( red ).css( green ); - green = undefined; - } - - var inst = this, - type = jQuery.type( red ), - rgba = this._rgba = []; - - // More than 1 argument specified - assume ( red, green, blue, alpha ) - if ( green !== undefined ) { - red = [ red, green, blue, alpha ]; - type = "array"; - } - - if ( type === "string" ) { - return this.parse( stringParse( red ) || colors._default ); - } - - if ( type === "array" ) { - each( spaces.rgba.props, function( key, prop ) { - rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); - } ); - return this; - } - - if ( type === "object" ) { - if ( red instanceof color ) { - each( spaces, function( spaceName, space ) { - if ( red[ space.cache ] ) { - inst[ space.cache ] = red[ space.cache ].slice(); - } - } ); - } else { - each( spaces, function( spaceName, space ) { - var cache = space.cache; - each( space.props, function( key, prop ) { - - // If the cache doesn't exist, and we know how to convert - if ( !inst[ cache ] && space.to ) { - - // If the value was null, we don't need to copy it - // if the key was alpha, we don't need to copy it either - if ( key === "alpha" || red[ key ] == null ) { - return; - } - inst[ cache ] = space.to( inst._rgba ); - } - - // This is the only case where we allow nulls for ALL properties. - // call clamp with alwaysAllowEmpty - inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); - } ); - - // Everything defined but alpha? - if ( inst[ cache ] && - jQuery.inArray( null, inst[ cache ].slice( 0, 3 ) ) < 0 ) { - - // Use the default of 1 - inst[ cache ][ 3 ] = 1; - if ( space.from ) { - inst._rgba = space.from( inst[ cache ] ); - } - } - } ); - } - return this; - } - }, - is: function( compare ) { - var is = color( compare ), - same = true, - inst = this; - - each( spaces, function( _, space ) { - var localCache, - isCache = is[ space.cache ]; - if ( isCache ) { - localCache = inst[ space.cache ] || space.to && space.to( inst._rgba ) || []; - each( space.props, function( _, prop ) { - if ( isCache[ prop.idx ] != null ) { - same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); - return same; - } - } ); - } - return same; - } ); - return same; - }, - _space: function() { - var used = [], - inst = this; - each( spaces, function( spaceName, space ) { - if ( inst[ space.cache ] ) { - used.push( spaceName ); - } - } ); - return used.pop(); - }, - transition: function( other, distance ) { - var end = color( other ), - spaceName = end._space(), - space = spaces[ spaceName ], - startColor = this.alpha() === 0 ? color( "transparent" ) : this, - start = startColor[ space.cache ] || space.to( startColor._rgba ), - result = start.slice(); - - end = end[ space.cache ]; - each( space.props, function( key, prop ) { - var index = prop.idx, - startValue = start[ index ], - endValue = end[ index ], - type = propTypes[ prop.type ] || {}; - - // If null, don't override start value - if ( endValue === null ) { - return; - } - - // If null - use end - if ( startValue === null ) { - result[ index ] = endValue; - } else { - if ( type.mod ) { - if ( endValue - startValue > type.mod / 2 ) { - startValue += type.mod; - } else if ( startValue - endValue > type.mod / 2 ) { - startValue -= type.mod; - } - } - result[ index ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); - } - } ); - return this[ spaceName ]( result ); - }, - blend: function( opaque ) { - - // If we are already opaque - return ourself - if ( this._rgba[ 3 ] === 1 ) { - return this; - } - - var rgb = this._rgba.slice(), - a = rgb.pop(), - blend = color( opaque )._rgba; - - return color( jQuery.map( rgb, function( v, i ) { - return ( 1 - a ) * blend[ i ] + a * v; - } ) ); - }, - toRgbaString: function() { - var prefix = "rgba(", - rgba = jQuery.map( this._rgba, function( v, i ) { - return v == null ? ( i > 2 ? 1 : 0 ) : v; - } ); - - if ( rgba[ 3 ] === 1 ) { - rgba.pop(); - prefix = "rgb("; - } - - return prefix + rgba.join() + ")"; - }, - toHslaString: function() { - var prefix = "hsla(", - hsla = jQuery.map( this.hsla(), function( v, i ) { - if ( v == null ) { - v = i > 2 ? 1 : 0; - } - - // Catch 1 and 2 - if ( i && i < 3 ) { - v = Math.round( v * 100 ) + "%"; - } - return v; - } ); - - if ( hsla[ 3 ] === 1 ) { - hsla.pop(); - prefix = "hsl("; - } - return prefix + hsla.join() + ")"; - }, - toHexString: function( includeAlpha ) { - var rgba = this._rgba.slice(), - alpha = rgba.pop(); - - if ( includeAlpha ) { - rgba.push( ~~( alpha * 255 ) ); - } - - return "#" + jQuery.map( rgba, function( v ) { - - // Default to 0 when nulls exist - v = ( v || 0 ).toString( 16 ); - return v.length === 1 ? "0" + v : v; - } ).join( "" ); - }, - toString: function() { - return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); - } -} ); -color.fn.parse.prototype = color.fn; - -// Hsla conversions adapted from: -// https://code.google.com/p/maashaack/source/browse/packages/graphics/trunk/src/graphics/colors/HUE2RGB.as?r=5021 - -function hue2rgb( p, q, h ) { - h = ( h + 1 ) % 1; - if ( h * 6 < 1 ) { - return p + ( q - p ) * h * 6; - } - if ( h * 2 < 1 ) { - return q; - } - if ( h * 3 < 2 ) { - return p + ( q - p ) * ( ( 2 / 3 ) - h ) * 6; - } - return p; -} - -spaces.hsla.to = function( rgba ) { - if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { - return [ null, null, null, rgba[ 3 ] ]; - } - var r = rgba[ 0 ] / 255, - g = rgba[ 1 ] / 255, - b = rgba[ 2 ] / 255, - a = rgba[ 3 ], - max = Math.max( r, g, b ), - min = Math.min( r, g, b ), - diff = max - min, - add = max + min, - l = add * 0.5, - h, s; - - if ( min === max ) { - h = 0; - } else if ( r === max ) { - h = ( 60 * ( g - b ) / diff ) + 360; - } else if ( g === max ) { - h = ( 60 * ( b - r ) / diff ) + 120; - } else { - h = ( 60 * ( r - g ) / diff ) + 240; - } - - // Chroma (diff) == 0 means greyscale which, by definition, saturation = 0% - // otherwise, saturation is based on the ratio of chroma (diff) to lightness (add) - if ( diff === 0 ) { - s = 0; - } else if ( l <= 0.5 ) { - s = diff / add; - } else { - s = diff / ( 2 - add ); - } - return [ Math.round( h ) % 360, s, l, a == null ? 1 : a ]; -}; - -spaces.hsla.from = function( hsla ) { - if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { - return [ null, null, null, hsla[ 3 ] ]; - } - var h = hsla[ 0 ] / 360, - s = hsla[ 1 ], - l = hsla[ 2 ], - a = hsla[ 3 ], - q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, - p = 2 * l - q; - - return [ - Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), - Math.round( hue2rgb( p, q, h ) * 255 ), - Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), - a - ]; -}; - -each( spaces, function( spaceName, space ) { - var props = space.props, - cache = space.cache, - to = space.to, - from = space.from; - - // Makes rgba() and hsla() - color.fn[ spaceName ] = function( value ) { - - // Generate a cache for this space if it doesn't exist - if ( to && !this[ cache ] ) { - this[ cache ] = to( this._rgba ); - } - if ( value === undefined ) { - return this[ cache ].slice(); - } - - var ret, - type = jQuery.type( value ), - arr = ( type === "array" || type === "object" ) ? value : arguments, - local = this[ cache ].slice(); - - each( props, function( key, prop ) { - var val = arr[ type === "object" ? key : prop.idx ]; - if ( val == null ) { - val = local[ prop.idx ]; - } - local[ prop.idx ] = clamp( val, prop ); - } ); - - if ( from ) { - ret = color( from( local ) ); - ret[ cache ] = local; - return ret; - } else { - return color( local ); - } - }; - - // Makes red() green() blue() alpha() hue() saturation() lightness() - each( props, function( key, prop ) { - - // Alpha is included in more than one space - if ( color.fn[ key ] ) { - return; - } - color.fn[ key ] = function( value ) { - var vtype = jQuery.type( value ), - fn = ( key === "alpha" ? ( this._hsla ? "hsla" : "rgba" ) : spaceName ), - local = this[ fn ](), - cur = local[ prop.idx ], - match; - - if ( vtype === "undefined" ) { - return cur; - } - - if ( vtype === "function" ) { - value = value.call( this, cur ); - vtype = jQuery.type( value ); - } - if ( value == null && prop.empty ) { - return this; - } - if ( vtype === "string" ) { - match = rplusequals.exec( value ); - if ( match ) { - value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); - } - } - local[ prop.idx ] = value; - return this[ fn ]( local ); - }; - } ); -} ); - -// Add cssHook and .fx.step function for each named hook. -// accept a space separated string of properties -color.hook = function( hook ) { - var hooks = hook.split( " " ); - each( hooks, function( i, hook ) { - jQuery.cssHooks[ hook ] = { - set: function( elem, value ) { - var parsed, curElem, - backgroundColor = ""; - - if ( value !== "transparent" && ( jQuery.type( value ) !== "string" || - ( parsed = stringParse( value ) ) ) ) { - value = color( parsed || value ); - if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { - curElem = hook === "backgroundColor" ? elem.parentNode : elem; - while ( - ( backgroundColor === "" || backgroundColor === "transparent" ) && - curElem && curElem.style - ) { - try { - backgroundColor = jQuery.css( curElem, "backgroundColor" ); - curElem = curElem.parentNode; - } catch ( e ) { - } - } - - value = value.blend( backgroundColor && backgroundColor !== "transparent" ? - backgroundColor : - "_default" ); - } - - value = value.toRgbaString(); - } - try { - elem.style[ hook ] = value; - } catch ( e ) { - - // Wrapped to prevent IE from throwing errors on "invalid" values like - // 'auto' or 'inherit' - } - } - }; - jQuery.fx.step[ hook ] = function( fx ) { - if ( !fx.colorInit ) { - fx.start = color( fx.elem, hook ); - fx.end = color( fx.end ); - fx.colorInit = true; - } - jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); - }; - } ); - -}; - -color.hook( stepHooks ); - -jQuery.cssHooks.borderColor = { - expand: function( value ) { - var expanded = {}; - - each( [ "Top", "Right", "Bottom", "Left" ], function( i, part ) { - expanded[ "border" + part + "Color" ] = value; - } ); - return expanded; - } -}; - -// Basic color names only. -// Usage of any of the other color names requires adding yourself or including -// jquery.color.svg-names.js. -colors = jQuery.Color.names = { - - // 4.1. Basic color keywords - aqua: "#00ffff", - black: "#000000", - blue: "#0000ff", - fuchsia: "#ff00ff", - gray: "#808080", - green: "#008000", - lime: "#00ff00", - maroon: "#800000", - navy: "#000080", - olive: "#808000", - purple: "#800080", - red: "#ff0000", - silver: "#c0c0c0", - teal: "#008080", - white: "#ffffff", - yellow: "#ffff00", - - // 4.2.3. "transparent" color keyword - transparent: [ null, null, null, 0 ], - - _default: "#ffffff" -}; - -} )( jQuery ); - -/******************************************************************************/ -/****************************** CLASS ANIMATIONS ******************************/ -/******************************************************************************/ -( function() { - -var classAnimationActions = [ "add", "remove", "toggle" ], - shorthandStyles = { - border: 1, - borderBottom: 1, - borderColor: 1, - borderLeft: 1, - borderRight: 1, - borderTop: 1, - borderWidth: 1, - margin: 1, - padding: 1 - }; - -$.each( - [ "borderLeftStyle", "borderRightStyle", "borderBottomStyle", "borderTopStyle" ], - function( _, prop ) { - $.fx.step[ prop ] = function( fx ) { - if ( fx.end !== "none" && !fx.setAttr || fx.pos === 1 && !fx.setAttr ) { - jQuery.style( fx.elem, prop, fx.end ); - fx.setAttr = true; - } - }; - } -); - -function getElementStyles( elem ) { - var key, len, - style = elem.ownerDocument.defaultView ? - elem.ownerDocument.defaultView.getComputedStyle( elem, null ) : - elem.currentStyle, - styles = {}; - - if ( style && style.length && style[ 0 ] && style[ style[ 0 ] ] ) { - len = style.length; - while ( len-- ) { - key = style[ len ]; - if ( typeof style[ key ] === "string" ) { - styles[ $.camelCase( key ) ] = style[ key ]; - } - } - - // Support: Opera, IE <9 - } else { - for ( key in style ) { - if ( typeof style[ key ] === "string" ) { - styles[ key ] = style[ key ]; - } - } - } - - return styles; -} - -function styleDifference( oldStyle, newStyle ) { - var diff = {}, - name, value; - - for ( name in newStyle ) { - value = newStyle[ name ]; - if ( oldStyle[ name ] !== value ) { - if ( !shorthandStyles[ name ] ) { - if ( $.fx.step[ name ] || !isNaN( parseFloat( value ) ) ) { - diff[ name ] = value; - } - } - } - } - - return diff; -} - -// Support: jQuery <1.8 -if ( !$.fn.addBack ) { - $.fn.addBack = function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - }; -} - -$.effects.animateClass = function( value, duration, easing, callback ) { - var o = $.speed( duration, easing, callback ); - - return this.queue( function() { - var animated = $( this ), - baseClass = animated.attr( "class" ) || "", - applyClassChange, - allAnimations = o.children ? animated.find( "*" ).addBack() : animated; - - // Map the animated objects to store the original styles. - allAnimations = allAnimations.map( function() { - var el = $( this ); - return { - el: el, - start: getElementStyles( this ) - }; - } ); - - // Apply class change - applyClassChange = function() { - $.each( classAnimationActions, function( i, action ) { - if ( value[ action ] ) { - animated[ action + "Class" ]( value[ action ] ); - } - } ); - }; - applyClassChange(); - - // Map all animated objects again - calculate new styles and diff - allAnimations = allAnimations.map( function() { - this.end = getElementStyles( this.el[ 0 ] ); - this.diff = styleDifference( this.start, this.end ); - return this; - } ); - - // Apply original class - animated.attr( "class", baseClass ); - - // Map all animated objects again - this time collecting a promise - allAnimations = allAnimations.map( function() { - var styleInfo = this, - dfd = $.Deferred(), - opts = $.extend( {}, o, { - queue: false, - complete: function() { - dfd.resolve( styleInfo ); - } - } ); - - this.el.animate( this.diff, opts ); - return dfd.promise(); - } ); - - // Once all animations have completed: - $.when.apply( $, allAnimations.get() ).done( function() { - - // Set the final class - applyClassChange(); - - // For each animated element, - // clear all css properties that were animated - $.each( arguments, function() { - var el = this.el; - $.each( this.diff, function( key ) { - el.css( key, "" ); - } ); - } ); - - // This is guarnteed to be there if you use jQuery.speed() - // it also handles dequeuing the next anim... - o.complete.call( animated[ 0 ] ); - } ); - } ); -}; - -$.fn.extend( { - addClass: ( function( orig ) { - return function( classNames, speed, easing, callback ) { - return speed ? - $.effects.animateClass.call( this, - { add: classNames }, speed, easing, callback ) : - orig.apply( this, arguments ); - }; - } )( $.fn.addClass ), - - removeClass: ( function( orig ) { - return function( classNames, speed, easing, callback ) { - return arguments.length > 1 ? - $.effects.animateClass.call( this, - { remove: classNames }, speed, easing, callback ) : - orig.apply( this, arguments ); - }; - } )( $.fn.removeClass ), - - toggleClass: ( function( orig ) { - return function( classNames, force, speed, easing, callback ) { - if ( typeof force === "boolean" || force === undefined ) { - if ( !speed ) { - - // Without speed parameter - return orig.apply( this, arguments ); - } else { - return $.effects.animateClass.call( this, - ( force ? { add: classNames } : { remove: classNames } ), - speed, easing, callback ); - } - } else { - - // Without force parameter - return $.effects.animateClass.call( this, - { toggle: classNames }, force, speed, easing ); - } - }; - } )( $.fn.toggleClass ), - - switchClass: function( remove, add, speed, easing, callback ) { - return $.effects.animateClass.call( this, { - add: add, - remove: remove - }, speed, easing, callback ); - } -} ); - -} )(); - -/******************************************************************************/ -/*********************************** EFFECTS **********************************/ -/******************************************************************************/ - -( function() { - -if ( $.expr && $.expr.filters && $.expr.filters.animated ) { - $.expr.filters.animated = ( function( orig ) { - return function( elem ) { - return !!$( elem ).data( dataSpaceAnimated ) || orig( elem ); - }; - } )( $.expr.filters.animated ); -} - -if ( $.uiBackCompat !== false ) { - $.extend( $.effects, { - - // Saves a set of properties in a data storage - save: function( element, set ) { - var i = 0, length = set.length; - for ( ; i < length; i++ ) { - if ( set[ i ] !== null ) { - element.data( dataSpace + set[ i ], element[ 0 ].style[ set[ i ] ] ); - } - } - }, - - // Restores a set of previously saved properties from a data storage - restore: function( element, set ) { - var val, i = 0, length = set.length; - for ( ; i < length; i++ ) { - if ( set[ i ] !== null ) { - val = element.data( dataSpace + set[ i ] ); - element.css( set[ i ], val ); - } - } - }, - - setMode: function( el, mode ) { - if ( mode === "toggle" ) { - mode = el.is( ":hidden" ) ? "show" : "hide"; - } - return mode; - }, - - // Wraps the element around a wrapper that copies position properties - createWrapper: function( element ) { - - // If the element is already wrapped, return it - if ( element.parent().is( ".ui-effects-wrapper" ) ) { - return element.parent(); - } - - // Wrap the element - var props = { - width: element.outerWidth( true ), - height: element.outerHeight( true ), - "float": element.css( "float" ) - }, - wrapper = $( "

" ) - .addClass( "ui-effects-wrapper" ) - .css( { - fontSize: "100%", - background: "transparent", - border: "none", - margin: 0, - padding: 0 - } ), - - // Store the size in case width/height are defined in % - Fixes #5245 - size = { - width: element.width(), - height: element.height() - }, - active = document.activeElement; - - // Support: Firefox - // Firefox incorrectly exposes anonymous content - // https://bugzilla.mozilla.org/show_bug.cgi?id=561664 - try { - active.id; - } catch ( e ) { - active = document.body; - } - - element.wrap( wrapper ); - - // Fixes #7595 - Elements lose focus when wrapped. - if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { - $( active ).trigger( "focus" ); - } - - // Hotfix for jQuery 1.4 since some change in wrap() seems to actually - // lose the reference to the wrapped element - wrapper = element.parent(); - - // Transfer positioning properties to the wrapper - if ( element.css( "position" ) === "static" ) { - wrapper.css( { position: "relative" } ); - element.css( { position: "relative" } ); - } else { - $.extend( props, { - position: element.css( "position" ), - zIndex: element.css( "z-index" ) - } ); - $.each( [ "top", "left", "bottom", "right" ], function( i, pos ) { - props[ pos ] = element.css( pos ); - if ( isNaN( parseInt( props[ pos ], 10 ) ) ) { - props[ pos ] = "auto"; - } - } ); - element.css( { - position: "relative", - top: 0, - left: 0, - right: "auto", - bottom: "auto" - } ); - } - element.css( size ); - - return wrapper.css( props ).show(); - }, - - removeWrapper: function( element ) { - var active = document.activeElement; - - if ( element.parent().is( ".ui-effects-wrapper" ) ) { - element.parent().replaceWith( element ); - - // Fixes #7595 - Elements lose focus when wrapped. - if ( element[ 0 ] === active || $.contains( element[ 0 ], active ) ) { - $( active ).trigger( "focus" ); - } - } - - return element; - } - } ); -} - -$.extend( $.effects, { - version: "1.12.1", - - define: function( name, mode, effect ) { - if ( !effect ) { - effect = mode; - mode = "effect"; - } - - $.effects.effect[ name ] = effect; - $.effects.effect[ name ].mode = mode; - - return effect; - }, - - scaledDimensions: function( element, percent, direction ) { - if ( percent === 0 ) { - return { - height: 0, - width: 0, - outerHeight: 0, - outerWidth: 0 - }; - } - - var x = direction !== "horizontal" ? ( ( percent || 100 ) / 100 ) : 1, - y = direction !== "vertical" ? ( ( percent || 100 ) / 100 ) : 1; - - return { - height: element.height() * y, - width: element.width() * x, - outerHeight: element.outerHeight() * y, - outerWidth: element.outerWidth() * x - }; - - }, - - clipToBox: function( animation ) { - return { - width: animation.clip.right - animation.clip.left, - height: animation.clip.bottom - animation.clip.top, - left: animation.clip.left, - top: animation.clip.top - }; - }, - - // Injects recently queued functions to be first in line (after "inprogress") - unshift: function( element, queueLength, count ) { - var queue = element.queue(); - - if ( queueLength > 1 ) { - queue.splice.apply( queue, - [ 1, 0 ].concat( queue.splice( queueLength, count ) ) ); - } - element.dequeue(); - }, - - saveStyle: function( element ) { - element.data( dataSpaceStyle, element[ 0 ].style.cssText ); - }, - - restoreStyle: function( element ) { - element[ 0 ].style.cssText = element.data( dataSpaceStyle ) || ""; - element.removeData( dataSpaceStyle ); - }, - - mode: function( element, mode ) { - var hidden = element.is( ":hidden" ); - - if ( mode === "toggle" ) { - mode = hidden ? "show" : "hide"; - } - if ( hidden ? mode === "hide" : mode === "show" ) { - mode = "none"; - } - return mode; - }, - - // Translates a [top,left] array into a baseline value - getBaseline: function( origin, original ) { - var y, x; - - switch ( origin[ 0 ] ) { - case "top": - y = 0; - break; - case "middle": - y = 0.5; - break; - case "bottom": - y = 1; - break; - default: - y = origin[ 0 ] / original.height; - } - - switch ( origin[ 1 ] ) { - case "left": - x = 0; - break; - case "center": - x = 0.5; - break; - case "right": - x = 1; - break; - default: - x = origin[ 1 ] / original.width; - } - - return { - x: x, - y: y - }; - }, - - // Creates a placeholder element so that the original element can be made absolute - createPlaceholder: function( element ) { - var placeholder, - cssPosition = element.css( "position" ), - position = element.position(); - - // Lock in margins first to account for form elements, which - // will change margin if you explicitly set height - // see: http://jsfiddle.net/JZSMt/3/ https://bugs.webkit.org/show_bug.cgi?id=107380 - // Support: Safari - element.css( { - marginTop: element.css( "marginTop" ), - marginBottom: element.css( "marginBottom" ), - marginLeft: element.css( "marginLeft" ), - marginRight: element.css( "marginRight" ) - } ) - .outerWidth( element.outerWidth() ) - .outerHeight( element.outerHeight() ); - - if ( /^(static|relative)/.test( cssPosition ) ) { - cssPosition = "absolute"; - - placeholder = $( "<" + element[ 0 ].nodeName + ">" ).insertAfter( element ).css( { - - // Convert inline to inline block to account for inline elements - // that turn to inline block based on content (like img) - display: /^(inline|ruby)/.test( element.css( "display" ) ) ? - "inline-block" : - "block", - visibility: "hidden", - - // Margins need to be set to account for margin collapse - marginTop: element.css( "marginTop" ), - marginBottom: element.css( "marginBottom" ), - marginLeft: element.css( "marginLeft" ), - marginRight: element.css( "marginRight" ), - "float": element.css( "float" ) - } ) - .outerWidth( element.outerWidth() ) - .outerHeight( element.outerHeight() ) - .addClass( "ui-effects-placeholder" ); - - element.data( dataSpace + "placeholder", placeholder ); - } - - element.css( { - position: cssPosition, - left: position.left, - top: position.top - } ); - - return placeholder; - }, - - removePlaceholder: function( element ) { - var dataKey = dataSpace + "placeholder", - placeholder = element.data( dataKey ); - - if ( placeholder ) { - placeholder.remove(); - element.removeData( dataKey ); - } - }, - - // Removes a placeholder if it exists and restores - // properties that were modified during placeholder creation - cleanUp: function( element ) { - $.effects.restoreStyle( element ); - $.effects.removePlaceholder( element ); - }, - - setTransition: function( element, list, factor, value ) { - value = value || {}; - $.each( list, function( i, x ) { - var unit = element.cssUnit( x ); - if ( unit[ 0 ] > 0 ) { - value[ x ] = unit[ 0 ] * factor + unit[ 1 ]; - } - } ); - return value; - } -} ); - -// Return an effect options object for the given parameters: -function _normalizeArguments( effect, options, speed, callback ) { - - // Allow passing all options as the first parameter - if ( $.isPlainObject( effect ) ) { - options = effect; - effect = effect.effect; - } - - // Convert to an object - effect = { effect: effect }; - - // Catch (effect, null, ...) - if ( options == null ) { - options = {}; - } - - // Catch (effect, callback) - if ( $.isFunction( options ) ) { - callback = options; - speed = null; - options = {}; - } - - // Catch (effect, speed, ?) - if ( typeof options === "number" || $.fx.speeds[ options ] ) { - callback = speed; - speed = options; - options = {}; - } - - // Catch (effect, options, callback) - if ( $.isFunction( speed ) ) { - callback = speed; - speed = null; - } - - // Add options to effect - if ( options ) { - $.extend( effect, options ); - } - - speed = speed || options.duration; - effect.duration = $.fx.off ? 0 : - typeof speed === "number" ? speed : - speed in $.fx.speeds ? $.fx.speeds[ speed ] : - $.fx.speeds._default; - - effect.complete = callback || options.complete; - - return effect; -} - -function standardAnimationOption( option ) { - - // Valid standard speeds (nothing, number, named speed) - if ( !option || typeof option === "number" || $.fx.speeds[ option ] ) { - return true; - } - - // Invalid strings - treat as "normal" speed - if ( typeof option === "string" && !$.effects.effect[ option ] ) { - return true; - } - - // Complete callback - if ( $.isFunction( option ) ) { - return true; - } - - // Options hash (but not naming an effect) - if ( typeof option === "object" && !option.effect ) { - return true; - } - - // Didn't match any standard API - return false; -} - -$.fn.extend( { - effect: function( /* effect, options, speed, callback */ ) { - var args = _normalizeArguments.apply( this, arguments ), - effectMethod = $.effects.effect[ args.effect ], - defaultMode = effectMethod.mode, - queue = args.queue, - queueName = queue || "fx", - complete = args.complete, - mode = args.mode, - modes = [], - prefilter = function( next ) { - var el = $( this ), - normalizedMode = $.effects.mode( el, mode ) || defaultMode; - - // Sentinel for duck-punching the :animated psuedo-selector - el.data( dataSpaceAnimated, true ); - - // Save effect mode for later use, - // we can't just call $.effects.mode again later, - // as the .show() below destroys the initial state - modes.push( normalizedMode ); - - // See $.uiBackCompat inside of run() for removal of defaultMode in 1.13 - if ( defaultMode && ( normalizedMode === "show" || - ( normalizedMode === defaultMode && normalizedMode === "hide" ) ) ) { - el.show(); - } - - if ( !defaultMode || normalizedMode !== "none" ) { - $.effects.saveStyle( el ); - } - - if ( $.isFunction( next ) ) { - next(); - } - }; - - if ( $.fx.off || !effectMethod ) { - - // Delegate to the original method (e.g., .show()) if possible - if ( mode ) { - return this[ mode ]( args.duration, complete ); - } else { - return this.each( function() { - if ( complete ) { - complete.call( this ); - } - } ); - } - } - - function run( next ) { - var elem = $( this ); - - function cleanup() { - elem.removeData( dataSpaceAnimated ); - - $.effects.cleanUp( elem ); - - if ( args.mode === "hide" ) { - elem.hide(); - } - - done(); - } - - function done() { - if ( $.isFunction( complete ) ) { - complete.call( elem[ 0 ] ); - } - - if ( $.isFunction( next ) ) { - next(); - } - } - - // Override mode option on a per element basis, - // as toggle can be either show or hide depending on element state - args.mode = modes.shift(); - - if ( $.uiBackCompat !== false && !defaultMode ) { - if ( elem.is( ":hidden" ) ? mode === "hide" : mode === "show" ) { - - // Call the core method to track "olddisplay" properly - elem[ mode ](); - done(); - } else { - effectMethod.call( elem[ 0 ], args, done ); - } - } else { - if ( args.mode === "none" ) { - - // Call the core method to track "olddisplay" properly - elem[ mode ](); - done(); - } else { - effectMethod.call( elem[ 0 ], args, cleanup ); - } - } - } - - // Run prefilter on all elements first to ensure that - // any showing or hiding happens before placeholder creation, - // which ensures that any layout changes are correctly captured. - return queue === false ? - this.each( prefilter ).each( run ) : - this.queue( queueName, prefilter ).queue( queueName, run ); - }, - - show: ( function( orig ) { - return function( option ) { - if ( standardAnimationOption( option ) ) { - return orig.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "show"; - return this.effect.call( this, args ); - } - }; - } )( $.fn.show ), - - hide: ( function( orig ) { - return function( option ) { - if ( standardAnimationOption( option ) ) { - return orig.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "hide"; - return this.effect.call( this, args ); - } - }; - } )( $.fn.hide ), - - toggle: ( function( orig ) { - return function( option ) { - if ( standardAnimationOption( option ) || typeof option === "boolean" ) { - return orig.apply( this, arguments ); - } else { - var args = _normalizeArguments.apply( this, arguments ); - args.mode = "toggle"; - return this.effect.call( this, args ); - } - }; - } )( $.fn.toggle ), - - cssUnit: function( key ) { - var style = this.css( key ), - val = []; - - $.each( [ "em", "px", "%", "pt" ], function( i, unit ) { - if ( style.indexOf( unit ) > 0 ) { - val = [ parseFloat( style ), unit ]; - } - } ); - return val; - }, - - cssClip: function( clipObj ) { - if ( clipObj ) { - return this.css( "clip", "rect(" + clipObj.top + "px " + clipObj.right + "px " + - clipObj.bottom + "px " + clipObj.left + "px)" ); - } - return parseClip( this.css( "clip" ), this ); - }, - - transfer: function( options, done ) { - var element = $( this ), - target = $( options.to ), - targetFixed = target.css( "position" ) === "fixed", - body = $( "body" ), - fixTop = targetFixed ? body.scrollTop() : 0, - fixLeft = targetFixed ? body.scrollLeft() : 0, - endPosition = target.offset(), - animation = { - top: endPosition.top - fixTop, - left: endPosition.left - fixLeft, - height: target.innerHeight(), - width: target.innerWidth() - }, - startPosition = element.offset(), - transfer = $( "
" ) - .appendTo( "body" ) - .addClass( options.className ) - .css( { - top: startPosition.top - fixTop, - left: startPosition.left - fixLeft, - height: element.innerHeight(), - width: element.innerWidth(), - position: targetFixed ? "fixed" : "absolute" - } ) - .animate( animation, options.duration, options.easing, function() { - transfer.remove(); - if ( $.isFunction( done ) ) { - done(); - } - } ); - } -} ); - -function parseClip( str, element ) { - var outerWidth = element.outerWidth(), - outerHeight = element.outerHeight(), - clipRegex = /^rect\((-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto),?\s*(-?\d*\.?\d*px|-?\d+%|auto)\)$/, - values = clipRegex.exec( str ) || [ "", 0, outerWidth, outerHeight, 0 ]; - - return { - top: parseFloat( values[ 1 ] ) || 0, - right: values[ 2 ] === "auto" ? outerWidth : parseFloat( values[ 2 ] ), - bottom: values[ 3 ] === "auto" ? outerHeight : parseFloat( values[ 3 ] ), - left: parseFloat( values[ 4 ] ) || 0 - }; -} - -$.fx.step.clip = function( fx ) { - if ( !fx.clipInit ) { - fx.start = $( fx.elem ).cssClip(); - if ( typeof fx.end === "string" ) { - fx.end = parseClip( fx.end, fx.elem ); - } - fx.clipInit = true; - } - - $( fx.elem ).cssClip( { - top: fx.pos * ( fx.end.top - fx.start.top ) + fx.start.top, - right: fx.pos * ( fx.end.right - fx.start.right ) + fx.start.right, - bottom: fx.pos * ( fx.end.bottom - fx.start.bottom ) + fx.start.bottom, - left: fx.pos * ( fx.end.left - fx.start.left ) + fx.start.left - } ); -}; - -} )(); - -/******************************************************************************/ -/*********************************** EASING ***********************************/ -/******************************************************************************/ - -( function() { - -// Based on easing equations from Robert Penner (http://www.robertpenner.com/easing) - -var baseEasings = {}; - -$.each( [ "Quad", "Cubic", "Quart", "Quint", "Expo" ], function( i, name ) { - baseEasings[ name ] = function( p ) { - return Math.pow( p, i + 2 ); - }; -} ); - -$.extend( baseEasings, { - Sine: function( p ) { - return 1 - Math.cos( p * Math.PI / 2 ); - }, - Circ: function( p ) { - return 1 - Math.sqrt( 1 - p * p ); - }, - Elastic: function( p ) { - return p === 0 || p === 1 ? p : - -Math.pow( 2, 8 * ( p - 1 ) ) * Math.sin( ( ( p - 1 ) * 80 - 7.5 ) * Math.PI / 15 ); - }, - Back: function( p ) { - return p * p * ( 3 * p - 2 ); - }, - Bounce: function( p ) { - var pow2, - bounce = 4; - - while ( p < ( ( pow2 = Math.pow( 2, --bounce ) ) - 1 ) / 11 ) {} - return 1 / Math.pow( 4, 3 - bounce ) - 7.5625 * Math.pow( ( pow2 * 3 - 2 ) / 22 - p, 2 ); - } -} ); - -$.each( baseEasings, function( name, easeIn ) { - $.easing[ "easeIn" + name ] = easeIn; - $.easing[ "easeOut" + name ] = function( p ) { - return 1 - easeIn( 1 - p ); - }; - $.easing[ "easeInOut" + name ] = function( p ) { - return p < 0.5 ? - easeIn( p * 2 ) / 2 : - 1 - easeIn( p * -2 + 2 ) / 2; - }; -} ); - -} )(); - -var effect = $.effects; - - -/*! - * jQuery UI Effects Blind 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Blind Effect -//>>group: Effects -//>>description: Blinds the element. -//>>docs: http://api.jqueryui.com/blind-effect/ -//>>demos: http://jqueryui.com/effect/ - - - -var effectsEffectBlind = $.effects.define( "blind", "hide", function( options, done ) { - var map = { - up: [ "bottom", "top" ], - vertical: [ "bottom", "top" ], - down: [ "top", "bottom" ], - left: [ "right", "left" ], - horizontal: [ "right", "left" ], - right: [ "left", "right" ] - }, - element = $( this ), - direction = options.direction || "up", - start = element.cssClip(), - animate = { clip: $.extend( {}, start ) }, - placeholder = $.effects.createPlaceholder( element ); - - animate.clip[ map[ direction ][ 0 ] ] = animate.clip[ map[ direction ][ 1 ] ]; - - if ( options.mode === "show" ) { - element.cssClip( animate.clip ); - if ( placeholder ) { - placeholder.css( $.effects.clipToBox( animate ) ); - } - - animate.clip = start; - } - - if ( placeholder ) { - placeholder.animate( $.effects.clipToBox( animate ), options.duration, options.easing ); - } - - element.animate( animate, { - queue: false, - duration: options.duration, - easing: options.easing, - complete: done - } ); -} ); - - -/*! - * jQuery UI Effects Bounce 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Bounce Effect -//>>group: Effects -//>>description: Bounces an element horizontally or vertically n times. -//>>docs: http://api.jqueryui.com/bounce-effect/ -//>>demos: http://jqueryui.com/effect/ - - - -var effectsEffectBounce = $.effects.define( "bounce", function( options, done ) { - var upAnim, downAnim, refValue, - element = $( this ), - - // Defaults: - mode = options.mode, - hide = mode === "hide", - show = mode === "show", - direction = options.direction || "up", - distance = options.distance, - times = options.times || 5, - - // Number of internal animations - anims = times * 2 + ( show || hide ? 1 : 0 ), - speed = options.duration / anims, - easing = options.easing, - - // Utility: - ref = ( direction === "up" || direction === "down" ) ? "top" : "left", - motion = ( direction === "up" || direction === "left" ), - i = 0, - - queuelen = element.queue().length; - - $.effects.createPlaceholder( element ); - - refValue = element.css( ref ); - - // Default distance for the BIGGEST bounce is the outer Distance / 3 - if ( !distance ) { - distance = element[ ref === "top" ? "outerHeight" : "outerWidth" ]() / 3; - } - - if ( show ) { - downAnim = { opacity: 1 }; - downAnim[ ref ] = refValue; - - // If we are showing, force opacity 0 and set the initial position - // then do the "first" animation - element - .css( "opacity", 0 ) - .css( ref, motion ? -distance * 2 : distance * 2 ) - .animate( downAnim, speed, easing ); - } - - // Start at the smallest distance if we are hiding - if ( hide ) { - distance = distance / Math.pow( 2, times - 1 ); - } - - downAnim = {}; - downAnim[ ref ] = refValue; - - // Bounces up/down/left/right then back to 0 -- times * 2 animations happen here - for ( ; i < times; i++ ) { - upAnim = {}; - upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; - - element - .animate( upAnim, speed, easing ) - .animate( downAnim, speed, easing ); - - distance = hide ? distance * 2 : distance / 2; - } - - // Last Bounce when Hiding - if ( hide ) { - upAnim = { opacity: 0 }; - upAnim[ ref ] = ( motion ? "-=" : "+=" ) + distance; - - element.animate( upAnim, speed, easing ); - } - - element.queue( done ); - - $.effects.unshift( element, queuelen, anims + 1 ); -} ); - - -/*! - * jQuery UI Effects Clip 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Clip Effect -//>>group: Effects -//>>description: Clips the element on and off like an old TV. -//>>docs: http://api.jqueryui.com/clip-effect/ -//>>demos: http://jqueryui.com/effect/ - - - -var effectsEffectClip = $.effects.define( "clip", "hide", function( options, done ) { - var start, - animate = {}, - element = $( this ), - direction = options.direction || "vertical", - both = direction === "both", - horizontal = both || direction === "horizontal", - vertical = both || direction === "vertical"; - - start = element.cssClip(); - animate.clip = { - top: vertical ? ( start.bottom - start.top ) / 2 : start.top, - right: horizontal ? ( start.right - start.left ) / 2 : start.right, - bottom: vertical ? ( start.bottom - start.top ) / 2 : start.bottom, - left: horizontal ? ( start.right - start.left ) / 2 : start.left - }; - - $.effects.createPlaceholder( element ); - - if ( options.mode === "show" ) { - element.cssClip( animate.clip ); - animate.clip = start; - } - - element.animate( animate, { - queue: false, - duration: options.duration, - easing: options.easing, - complete: done - } ); - -} ); - - -/*! - * jQuery UI Effects Drop 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Drop Effect -//>>group: Effects -//>>description: Moves an element in one direction and hides it at the same time. -//>>docs: http://api.jqueryui.com/drop-effect/ -//>>demos: http://jqueryui.com/effect/ - - - -var effectsEffectDrop = $.effects.define( "drop", "hide", function( options, done ) { - - var distance, - element = $( this ), - mode = options.mode, - show = mode === "show", - direction = options.direction || "left", - ref = ( direction === "up" || direction === "down" ) ? "top" : "left", - motion = ( direction === "up" || direction === "left" ) ? "-=" : "+=", - oppositeMotion = ( motion === "+=" ) ? "-=" : "+=", - animation = { - opacity: 0 - }; - - $.effects.createPlaceholder( element ); - - distance = options.distance || - element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ) / 2; - - animation[ ref ] = motion + distance; - - if ( show ) { - element.css( animation ); - - animation[ ref ] = oppositeMotion + distance; - animation.opacity = 1; - } - - // Animate - element.animate( animation, { - queue: false, - duration: options.duration, - easing: options.easing, - complete: done - } ); -} ); - - -/*! - * jQuery UI Effects Explode 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Explode Effect -//>>group: Effects -// jscs:disable maximumLineLength -//>>description: Explodes an element in all directions into n pieces. Implodes an element to its original wholeness. -// jscs:enable maximumLineLength -//>>docs: http://api.jqueryui.com/explode-effect/ -//>>demos: http://jqueryui.com/effect/ - - - -var effectsEffectExplode = $.effects.define( "explode", "hide", function( options, done ) { - - var i, j, left, top, mx, my, - rows = options.pieces ? Math.round( Math.sqrt( options.pieces ) ) : 3, - cells = rows, - element = $( this ), - mode = options.mode, - show = mode === "show", - - // Show and then visibility:hidden the element before calculating offset - offset = element.show().css( "visibility", "hidden" ).offset(), - - // Width and height of a piece - width = Math.ceil( element.outerWidth() / cells ), - height = Math.ceil( element.outerHeight() / rows ), - pieces = []; - - // Children animate complete: - function childComplete() { - pieces.push( this ); - if ( pieces.length === rows * cells ) { - animComplete(); - } - } - - // Clone the element for each row and cell. - for ( i = 0; i < rows; i++ ) { // ===> - top = offset.top + i * height; - my = i - ( rows - 1 ) / 2; - - for ( j = 0; j < cells; j++ ) { // ||| - left = offset.left + j * width; - mx = j - ( cells - 1 ) / 2; - - // Create a clone of the now hidden main element that will be absolute positioned - // within a wrapper div off the -left and -top equal to size of our pieces - element - .clone() - .appendTo( "body" ) - .wrap( "
" ) - .css( { - position: "absolute", - visibility: "visible", - left: -j * width, - top: -i * height - } ) - - // Select the wrapper - make it overflow: hidden and absolute positioned based on - // where the original was located +left and +top equal to the size of pieces - .parent() - .addClass( "ui-effects-explode" ) - .css( { - position: "absolute", - overflow: "hidden", - width: width, - height: height, - left: left + ( show ? mx * width : 0 ), - top: top + ( show ? my * height : 0 ), - opacity: show ? 0 : 1 - } ) - .animate( { - left: left + ( show ? 0 : mx * width ), - top: top + ( show ? 0 : my * height ), - opacity: show ? 1 : 0 - }, options.duration || 500, options.easing, childComplete ); - } - } - - function animComplete() { - element.css( { - visibility: "visible" - } ); - $( pieces ).remove(); - done(); - } -} ); - - -/*! - * jQuery UI Effects Fade 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Fade Effect -//>>group: Effects -//>>description: Fades the element. -//>>docs: http://api.jqueryui.com/fade-effect/ -//>>demos: http://jqueryui.com/effect/ - - - -var effectsEffectFade = $.effects.define( "fade", "toggle", function( options, done ) { - var show = options.mode === "show"; - - $( this ) - .css( "opacity", show ? 0 : 1 ) - .animate( { - opacity: show ? 1 : 0 - }, { - queue: false, - duration: options.duration, - easing: options.easing, - complete: done - } ); -} ); - - -/*! - * jQuery UI Effects Fold 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Fold Effect -//>>group: Effects -//>>description: Folds an element first horizontally and then vertically. -//>>docs: http://api.jqueryui.com/fold-effect/ -//>>demos: http://jqueryui.com/effect/ - - - -var effectsEffectFold = $.effects.define( "fold", "hide", function( options, done ) { - - // Create element - var element = $( this ), - mode = options.mode, - show = mode === "show", - hide = mode === "hide", - size = options.size || 15, - percent = /([0-9]+)%/.exec( size ), - horizFirst = !!options.horizFirst, - ref = horizFirst ? [ "right", "bottom" ] : [ "bottom", "right" ], - duration = options.duration / 2, - - placeholder = $.effects.createPlaceholder( element ), - - start = element.cssClip(), - animation1 = { clip: $.extend( {}, start ) }, - animation2 = { clip: $.extend( {}, start ) }, - - distance = [ start[ ref[ 0 ] ], start[ ref[ 1 ] ] ], - - queuelen = element.queue().length; - - if ( percent ) { - size = parseInt( percent[ 1 ], 10 ) / 100 * distance[ hide ? 0 : 1 ]; - } - animation1.clip[ ref[ 0 ] ] = size; - animation2.clip[ ref[ 0 ] ] = size; - animation2.clip[ ref[ 1 ] ] = 0; - - if ( show ) { - element.cssClip( animation2.clip ); - if ( placeholder ) { - placeholder.css( $.effects.clipToBox( animation2 ) ); - } - - animation2.clip = start; - } - - // Animate - element - .queue( function( next ) { - if ( placeholder ) { - placeholder - .animate( $.effects.clipToBox( animation1 ), duration, options.easing ) - .animate( $.effects.clipToBox( animation2 ), duration, options.easing ); - } - - next(); - } ) - .animate( animation1, duration, options.easing ) - .animate( animation2, duration, options.easing ) - .queue( done ); - - $.effects.unshift( element, queuelen, 4 ); -} ); - - -/*! - * jQuery UI Effects Highlight 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Highlight Effect -//>>group: Effects -//>>description: Highlights the background of an element in a defined color for a custom duration. -//>>docs: http://api.jqueryui.com/highlight-effect/ -//>>demos: http://jqueryui.com/effect/ - - - -var effectsEffectHighlight = $.effects.define( "highlight", "show", function( options, done ) { - var element = $( this ), - animation = { - backgroundColor: element.css( "backgroundColor" ) - }; - - if ( options.mode === "hide" ) { - animation.opacity = 0; - } - - $.effects.saveStyle( element ); - - element - .css( { - backgroundImage: "none", - backgroundColor: options.color || "#ffff99" - } ) - .animate( animation, { - queue: false, - duration: options.duration, - easing: options.easing, - complete: done - } ); -} ); - - -/*! - * jQuery UI Effects Size 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Size Effect -//>>group: Effects -//>>description: Resize an element to a specified width and height. -//>>docs: http://api.jqueryui.com/size-effect/ -//>>demos: http://jqueryui.com/effect/ - - - -var effectsEffectSize = $.effects.define( "size", function( options, done ) { - - // Create element - var baseline, factor, temp, - element = $( this ), - - // Copy for children - cProps = [ "fontSize" ], - vProps = [ "borderTopWidth", "borderBottomWidth", "paddingTop", "paddingBottom" ], - hProps = [ "borderLeftWidth", "borderRightWidth", "paddingLeft", "paddingRight" ], - - // Set options - mode = options.mode, - restore = mode !== "effect", - scale = options.scale || "both", - origin = options.origin || [ "middle", "center" ], - position = element.css( "position" ), - pos = element.position(), - original = $.effects.scaledDimensions( element ), - from = options.from || original, - to = options.to || $.effects.scaledDimensions( element, 0 ); - - $.effects.createPlaceholder( element ); - - if ( mode === "show" ) { - temp = from; - from = to; - to = temp; - } - - // Set scaling factor - factor = { - from: { - y: from.height / original.height, - x: from.width / original.width - }, - to: { - y: to.height / original.height, - x: to.width / original.width - } - }; - - // Scale the css box - if ( scale === "box" || scale === "both" ) { - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - from = $.effects.setTransition( element, vProps, factor.from.y, from ); - to = $.effects.setTransition( element, vProps, factor.to.y, to ); - } - - // Horizontal props scaling - if ( factor.from.x !== factor.to.x ) { - from = $.effects.setTransition( element, hProps, factor.from.x, from ); - to = $.effects.setTransition( element, hProps, factor.to.x, to ); - } - } - - // Scale the content - if ( scale === "content" || scale === "both" ) { - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - from = $.effects.setTransition( element, cProps, factor.from.y, from ); - to = $.effects.setTransition( element, cProps, factor.to.y, to ); - } - } - - // Adjust the position properties based on the provided origin points - if ( origin ) { - baseline = $.effects.getBaseline( origin, original ); - from.top = ( original.outerHeight - from.outerHeight ) * baseline.y + pos.top; - from.left = ( original.outerWidth - from.outerWidth ) * baseline.x + pos.left; - to.top = ( original.outerHeight - to.outerHeight ) * baseline.y + pos.top; - to.left = ( original.outerWidth - to.outerWidth ) * baseline.x + pos.left; - } - element.css( from ); - - // Animate the children if desired - if ( scale === "content" || scale === "both" ) { - - vProps = vProps.concat( [ "marginTop", "marginBottom" ] ).concat( cProps ); - hProps = hProps.concat( [ "marginLeft", "marginRight" ] ); - - // Only animate children with width attributes specified - // TODO: is this right? should we include anything with css width specified as well - element.find( "*[width]" ).each( function() { - var child = $( this ), - childOriginal = $.effects.scaledDimensions( child ), - childFrom = { - height: childOriginal.height * factor.from.y, - width: childOriginal.width * factor.from.x, - outerHeight: childOriginal.outerHeight * factor.from.y, - outerWidth: childOriginal.outerWidth * factor.from.x - }, - childTo = { - height: childOriginal.height * factor.to.y, - width: childOriginal.width * factor.to.x, - outerHeight: childOriginal.height * factor.to.y, - outerWidth: childOriginal.width * factor.to.x - }; - - // Vertical props scaling - if ( factor.from.y !== factor.to.y ) { - childFrom = $.effects.setTransition( child, vProps, factor.from.y, childFrom ); - childTo = $.effects.setTransition( child, vProps, factor.to.y, childTo ); - } - - // Horizontal props scaling - if ( factor.from.x !== factor.to.x ) { - childFrom = $.effects.setTransition( child, hProps, factor.from.x, childFrom ); - childTo = $.effects.setTransition( child, hProps, factor.to.x, childTo ); - } - - if ( restore ) { - $.effects.saveStyle( child ); - } - - // Animate children - child.css( childFrom ); - child.animate( childTo, options.duration, options.easing, function() { - - // Restore children - if ( restore ) { - $.effects.restoreStyle( child ); - } - } ); - } ); - } - - // Animate - element.animate( to, { - queue: false, - duration: options.duration, - easing: options.easing, - complete: function() { - - var offset = element.offset(); - - if ( to.opacity === 0 ) { - element.css( "opacity", from.opacity ); - } - - if ( !restore ) { - element - .css( "position", position === "static" ? "relative" : position ) - .offset( offset ); - - // Need to save style here so that automatic style restoration - // doesn't restore to the original styles from before the animation. - $.effects.saveStyle( element ); - } - - done(); - } - } ); - -} ); - - -/*! - * jQuery UI Effects Scale 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Scale Effect -//>>group: Effects -//>>description: Grows or shrinks an element and its content. -//>>docs: http://api.jqueryui.com/scale-effect/ -//>>demos: http://jqueryui.com/effect/ - - - -var effectsEffectScale = $.effects.define( "scale", function( options, done ) { - - // Create element - var el = $( this ), - mode = options.mode, - percent = parseInt( options.percent, 10 ) || - ( parseInt( options.percent, 10 ) === 0 ? 0 : ( mode !== "effect" ? 0 : 100 ) ), - - newOptions = $.extend( true, { - from: $.effects.scaledDimensions( el ), - to: $.effects.scaledDimensions( el, percent, options.direction || "both" ), - origin: options.origin || [ "middle", "center" ] - }, options ); - - // Fade option to support puff - if ( options.fade ) { - newOptions.from.opacity = 1; - newOptions.to.opacity = 0; - } - - $.effects.effect.size.call( this, newOptions, done ); -} ); - - -/*! - * jQuery UI Effects Puff 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Puff Effect -//>>group: Effects -//>>description: Creates a puff effect by scaling the element up and hiding it at the same time. -//>>docs: http://api.jqueryui.com/puff-effect/ -//>>demos: http://jqueryui.com/effect/ - - - -var effectsEffectPuff = $.effects.define( "puff", "hide", function( options, done ) { - var newOptions = $.extend( true, {}, options, { - fade: true, - percent: parseInt( options.percent, 10 ) || 150 - } ); - - $.effects.effect.scale.call( this, newOptions, done ); -} ); - - -/*! - * jQuery UI Effects Pulsate 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Pulsate Effect -//>>group: Effects -//>>description: Pulsates an element n times by changing the opacity to zero and back. -//>>docs: http://api.jqueryui.com/pulsate-effect/ -//>>demos: http://jqueryui.com/effect/ - - - -var effectsEffectPulsate = $.effects.define( "pulsate", "show", function( options, done ) { - var element = $( this ), - mode = options.mode, - show = mode === "show", - hide = mode === "hide", - showhide = show || hide, - - // Showing or hiding leaves off the "last" animation - anims = ( ( options.times || 5 ) * 2 ) + ( showhide ? 1 : 0 ), - duration = options.duration / anims, - animateTo = 0, - i = 1, - queuelen = element.queue().length; - - if ( show || !element.is( ":visible" ) ) { - element.css( "opacity", 0 ).show(); - animateTo = 1; - } - - // Anims - 1 opacity "toggles" - for ( ; i < anims; i++ ) { - element.animate( { opacity: animateTo }, duration, options.easing ); - animateTo = 1 - animateTo; - } - - element.animate( { opacity: animateTo }, duration, options.easing ); - - element.queue( done ); - - $.effects.unshift( element, queuelen, anims + 1 ); -} ); - - -/*! - * jQuery UI Effects Shake 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Shake Effect -//>>group: Effects -//>>description: Shakes an element horizontally or vertically n times. -//>>docs: http://api.jqueryui.com/shake-effect/ -//>>demos: http://jqueryui.com/effect/ - - - -var effectsEffectShake = $.effects.define( "shake", function( options, done ) { - - var i = 1, - element = $( this ), - direction = options.direction || "left", - distance = options.distance || 20, - times = options.times || 3, - anims = times * 2 + 1, - speed = Math.round( options.duration / anims ), - ref = ( direction === "up" || direction === "down" ) ? "top" : "left", - positiveMotion = ( direction === "up" || direction === "left" ), - animation = {}, - animation1 = {}, - animation2 = {}, - - queuelen = element.queue().length; - - $.effects.createPlaceholder( element ); - - // Animation - animation[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance; - animation1[ ref ] = ( positiveMotion ? "+=" : "-=" ) + distance * 2; - animation2[ ref ] = ( positiveMotion ? "-=" : "+=" ) + distance * 2; - - // Animate - element.animate( animation, speed, options.easing ); - - // Shakes - for ( ; i < times; i++ ) { - element - .animate( animation1, speed, options.easing ) - .animate( animation2, speed, options.easing ); - } - - element - .animate( animation1, speed, options.easing ) - .animate( animation, speed / 2, options.easing ) - .queue( done ); - - $.effects.unshift( element, queuelen, anims + 1 ); -} ); - - -/*! - * jQuery UI Effects Slide 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Slide Effect -//>>group: Effects -//>>description: Slides an element in and out of the viewport. -//>>docs: http://api.jqueryui.com/slide-effect/ -//>>demos: http://jqueryui.com/effect/ - - - -var effectsEffectSlide = $.effects.define( "slide", "show", function( options, done ) { - var startClip, startRef, - element = $( this ), - map = { - up: [ "bottom", "top" ], - down: [ "top", "bottom" ], - left: [ "right", "left" ], - right: [ "left", "right" ] - }, - mode = options.mode, - direction = options.direction || "left", - ref = ( direction === "up" || direction === "down" ) ? "top" : "left", - positiveMotion = ( direction === "up" || direction === "left" ), - distance = options.distance || - element[ ref === "top" ? "outerHeight" : "outerWidth" ]( true ), - animation = {}; - - $.effects.createPlaceholder( element ); - - startClip = element.cssClip(); - startRef = element.position()[ ref ]; - - // Define hide animation - animation[ ref ] = ( positiveMotion ? -1 : 1 ) * distance + startRef; - animation.clip = element.cssClip(); - animation.clip[ map[ direction ][ 1 ] ] = animation.clip[ map[ direction ][ 0 ] ]; - - // Reverse the animation if we're showing - if ( mode === "show" ) { - element.cssClip( animation.clip ); - element.css( ref, animation[ ref ] ); - animation.clip = startClip; - animation[ ref ] = startRef; - } - - // Actually animate - element.animate( animation, { - queue: false, - duration: options.duration, - easing: options.easing, - complete: done - } ); -} ); - - -/*! - * jQuery UI Effects Transfer 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Transfer Effect -//>>group: Effects -//>>description: Displays a transfer effect from one element to another. -//>>docs: http://api.jqueryui.com/transfer-effect/ -//>>demos: http://jqueryui.com/effect/ - - - -var effect; -if ( $.uiBackCompat !== false ) { - effect = $.effects.define( "transfer", function( options, done ) { - $( this ).transfer( options, done ); - } ); -} -var effectsEffectTransfer = effect; - - -/*! - * jQuery UI Focusable 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: :focusable Selector -//>>group: Core -//>>description: Selects elements which can be focused. -//>>docs: http://api.jqueryui.com/focusable-selector/ - - - -// Selectors -$.ui.focusable = function( element, hasTabindex ) { - var map, mapName, img, focusableIfVisible, fieldset, - nodeName = element.nodeName.toLowerCase(); - - if ( "area" === nodeName ) { - map = element.parentNode; - mapName = map.name; - if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) { - return false; - } - img = $( "img[usemap='#" + mapName + "']" ); - return img.length > 0 && img.is( ":visible" ); - } - - if ( /^(input|select|textarea|button|object)$/.test( nodeName ) ) { - focusableIfVisible = !element.disabled; - - if ( focusableIfVisible ) { - - // Form controls within a disabled fieldset are disabled. - // However, controls within the fieldset's legend do not get disabled. - // Since controls generally aren't placed inside legends, we skip - // this portion of the check. - fieldset = $( element ).closest( "fieldset" )[ 0 ]; - if ( fieldset ) { - focusableIfVisible = !fieldset.disabled; - } - } - } else if ( "a" === nodeName ) { - focusableIfVisible = element.href || hasTabindex; - } else { - focusableIfVisible = hasTabindex; - } - - return focusableIfVisible && $( element ).is( ":visible" ) && visible( $( element ) ); -}; - -// Support: IE 8 only -// IE 8 doesn't resolve inherit to visible/hidden for computed values -function visible( element ) { - var visibility = element.css( "visibility" ); - while ( visibility === "inherit" ) { - element = element.parent(); - visibility = element.css( "visibility" ); - } - return visibility !== "hidden"; -} - -$.extend( $.expr[ ":" ], { - focusable: function( element ) { - return $.ui.focusable( element, $.attr( element, "tabindex" ) != null ); - } -} ); - -var focusable = $.ui.focusable; - - - - -// Support: IE8 Only -// IE8 does not support the form attribute and when it is supplied. It overwrites the form prop -// with a string, so we need to find the proper form. -var form = $.fn.form = function() { - return typeof this[ 0 ].form === "string" ? this.closest( "form" ) : $( this[ 0 ].form ); -}; - - -/*! - * jQuery UI Form Reset Mixin 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Form Reset Mixin -//>>group: Core -//>>description: Refresh input widgets when their form is reset -//>>docs: http://api.jqueryui.com/form-reset-mixin/ - - - -var formResetMixin = $.ui.formResetMixin = { - _formResetHandler: function() { - var form = $( this ); - - // Wait for the form reset to actually happen before refreshing - setTimeout( function() { - var instances = form.data( "ui-form-reset-instances" ); - $.each( instances, function() { - this.refresh(); - } ); - } ); - }, - - _bindFormResetHandler: function() { - this.form = this.element.form(); - if ( !this.form.length ) { - return; - } - - var instances = this.form.data( "ui-form-reset-instances" ) || []; - if ( !instances.length ) { - - // We don't use _on() here because we use a single event handler per form - this.form.on( "reset.ui-form-reset", this._formResetHandler ); - } - instances.push( this ); - this.form.data( "ui-form-reset-instances", instances ); - }, - - _unbindFormResetHandler: function() { - if ( !this.form.length ) { - return; - } - - var instances = this.form.data( "ui-form-reset-instances" ); - instances.splice( $.inArray( this, instances ), 1 ); - if ( instances.length ) { - this.form.data( "ui-form-reset-instances", instances ); - } else { - this.form - .removeData( "ui-form-reset-instances" ) - .off( "reset.ui-form-reset" ); - } - } -}; - - -/*! - * jQuery UI Support for jQuery core 1.7.x 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - * - */ - -//>>label: jQuery 1.7 Support -//>>group: Core -//>>description: Support version 1.7.x of jQuery core - - - -// Support: jQuery 1.7 only -// Not a great way to check versions, but since we only support 1.7+ and only -// need to detect <1.8, this is a simple check that should suffice. Checking -// for "1.7." would be a bit safer, but the version string is 1.7, not 1.7.0 -// and we'll never reach 1.70.0 (if we do, we certainly won't be supporting -// 1.7 anymore). See #11197 for why we're not using feature detection. -if ( $.fn.jquery.substring( 0, 3 ) === "1.7" ) { - - // Setters for .innerWidth(), .innerHeight(), .outerWidth(), .outerHeight() - // Unlike jQuery Core 1.8+, these only support numeric values to set the - // dimensions in pixels - $.each( [ "Width", "Height" ], function( i, name ) { - var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ], - type = name.toLowerCase(), - orig = { - innerWidth: $.fn.innerWidth, - innerHeight: $.fn.innerHeight, - outerWidth: $.fn.outerWidth, - outerHeight: $.fn.outerHeight - }; - - function reduce( elem, size, border, margin ) { - $.each( side, function() { - size -= parseFloat( $.css( elem, "padding" + this ) ) || 0; - if ( border ) { - size -= parseFloat( $.css( elem, "border" + this + "Width" ) ) || 0; - } - if ( margin ) { - size -= parseFloat( $.css( elem, "margin" + this ) ) || 0; - } - } ); - return size; - } - - $.fn[ "inner" + name ] = function( size ) { - if ( size === undefined ) { - return orig[ "inner" + name ].call( this ); - } - - return this.each( function() { - $( this ).css( type, reduce( this, size ) + "px" ); - } ); - }; - - $.fn[ "outer" + name ] = function( size, margin ) { - if ( typeof size !== "number" ) { - return orig[ "outer" + name ].call( this, size ); - } - - return this.each( function() { - $( this ).css( type, reduce( this, size, true, margin ) + "px" ); - } ); - }; - } ); - - $.fn.addBack = function( selector ) { - return this.add( selector == null ? - this.prevObject : this.prevObject.filter( selector ) - ); - }; -} - -; -/*! - * jQuery UI Keycode 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Keycode -//>>group: Core -//>>description: Provide keycodes as keynames -//>>docs: http://api.jqueryui.com/jQuery.ui.keyCode/ - - -var keycode = $.ui.keyCode = { - BACKSPACE: 8, - COMMA: 188, - DELETE: 46, - DOWN: 40, - END: 35, - ENTER: 13, - ESCAPE: 27, - HOME: 36, - LEFT: 37, - PAGE_DOWN: 34, - PAGE_UP: 33, - PERIOD: 190, - RIGHT: 39, - SPACE: 32, - TAB: 9, - UP: 38 -}; - - - - -// Internal use only -var escapeSelector = $.ui.escapeSelector = ( function() { - var selectorEscape = /([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g; - return function( selector ) { - return selector.replace( selectorEscape, "\\$1" ); - }; -} )(); - - -/*! - * jQuery UI Labels 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: labels -//>>group: Core -//>>description: Find all the labels associated with a given input -//>>docs: http://api.jqueryui.com/labels/ - - - -var labels = $.fn.labels = function() { - var ancestor, selector, id, labels, ancestors; - - // Check control.labels first - if ( this[ 0 ].labels && this[ 0 ].labels.length ) { - return this.pushStack( this[ 0 ].labels ); - } - - // Support: IE <= 11, FF <= 37, Android <= 2.3 only - // Above browsers do not support control.labels. Everything below is to support them - // as well as document fragments. control.labels does not work on document fragments - labels = this.eq( 0 ).parents( "label" ); - - // Look for the label based on the id - id = this.attr( "id" ); - if ( id ) { - - // We don't search against the document in case the element - // is disconnected from the DOM - ancestor = this.eq( 0 ).parents().last(); - - // Get a full set of top level ancestors - ancestors = ancestor.add( ancestor.length ? ancestor.siblings() : this.siblings() ); - - // Create a selector for the label based on the id - selector = "label[for='" + $.ui.escapeSelector( id ) + "']"; - - labels = labels.add( ancestors.find( selector ).addBack( selector ) ); - - } - - // Return whatever we have found for labels - return this.pushStack( labels ); -}; - - -/*! - * jQuery UI Scroll Parent 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: scrollParent -//>>group: Core -//>>description: Get the closest ancestor element that is scrollable. -//>>docs: http://api.jqueryui.com/scrollParent/ - - - -var scrollParent = $.fn.scrollParent = function( includeHidden ) { - var position = this.css( "position" ), - excludeStaticParent = position === "absolute", - overflowRegex = includeHidden ? /(auto|scroll|hidden)/ : /(auto|scroll)/, - scrollParent = this.parents().filter( function() { - var parent = $( this ); - if ( excludeStaticParent && parent.css( "position" ) === "static" ) { - return false; - } - return overflowRegex.test( parent.css( "overflow" ) + parent.css( "overflow-y" ) + - parent.css( "overflow-x" ) ); - } ).eq( 0 ); - - return position === "fixed" || !scrollParent.length ? - $( this[ 0 ].ownerDocument || document ) : - scrollParent; -}; - - -/*! - * jQuery UI Tabbable 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: :tabbable Selector -//>>group: Core -//>>description: Selects elements which can be tabbed to. -//>>docs: http://api.jqueryui.com/tabbable-selector/ - - - -var tabbable = $.extend( $.expr[ ":" ], { - tabbable: function( element ) { - var tabIndex = $.attr( element, "tabindex" ), - hasTabindex = tabIndex != null; - return ( !hasTabindex || tabIndex >= 0 ) && $.ui.focusable( element, hasTabindex ); - } -} ); - - -/*! - * jQuery UI Unique ID 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: uniqueId -//>>group: Core -//>>description: Functions to generate and remove uniqueId's -//>>docs: http://api.jqueryui.com/uniqueId/ - - - -var uniqueId = $.fn.extend( { - uniqueId: ( function() { - var uuid = 0; - - return function() { - return this.each( function() { - if ( !this.id ) { - this.id = "ui-id-" + ( ++uuid ); - } - } ); - }; - } )(), - - removeUniqueId: function() { - return this.each( function() { - if ( /^ui-id-\d+$/.test( this.id ) ) { - $( this ).removeAttr( "id" ); - } - } ); - } -} ); - - -/*! - * jQuery UI Accordion 1.12.1 - * http://jqueryui.com - * - * Copyright jQuery Foundation and other contributors - * Released under the MIT license. - * http://jquery.org/license - */ - -//>>label: Accordion -//>>group: Widgets -// jscs:disable maximumLineLength -//>>description: Displays collapsible content panels for presenting information in a limited amount of space. -// jscs:enable maximumLineLength -//>>docs: http://api.jqueryui.com/accordion/ -//>>demos: http://jqueryui.com/accordion/ -//>>css.structure: ../../themes/base/core.css -//>>css.structure: ../../themes/base/accordion.css -//>>css.theme: ../../themes/base/theme.css - - - -var widgetsAccordion = $.widget( "ui.accordion", { - version: "1.12.1", - options: { - active: 0, - animate: {}, - classes: { - "ui-accordion-header": "ui-corner-top", - "ui-accordion-header-collapsed": "ui-corner-all", - "ui-accordion-content": "ui-corner-bottom" - }, - collapsible: false, - event: "click", - header: "> li > :first-child, > :not(li):even", - heightStyle: "auto", - icons: { - activeHeader: "ui-icon-triangle-1-s", - header: "ui-icon-triangle-1-e" - }, - - // Callbacks - activate: null, - beforeActivate: null - }, - - hideProps: { - borderTopWidth: "hide", - borderBottomWidth: "hide", - paddingTop: "hide", - paddingBottom: "hide", - height: "hide" - }, - - showProps: { - borderTopWidth: "show", - borderBottomWidth: "show", - paddingTop: "show", - paddingBottom: "show", - height: "show" - }, - - _create: function() { - var options = this.options; - - this.prevShow = this.prevHide = $(); - this._addClass( "ui-accordion", "ui-widget ui-helper-reset" ); - this.element.attr( "role", "tablist" ); - - // Don't allow collapsible: false and active: false / null - if ( !options.collapsible && ( options.active === false || options.active == null ) ) { - options.active = 0; - } - - this._processPanels(); - - // handle negative values - if ( options.active < 0 ) { - options.active += this.headers.length; - } - this._refresh(); - }, - - _getCreateEventData: function() { - return { - header: this.active, - panel: !this.active.length ? $() : this.active.next() - }; - }, - - _createIcons: function() { - var icon, children, - icons = this.options.icons; - - if ( icons ) { - icon = $( "" ); - this._addClass( icon, "ui-accordion-header-icon", "ui-icon " + icons.header ); - icon.prependTo( this.headers ); - children = this.active.children( ".ui-accordion-header-icon" ); - this._removeClass( children, icons.header ) - ._addClass( children, null, icons.activeHeader ) - ._addClass( this.headers, "ui-accordion-icons" ); - } - }, - - _destroyIcons: function() { - this._removeClass( this.headers, "ui-accordion-icons" ); - this.headers.children( ".ui-accordion-header-icon" ).remove(); - }, - - _destroy: function() { - var contents; - - // Clean up main element - this.element.removeAttr( "role" ); - - // Clean up headers - this.headers - .removeAttr( "role aria-expanded aria-selected aria-controls tabIndex" ) - .removeUniqueId(); - - this._destroyIcons(); - - // Clean up content panels - contents = this.headers.next() - .css( "display", "" ) - .removeAttr( "role aria-hidden aria-labelledby" ) - .removeUniqueId(); - - if ( this.options.heightStyle !== "content" ) { - contents.css( "height", "" ); - } - }, - - _setOption: function( key, value ) { - if ( key === "active" ) { - - // _activate() will handle invalid values and update this.options - this._activate( value ); - return; - } - - if ( key === "event" ) { - if ( this.options.event ) { - this._off( this.headers, this.options.event ); - } - this._setupEvents( value ); - } - - this._super( key, value ); - - // Setting collapsible: false while collapsed; open first panel - if ( key === "collapsible" && !value && this.options.active === false ) { - this._activate( 0 ); - } - - if ( key === "icons" ) { - this._destroyIcons(); - if ( value ) { - this._createIcons(); - } - } - }, - - _setOptionDisabled: function( value ) { - this._super( value ); - - this.element.attr( "aria-disabled", value ); - - // Support: IE8 Only - // #5332 / #6059 - opacity doesn't cascade to positioned elements in IE - // so we need to add the disabled class to the headers and panels - this._toggleClass( null, "ui-state-disabled", !!value ); - this._toggleClass( this.headers.add( this.headers.next() ), null, "ui-state-disabled", - !!value ); - }, - - _keydown: function( event ) { - if ( event.altKey || event.ctrlKey ) { - return; - } - - var keyCode = $.ui.keyCode, - length = this.headers.length, - currentIndex = this.headers.index( event.target ), - toFocus = false; - - switch ( event.keyCode ) { - case keyCode.RIGHT: - case keyCode.DOWN: - toFocus = this.headers[ ( currentIndex + 1 ) % length ]; - break; - case keyCode.LEFT: - case keyCode.UP: - toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; - break; - case keyCode.SPACE: - case keyCode.ENTER: - this._eventHandler( event ); - break; - case keyCode.HOME: - toFocus = this.headers[ 0 ]; - break; - case keyCode.END: - toFocus = this.headers[ length - 1 ]; - break; - } - - if ( toFocus ) { - $( event.target ).attr( "tabIndex", -1 ); - $( toFocus ).attr( "tabIndex", 0 ); - $( toFocus ).trigger( "focus" ); - event.preventDefault(); - } - }, - - _panelKeyDown: function( event ) { - if ( event.keyCode === $.ui.keyCode.UP && event.ctrlKey ) { - $( event.currentTarget ).prev().trigger( "focus" ); - } - }, - - refresh: function() { - var options = this.options; - this._processPanels(); - - // Was collapsed or no panel - if ( ( options.active === false && options.collapsible === true ) || - !this.headers.length ) { - options.active = false; - this.active = $(); - - // active false only when collapsible is true - } else if ( options.active === false ) { - this._activate( 0 ); - - // was active, but active panel is gone - } else if ( this.active.length && !$.contains( this.element[ 0 ], this.active[ 0 ] ) ) { - - // all remaining panel are disabled - if ( this.headers.length === this.headers.find( ".ui-state-disabled" ).length ) { - options.active = false; - this.active = $(); - - // activate previous panel - } else { - this._activate( Math.max( 0, options.active - 1 ) ); - } - - // was active, active panel still exists - } else { - - // make sure active index is correct - options.active = this.headers.index( this.active ); - } - - this._destroyIcons(); - - this._refresh(); - }, - - _processPanels: function() { - var prevHeaders = this.headers, - prevPanels = this.panels; - - this.headers = this.element.find( this.options.header ); - this._addClass( this.headers, "ui-accordion-header ui-accordion-header-collapsed", - "ui-state-default" ); - - this.panels = this.headers.next().filter( ":not(.ui-accordion-content-active)" ).hide(); - this._addClass( this.panels, "ui-accordion-content", "ui-helper-reset ui-widget-content" ); - - // Avoid memory leaks (#10056) - if ( prevPanels ) { - this._off( prevHeaders.not( this.headers ) ); - this._off( prevPanels.not( this.panels ) ); - } - }, - - _refresh: function() { - var maxHeight, - options = this.options, - heightStyle = options.heightStyle, - parent = this.element.parent(); - - this.active = this._findActive( options.active ); - this._addClass( this.active, "ui-accordion-header-active", "ui-state-active" ) - ._removeClass( this.active, "ui-accordion-header-collapsed" ); - this._addClass( this.active.next(), "ui-accordion-content-active" ); - this.active.next().show(); - - this.headers - .attr( "role", "tab" ) - .each( function() { - var header = $( this ), - headerId = header.uniqueId().attr( "id" ), - panel = header.next(), - panelId = panel.uniqueId().attr( "id" ); - header.attr( "aria-controls", panelId ); - panel.attr( "aria-labelledby", headerId ); - } ) - .next() - .attr( "role", "tabpanel" ); - - this.headers - .not( this.active ) - .attr( { - "aria-selected": "false", - "aria-expanded": "false", - tabIndex: -1 - } ) - .next() - .attr( { - "aria-hidden": "true" - } ) - .hide(); - - // Make sure at least one header is in the tab order - if ( !this.active.length ) { - this.headers.eq( 0 ).attr( "tabIndex", 0 ); - } else { - this.active.attr( { - "aria-selected": "true", - "aria-expanded": "true", - tabIndex: 0 - } ) - .next() - .attr( { - "aria-hidden": "false" - } ); - } - - this._createIcons(); - - this._setupEvents( options.event ); - - if ( heightStyle === "fill" ) { - maxHeight = parent.height(); - this.element.siblings( ":visible" ).each( function() { - var elem = $( this ), - position = elem.css( "position" ); - - if ( position === "absolute" || position === "fixed" ) { - return; - } - maxHeight -= elem.outerHeight( true ); - } ); - - this.headers.each( function() { - maxHeight -= $( this ).outerHeight( true ); - } ); - - this.headers.next() - .each( function() { - $( this ).height( Math.max( 0, maxHeight - - $( this ).innerHeight() + $( this ).height() ) ); - } ) - .css( "overflow", "auto" ); - } else if ( heightStyle === "auto" ) { - maxHeight = 0; - this.headers.next() - .each( function() { - var isVisible = $( this ).is( ":visible" ); - if ( !isVisible ) { - $( this ).show(); - } - maxHeight = Math.max( maxHeight, $( this ).css( "height", "" ).height() ); - if ( !isVisible ) { - $( this ).hide(); - } - } ) - .height( maxHeight ); - } - }, - - _activate: function( index ) { - var active = this._findActive( index )[ 0 ]; - - // Trying to activate the already active panel - if ( active === this.active[ 0 ] ) { - return; - } - - // Trying to collapse, simulate a click on the currently active header - active = active || this.active[ 0 ]; - - this._eventHandler( { - target: active, - currentTarget: active, - preventDefault: $.noop - } ); - }, - - _findActive: function( selector ) { - return typeof selector === "number" ? this.headers.eq( selector ) : $(); - }, - - _setupEvents: function( event ) { - var events = { - keydown: "_keydown" - }; - if ( event ) { - $.each( event.split( " " ), function( index, eventName ) { - events[ eventName ] = "_eventHandler"; - } ); - } - - this._off( this.headers.add( this.headers.next() ) ); - this._on( this.headers, events ); - this._on( this.headers.next(), { keydown: "_panelKeyDown" } ); - this._hoverable( this.headers ); - this._focusable( this.headers ); - }, - - _eventHandler: function( event ) { - var activeChildren, clickedChildren, - options = this.options, - active = this.active, - clicked = $( event.currentTarget ), - clickedIsActive = clicked[ 0 ] === active[ 0 ], - collapsing = clickedIsActive && options.collapsible, - toShow = collapsing ? $() : clicked.next(), - toHide = active.next(), - eventData = { - oldHeader: active, - oldPanel: toHide, - newHeader: collapsing ? $() : clicked, - newPanel: toShow - }; - - event.preventDefault(); - - if ( - - // click on active header, but not collapsible - ( clickedIsActive && !options.collapsible ) || - - // allow canceling activation - ( this._trigger( "beforeActivate", event, eventData ) === false ) ) { - return; - } - - options.active = collapsing ? false : this.headers.index( clicked ); - - // When the call to ._toggle() comes after the class changes - // it causes a very odd bug in IE 8 (see #6720) - this.active = clickedIsActive ? $() : clicked; - this._toggle( eventData ); - - // Switch classes - // corner classes on the previously active header stay after the animation - this._removeClass( active, "ui-accordion-header-active", "ui-state-active" ); - if ( options.icons ) { - activeChildren = active.children( ".ui-accordion-header-icon" ); - this._removeClass( activeChildren, null, options.icons.activeHeader ) - ._addClass( activeChildren, null, options.icons.header ); - } - - if ( !clickedIsActive ) { - this._removeClass( clicked, "ui-accordion-header-collapsed" ) - ._addClass( clicked, "ui-accordion-header-active", "ui-state-active" ); - if ( options.icons ) { - clickedChildren = clicked.children( ".ui-accordion-header-icon" ); - this._removeClass( clickedChildren, null, options.icons.header ) - ._addClass( clickedChildren, null, options.icons.activeHeader ); - } - - this._addClass( clicked.next(), "ui-accordion-content-active" ); - } - }, - - _toggle: function( data ) { - var toShow = data.newPanel, - toHide = this.prevShow.length ? this.prevShow : data.oldPanel; - - // Handle activating a panel during the animation for another activation - this.prevShow.add( this.prevHide ).stop( true, true ); - this.prevShow = toShow; - this.prevHide = toHide; - - if ( this.options.animate ) { - this._animate( toShow, toHide, data ); - } else { - toHide.hide(); - toShow.show(); - this._toggleComplete( data ); - } - - toHide.attr( { - "aria-hidden": "true" - } ); - toHide.prev().attr( { - "aria-selected": "false", - "aria-expanded": "false" - } ); - - // if we're switching panels, remove the old header from the tab order - // if we're opening from collapsed state, remove the previous header from the tab order - // if we're collapsing, then keep the collapsing header in the tab order - if ( toShow.length && toHide.length ) { - toHide.prev().attr( { - "tabIndex": -1, - "aria-expanded": "false" - } ); - } else if ( toShow.length ) { - this.headers.filter( function() { - return parseInt( $( this ).attr( "tabIndex" ), 10 ) === 0; - } ) - .attr( "tabIndex", -1 ); - } - - toShow - .attr( "aria-hidden", "false" ) - .prev() - .attr( { - "aria-selected": "true", - "aria-expanded": "true", - tabIndex: 0 - } ); - }, - - _animate: function( toShow, toHide, data ) { - var total, easing, duration, - that = this, - adjust = 0, - boxSizing = toShow.css( "box-sizing" ), - down = toShow.length && - ( !toHide.length || ( toShow.index() < toHide.index() ) ), - animate = this.options.animate || {}, - options = down && animate.down || animate, - complete = function() { - that._toggleComplete( data ); - }; - - if ( typeof options === "number" ) { - duration = options; - } - if ( typeof options === "string" ) { - easing = options; - } - - // fall back from options to animation in case of partial down settings - easing = easing || options.easing || animate.easing; - duration = duration || options.duration || animate.duration; - - if ( !toHide.length ) { - return toShow.animate( this.showProps, duration, easing, complete ); - } - if ( !toShow.length ) { - return toHide.animate( this.hideProps, duration, easing, complete ); - } - - total = toShow.show().outerHeight(); - toHide.animate( this.hideProps, { - duration: duration, - easing: easing, - step: function( now, fx ) { - fx.now = Math.round( now ); - } - } ); - toShow - .hide() - .animate( this.showProps, { - duration: duration, - easing: easing, - complete: complete, - step: function( now, fx ) { - fx.now = Math.round( now ); - if ( fx.prop !== "height" ) { - if ( boxSizing === "content-box" ) { - adjust += fx.now; - } - } else if ( that.options.heightStyle !== "content" ) { - fx.now = Math.round( total - toHide.outerHeight() - adjust ); - adjust = 0; - } - } - } ); - }, - - _toggleComplete: function( data ) { - var toHide = data.oldPanel, - prev = toHide.prev(); - - this._removeClass( toHide, "ui-accordion-content-active" ); - this._removeClass( prev, "ui-accordion-header-active" ) - ._addClass( prev, "ui-accordion-header-collapsed" ); - - // Work around for rendering bug in IE (#5421) - if ( toHide.length ) { - toHide.parent()[ 0 ].className = toHide.parent()[ 0 ].className; - } - this._trigger( "activate", null, data ); - } -} ); - - - -var safeActiveElement = $.ui.safeActiveElement = function( document ) { - var activeElement; - - // Support: IE 9 only - // IE9 throws an "Unspecified error" accessing document.activeElement from an