Skip to content

Commit

Permalink
first commit
Browse files Browse the repository at this point in the history
  • Loading branch information
tengzhuang1 committed Aug 31, 2023
0 parents commit ac5efea
Show file tree
Hide file tree
Showing 9 changed files with 1,194 additions and 0 deletions.
3 changes: 3 additions & 0 deletions Imports/breadcrumbs.mf
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
<imports>
<package name="breadcrumbs" path="breadcrumbs\Import" />
</imports>
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
<AML>
<Item type="CommandBarButton" id="C72B97BF295F42339C4A610F3A3F741D" action="add">
<include_events>UpdateTearOffWindowState</include_events>
<on_init_handler type="Method"><Item type="Method" action="get" id="CFEF9E86E0904ABAB16FCE1AC65C1B33" /></on_init_handler>
<name>hl_itemview.breadcrumbs</name>
</Item>
</AML>
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
<AML>
<Item type="CommandBarSectionItem" id="B56AD83303E44157959FA6C0A4D51102" action="add">
<action>Add</action>
<related_id type="CommandBarButton">C72B97BF295F42339C4A610F3A3F741D</related_id>
<role type="Identity">
<Item type="Identity" action="get" select="id">
<name>World</name>
</Item>
</role>
<sort_order>512</sort_order>
<source_id type="CommandBarSection">ECB4E1CD4587418FBB415F577A8DD807</source_id>
</Item>
</AML>
200 changes: 200 additions & 0 deletions Imports/breadcrumbs/Import/Method/hl_Breadcrumbs_Init.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,200 @@
<AML>
<Item type="Method" action="add" id="64C288B4A2EB4C32ACEC0610115283BF">
<comments>HL : FAW369 : 面包屑导航</comments>
<execution_allowed_to type="Identity">
<Item type="Identity" action="get" select="id">
<name>World</name>
</Item>
</execution_allowed_to>
<method_code><![CDATA[//********************************************************
//新增日期:2022.06.07
//作者:tz
//应用对象:Method:hl_ItemView_Breadcrumbs_Init
//触发时机:Method中调用
//內容说明:生成面包屑导航菜单
//********************************************************
const mainWindow = aras.getMainWindow();
var winDoc;
var openerWin;
var breadOlEle;
try{
if(!arasTabsobj){return;}
const curTab=mainWindow.arasTabs.data.get(mainWindow.arasTabs.selectedTab);
winDoc=window.document;
openerWin=curTab.parentTab?mainWindow[curTab.parentTab]:undefined;
const titleBarControl = winDoc.querySelector("#top-toolbars .aras-titlebar");
const itemToolBar = titleBarControl.querySelector('.aras-toolbar');
const openerBreadcrumbs=openerWin?openerWin.document.querySelector('.htmleaf-container'):undefined;
let breadcrumbs=titleBarControl.querySelector('.htmleaf-container');
if(breadcrumbs){
breadcrumbs.querySelector('.current em a').innerText=aras.getKeyedNameEx(window.item);
return;
}else if(openerBreadcrumbs){
breadcrumbs=openerBreadcrumbs.cloneNode(true);
let olNode=breadcrumbs.querySelector('ol');
olNode.removeChild(olNode.querySelector('.current'));
titleBarControl.insertBefore(breadcrumbs, itemToolBar);
}else{
breadcrumbs = winDoc.createElement('div');
breadcrumbs.className = "htmleaf-container";
breadcrumbs.innerHTML = '<section><nav><ol class="cd-breadcrumb triangle custom-icons" id="breadOl"></ol></nav></section>';
let itemToolBar = titleBarControl.querySelector('.aras-toolbar');
titleBarControl.insertBefore(breadcrumbs, itemToolBar);
}
breadOlEle = breadcrumbs.querySelector("#breadOl");
if(openerWin){
addPathNode(openerWin.name,false);
}
addPathNode(window.name,true);
titleBarControl.style.height = "auto";
}catch{
}
mainWindow.openPreWindow = (aNodeId,currentWin) => {
if (!mainWindow) {
mainWindow = aras.getMainWindow();
}
let targetNode=currentWin.document.getElementById(aNodeId);
let winName = targetNode.name;
const preWnd = mainWindow[winName];
if (!preWnd) {
if(targetNode.isItemWindow){
const itemWin=findLastVersionWindow(targetNode);
if(!itemWin){
aras.getNotifyByContext(currentWin)("页面已关闭");
return;
}
winName=itemWin.name;
}else{
aras.getNotifyByContext(currentWin)("页面已关闭");
return;
}
}
let closeTabs=[currentWin.name];
while(targetNode.parentElement.nextSibling){
const nextNode=targetNode.parentElement.nextSibling.firstChild;
if(nextNode.tagName=="EM"){
break;
}
let nextWin=mainWindow[nextNode.name];
if(!nextWin){
if(nextNode.isItemWindow){
nextWin=findLastVersionWindow(nextNode);
if(nextWin){
closeTabs.push(nextWin.name);
}
}
}else{
closeTabs.push(nextWin.name);
}
targetNode=nextNode;
}
mainWindow.arasTabs.selectTab(winName);
//mainWindow.arasTabs.closeTabs(closeTabs).then((xxx)=>{
// mainWindow.arasTabs.selectTab(winName);
//});
};
function addPathNode(winName,isLastPath){
let pageName;
// let isItemWindow;
let breadIcon;
const openerWin = mainWindow[winName];
// if (openerWin.isItemsGrid) {
// pageName = "搜索";
// breadIcon = '../images/ExecuteSearch.svg';
// } else if (openerWin.isItemWindow) {
// pageName = aras.getKeyedNameEx(openerWin.item);
// breadIcon=getItemTypeIcon(openerWin.item,openerWin.itemTypeName);
// isItemWindow=true;
// } else if (openerWin.name.includes('page_Ans_Dashboard_UI')) {
// pageName = "看板";
// breadIcon = '../images/NodeView.svg';
// } else if (openerWin.name.includes('page_hl_Navigation')) {
// pageName = "导航";
// breadIcon = '../images/EBOM.svg';
// }else if(openerWin.ES){
// pageName = "全局搜索";
// breadIcon = '../images/Loupe.svg';
// }else if (openerWin?.windowType == "whereUsed") {
// pageName = "用于何处";
// breadIcon=getItemTypeIcon(aras.getItemById(openerWin.itemTypeName,openerWin.itemId),openerWin.itemTypeName);
// } else if (openerWin?.windowType == "structureBrowser") {
// pageName = "结构浏览";
// breadIcon=getItemTypeIcon(aras.getItemById(openerWin.itemTypeName,openerWin.itemId),openerWin.itemTypeName);
// }else if(openerWin?.SPDM?.FileExplorer){
// pageName = "文件管理";
// breadIcon = '../images/Help.svg';
// } else {
// pageName = "未知页面";
// breadIcon = '../images/Help.svg';
// }
const winTab=mainWindow.arasTabs.data.get(winName);
breadIcon=winTab.image;
pageName=winTab.label;
let newP = winDoc.createElement("li");
let aNode;
if (isLastPath) {
aNode = winDoc.createElement("em");
aNode.id=winName;
newP.className = "current";
} else {
aNode = winDoc.createElement("a");
aNode.id=winName;
aNode.href = `javascript:aras.getMainWindow().openPreWindow('${winName}',this);`;
aNode.name = winName;
if(openerWin.isItemWindow){
aNode.isItemWindow=true;
aNode.itemTypeName=openerWin.itemTypeName;
aNode.itemID=openerWin.itemID;
}
}
let spanNode = winDoc.createElement("span");
spanNode.style.backgroundImage = `url('${breadIcon}')`;
aNode.appendChild(spanNode);
let textNode = winDoc.createElement("a");
textNode.innerText=pageName;
aNode.appendChild(textNode);
newP.appendChild(aNode);
breadOlEle.appendChild(newP);
}
function findLastVersionWindow(targetNode){
const itemType = aras.getItemTypeForClient(targetNode.itemTypeName, 'name');
if(itemType.getProperty('is_versionable') == '1'){
const lastItem=mainWindow.aras.getItemLastVersion(targetNode.itemTypeName,targetNode.itemID);
// const itemWin=aras.uiFindAndSetFocusWindowEx(lastItem.getAttribute("id"));
const itemWin=aras.uiFindWindowEx(lastItem.getAttribute("id"));
return itemWin;
}
return null;
}
function getItemTypeIcon(currentItem, itName) {
let breadIcon;
const itemType = aras.getItemTypeForClient(itName, 'name');
if (typeof currentItem !== "undefined" && currentItem) {
breadIcon = breadIcon || aras.getItemProperty(currentItem, 'icon') || aras.getItemProperty(currentItem, 'image') || aras.getItemProperty(currentItem, 'open_icon') || aras.getItemProperty(currentItem, 'thumbnail');
}
breadIcon = breadIcon || itemType.getProperty('large_icon') || '../images/DefaultItemType.svg';
return breadIcon;
}]]></method_code>
<method_type>JavaScript</method_type>
<name>hl_Breadcrumbs_Init</name>
</Item>
</AML>
24 changes: 24 additions & 0 deletions Imports/breadcrumbs/Import/Method/hl_ItemView_Breadcrumbs_Init.xml
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
<AML>
<Item type="Method" action="add" id="CFEF9E86E0904ABAB16FCE1AC65C1B33">
<comments>HL : FAW369 : 面包屑导航</comments>
<execution_allowed_to type="Identity">
<Item type="Identity" action="get" select="id">
<name>World</name>
</Item>
</execution_allowed_to>
<method_code><![CDATA[//********************************************************
//新增日期:2022.06.07
//作者:tz
//应用对象:CommandBarButton:hl_itemview.breadcrumbs
//触发时机:Init Method
//內容说明:面包屑导航菜单加载事件
//********************************************************
aras.evalMethod("hl_Breadcrumbs_Init",undefined,undefined);
return {
type: 'text',
invisible: true
};]]></method_code>
<method_type>JavaScript</method_type>
<name>hl_ItemView_Breadcrumbs_Init</name>
</Item>
</AML>
Loading

0 comments on commit ac5efea

Please sign in to comment.