Files
graphonline/script/features/show_incidence_matrix/index.js

85 lines
2.1 KiB
JavaScript

doInclude ([
include ("features/base_handler/index.js")
])
/**
* Save/Load graph from Incidence matrix.
*
*/
function ShowIncidenceMatrix(app)
{
BaseHandler.apply(this, arguments);
this.message = "";
}
// inheritance.
ShowIncidenceMatrix.prototype = Object.create(BaseHandler.prototype);
// First selected.
ShowIncidenceMatrix.prototype.firstObject = null;
// Path
ShowIncidenceMatrix.prototype.pathObjects = null;
ShowIncidenceMatrix.prototype.show = function()
{
var handler = this;
var dialogButtons = {};
$('#IncidenceMatrixField').unbind();
$( "#IncidenceMatrixField" ).on('keyup change', function (eventObject)
{
if (!handler.app.TestIncidenceMatrix($( "#IncidenceMatrixField" ).val(), [], []))
{
$( "#BadIncidenceMatrixFormatMessage" ).show();
}
else
{
$( "#BadIncidenceMatrixFormatMessage" ).hide();
}
});
dialogButtons[g_save] = function() {
handler.app.PushToStack("IncidenceMatrixChanged");
handler.app.SetIncidenceMatrixSmart($( "#IncidenceMatrixField" ).val());
$( this ).dialog( "close" );
};
dialogButtons[g_cancel] = function() {
$( this ).dialog( "close" );
};
let ta = $("#IncidenceMatrixField");
let sideWrap = $("#incidenceMatrix_side_text");
ta.on("scroll", function() {
sideWrap.scrollTop(ta.scrollTop());
});
$( "#IncidenceMatrixField" ).val(this.app.GetIncidenceMatrix().trimEnd());
ta.focus()[0].setSelectionRange(0, 0);
$( "#BadIncidenceMatrixFormatMessage" ).hide();
/* Make side and top text */
let sideText = "";
for (let i = 0; i < this.app.graph.vertices.length; i++)
{
/* Each vertex name max 3 symbols */
sideText += this.app.graph.vertices[i].mainText.toString().slice(0, 3) + "\n";
}
$("#incidenceMatrix_side_text_text").html(sideText + "\n");
$( "#incidenceMatrix" ).dialog({
resizable: false,
height: "auto",
width: "auto",
modal: true,
title: g_incidenceMatrixText,
buttons: dialogButtons,
dialogClass: 'EdgeDialog',
open: function(event, ui) {
/* Set width for side text */
$("#incidenceMatrix_top_text").width(ta.width());
$("#BadIncidenceMatrixFormatMessage").width(ta.width());
}
});
}