Files
graphonline/script/features/saved_graph_handler/index.js
T

109 lines
2.4 KiB
JavaScript

doInclude ([
include ("features/base_handler/index.js")
])
/**
* Save dialog Graph handler.
*
*/
function SavedDialogGraphHandler(app)
{
BaseHandler.apply(this, arguments);
this.message = "";
}
// inheritance.
SavedDialogGraphHandler.prototype = Object.create(BaseHandler.prototype);
// First selected.
SavedDialogGraphHandler.prototype.firstObject = null;
// Path
SavedDialogGraphHandler.prototype.pathObjects = null;
// Objects.
SavedDialogGraphHandler.prototype.objects = null;
SavedDialogGraphHandler.prototype.show = function(object)
{
this.app.SaveGraphOnDisk();
var dialogButtons = {};
dialogButtons[g_close] = function() {
$( this ).dialog( "close" );
};
document.getElementById('GraphName').value = "http://" + window.location.host + window.location.pathname +
"?graph=" + this.app.GetGraphName();
document.getElementById('GraphName').select();
var copyButton = document.getElementById('CopyGraphLink');
if (copyButton) {
copyButton.onclick = this.copyGraphLink.bind(this);
this.setCopyButtonIcon('bi bi-copy');
}
$( "#saveDialog" ).dialog({
resizable: false,
height: "auto",
width: "auto",
modal: true,
title: g_save_dialog,
buttons: dialogButtons,
dialogClass: 'EdgeDialog'
});
}
SavedDialogGraphHandler.prototype.copyGraphLink = function()
{
var graphInput = document.getElementById('GraphName');
if (!graphInput) {
return;
}
var text = graphInput.value;
if (!text) {
return;
}
var self = this;
if (navigator.clipboard && navigator.clipboard.writeText) {
navigator.clipboard.writeText(text).then(function() {
self.setCopyButtonIcon('bi bi-check2-square');
}, function() {
self.fallbackCopyText(text);
});
} else {
if (this.fallbackCopyText(text)) {
this.setCopyButtonIcon('bi bi-check2-square');
}
}
};
SavedDialogGraphHandler.prototype.fallbackCopyText = function(text)
{
var textarea = document.createElement('textarea');
textarea.value = text;
document.body.appendChild(textarea);
textarea.select();
var successful = false;
try {
successful = document.execCommand('copy');
} catch (err) {
successful = false;
}
document.body.removeChild(textarea);
if (successful) {
this.setCopyButtonIcon('bi bi-check2-square');
}
return successful;
};
SavedDialogGraphHandler.prototype.setCopyButtonIcon = function(iconClass)
{
var icon = document.querySelector('#CopyGraphLink span');
if (icon) {
icon.className = iconClass;
}
};