we can do cool stuff now like drag'n'drop instances

This commit is contained in:
Michael Becker 2025-01-12 23:29:16 -05:00
parent f20fa1f393
commit f81697dd1e
3 changed files with 73 additions and 8 deletions

View File

@ -22,6 +22,32 @@ function McxInstanceBrowser(parentElement)
this.NativeObject.setEditing(false); this.NativeObject.setEditing(false);
}); });
this.ParentElement.addEventListener("dragover", function (e) {
if (System.ClassList.Contains(this, "mcx-editable")) {
e.preventDefault();
}
var data = e.dataTransfer.getData("application/x-mocha-instance");
console.log(e);
console.log(data);
if (data == null)
{
e.preventDefault();
}
});
this.ParentElement.addEventListener("drop", function (e) {
e.preventDefault();
var data = e.dataTransfer.getData("application/x-mocha-instance");
if (data == null) return;
data = JSON.parse(data);
console.log(data);
var instanceKey = InstanceKey.parse(data.iid);
this.NativeObject.add(instanceKey, data.text, data.url);
});
this.setEditing = function(value) this.setEditing = function(value)
{ {
if (value) if (value)
@ -367,10 +393,30 @@ function McxInstanceBrowser(parentElement)
} }
}); });
this.add = function(instanceKey, title, url)
{
var strbps = this.HiddenElement.value;
var strbpa = strbps.split(",");
for (var i = 0; i < strbpa.length; i++)
{
if (strbpa[i] === instanceKey.toString())
{
Alert.show("The instance you selected has already been added", null, "uwt-alert-mini", 5000);
return;
}
}
strbpa.push(instanceKey.toString());
this.HiddenElement.value = strbpa.join(",");
var p = McxMoniker.create(instanceKey, title, url);
var li = document.createElement("li");
li.appendChild(p);
this.ListElement.appendChild(li);
};
this.removeAt = function(index) this.removeAt = function(index)
{ {
console.log(this.HiddenElement);
var strbps = this.HiddenElement.value; var strbps = this.HiddenElement.value;
var strbpa = strbps.split(","); var strbpa = strbps.split(",");
var strbpn = [ ]; var strbpn = [ ];

View File

@ -5,7 +5,7 @@ function InstanceKey()
this.toString = function() this.toString = function()
{ {
return this.ClassIndex + "$" + this.InstanceIndex; return this.ClassIndex.toString() + "$" + this.InstanceIndex.toString();
}; };
} }

View File

@ -34,6 +34,20 @@ function McxMoniker(parentElement)
this.PopupElement = this.ParentElement.children[2]; this.PopupElement = this.ParentElement.children[2];
} }
this.ParentElement.draggable = true;
this.LabelElement.draggable = false;
this.ButtonElement.draggable = false;
this.ParentElement.addEventListener("dragstart", function (e) {
console.log(this.McxNativeObject.ParentElement.getAttribute("data-instance-id") + "0" + this.McxNativeObject.LabelElement.innerText);
e.dataTransfer.setData("application/x-mocha-instance", JSON.stringify({
"url": this.McxNativeObject.LabelElement.tagName == "A" ? this.McxNativeObject.LabelElement.href : null,
"text": this.McxNativeObject.LabelElement.innerText,
"iid": this.McxNativeObject.ParentElement.getAttribute("data-instance-id")
}));
});
87
this.ParentElement.addEventListener("contextmenu", function(e) this.ParentElement.addEventListener("contextmenu", function(e)
{ {
var cm = new ContextMenu(); var cm = new ContextMenu();
@ -310,8 +324,13 @@ function McxMoniker(parentElement)
McxMoniker.create = function(instanceKey, title, viewTask) McxMoniker.create = function(instanceKey, title, viewTask)
{ {
if (typeof (instanceKey) === 'string')
{
instanceKey = InstanceKey.parse(instanceKey);
}
var div = document.createElement("div"); var div = document.createElement("div");
div.setAttribute("data-instance-id", instanceKey); div.setAttribute("data-instance-id", instanceKey.toString());
div.className = "mcx-moniker uwt-actionpreviewbutton apb-show-text apb-style-ellipsis"; div.className = "mcx-moniker uwt-actionpreviewbutton apb-show-text apb-style-ellipsis";
var img = document.createElement("img"); var img = document.createElement("img");
@ -320,7 +339,7 @@ McxMoniker.create = function(instanceKey, title, viewTask)
{ {
this.style.display="none"; this.style.display="none";
}); });
img.src = "/madi/asset/uic-assets/1.1.5/zq/icons/1$" + instanceKey.split("$")[0]; img.src = "/madi/asset/uic-assets/1.1.5/zq/icons/1$" + instanceKey.ClassIndex;
img.setAttribute("alt", ""); img.setAttribute("alt", "");
div.appendChild(img); div.appendChild(img);
@ -328,7 +347,7 @@ McxMoniker.create = function(instanceKey, title, viewTask)
if (viewTask != null) if (viewTask != null)
{ {
a.className = "apb-text"; a.className = "apb-text";
a.href = System.ExpandRelativePath("~/" + System.TenantName + "/d/inst/" + instanceKey + ".htmld"); a.href = System.ExpandRelativePath("~/" + System.TenantName + "/d/inst/" + instanceKey.toString() + ".htmld");
} }
else else
{ {
@ -346,7 +365,7 @@ McxMoniker.create = function(instanceKey, title, viewTask)
a = document.createElement("a"); a = document.createElement("a");
a.className = "apb-button"; a.className = "apb-button";
a.href = System.ExpandRelativePath("~/" + System.TenantName + "/d/inst/" + instanceKey + "/rel-tasks.htmld"); a.href = System.ExpandRelativePath("~/" + System.TenantName + "/d/inst/" + instanceKey.toString() + "/rel-tasks.htmld");
a.innerHTML = "&nbsp;"; a.innerHTML = "&nbsp;";
div.appendChild(a); div.appendChild(a);
@ -383,7 +402,7 @@ McxMoniker.create = function(instanceKey, title, viewTask)
var img = document.createElement("img"); var img = document.createElement("img");
img.className = "apb-icon"; img.className = "apb-icon";
img.src = "/madi/asset/uic-assets/1.1.5/zq/icons/1$" + instanceKey.split("$")[0]; img.src = "/madi/asset/uic-assets/1.1.5/zq/icons/1$" + instanceKey.ClassIndex;
img.setAttribute("alt", ""); img.setAttribute("alt", "");
h2.appendChild(img); h2.appendChild(img);