mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-07-24 17:32:15 +00:00
[ADF-2334] Added status icons and version index based on metadata (#2987)
* [ADF-2334] Added status icons to index page * [ADF-2334] Improved status icons * [ADF-2334] Added version index page * [ADF-2334] Fixed bad anchors in version index
This commit is contained in:
committed by
Eugenio Romano
parent
c915a79342
commit
ad3dbd4d0b
@@ -5,12 +5,8 @@ var program = require("commander");
|
||||
var remark = require("remark");
|
||||
var parse = require("remark-parse");
|
||||
var stringify = require("remark-stringify");
|
||||
var frontMatter = require("remark-frontmatter");
|
||||
|
||||
/*
|
||||
var managetoc = require("./managetoc");
|
||||
var sa = require("./seealso");
|
||||
var index = require("./index");
|
||||
*/
|
||||
|
||||
// "Aggregate" data collected over the whole file set.
|
||||
var aggData = {};
|
||||
@@ -21,11 +17,6 @@ var defaultFolder = path.resolve("..", "docs");
|
||||
|
||||
|
||||
function initPhase(aggData) {
|
||||
/*
|
||||
toolModules.seealso.initPhase(aggData);
|
||||
toolModules.index.initPhase(aggData);
|
||||
*/
|
||||
|
||||
toolList.forEach(toolName => {
|
||||
toolModules[toolName].initPhase(aggData);
|
||||
});
|
||||
@@ -37,16 +28,11 @@ function readPhase(srcFolder, filenames, aggData) {
|
||||
var pathname = path.resolve(srcFolder, filenames[i]);
|
||||
|
||||
var src = fs.readFileSync(pathname);
|
||||
var tree = remark().parse(src)
|
||||
var tree = remark().use(frontMatter, ["yaml"]).parse(src);
|
||||
|
||||
toolList.forEach(toolName => {
|
||||
toolModules[toolName].readPhase(tree, pathname, aggData);
|
||||
});
|
||||
|
||||
/*
|
||||
toolModules.seealso.readPhase(tree, pathname, aggData);
|
||||
toolModules.index.readPhase(tree, pathname, aggData);
|
||||
*/
|
||||
}
|
||||
|
||||
//console.log(JSON.stringify(aggData.mdFileData));
|
||||
@@ -57,11 +43,6 @@ function aggPhase(aggData) {
|
||||
toolList.forEach(toolName => {
|
||||
toolModules[toolName].aggPhase(aggData);
|
||||
});
|
||||
|
||||
/*
|
||||
toolModules.seealso.aggPhase(aggData);
|
||||
toolModules.index.aggPhase(aggData);
|
||||
*/
|
||||
}
|
||||
|
||||
|
||||
@@ -119,15 +100,7 @@ if (program.args.length === 0) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
var sourcePath;
|
||||
|
||||
|
||||
if (program.args.length > 0)
|
||||
sourcePath = path.resolve(program.args[0]);
|
||||
else
|
||||
sourcePath = defaultFolder;
|
||||
*/
|
||||
var sourcePath = path.resolve(program.args[0]);
|
||||
var sourceInfo = fs.statSync(sourcePath);
|
||||
|
||||
|
@@ -4,6 +4,7 @@ var path = require("path");
|
||||
var remark = require("remark");
|
||||
var stringify = require("remark-stringify");
|
||||
var zone = require("mdast-zone");
|
||||
var yaml = require("js-yaml");
|
||||
|
||||
var unist = require("../unistHelpers");
|
||||
var ngHelpers = require("../ngHelpers");
|
||||
@@ -29,11 +30,15 @@ var maxBriefDescLength = 180;
|
||||
|
||||
var adfLibNames = ["core", "content-services", "insights", "process-services"];
|
||||
|
||||
var deprecatedIconURL = "docassets/images/DeprecatedIcon.png";
|
||||
var experimentalIconURL = "docassets/images/ExperimentalIcon.png";
|
||||
|
||||
|
||||
function initPhase(aggData) {
|
||||
aggData.stoplist = makeStoplist(undocStoplistFileName);
|
||||
aggData.srcData = {};
|
||||
aggData.mdFileDesc = [];
|
||||
aggData.mdFileStatus = [];
|
||||
|
||||
searchLibraryRecursive(aggData.srcData, path.resolve(rootFolder));
|
||||
|
||||
@@ -49,8 +54,12 @@ function readPhase(tree, pathname, aggData) {
|
||||
var s;
|
||||
var briefDesc;
|
||||
|
||||
for (
|
||||
if (tree.children[0].type == "yaml")
|
||||
s = 1;
|
||||
else
|
||||
s = 0;
|
||||
|
||||
for (;
|
||||
(s < tree.children.length) && !unist.isParagraph(tree.children[s]);
|
||||
s++
|
||||
);
|
||||
@@ -60,6 +69,17 @@ function readPhase(tree, pathname, aggData) {
|
||||
}
|
||||
|
||||
aggData.mdFileDesc[itemName] = briefDesc;
|
||||
|
||||
if (tree.children[0].type == "yaml") {
|
||||
var metadata = yaml.load(tree.children[0].value);
|
||||
var status = metadata["Status"];
|
||||
|
||||
if (status) {
|
||||
var compName = path.basename(pathname, ".md");
|
||||
aggData.mdFileStatus[compName] = status;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
function aggPhase(aggData) {
|
||||
@@ -165,12 +185,18 @@ function prepareIndexSections(aggData) {
|
||||
|
||||
var displayName = ngHelpers.ngNameToDisplayName(itemName);
|
||||
|
||||
var status = "";
|
||||
|
||||
if (aggData.mdFileStatus[itemName])
|
||||
status = aggData.mdFileStatus[itemName];
|
||||
|
||||
if (briefDesc) {
|
||||
sections[libName][srcData.type].documented.push({
|
||||
"displayName": displayName,
|
||||
"mdName": itemName + ".md",
|
||||
"srcPath": srcData.path,
|
||||
"briefDesc": briefDesc
|
||||
"briefDesc": briefDesc,
|
||||
"status": status
|
||||
});
|
||||
} else if (!rejectItemViaStoplist(aggData.stoplist, itemName)) {
|
||||
sections[libName][srcData.type].undocumented.push({
|
||||
@@ -283,8 +309,20 @@ function makeMDDocumentedTableRow(docItem) {
|
||||
var srcFileLink = unist.makeLink(unist.makeText("Source"), "../lib/" + docItem.srcPath);
|
||||
var desc = docItem.briefDesc;
|
||||
|
||||
var linkCellItems = [mdFileLink];
|
||||
|
||||
if (docItem.status) {
|
||||
if (docItem.status === "Deprecated") {
|
||||
linkCellItems.push(unist.makeText(" "));
|
||||
linkCellItems.push(unist.makeImage(deprecatedIconURL, "Deprecated"));
|
||||
} else if (docItem.status === "Experimental") {
|
||||
linkCellItems.push(unist.makeText(" "));
|
||||
linkCellItems.push(unist.makeImage(experimentalIconURL, "Experimental"));
|
||||
}
|
||||
}
|
||||
|
||||
return unist.makeTableRow([
|
||||
unist.makeTableCell([mdFileLink]),
|
||||
unist.makeTableCell(linkCellItems),
|
||||
unist.makeTableCell([desc]),
|
||||
unist.makeTableCell([srcFileLink])
|
||||
]);
|
||||
|
121
lib/config/DocProcessor/tools/versionIndex.js
Normal file
121
lib/config/DocProcessor/tools/versionIndex.js
Normal file
@@ -0,0 +1,121 @@
|
||||
var fs = require("fs");
|
||||
var path = require("path");
|
||||
var yaml = require("js-yaml");
|
||||
|
||||
var remark = require("remark");
|
||||
var stringify = require("remark-stringify");
|
||||
var zone = require("mdast-zone");
|
||||
|
||||
var unist = require("../unistHelpers");
|
||||
var ngHelpers = require("../ngHelpers");
|
||||
|
||||
|
||||
module.exports = {
|
||||
"initPhase": initPhase,
|
||||
"readPhase": readPhase,
|
||||
"aggPhase": aggPhase,
|
||||
"updatePhase": updatePhase
|
||||
}
|
||||
|
||||
var angFilenameRegex = /([a-zA-Z0-9\-]+)\.((component)|(directive)|(model)|(pipe)|(service)|(widget))\.ts/;
|
||||
|
||||
var docsFolderPath = path.resolve("..", "docs");
|
||||
var histFilePath = path.resolve(docsFolderPath, "versionIndex.md");
|
||||
|
||||
var histSectionName = "history";
|
||||
var initialVersion = "v2.0.0";
|
||||
|
||||
function initPhase(aggData) {
|
||||
aggData.versions = { "v2.0.0":[] };
|
||||
}
|
||||
|
||||
|
||||
function readPhase(tree, pathname, aggData) {
|
||||
var compName = path.basename(pathname, ".md");
|
||||
var angNameRegex = /([a-zA-Z0-9\-]+)\.((component)|(directive)|(model)|(pipe)|(service)|(widget))/;
|
||||
|
||||
if (!compName.match(angNameRegex))
|
||||
return;
|
||||
|
||||
if (compName.match(/boilerplate/))
|
||||
return;
|
||||
|
||||
if (tree.children[0].type == "yaml") {
|
||||
var metadata = yaml.load(tree.children[0].value);
|
||||
var version = metadata["Added"];
|
||||
|
||||
if (version) {
|
||||
if (aggData.versions[version]) {
|
||||
aggData.versions[version].push(compName);
|
||||
} else {
|
||||
aggData.versions[version] = [compName];
|
||||
}
|
||||
} else {
|
||||
aggData.versions[initialVersion].push(compName);
|
||||
}
|
||||
} else {
|
||||
aggData.versions[initialVersion].push(compName);
|
||||
}
|
||||
}
|
||||
|
||||
function aggPhase(aggData) {
|
||||
var histFileText = fs.readFileSync(histFilePath, "utf8");
|
||||
var histFileTree = remark().parse(histFileText);
|
||||
|
||||
var keys = Object.keys(aggData.versions);
|
||||
keys.sort((a, b) => {
|
||||
if (a > b)
|
||||
return -1;
|
||||
else if (b > a)
|
||||
return 1;
|
||||
else
|
||||
return 0;
|
||||
});
|
||||
|
||||
var sections = [unist.makeHeading(unist.makeText("Versions"), 2)];
|
||||
|
||||
var vListItems = [];
|
||||
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var keyAnchor = keys[i].replace(/\./g, "");
|
||||
vListItems.push(unist.makeListItem(unist.makeLink(unist.makeText(keys[i]), `#${keyAnchor}`)));
|
||||
}
|
||||
|
||||
sections.push(unist.makeListUnordered(vListItems));
|
||||
|
||||
for (var i = 0; i < keys.length; i++) {
|
||||
var version = keys[i];
|
||||
var versionItems = aggData.versions[version];
|
||||
versionItems.sort();
|
||||
|
||||
var versListItems = [];
|
||||
|
||||
for (var v = 0; v < versionItems.length; v++) {
|
||||
var displayName = ngHelpers.ngNameToDisplayName(versionItems[v]);
|
||||
var pageLink = versionItems[v] + ".md";
|
||||
|
||||
versListItems.push(
|
||||
unist.makeListItem(
|
||||
unist.makeLink(unist.makeText(displayName), pageLink)
|
||||
)
|
||||
);
|
||||
}
|
||||
|
||||
sections.push(unist.makeHeading(unist.makeText(version), 2));
|
||||
sections.push(unist.makeListUnordered(versListItems));
|
||||
}
|
||||
|
||||
zone(histFileTree, histSectionName, (startComment, oldSection, endComment) => {
|
||||
sections.unshift(startComment);
|
||||
sections.push(endComment);
|
||||
return sections;
|
||||
});
|
||||
|
||||
//console.log(JSON.stringify(histFileTree));
|
||||
fs.writeFileSync(histFilePath, remark().stringify(histFileTree));
|
||||
}
|
||||
|
||||
|
||||
function updatePhase(tree, pathname, aggData) {
|
||||
return false;
|
||||
}
|
@@ -110,6 +110,14 @@ module.exports = {
|
||||
}
|
||||
},
|
||||
|
||||
makeImage: function (url, alt) {
|
||||
return {
|
||||
"type": "image",
|
||||
"url": url,
|
||||
"alt": alt
|
||||
}
|
||||
},
|
||||
|
||||
isHeading: function (node) {
|
||||
return node.type === "heading";
|
||||
},
|
||||
|
Reference in New Issue
Block a user