2023-10-31 11:47:27 -04:00

226 lines
5.9 KiB
JavaScript
Executable File

function Instance()
{
}
Instance.Get = function()
{
};
Instance.GetByInstanceID = function(instanceId, callback, userParm)
{
if (instanceId == null)
{
return null;
}
// var url = "http://127.0.0.1:8080/ccx/service/default/inst/" + classID + "$" + instanceID + ".htmld";
var url = "~/api/inst/" + instanceId;
var xhr = new XMLHttpRequest();
xhr.open("GET", System.ExpandRelativePath(url));
xhr.instanceId = instanceId;
xhr.onreadystatechange = function()
{
if (xhr.readyState === XMLHttpRequest.DONE)
{
var status = xhr.status;
if (status === 200)
{
// The request has been completed successfully
var json = JSON.parse(xhr.responseText);
callback(xhr.instanceId, json, userParm);
}
}
};
xhr.send(null);
};
function Clipboard()
{
}
Clipboard.SetText = function(text, parentElement)
{
if (typeof(parentElement) === 'undefined')
parentElement = document.body;
var dummy = document.createElement("input");
parentElement.appendChild(dummy);
dummy.style.opacity = "0";
dummy.type = "text";
dummy.value = text;
dummy.select();
dummy.focus();
document.execCommand("cut");
parentElement.removeChild(dummy);
dummy = null;
};
Instance.GetURL = function(instid)
{
return System.ExpandRelativePath("~/d/inst/" + instid + ".htmld");
};
Instance.ShowContextMenu = function(e, element, instid, text, isField)
{
// var instid = element.getAttribute("data-instance-id");
var menu = new ContextMenu();
if (isField)
{
menu.Items.push(new MenuItemCommand("ShowFieldProperties", "Show Field Properties", function(sender, e)
{
}));
menu.Items.push(new MenuItemCommand("ShowFieldEC", "Show Field EC", function(sender, e)
{
window.open(Instance.GetURL(instid));
// alert(odwParent.TextElement.href);
}));
}
else
{
menu.Items.push(new MenuItemCommand("SeeInNewTab", "See in New Tab", function(sender, e)
{
window.open(element.NativeObject.TextLink.href);
}));
menu.Items.push(new MenuItemCommand("CopyURL", "Copy URL", function(sender, e)
{
// alert(odwParent.TextElement.href);
}));
menu.Items.push(new MenuItemCommand("CopyText", "Copy Text", function(sender, e)
{
Clipboard.SetText(text, sender.parentElement);
}));
menu.Items.push(new MenuItemSeparator());
menu.Items.push(new MenuItemCommand("CopyInstanceID", "Copy Instance ID (" + instid + ")", function(sender, e)
{
Clipboard.SetText(instid, sender.parentElement);
}));
menu.Items.push(new MenuItemCommand("CopyTextAndInstanceID", "Copy Text and Instance ID", function(sender, e)
{
Clipboard.SetText(text + " (" + instid + ")", sender.parentElement);
}));
menu.Items.push(new MenuItemSeparator());
menu.Items.push(new MenuItemCommand("ModifyInstance", "Modify Instance (" + instid + ")", function(sender, e)
{
window.location.href = System.ExpandRelativePath("~/instances/modify/" + instid);
}));
menu.Items.push(new MenuItemCommand("ModifyInstanceInNewWindow", "Modify Instance in New Window", function(sender, e)
{
window.open(System.ExpandRelativePath("~/instances/modify/" + instid));
}));
menu.Items.push(new MenuItemSeparator());
menu.Items.push(new MenuItemCommand("SearchInstanceID", "Search Instance ID (" + instid + ")", function(sender, e)
{
}));
menu.Items.push(new MenuItemCommand("SearchInstanceIDInNewWindow", "Search Instance ID in New Window", function(sender, e)
{
}));
menu.Items.push(new MenuItemSeparator());
menu.Items.push(new MenuItemCommand("ViewPrintableVersion", "View Printable Version", function(sender, e)
{
}));
menu.Items.push(new MenuItemCommand("ExportToSpreadsheet", "Export to Spreadsheet", function(sender, e)
{
}));
if (System.ClassList.Contains(element, "uwt-actionpreviewbutton"))
{
menu.Items[0].Visible = true; // See In New Tab
menu.Items[1].Visible = true; // Copy URL
}
else
{
menu.Items[0].Visible = false; // See In New Tab
menu.Items[1].Visible = false; // Copy URL
}
menu.Items[13].Visible = false; // View Printable Version
menu.Items[14].Visible = false; // Export to Spreadsheet
/*
if (typeof(ZeroClipboard) === 'undefined' && typeof(ClipboardJS) == 'undefined')
{
console.warn("found neither ZeroClipboard nor ClipboardJS - cut/copy menu items will be unavailable");
menu.Items[1].Visible = false;
menu.Items[2].Visible = false;
menu.Items[3].Visible = false;
menu.Items[4].Visible = false;
menu.Items[5].Visible = false;
}
*/
}
menu.Show(e.clientX, e.clientY, element);
};
Instance.BuildContextMenu = function(elemParent)
{
var elem = elemParent;
var instid = elem.getAttribute("data-instance-id");
if (instid == "0$0") return;
var elemText = elemParent;
var elemIsTR = false;
if (elem.tagName == "TR")
{
elemIsTR = true;
elem = elemParent.children[0];
elemText = elem.children[0];
}
elem.instid = instid;
if (System.ClassList.Contains(elem, "uwt-actionpreviewbutton"))
{
// only affect the text and button
var elem1 = elem.children[0];
var elem2 = elem.children[1];
elem1.instid = elem.instid;
elem1.addEventListener("contextmenu", function(ee)
{
Instance.ShowContextMenu(ee, this.parentElement, this.instid, elemText.innerText, false);
ee.preventDefault();
ee.stopPropagation();
});
elem2.instid = elem.instid;
elem2.addEventListener("contextmenu", function(ee)
{
Instance.ShowContextMenu(ee, this.parentElement, this.instid, elemText.innerText, false);
ee.preventDefault();
ee.stopPropagation();
});
}
else
{
elem.addEventListener("contextmenu", function(ee)
{
Instance.ShowContextMenu(ee, this, this.instid, elemText.innerText, elemIsTR);
ee.preventDefault();
ee.stopPropagation();
});
}
};
window.addEventListener("load", function(e)
{
$('[data-instance-id]').each(function()
{
Instance.BuildContextMenu(this);
});
/*
$('.mcx-instancebrowser').each(function()
{
var ul = this.children[0];
for (var i = 0; i < ul.children.length; i++)
{
Instance.BuildContextMenu(ul.children[i].children[0]);
}
});
*/
});