Add to docfx.json:
"template": [
"statictoc",
"templates/material",
"templates/custom_template" <---
]
Create folder: templates/custom_template
Add to folder this file ManagedReference.extension.js:
| exports.preTransform = function (model) { | |
| transformItem(model, 1); | |
| return model; | |
| function transformItem(item, level) { | |
| var log = "====================================================\n"; | |
| var isAssembly = item.parent == null && item.assemblies.indexOf(item.uid) !== -1; | |
| var shared = item.__global._shared[item._tocKey]; | |
| var items = shared.items; | |
| var temp_items = []; | |
| var rootNamespaces = getAllRootNamespaces(items); | |
| var assemblies = getCommonParts(rootNamespaces); | |
| temp_items = getItemsForAssemblies(assemblies); | |
| log += JSON.stringify(temp_items) + "\n"; | |
| //log += JSON.stringify(item.assemblies) + "\n"; | |
| for (var i = 0; i < temp_items.length; i++) | |
| { | |
| // TODO YP: aggregate items by assemblies | |
| } | |
| shared.items = temp_items; | |
| log += JSON.stringify(model) + "\n"; | |
| log += "===================================================="; | |
| console.log(log); | |
| } | |
| function findAssemblyWithName(items, name) | |
| { | |
| for (var i = 0; i < items.length; i++) | |
| { | |
| if (items[i].name === name) | |
| { | |
| return i; | |
| } | |
| } | |
| return -1; | |
| } | |
| function getItemsForAssemblies(assemblies) | |
| { | |
| var tmp = []; | |
| for (var i = 0; i < assemblies.length; i++) | |
| { | |
| var assemblyName = assemblies[i]; | |
| tmp.push({ | |
| "name": assemblyName, | |
| "href": assemblyName + ".html", | |
| "topicHref": assemblyName + ".html", | |
| "topicUid": assemblyName, | |
| "items": [] | |
| }); | |
| } | |
| return tmp; | |
| } | |
| function getAllRootNamespaces(items) | |
| { | |
| var tmp = []; | |
| for (var i = 0; i < items.length; i++) | |
| { | |
| tmp.push(items[i].name); | |
| } | |
| return tmp; | |
| } | |
| function getCommonParts(namespaces) | |
| { | |
| var commonParts = []; | |
| var xtoolkit = "Softeq.XToolkit."; | |
| for (var i = 0; i < namespaces.length; i++) | |
| { | |
| var cuttedName = namespaces[i].replace(xtoolkit, ""); | |
| var nameParts = cuttedName.split("."); | |
| if (nameParts.length === 1) | |
| { | |
| commonParts.push(namespaces[i]); | |
| } | |
| else | |
| { | |
| aggregateForPlatform("iOS"); | |
| aggregateForPlatform("Droid"); | |
| } | |
| } | |
| function aggregateForPlatform(platform) | |
| { | |
| var platformIndex = nameParts.indexOf(platform); | |
| if (platformIndex === -1) | |
| { | |
| return; | |
| } | |
| var platformNamespace = xtoolkit + nameParts[platformIndex - 1] + "." + platform; | |
| if (commonParts.indexOf(platformNamespace) === -1) | |
| { | |
| commonParts.push(platformNamespace); | |
| } | |
| } | |
| return commonParts; | |
| } | |
| } |