Talk:OpenLayers Class Diagrams
Graphics were produced with mediawiki-graphviz-extension. Unfortunately this is not installed in this wiki.
To create a wiki-Page with graphviz I used the following html-page in Chrome. It creates the wiki-page in an textarea.
<html>
<head>
<title>OpenLayers Example</title>
<script src="http://openlayers.org/api/OpenLayers.js"></script>
<script type="text/javascript">
function printOpenLayersHierarchy() {
var classes = {};
appendClass(OpenLayers,classes,5);
var partitions = split2Partitions(classes);
for (var v in partitions) {
if (partitions[v] && partitions[v].length>1) {
print(partitions[v],classes,v);
}
}
}
function split2Partitions(classes) {
var result = {};
for (cn in classes) {
var baseClass = getBaseClass(cn,classes);
if (baseClass) {
if (!result[baseClass]) {
result[baseClass]=[];
}
result[baseClass].push(cn);
}
}
return result;
}
function getBaseClass(cn,classes) {
var result = cn;
while (classes[result]) {
result = classes[result];
}
return result;
}
function print(sorted,classes,name) {
var s = "=" + name + "=\n"+
"<graphviz>\n"+
"DIGRAPH " + name.replace(/\./g, "_") + "{\n" +
'rankdir="RL";\n'+
"node[shape=rectangle]\n";
sorted.sort();
for (var i=0; i < sorted.length; i++) {
var cn = sorted[i];
var superClass = classes[cn];
s += "\""+cn+"\"";
if (superClass) {
s += "->" + "\""+superClass+"\"";
}
s += "\n";
}
s +="}\n";
s +="</graphviz>";
document.getElementById("aTextArea").value= document.getElementById("aTextArea").value + "\n" + s;
}
function appendClass(aClass,classes,searchDepth) {
if (searchDepth>0) {
for (var v in aClass) {
var aClass2 = aClass[v];
if (aClass2 ) {
appendClass(aClass2,classes,searchDepth-1);
}
}
}
if (aClass.prototype && aClass.prototype.CLASS_NAME) {
var className = aClass.prototype.CLASS_NAME;
if (!classes[className]) {
var superclass = null;
if (aClass.prototype && aClass.prototype.__proto__ && aClass.prototype.__proto__.CLASS_NAME) {
superclass = aClass.prototype.__proto__.CLASS_NAME;
}
classes[className] = superclass;
}
}
}
</script>
</head>
<body onload="printOpenLayersHierarchy()">
<form name="aForm">
<textarea name="aTextArea" id="aTextArea" style="width:100%; height:100%" > </textarea>
</form>
</body>
</html>
User:Benedikt 20:46, 15 September 2012
Belongs on an OpenLayers website
This seems quite in-depth into the workings of OpenLayers, so would normally expect to be found on the OpenLayers website(s) rather than on this OpenStreetMap wiki. Not that it's doing any harm here, I just think we could find a better home for it.
I see there's already some class diagrams here on osgeo trac
Nowadays there's a git repo ver OL v3, also with a wiki attached. These diagrams must be from an earlier version though
-- Harry Wood (talk) 16:36, 11 March 2015 (UTC)