diff options
Diffstat (limited to 'gui-editors/gui-editor-apex/src/main/resources')
8 files changed, 256 insertions, 2 deletions
diff --git a/gui-editors/gui-editor-apex/src/main/resources/webapp/css/upload/dialog.css b/gui-editors/gui-editor-apex/src/main/resources/webapp/css/upload/dialog.css new file mode 100644 index 0000000..95f29b1 --- /dev/null +++ b/gui-editors/gui-editor-apex/src/main/resources/webapp/css/upload/dialog.css @@ -0,0 +1,56 @@ +/* + * ============LICENSE_START======================================================= + * 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========================================================= + */ + +.upload-dialog { + font-size: 16px; + line-height: 19px; +} + +.upload-dialog .ui-button { + 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; +} + +.upload-dialog #upload-form { + width: 100%; + font-size: 16px; + line-height: 19px; +} + +.upload-dialog #upload-form input { + width: 100%; +}
\ No newline at end of file diff --git a/gui-editors/gui-editor-apex/src/main/resources/webapp/index.html b/gui-editors/gui-editor-apex/src/main/resources/webapp/index.html index 20a15ff..53e205e 100644 --- a/gui-editors/gui-editor-apex/src/main/resources/webapp/index.html +++ b/gui-editors/gui-editor-apex/src/main/resources/webapp/index.html @@ -43,6 +43,8 @@ <!-- interface style --> <link rel="stylesheet" type="text/css" href="css/interfaceAssets.css"> +<link rel="stylesheet" type="text/css" href="css/upload/dialog.css" /> + <!-- JQuery style --> <link rel="stylesheet" href="js/jquery-ui-1.12.1/jquery-ui.css"> @@ -82,6 +84,7 @@ <li id="menuFileNew">New <kbd>Ctrl+N</kbd></li> <li id="menuFileOpen">Open... <kbd>Ctrl+O</kbd></li> <li id="menuFileDownload">Download <kbd>Ctrl+S</kbd></li> + <li id="menuFileUpload">Upload <kbd>Ctrl+U</kbd></li> <li id="menuFileClear">Clear<kbd>Ctrl+D</kbd></li> <li class="divider"></li> <li id="menuFileNewSession">New Session<kbd>Ctrl+R</kbd></li> @@ -172,6 +175,7 @@ <!-- Dynamically created form goes here--> </div> </div> + <div id="main-dialog"></div> </div> <div class="placeholder"> @@ -212,7 +216,8 @@ <!-- edit area JS file --> <script language="javascript" type="text/javascript" src="js/edit_area/edit_area_full.js"></script> - + <!-- simple jquery pub/sub library --> + <script type="text/javascript" src="js/lib/pubsub/ba-tiny-pubsub.min.js"></script> <!-- Apex JS files --> <script type="text/javascript" src="js/ApexTable.js"></script> <script type="text/javascript" src="js/ApexContextSchemaTab.js"></script> @@ -234,6 +239,8 @@ <script type="text/javascript" src="js/ApexNewModelForm.js"></script> <script type="text/javascript" src="js/ApexResultForm.js"></script> <script type="text/javascript" src="js/ApexModelHandling.js"></script> + <script type="text/javascript" src="js/ApexConfig.js"></script> + <script type="text/javascript" src="js/ApexUpload.js"></script> <script type="text/javascript" src="js/ApexMain.js"></script> </body> diff --git a/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexConfig.js b/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexConfig.js new file mode 100644 index 0000000..a7f41d2 --- /dev/null +++ b/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexConfig.js @@ -0,0 +1,58 @@ +/* + * ============LICENSE_START======================================================= + * 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========================================================= + */ + +const configObj = { + configMap: {}, + getConfig: function (configKey) { + return this.configMap[configKey]; + }, + setConfig: function (configKey, configValue) { + return this.configMap[configKey] = configValue; + }, + readySignal: function () { + $.publish("/config/ready"); + } +} + +$(document).ready(function () { + $("#menuFileUpload").hide(); + + const rootUrl = location.protocol + + "//" + + window.location.hostname + + (location.port ? ':' + location.port : ''); + + const configUrl = rootUrl + "/apexservices/editor/config"; + + function loadConfiguration() { + ajax_get(configUrl, function (data) { + for (let i = 0; i < data.messages.message.length; i++) { + const configEntry = JSON.parse(data.messages.message[i]); + Object.keys(configEntry).forEach(key => { + configObj.setConfig(key, configEntry[key]); + }); + } + configObj.readySignal(); + }); + } + + loadConfiguration(); +}); + + diff --git a/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexMain.js b/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexMain.js index e8ad0de..57433d6 100644 --- a/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexMain.js +++ b/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexMain.js @@ -40,10 +40,12 @@ $("#menu li").not(".emptyMessage").click(function() { case "menuFileOpen": files_fileOpen(); break; - case "menuFileDownload": files_fileDownload(); break; + case "menuFileUpload": + uploadPlugin.openDialog(); + break; case "menuFileClear": if (confirm("Clear the current model?")) { diff --git a/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPageControl.js b/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPageControl.js index 4904f30..c2cb45c 100644 --- a/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPageControl.js +++ b/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexPageControl.js @@ -27,6 +27,7 @@ function pageControl_modelMode(name, version, fileName) { $("#menuFileNew").addClass("disabled"); $("#menuFileOpen").addClass("disabled"); $("#menuFileDownload").removeClass("disabled"); + $("#menuFileUpload").removeClass("disabled"); $("#menuFileClear").removeClass("disabled"); $("#menuModelAnalyse").removeClass("disabled"); $("#menuModelValidate").removeClass("disabled"); @@ -77,6 +78,7 @@ function pageControl_noModelMode() { $("#menuFileNew").removeClass("disabled"); $("#menuFileOpen").removeClass("disabled"); $("#menuFileDownload").addClass("disabled"); + $("#menuFileUpload").addClass("disabled"); $("#menuFileClear").addClass("disabled"); $("#menuModelAnalyse").addClass("disabled"); $("#menuModelValidate").addClass("disabled"); diff --git a/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexUpload.js b/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexUpload.js new file mode 100644 index 0000000..a71853c --- /dev/null +++ b/gui-editors/gui-editor-apex/src/main/resources/webapp/js/ApexUpload.js @@ -0,0 +1,61 @@ +/* + * ============LICENSE_START======================================================= + * 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========================================================= + */ + +$(document).ready(function () { + $.subscribe("/config/ready", enableUpload); + + function enableUpload() { + const menuFileUpload = $('#menuFileUpload'); + const isUploadEnabled = configObj.getConfig("plugin.policy.upload.enable"); + if (isUploadEnabled === "true" || isUploadEnabled === true) { + menuFileUpload.show(); + } else { + menuFileUpload.hide(); + } + } + +}); + +const uploadPlugin = { + dialogDiv: $('#main-dialog'), + openDialog: function () { + this.dialogDiv.load('../upload/dialog.html'); + }, + + upload: function (data, successCallback, errorCallback) { + const requestURL = restRootURL + "/Model/Upload"; + $.ajax({ + type: 'POST', + url: requestURL, + data: data, + contentType: false, + processData: false + }).done(function (data) { + pageControl_successStatus(data); + if (typeof successCallback === typeof Function) { + successCallback(data); + } + }).fail(function (jqXHR, textStatus, errorThrown) { + pageControl_restError(requestURL, jqXHR, textStatus, errorThrown); + if (typeof errorCallback === typeof Function) { + errorCallback(jqXHR, textStatus, errorThrown); + } + }); + } +} diff --git a/gui-editors/gui-editor-apex/src/main/resources/webapp/js/lib/pubsub/ba-tiny-pubsub.min.js b/gui-editors/gui-editor-apex/src/main/resources/webapp/js/lib/pubsub/ba-tiny-pubsub.min.js new file mode 100644 index 0000000..635ab34 --- /dev/null +++ b/gui-editors/gui-editor-apex/src/main/resources/webapp/js/lib/pubsub/ba-tiny-pubsub.min.js @@ -0,0 +1,4 @@ +/*! Tiny Pub/Sub - v0.7.0 - 2013-01-29 +* https://github.com/cowboy/jquery-tiny-pubsub +* Copyright (c) 2013 "Cowboy" Ben Alman; Licensed MIT */ +(function(n){var u=n({});n.subscribe=function(){u.on.apply(u,arguments)},n.unsubscribe=function(){u.off.apply(u,arguments)},n.publish=function(){u.trigger.apply(u,arguments)}})(jQuery);
\ No newline at end of file diff --git a/gui-editors/gui-editor-apex/src/main/resources/webapp/upload/dialog.html b/gui-editors/gui-editor-apex/src/main/resources/webapp/upload/dialog.html new file mode 100644 index 0000000..aac7762 --- /dev/null +++ b/gui-editors/gui-editor-apex/src/main/resources/webapp/upload/dialog.html @@ -0,0 +1,64 @@ +<!-- + ~ ============LICENSE_START======================================================= + ~ 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========================================================= + --> + +<!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <title>Upload Policy</title> + <script> + $(document).ready(function () { + function upload() { + const data = new FormData(); + const apexConfigFile = $('#apex-config-file')[0].files[0]; + const toscaTemplateFile = $('#tosca-template-file')[0].files[0]; + data.append('apex-config-file', apexConfigFile); + data.append('tosca-template-file', toscaTemplateFile); + uploadPlugin.upload(data, function () { + dialog.dialog("close"); + }); + } + + const dialog = $('#inner-dialog').dialog({ + height: 300, + width: 435, + modal: true, + dialogClass: 'upload-dialog', + buttons: { + "Upload": upload, + Cancel: function() { + dialog.dialog("close"); + } + } + }); + }); + </script> +</head> +<body> +<div id="inner-dialog" title="Upload Policy" class="upload-dialog"> + <p>Provide the following files to compose the policy TOSCA</p> + <div id="upload-form"> + <label for="apex-config-file">Apex Config</label> <br/> + <input id="apex-config-file" type="file" required="required" accept="application/json" class="ui-widget-content ui-corner-all"/> <br/> + <label for="tosca-template-file">Tosca Template</label> <br/> + <input id="tosca-template-file" type="file" required="required" accept="application/json" class="ui-widget-content ui-corner-all"/> + </div> +</div> +</body> +</html>
\ No newline at end of file |