-
Notifications
You must be signed in to change notification settings - Fork 0
/
script.js
127 lines (112 loc) · 5.54 KB
/
script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
document.addEventListener('DOMContentLoaded', function() {
const toggleButton = document.getElementById('toggleButton');
const outputContainer = document.getElementById('outputContainer');
const jsonContent = document.getElementById('jsonContent');
const tabNavi = document.getElementById('tab-navi');
const tabContainer = document.getElementById('tabContainer');
toggleButton.addEventListener('click', function() {
outputContainer.classList.toggle('hidden');
if (!outputContainer.classList.contains('hidden')) {
fetchJSON();
}
});
async function readRelDefFolder(directory) {
const url = `https://api.github.com/repos/zhebinliu/infintura/git/trees/main`;
const list = await fetch(url).then(res => res.json());
const dir = list.tree.find(node => node.path === directory);
if (dir) {
const list = await fetch(dir.url).then(res => res.json());
return list.tree.map(node => node.path);
}
}
async function fetchJSON() {
fetch('sfdx-project.json')
.then(response => response.json())
.then(data => {
jsonContent.innerHTML = '<h3>Packages</h3>';
const tbl =document.createElement('table');
tbl.className = 'styled-table'
var header = tbl.createTHead();
var row = header.insertRow(0);
var cell1 = row.insertCell(0);
cell1.textContent = 'Package';
var cell2 = row.insertCell(1);
cell2.textContent = 'Domain';
data.packageDirectories.forEach((package)=> {
const tr = tbl.insertRow();
const td = tr.insertCell();
const td2 = tr.insertCell();
td.appendChild(document.createTextNode(`${package.package}`));
td2.id = `domain-${package.package}`;
});
jsonContent.appendChild(tbl);
const reldefs = readRelDefFolder('releasedefinitions');
tabNavi.innerHTML = ''
const fileArr = ['orde-cl.yml','orde-loan-servicing.yml']
for( const index in fileArr){
const filePath = fileArr[index];
const tabName = filePath.replace(/\.[^/.]+$/, "")
tabNavi.innerHTML += `<button class="tablinks" onclick="openYaml(event, '${tabName}')">${tabName}</button>`
tabContainer.innerHTML += `<div id="${tabName}" class="tabcontent"><pre id="${'tab-'+tabName}"></pre></div>`
const tempTabContent = document.getElementById('tab-'+tabName);
fetchReleaseDef('releasedefinitions/'+filePath, tabName);
}
})
.catch(error => {
console.error('Error fetching JSON:', error);
jsonContent.textContent = 'Error loading JSON.';
});
}
function fetchReleaseDef(ymlPath, container) {
fetch(ymlPath)
.then(response => response.text())
.then ( ymlData => {
console.log('file=>'+ymlPath)
container.textContent += ymlPath +'\n';
parseYML(ymlData, container);
})
.catch(error => {
console.error('Error fetching YML:', error);
xmlContent.textContent = 'Error loading YML from URL.';
});
}
function parseYML(ymlData, tabName) {
let container = document.getElementById('tab-'+tabName);
const parsedYAML = jsyaml.load(ymlData);
const includeOnlyArtifacts = parsedYAML.includeOnlyArtifacts;
console.log(includeOnlyArtifacts);
container.innerHTML = `<div>Total ${includeOnlyArtifacts.length} packages in this release definition file</div><button id=${tabName} type="button" onclick="createRelease(event,'${tabName}')">New Release</button>`
//console.log(includeOnlyArtifacts)
if (Array.isArray(includeOnlyArtifacts) && includeOnlyArtifacts.length > 0) {
includeOnlyArtifacts.forEach((package)=> {
container.innerHTML += `<div>${package}</div>`;
let domain = document.getElementById(`domain-${package}`);
domain.innerHTML += `[${tabName}]`;
});
console.log(container)
//xmlContent.innerHTML += `<ul>${includeOnlyArtifacts.map(name => `<li>${name}</li>`).join('')}</ul>`;
} else {
container.textContent = 'No packages found under includeOnlyArtifacts.';
}
}
});
function openYaml(evt, domain) {
// Declare all variables
var i, tabcontent, tablinks;
// Get all elements with class="tabcontent" and hide them
tabcontent = document.getElementsByClassName("tabcontent");
for (i = 0; i < tabcontent.length; i++) {
tabcontent[i].style.display = "none";
}
// Get all elements with class="tablinks" and remove the class "active"
tablinks = document.getElementsByClassName("tablinks");
for (i = 0; i < tablinks.length; i++) {
tablinks[i].className = tablinks[i].className.replace(" active", "");
}
// Show the current tab, and add an "active" class to the button that opened the tab
document.getElementById(domain).style.display = "block";
evt.currentTarget.className += " active";
}
function createRelease(evt, domain){
window.open(`https://github.com/zhebinliu/Infintura/issues/new?title=Create+release+for+${domain}&body=Describe+the+problem`, "_blank");
}