blob: f57ef69d5a187b4c9817067f11b9f02e07abc64e [file] [log] [blame]
/*
* 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.
*/
/* global define, module, require, exports */
(function (root, factory) {
if (typeof define === 'function' && define.amd) {
define(['jquery',
'd3',
'nf.ErrorHandler',
'nf.Common',
'nf.Dialog',
'nf.Storage',
'nf.Client',
'nf.CanvasUtils',
'nf.ng.Bridge',
'nf.RemoteProcessGroup'],
function ($, d3, nfErrorHandler, nfCommon, nfDialog, nfStorage, nfClient, nfCanvasUtils, nfNgBridge, nfRemoteProcessGroup) {
return (nf.RemoteProcessGroupConfiguration = factory($, d3, nfErrorHandler, nfCommon, nfDialog, nfStorage, nfClient, nfCanvasUtils, nfNgBridge, nfRemoteProcessGroup));
});
} else if (typeof exports === 'object' && typeof module === 'object') {
module.exports = (nf.RemoteProcessGroupConfiguration =
factory(require('jquery'),
require('d3'),
require('nf.ErrorHandler'),
require('nf.Common'),
require('nf.Dialog'),
require('nf.Storage'),
require('nf.Client'),
require('nf.CanvasUtils'),
require('nf.ng.Bridge'),
require('nf.RemoteProcessGroup')));
} else {
nf.RemoteProcessGroupConfiguration = factory(root.$,
root.d3,
root.nf.ErrorHandler,
root.nf.Common,
root.nf.Dialog,
root.nf.Storage,
root.nf.Client,
root.nf.CanvasUtils,
root.nf.ng.Bridge,
root.nf.RemoteProcessGroup);
}
}(this, function ($, d3, nfErrorHandler, nfCommon, nfDialog, nfStorage, nfClient, nfCanvasUtils, nfNgBridge, nfRemoteProcessGroup) {
'use strict';
return {
init: function () {
$('#remote-process-group-configuration').modal({
headerText: 'Configure Remote Process Group',
scrollableContentStyle: 'scrollable',
buttons: [{
buttonText: 'Apply',
color: {
base: '#728E9B',
hover: '#004849',
text: '#ffffff'
},
handler: {
click: function () {
var remoteProcessGroupId = $('#remote-process-group-id').text();
var remoteProcessGroupData = d3.select('#id-' + remoteProcessGroupId).datum();
// create the remote process group details
var remoteProcessGroupEntity = {
'revision': nfClient.getRevision(remoteProcessGroupData),
'disconnectedNodeAcknowledged': nfStorage.isDisconnectionAcknowledged(),
'component': {
id: remoteProcessGroupId,
targetUris: $('#remote-process-group-urls').val(),
communicationsTimeout: $('#remote-process-group-timeout').val(),
yieldDuration: $('#remote-process-group-yield-duration').val(),
transportProtocol: $('#remote-process-group-transport-protocol-combo').combo('getSelectedOption').value,
proxyHost: $('#remote-process-group-proxy-host').val(),
proxyPort: $('#remote-process-group-proxy-port').val(),
proxyUser: $('#remote-process-group-proxy-user').val(),
proxyPassword: $('#remote-process-group-proxy-password').val(),
localNetworkInterface: $('#remote-process-group-local-network-interface').val()
}
};
// update the selected component
$.ajax({
type: 'PUT',
data: JSON.stringify(remoteProcessGroupEntity),
url: remoteProcessGroupData.uri,
dataType: 'json',
contentType: 'application/json'
}).done(function (response) {
// refresh the remote process group component
nfRemoteProcessGroup.set(response);
// inform Angular app values have changed
nfNgBridge.digest();
// close the details panel
$('#remote-process-group-configuration').modal('hide');
}).fail(nfErrorHandler.handleConfigurationUpdateAjaxError);
}
}
},
{
buttonText: 'Cancel',
color: {
base: '#E3E8EB',
hover: '#C7D2D7',
text: '#004849'
},
handler: {
click: function () {
$('#remote-process-group-configuration').modal('hide');
}
}
}],
handler: {
close: function () {
// clear the remote process group details
$('#remote-process-group-id').text('');
$('#remote-process-group-name').text('');
$('#remote-process-group-urls').val('');
$('#remote-process-group-timeout').val('');
$('#remote-process-group-yield-duration').val('');
$('#remote-process-group-transport-protocol-combo').combo('setSelectedOption', {
value: 'RAW'
});
$('#remote-process-group-local-network-interface').val('');
$('#remote-process-group-proxy-host').val('');
$('#remote-process-group-proxy-port').val('');
$('#remote-process-group-proxy-user').val('');
$('#remote-process-group-proxy-password').val('');
}
}
});
// initialize the transport protocol combo
$('#remote-process-group-transport-protocol-combo').combo({
options: [{
text: 'RAW',
value: 'RAW'
}, {
text: 'HTTP',
value: 'HTTP'
}]
});
},
/**
* Shows the details for the remote process group in the specified selection.
*
* @argument {selection} selection The selection
*/
showConfiguration: function (selection) {
// if the specified component is a remote process group, load its properties
if (nfCanvasUtils.isRemoteProcessGroup(selection)) {
var selectionData = selection.datum();
// populate the port settings
$('#remote-process-group-id').text(selectionData.id);
$('#remote-process-group-name').text(selectionData.component.name);
$('#remote-process-group-urls').val(selectionData.component.targetUris);
// populate the text fields
$('#remote-process-group-timeout').val(selectionData.component.communicationsTimeout);
$('#remote-process-group-yield-duration').val(selectionData.component.yieldDuration);
$('#remote-process-group-proxy-host').val(selectionData.component.proxyHost);
$('#remote-process-group-proxy-port').val(selectionData.component.proxyPort);
$('#remote-process-group-proxy-user').val(selectionData.component.proxyUser);
$('#remote-process-group-proxy-password').val(selectionData.component.proxyPassword);
$('#remote-process-group-local-network-interface').val(selectionData.component.localNetworkInterface);
// select the appropriate transport-protocol
$('#remote-process-group-transport-protocol-combo').combo('setSelectedOption', {
value: selectionData.component.transportProtocol
});
// show the details
$('#remote-process-group-configuration').modal('show');
}
}
};
}));