mirror of
https://github.com/OpenFOAM/ThirdParty-6.git
synced 2025-12-08 06:57:43 +00:00
ParaView-5.0.1: Added the source-tree to ThirdParty-dev and patched as described in the README file
Resolves bug-report http://bugs.openfoam.org/view.php?id=2098
This commit is contained in:
250
ParaView-5.0.1/VTK/Web/JavaScript/Lib/vtkweb.launcher.js
Normal file
250
ParaView-5.0.1/VTK/Web/JavaScript/Lib/vtkweb.launcher.js
Normal file
@ -0,0 +1,250 @@
|
||||
/**
|
||||
* vtkWeb JavaScript Library.
|
||||
*
|
||||
* This module allow the Web client to start a remote vtkWeb session and
|
||||
* retreive all the connection information needed to properly connect to that
|
||||
* newly created session.
|
||||
*
|
||||
* @class vtkWeb.launcher
|
||||
*
|
||||
* {@img paraview/ParaViewWeb-multiuser.png alt Focus on the communication between the client and the front-end that manage the vtkWeb processes}
|
||||
*/
|
||||
(function (GLOBAL, $) {
|
||||
|
||||
// Internal field used to store all connection objects
|
||||
var Connections = [], module = {}, console = GLOBAL.console;
|
||||
|
||||
function generateSecretKey() {
|
||||
var text = "";
|
||||
var possible = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
|
||||
|
||||
for( var i=0; i < 10; i++ )
|
||||
text += possible.charAt(Math.floor(Math.random() * possible.length));
|
||||
|
||||
return text;
|
||||
}
|
||||
|
||||
/**
|
||||
* @class vtkWeb.Connection
|
||||
* This class provides all the informations needed to connect to the session
|
||||
* manager web service.
|
||||
*/
|
||||
/**
|
||||
* @member vtkWeb.Connection
|
||||
* @property {String} sessionManagerURL
|
||||
* The service URL that will respond to the REST request to start or stop
|
||||
* a visualization session.
|
||||
*
|
||||
* MANDATORY
|
||||
*/
|
||||
/**
|
||||
* @member vtkWeb.Connection
|
||||
* @property {String} name
|
||||
* The name given for the visualization.
|
||||
*
|
||||
* RECOMMENDED/OPTIONAL
|
||||
*/
|
||||
/**
|
||||
* @member vtkWeb.Connection
|
||||
* @property {String} application
|
||||
* The name of the application that should be started on the server side.
|
||||
*
|
||||
* MANDATORY
|
||||
*/
|
||||
/**
|
||||
* @member vtkWeb.Connection
|
||||
* @property {String|Number} __Any_Name__
|
||||
* Any property that we want to provide to the session that will be created.
|
||||
* Such property is not necessary used by the session manager but will be
|
||||
* returned if a connection information is requested from a session.
|
||||
*
|
||||
* OPTIONAL
|
||||
*/
|
||||
/**
|
||||
* @member vtkWeb.Connection
|
||||
* @property {String} secret
|
||||
* Password that should be used to protect remote session access.
|
||||
*
|
||||
* This property is used by the launcher to secure the process that it start
|
||||
* but it is also used by the client to authenticate itself against
|
||||
* the remote process.
|
||||
*
|
||||
* This can be provided by the client or by the server depending who
|
||||
* generate it. In both case, the client will use it for its authentication.
|
||||
* If missing, then the client will use the default secret key.
|
||||
*
|
||||
* OPTIONAL
|
||||
*/
|
||||
/**
|
||||
* @member vtkWeb.Connection
|
||||
* @property {Number} generate-secret
|
||||
* Property used to specify where the generation of the secret key should be
|
||||
* made.
|
||||
* 0: We use the default secret key. (No dynamic one)
|
||||
* 1: The JavaScript client generate the key and its the responsability of
|
||||
* the server to provide the generated key to the vtkWeb process.
|
||||
* 2: The launcher process generate that key when it start the vtkWeb
|
||||
* process. That given secret key must be returned to the client within
|
||||
* the connection object.
|
||||
*
|
||||
* OPTIONAL
|
||||
*/
|
||||
|
||||
//=========================================================================
|
||||
|
||||
/**
|
||||
* @member vtkWeb.Connection
|
||||
* @property {String} sessionURL
|
||||
* The websocket URL that should be used to connect to the running
|
||||
* visualization session.
|
||||
* This field is provided within the response.
|
||||
*/
|
||||
/**
|
||||
* @member vtkWeb.Connection
|
||||
* @property {String} id
|
||||
* The session identifier.
|
||||
* This field is provided within the response.
|
||||
*/
|
||||
/**
|
||||
* @member vtkWeb.Connection
|
||||
* @property {vtkWeb.Session} session
|
||||
* The session object will be automatically added to the connection once the
|
||||
* connection is properly established by calling:
|
||||
*
|
||||
* vtkWeb.connect(connection, success, error);
|
||||
*
|
||||
* This field is provided within the response.
|
||||
*/
|
||||
//=========================================================================
|
||||
|
||||
/**
|
||||
* Start a new vtkWeb process on the server side.
|
||||
* This method will make a JSON POST request to config.sessionManagerURL URL.
|
||||
*
|
||||
* @member vtkWeb.launcher
|
||||
*
|
||||
* @param {vtkWeb.ConnectionConfig} config
|
||||
* Session creation parameters. (sessionManagerURL, name, application).
|
||||
*
|
||||
* @param {Function} successCallback
|
||||
* The function will be called once the connection is successfully performed.
|
||||
* The argument of the callback will be a {@link vtkWeb.Connection}.
|
||||
*
|
||||
* @param {Function} errorCallback
|
||||
* The function will be called if anything bad happened and an explanation
|
||||
* message will be provided as argument.
|
||||
*/
|
||||
function start(config, successFunction, errorFunction) {
|
||||
if(!config.hasOwnProperty("secret") && config.hasOwnProperty("generate-secret") && config["generate-secret"] === 1) {
|
||||
config.secret = generateSecretKey();
|
||||
}
|
||||
var okCallback = successFunction,
|
||||
koCallback = errorFunction,
|
||||
arg = {
|
||||
url: config.sessionManagerURL,
|
||||
type: "POST",
|
||||
dataType: "json",
|
||||
data: (JSON.stringify(config)),
|
||||
success: function (reply) {
|
||||
Connections.push(reply);
|
||||
if (okCallback) {
|
||||
okCallback(reply);
|
||||
}
|
||||
},
|
||||
error: function (errMsg) {
|
||||
if (koCallback) {
|
||||
koCallback(errMsg);
|
||||
}
|
||||
}
|
||||
};
|
||||
return $.ajax(arg);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Query the Session Manager in order to retreive connection informations
|
||||
* based on a session id.
|
||||
*
|
||||
* @member vtkWeb.launcher
|
||||
*
|
||||
* @param {String} sessionManagerURL
|
||||
* Same as ConnectionConfig.sessionManagerURL value.
|
||||
*
|
||||
* @param {String} sessionId
|
||||
* The unique identifier of a session.
|
||||
*
|
||||
* @return {vtkWeb.Connection} if the session is found.
|
||||
*/
|
||||
function fetchConnection(sessionManagerURL, sessionId) {
|
||||
var config = {
|
||||
url: sessionManagerURL + '/' + sessionId,
|
||||
dataType: "json"
|
||||
};
|
||||
return $.ajax(config);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stop a remote running visualization session.
|
||||
*
|
||||
* @member vtkWeb.launcher
|
||||
*
|
||||
* @param {vtkWeb.ConnectionConfig} connection
|
||||
*/
|
||||
function stop(connection) {
|
||||
var config = {
|
||||
url: connection.sessionManagerURL + "/" + connection.id,
|
||||
type: "DELETE",
|
||||
dataType: "json",
|
||||
success: function (reply) {
|
||||
console.log(reply);
|
||||
},
|
||||
error: function (errMsg) {
|
||||
console.log("Error while trying to close service");
|
||||
}
|
||||
};
|
||||
return $.ajax(config);
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Init vtkWeb module if needed
|
||||
// ----------------------------------------------------------------------
|
||||
if (GLOBAL.hasOwnProperty("vtkWeb")) {
|
||||
module = GLOBAL.vtkWeb || {};
|
||||
} else {
|
||||
GLOBAL.vtkWeb = module;
|
||||
}
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Export internal methods to the vtkWeb module
|
||||
// ----------------------------------------------------------------------
|
||||
module.start = function (config, successFunction, errorFunction) {
|
||||
return start(config, successFunction, errorFunction);
|
||||
};
|
||||
module.stop = function (connection) {
|
||||
return stop(connection);
|
||||
};
|
||||
module.fetchConnection = function (serviceUrl, sessionId) {
|
||||
return fetchConnection(serviceUrl, sessionId);
|
||||
};
|
||||
/**
|
||||
* Return all the session connections created in that JavaScript context.
|
||||
* @member vtkWeb.launcher
|
||||
* @return {vtkWeb.Connection[]}
|
||||
*/
|
||||
module.getConnections = function () {
|
||||
return Connections;
|
||||
};
|
||||
|
||||
// ----------------------------------------------------------------------
|
||||
// Local module registration
|
||||
// ----------------------------------------------------------------------
|
||||
try {
|
||||
// Tests for presence of jQuery, then registers this module
|
||||
if ($ !== undefined) {
|
||||
module.registerModule('vtkweb-launcher');
|
||||
}
|
||||
} catch(err) {
|
||||
console.error('jQuery is missing: ' + err.message);
|
||||
}
|
||||
|
||||
}(window, jQuery));
|
||||
Reference in New Issue
Block a user