Oleg Sh 43a4b44a22 Change script location.
Split js code.
Added cache and changed loading mechanism for js sources.
2023-11-06 19:16:50 +02:00

101 lines
2.5 KiB
JavaScript

/**
* Find Eulerian Loop.
*
*/
function MaxClique(graph, app)
{
BaseAlgorithmEx.apply(this, arguments);
this.message = g_processing;
this.selectedObjects = [];
}
// inheritance.
MaxClique.prototype = Object.create(BaseAlgorithmEx.prototype);
MaxClique.prototype.getName = function(local)
{
return g_MaxClique;
}
MaxClique.prototype.getId = function()
{
return "OlegSh.MaxClique";
}
// @return message for user.
MaxClique.prototype.getMessage = function(local)
{
return this.message;
}
MaxClique.prototype.result = function(resultCallback)
{
this.outResultCallback = function (result ) { resultCallback(result); };
self = this;
this.CalculateAlgorithm("mc", [], function (pathObjects, properties, results)
{
self.resultCallback(pathObjects, properties, results);
});
return true;
}
MaxClique.prototype.resultCallback = function(pathObjects, properties, results)
{
result = results.length > 0 && results[0].value > 0 && results[0].type == 1;
var outputResult = {};
outputResult["version"] = 1;
console.log("properties");
console.log(properties);
console.log("results");
console.log(results);
console.log("pathObjects");
console.log(pathObjects);
this.message = result > 0 ? "" : g_MaxCliqueNotFound;
if (result > 0)
{
let size = results[0].value;
this.message = g_MaxCliqueSizeIs + size;
this.selectedObjects = [];
this.message = this.message + g_MaxCliqueContains;
var vertexIndex = 0;
for (var i = 0; i < pathObjects.length; i++)
{
let object = pathObjects[i];
if (object instanceof BaseVertex) {
this.message = this.message + object.mainText + ((vertexIndex < size - 1) ? ", " : ".");
vertexIndex++;
}
this.selectedObjects[object.id] = 1;
}
}
this.outResultCallback(outputResult);
}
MaxClique.prototype.getObjectSelectedGroup = function(object)
{
return (object.id in this.selectedObjects) ? this.selectedObjects[object.id] : 0;
}
MaxClique.prototype.getPriority = function()
{
return -5;
}
function CreateMaxClique(graph, app)
{
return new MaxClique(graph, app)
}
// Gerister connected component.
RegisterAlgorithm (CreateMaxClique);