summaryrefslogtreecommitdiffstats
path: root/mod/designtool/designtool-web/src/main/webapp/js
diff options
context:
space:
mode:
authorAndrew Gauld <agauld@att.com>2020-02-26 15:48:32 +0000
committerAndrew Gauld <agauld@att.com>2020-03-20 12:33:47 +0000
commit2d1528b34c45a650e2407bbc90737cc4ca6ec042 (patch)
tree76bebbb36a444963353dee17cc294c40fa8cb0d0 /mod/designtool/designtool-web/src/main/webapp/js
parent45341fa5e6e64e86286254d49ca951c43726ab94 (diff)
Link DCAE MOD design tool to Acumos Adapter
Add import item to global menu with choices of import models, component specs, and data formats. Add prefix to acumos adapter API for consistency with rest of DCAE MOD and to allow adding acumos adapter to k8s/rancher ingress or other reverse proxy mechanism so it can be accessed by browser javascript in the design tool. Remove dcae mod hostname mechanism for callbacks from browser javascript since browser security only allows javascript to call back to the originating host port. Clean up indentation only differences between original NiFi code and ONAP versions. Remove 3 ONAP java files that are now identical to original NiFi versions. Change-Id: I23bbd98d5b171d624ef35088cd821aff2918fc1b Issue-ID: DCAEGEN2-1860 Signed-off-by: Andrew Gauld <agauld@att.com>
Diffstat (limited to 'mod/designtool/designtool-web/src/main/webapp/js')
-rw-r--r--mod/designtool/designtool-web/src/main/webapp/js/jquery/dcae-mod.js167
-rw-r--r--mod/designtool/designtool-web/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-global-menu-controller.js501
-rw-r--r--mod/designtool/designtool-web/src/main/webapp/js/nf/canvas/nf-settings.js23
3 files changed, 656 insertions, 35 deletions
diff --git a/mod/designtool/designtool-web/src/main/webapp/js/jquery/dcae-mod.js b/mod/designtool/designtool-web/src/main/webapp/js/jquery/dcae-mod.js
index 879739c..48c5d8e 100644
--- a/mod/designtool/designtool-web/src/main/webapp/js/jquery/dcae-mod.js
+++ b/mod/designtool/designtool-web/src/main/webapp/js/jquery/dcae-mod.js
@@ -19,7 +19,6 @@ limitations under the License.
console.log("loading dcae-mod");
var dt_id;
- var hostname;
/**
* @desc: on load of page, makes submit button disabled. Also makes an api call to get the host IP of the current instance
@@ -27,19 +26,7 @@ console.log("loading dcae-mod");
$(document).ready(function (){
if(dt_id == null){ $('#operate-submit-btn').prop('disabled', true); }
- //get hostname
- $.ajax({
- type: 'GET',
- url: '../nifi-api/flow/config',
- dataType: 'json',
- contentType: 'application/json',
- success: function(data){
- hostname= data.flowConfiguration.dcaeDistributorApiHostname;
-
- //function call: invokes api to refresh the list of Envs
- if(hostname){ getDistributionTargets(); }
- }
- });
+ getDistributionTargets();
});
/**
@@ -61,7 +48,7 @@ console.log("loading dcae-mod");
$.ajax({
type: 'GET',
- url: hostname+'/distribution-targets',
+ url: '/distributor/distribution-targets',
dataType: 'json',
contentType: 'application/json',
success: function(data){
@@ -97,7 +84,7 @@ console.log("loading dcae-mod");
$.ajax({
type: 'POST',
data: JSON.stringify(request),
- url: hostname+'/distribution-targets/'+dt_id+'/process-groups',
+ url: '/distributor/distribution-targets/'+dt_id+'/process-groups',
dataType: 'json',
contentType: 'application/json',
success: function(data){
@@ -133,3 +120,151 @@ console.log("loading dcae-mod");
* @desc: event handler for Close icon of Setting/ Distribution Env CRUD dialog : invokes api to refresh the list of Envs
*/
var onCloseSettings= function(){ getDistributionTargets(); };
+
+
+function uecvalue(n) {
+ return encodeURIComponent("" + $(n).val());
+}
+
+function esc(s) {
+ return s.replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;');
+}
+
+function onBoard() {
+ $("#onboarding-in-progress").show();
+ var url = "/acumos-adapter/onboard.js?acumos=" + uecvalue("#furl");
+ if ($("#cat-menu").val() != "*") {
+ url += "&catalogId=" + uecvalue("#cat-menu");
+ if ($("#sol-menu").val() != "*") {
+ url += "&solutionId=" + uecvalue("#sol-menu");
+ if ($("#rev-menu").val() != "*") {
+ url += "&revisionId=" + uecvalue("#rev-menu");
+ }
+ }
+ }
+ var xhr = new XMLHttpRequest();
+ xhr.onerror = function() {
+ $("#onboarding-in-progress").hide();
+ alert("Onboarding failed");
+ }
+ xhr.onload = function() {
+ if (this.status < 400) {
+ $("#onboarding-in-progress").hide();
+ alert("Onboarding successful");
+ } else {
+ alert("Onboarding error: " + this.statusText);
+ }
+ }
+ xhr.open("POST", url);
+ xhr.send();
+}
+
+function chooseSolution() {
+ if ($("#sol-menu").val() == "*") {
+ _updatevis();
+ } else {
+ lookupItem("#ac-revs", "#rev-menu", "/acumos-adapter/listRevisions.js?acumos=" + uecvalue("#furl") + "&solutionId=" + uecvalue("#sol-menu"));
+ }
+}
+
+function chooseCatalog() {
+ if ($("#cat-menu").val() == "*") {
+ _updatevis();
+ } else {
+ lookupItem("#ac-sols", "#sol-menu", "/acumos-adapter/listSolutions.js?acumos=" + uecvalue("#furl") + "&catalogId=" + uecvalue("#cat-menu"));
+ }
+}
+
+function lookupCatalogs() {
+ $("#onboard").show();
+ lookupItem("#c-acumos", "#cat-menu", "/acumos-adapter/listCatalogs.js?acumos=" + uecvalue("#furl"));
+}
+
+function lookupItem(dblock, smenu, url) {
+ var xhr = new XMLHttpRequest();
+ var xmenu = $(smenu);
+ xmenu[0].options.length = 1;
+ xmenu.val("*");
+ xhr.onerror = function() {
+ alert("Error querying remote Acumos system");
+ $(dblock).hide();
+ }
+ xhr.onload = function() {
+ var xresp = JSON.parse(this.response);
+ var i;
+ for (i = 0; i < xresp.length; i++) {
+ var option = document.createElement("option");
+ option.text = esc(xresp[i].name);
+ option.value = xresp[i].id;
+ xmenu[0].add(option);
+ }
+ if (xresp.length == 0) {
+ $(dblock).hide();
+ } else {
+ $(dblock).show();
+ }
+ _updatevis();
+ };
+ xhr.open("GET", url);
+ xhr.send();
+}
+
+function setModelType() {
+ if ($("#model-type").val() == "mtAcumos") {
+ $("#furl").val("");
+ $("#mt-acumos").show();
+ }
+ _updatevis();
+}
+
+function _updatevis() {
+ if ($("#model-type").val() != "mtAcumos") {
+ $("#mt-acumos").hide();
+ $("#furl").val("");
+ }
+ if ($("#furl").val() == "") {
+ $("#c-acumos").hide();
+ $("#onboard").hide();
+ $("#cat-menu").val("*");
+ }
+ if ($("#cat-menu").val() == "*") {
+ $("#ac-sols").hide();
+ $("#sol-menu").val("");
+ }
+ if ($("#sol-menu").val() == "*") {
+ $("#ac-revs").hide();
+ $("#rev-menu").val("");
+ }
+}
+
+function onBoardComponent() {
+ _onBoardFile("#cspec", "/onboarding/components");
+}
+
+function onBoardDataFormat() {
+ _onBoardFile("#dfspec", "/onboarding/dataformats");
+}
+
+function _onBoardFile(source, url) {
+ reader = new FileReader();
+ reader.onerror = function() {
+ alert("Error reading file");
+ }
+ reader.onload = function(evt) {
+ xhr = new XMLHttpRequest();
+ xhr.onload = function() {
+ if (this.status >= 400) {
+ alert("File upload failed " + this.statusText);
+ } else {
+ alert("File upload complete");
+ }
+ }
+ xhr.onerror = function() {
+ alert("File upload failed");
+ }
+ xhr.open("POST", url);
+ xhr.overrideMimeType("application/json");
+ xhr.send(evt.target.result);
+ };
+ reader.readAsBinaryString($(source)[0].files[0]);
+}
diff --git a/mod/designtool/designtool-web/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-global-menu-controller.js b/mod/designtool/designtool-web/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-global-menu-controller.js
new file mode 100644
index 0000000..b22f40a
--- /dev/null
+++ b/mod/designtool/designtool-web/src/main/webapp/js/nf/canvas/controllers/nf-ng-canvas-global-menu-controller.js
@@ -0,0 +1,501 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You 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.
+ *
+ * Modifications to the original nifi code for the ONAP project are made
+ * available under the Apache License, Version 2.0
+ */
+
+/* global define, module, require, exports */
+
+(function (root, factory) {
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery',
+ 'nf.Common',
+ 'nf.QueueListing',
+ 'nf.Shell',
+ 'nf.PolicyManagement',
+ 'nf.ClusterSummary',
+ 'nf.ErrorHandler',
+ 'nf.Settings',
+ 'nf.CanvasUtils'],
+ function ($, nfCommon, nfQueueListing, nfShell, nfPolicyManagement, nfClusterSummary, nfErrorHandler, nfSettings, nfCanvasUtils) {
+ return (nf.ng.Canvas.GlobalMenuCtrl = factory($, nfCommon, nfQueueListing, nfShell, nfPolicyManagement, nfClusterSummary, nfErrorHandler, nfSettings, nfCanvasUtils));
+ });
+ } else if (typeof exports === 'object' && typeof module === 'object') {
+ module.exports = (nf.ng.Canvas.GlobalMenuCtrl =
+ factory(require('jquery'),
+ require('nf.Common'),
+ require('nf.QueueListing'),
+ require('nf.Shell'),
+ require('nf.PolicyManagement'),
+ require('nf.ClusterSummary'),
+ require('nf.ErrorHandler'),
+ require('nf.Settings'),
+ require('nf.CanvasUtils')));
+ } else {
+ nf.ng.Canvas.GlobalMenuCtrl = factory(root.$,
+ root.nf.Common,
+ root.nf.QueueListing,
+ root.nf.Shell,
+ root.nf.PolicyManagement,
+ root.nf.ClusterSummary,
+ root.nf.ErrorHandler,
+ root.nf.Settings,
+ root.nf.CanvasUtils);
+ }
+}(this, function ($, nfCommon, nfQueueListing, nfShell, nfPolicyManagement, nfClusterSummary, nfErrorHandler, nfSettings, nfCanvasUtils) {
+ 'use strict';
+
+ return function (serviceProvider) {
+ 'use strict';
+
+ var config = {
+ urls: {
+ helpDocument: '../nifi-docs/documentation',
+ controllerAbout: '../nifi-api/flow/about'
+ }
+ };
+
+ function GlobalMenuCtrl(serviceProvider) {
+
+ /**
+ * The summary menu item controller.
+ */
+ this.summary = {
+
+ /**
+ * The summary menu item's shell controller.
+ */
+ shell: {
+
+ /**
+ * Launch the summary shell.
+ */
+ launch: function () {
+ nfShell.showPage('summary');
+ }
+ }
+ };
+
+ /**
+ * The counters menu item controller.
+ */
+ this.counters = {
+
+ /**
+ * The counters menu item's shell controller.
+ */
+ shell: {
+
+ /**
+ * Launch the counters shell.
+ */
+ launch: function () {
+ if (nfCommon.canAccessCounters()) {
+ nfShell.showPage('counters');
+ }
+ }
+ }
+ };
+
+ /**
+ * The bulletin board menu item controller.
+ */
+ this.bulletinBoard = {
+
+ /**
+ * The bulletin board menu item's shell controller.
+ */
+ shell: {
+
+ /**
+ * Launch the bulletin board shell.
+ */
+ launch: function () {
+ nfShell.showPage('bulletin-board');
+ }
+ }
+ };
+
+ /**
+ * The data provenance menu item controller.
+ */
+ this.dataProvenance = {
+
+ /**
+ * The data provenance menu item's shell controller.
+ */
+ shell: {
+
+ /**
+ * Launch the data provenance shell.
+ */
+ launch: function () {
+ if (nfCommon.canAccessProvenance()) {
+ nfShell.showPage('provenance');
+ }
+ }
+ }
+ };
+
+ /**
+ * The controller settings menu item controller.
+ */
+ this.controllerSettings = {
+
+ /**
+ * The controller settings menu item's shell controller.
+ */
+ shell: {
+
+ /**
+ * Launch the settings shell.
+ */
+ launch: function () {
+ nfSettings.showSettings();
+ }
+ }
+ };
+
+ /**
+ * The cluster menu item controller.
+ */
+ this.cluster = {
+
+ /**
+ * Determines if the cluster menu item is enabled.
+ *
+ * @returns {*|boolean}
+ */
+ visible: function () {
+ return nfClusterSummary.isConnectedToCluster();
+ },
+
+ /**
+ * The cluster menu item's shell controller.
+ */
+ shell: {
+
+ /**
+ * Launch the cluster shell.
+ */
+ launch: function () {
+ if (nfCommon.canAccessController()) {
+ nfShell.showPage('cluster');
+ }
+ }
+ }
+ };
+
+ /**
+ * The flow config history menu item controller.
+ */
+ this.flowConfigHistory = {
+
+ /**
+ * The flow config history menu item's shell controller.
+ */
+ shell: {
+
+ /**
+ * Launch the history shell.
+ */
+ launch: function () {
+ nfShell.showPage('history');
+ }
+ }
+ };
+
+ /**
+ * The users menu item controller.
+ */
+ this.users = {
+
+ /**
+ * The users menu item's shell controller.
+ */
+ shell: {
+
+ /**
+ * Launch the users shell.
+ */
+ launch: function () {
+ if (nfCommon.canAccessTenants()) {
+ nfShell.showPage('users');
+ }
+ }
+ }
+ };
+
+ /**
+ * The policies menu item controller.
+ */
+ this.policies = {
+
+ /**
+ * The policies menu item's shell controller.
+ */
+ shell: {
+
+ /**
+ * Launch the policies shell.
+ */
+ launch: function () {
+ if (nfCommon.canModifyPolicies() && nfCommon.canAccessTenants()) {
+ nfPolicyManagement.showGlobalPolicies();
+ }
+ }
+ }
+ };
+
+ /**
+ * The templates menu item controller.
+ */
+ this.templates = {
+
+ /**
+ * The templates menu item's shell controller.
+ */
+ shell: {
+
+ /**
+ * Launch the templates shell.
+ */
+ launch: function () {
+ nfShell.showPage('templates?' + $.param({
+ groupId: nfCanvasUtils.getGroupId()
+ }));
+ }
+ }
+ };
+
+ /**
+ * The help menu item controller.
+ */
+ this.help = {
+
+ /**
+ * The help menu item's shell controller.
+ */
+ shell: {
+
+ /**
+ * Launch the help documentation shell.
+ */
+ launch: function () {
+ nfShell.showPage(config.urls.helpDocument);
+ }
+ }
+ };
+
+ /**
+ * The about menu item controller.
+ */
+ this.about = {
+
+ /**
+ * Initialize the about details.
+ */
+ init: function () {
+ // get the about details
+ $.ajax({
+ type: 'GET',
+ url: config.urls.controllerAbout,
+ dataType: 'json'
+ }).done(function (response) {
+ var aboutDetails = response.about;
+ // set the document title and the about title
+ document.title = aboutDetails.title;
+ $('#nf-version').text(aboutDetails.version);
+ var showVersionDetail = false;
+ if (aboutDetails.buildTag && aboutDetails.buildTag !== 'HEAD') {
+ $('#nf-about-build-tag').text(aboutDetails.buildTag);
+ $('#nf-version-detail-tag').show();
+ showVersionDetail = true;
+ }
+ if (aboutDetails.buildRevision) {
+ $('#nf-about-build-revision').text(aboutDetails.buildRevision);
+ $('#nf-about-build-branch').text(aboutDetails.buildBranch);
+ $('#nf-version-detail-commit').show();
+ showVersionDetail = true
+ }
+ if (aboutDetails.buildTimestamp) {
+ $('#nf-about-build-timestamp').text(aboutDetails.buildTimestamp);
+ $('#nf-version-detail-timestamp').show();
+ showVersionDetail = true;
+ }
+ if (showVersionDetail) {
+ $('#nf-version-detail').show();
+ }
+
+ // store the content viewer url if available
+ if (!nfCommon.isBlank(aboutDetails.contentViewerUrl)) {
+ $('#nifi-content-viewer-url').text(aboutDetails.contentViewerUrl);
+ nfQueueListing.initFlowFileDetailsDialog();
+ }
+ }).fail(nfErrorHandler.handleAjaxError);
+
+ this.modal.init();
+ },
+
+ /**
+ * The about menu item's modal controller.
+ */
+ modal: {
+
+ /**
+ * Gets the modal element.
+ *
+ * @returns {*|jQuery|HTMLElement}
+ */
+ getElement: function () {
+ return $('#nf-about');
+ },
+
+ /**
+ * Initialize the modal.
+ */
+ init: function () {
+ var aboutModal = this;
+
+ var resizeAbout = function () {
+ var dialog = $(this);
+ var top = $('#nf-about-pic-container').height() + $('.dialog-header').height() + 10; //10 for padding-top
+ dialog.find('.dialog-content').css('top', top);
+ };
+
+ this.getElement().modal({
+ scrollableContentStyle: 'scrollable',
+ headerText: 'About Apache NiFi',
+ handler: {
+ resize: resizeAbout
+ },
+ buttons: [{
+ buttonText: 'Ok',
+ color: {
+ base: '#728E9B',
+ hover: '#004849',
+ text: '#ffffff'
+ },
+ handler: {
+ click: function () {
+ aboutModal.hide();
+ }
+ }
+ }]
+ });
+ },
+
+ /**
+ * Updates the modal config.
+ *
+ * @param {string} name The name of the property to update.
+ * @param {object|array} config The config for the `name`.
+ */
+ update: function (name, config) {
+ this.getElement().modal(name, config);
+ },
+
+ /**
+ * Show the modal
+ */
+ show: function () {
+ this.getElement().modal('show');
+ },
+
+ /**
+ * Hide the modal
+ */
+ hide: function () {
+ this.getElement().modal('hide');
+ }
+ }
+ };
+
+ /**
+ * The import model menu item controller.
+ */
+ this.importModel = {
+
+ /**
+ * The import model menu item's shell controller.
+ */
+ shell: {
+
+ /**
+ * Launch the import model shell.
+ */
+ launch: function () {
+ $("#model-type").val("-");
+ nfShell.showContent('#import-model');
+ }
+ }
+ };
+
+ /**
+ * The import component specificaton menu item controller.
+ */
+ this.importComponent = {
+
+ /**
+ * The import component specification menu item's shell controller.
+ */
+ shell: {
+
+ /**
+ * Launch the import component shell.
+ */
+ launch: function () {
+ nfShell.showContent('#import-component');
+ }
+ }
+ };
+
+ /**
+ * The import data format menu item controller.
+ */
+ this.importDataFormat = {
+
+ /**
+ * The import data format menu item's shell controller.
+ */
+ shell: {
+
+ /**
+ * Launch the import data format shell.
+ */
+ launch: function () {
+ nfShell.showContent('#import-data-format');
+ }
+ }
+ };
+ }
+
+ GlobalMenuCtrl.prototype = {
+ constructor: GlobalMenuCtrl,
+
+ /**
+ * Initialize the global menu controls.
+ */
+ init: function () {
+ this.about.init();
+ }
+ }
+
+ var globalMenuCtrl = new GlobalMenuCtrl();
+ return globalMenuCtrl;
+ };
+}));
diff --git a/mod/designtool/designtool-web/src/main/webapp/js/nf/canvas/nf-settings.js b/mod/designtool/designtool-web/src/main/webapp/js/nf/canvas/nf-settings.js
index 8c61dac..bede3f1 100644
--- a/mod/designtool/designtool-web/src/main/webapp/js/nf/canvas/nf-settings.js
+++ b/mod/designtool/designtool-web/src/main/webapp/js/nf/canvas/nf-settings.js
@@ -103,21 +103,6 @@
};
- var dcaeDistributorApiHostname;
-
- //get hostname
- $.ajax({
- type: 'GET',
- url: '../nifi-api/flow/config',
- dataType: 'json',
- contentType: 'application/json',
- success: function(data){
- dcaeDistributorApiHostname= data.flowConfiguration.dcaeDistributorApiHostname;
- console.log(dcaeDistributorApiHostname);
- }
- });
-
-
/**
* Gets the controller services table.
*
@@ -573,7 +558,7 @@
// add the new distribution environment
var addDistributionEnvironment= $.ajax({
type: 'POST',
- url: dcaeDistributorApiHostname+'/distribution-targets',
+ url: '/distributor/distribution-targets',
data: JSON.stringify(environmentEntity),
dataType: 'json',
contentType: 'application/json'
@@ -670,7 +655,7 @@
// updating distribution environment
var updateDistributionEnvironment = $.ajax({
type: 'PUT',
- url: dcaeDistributorApiHostname+'/distribution-targets/'+environmentEntity.id,
+ url: '/distributor/distribution-targets/'+environmentEntity.id,
data: JSON.stringify(requestEnvironmentEntity),
dataType: 'json',
contentType: 'application/json'
@@ -1824,7 +1809,7 @@
console.log(environmentEntity);
$.ajax({
type: 'DELETE',
- url: dcaeDistributorApiHostname+'/distribution-targets/'+environmentEntity.id,
+ url: '/distributor/distribution-targets/'+environmentEntity.id,
dataType: 'json'
}).done(function (response) {
console.log(response);
@@ -2023,7 +2008,7 @@
console.log("in loadDistributionEnvironments.. ");
return $.ajax({
type: 'GET',
- url: dcaeDistributorApiHostname+'/distribution-targets',
+ url: '/distributor/distribution-targets',
dataType: 'json'
}).done(function (response) {
console.log(response);