UNPKG

dojo-util

Version:

Dojo utilities including build system for optimizing JavaScript application performance, and DOH testing tool

305 lines (248 loc) 9.11 kB
dojo.provide("util.docscripts.cheat.lib"); dojo.require("util.docscripts.cheat.floatup"); (function(){ var api = util.docscripts.cheat.lib; dojo.mixin(api, { varmap:{ // a map of things to prefix common things "dojo":"d.", "dojo.NodeList.prototype":"$('.nodes').", "dojo.keys":" ", "dojo.fx":"d.fx.", "dojo.fx.easing":"", "dijit._Widget.prototype":"_Widget.", "dijit._Templated.prototype":"_Templated.", "dijit.WidgetSet.prototype":"dijit.registry.", "dojo.Animation.prototype":"anim.", "dojo.Color.prototype":"color.", "dojo.xhrArgs":"args." }, ignore:[ // stuff to ignore: "keys", "NodeList", "fx", "prototype", "lib", /* AMD package module */ // lifecycle stuff to hide "loaded", "unloaded", "loadInit", "windowUnloaded", "simulatedLoading", "floatup", "preamble", "WidgetSet", "registry", "inherited", "postscript", // dijit.WidgetSet "add", "remove", // "dijit", "form", "layout", "lang", "dir", "class", "declaredClass", "wai", "typematic", "popup", // dojo.Color "r","g","b","a" ], useful_privates:[ "_Widget", "_Templated", "_toArray" ], tags: { dojo:{ "Effects":[ "anim", "animateProperty", "fadeIn", "fadeOut", "animate", "fx.chain", "fx.combine", "_Animation", "_Line", "Animation" /* _Animation deprecated in 1.4 */ ], "Ajax":[ "xhr", "xhrGet", "xhrPost", "xhrPut", "xhrDelete", "rawXhrPut", "rawXhrPost", "contentHandlers" ], "Language-Helpers":[ "isArray", "isFunction", "isString", "isObject", "isArrayLike", "unique", "eval", "isAlien", "trim", "Deferred", "_toArray", "replace", "when" ], "Arrays":[ "at", "forEach", "indexOf", "map", "concat", "some", "every", "lastIndexOf", "qw", "filter", "splice", "slice", "end" ], "Event-System":[ "connect", "publish", "subscribe", "pub", "sub", "unsubscribe", "disconnect", "fixEvent", "stopEvent", "connectPublisher", "isCopyKey", "mouseButtons", "on" ], "NodeList-Events":[ "onmousedown", "onmouseenter", "onmouseleave", "onmousemove", "onmouseover", "onmouseout", "onblur", "onfocus", "onclick", "onchange", "onload", "onmousedown", "onmouseup", "onsubmit", "onerror", "onkeydown", "onkeypress", "onkeyup", "hover", "on" ], "NodeList-Misc":[ "first", "last", "end", "_stash" ], "Objects-OO":[ "mixin", "declare", "extend", "delegate", "hitch", "partial", "setObject", "getObject", "exists", "instantiate", "safeMixin" /* ? */ ], "Package-System":[ "require", "provide", "load", "requireLocalization", "requireIf", "dfdLoad", "moduleUrl", "requireAfterIf", "registerModulePath", "platformRequire", "isAsync" ], "Document-Lifecycle":[ "addOnLoad", "addOnUnload", "addOnWindowUnload","loaded", "unloaded", "loadInit", "windowUnloaded", "ready" ], "DOM-Manipulation":[ "create", "wrap", "place", "byId", "query", "empty", "destroy", "generateId", "clone", "body", "append", "appendTo", "addContent", "adopt", "orphan" ], "DOM-Attributes":[ "hasAttr", "removeAttr", "position", "getNodeProp", "setSelectable", "isDescendant", "val", "attr", "coords", "marginBox", "contentBox" ], "Colors":[ "Color", "colorFromArray", "colorFromString", "blendColors", "colorFromRgb", "colorFromHex" ], "Styles-CSS":[ "style", "addClass", "removeClass", "toggleClass", "replaceClass", "hasClass", "getComputedStyle", "boxModel", "show", "hide", "toggle", "hoverClass" ], "JSON":[ "fromJson", "toJson", "toJsonIndentStr", "formToObject", "queryToObject", "formToQuery", "formToJson", "objectToQuery", "fieldToObject" ], "Miscellaneous":[ "experimental", "deprecated", "config", "version", "locale", "baseUrl" ], "Advanced-Scope":[ "conflict", "withDoc", "withGlobal", "setContext", "doc", "global" ], "Sniffing":[ "isBrowser", "isFF", "isKhtml", "isMoz", "isMozilla", "isIE", "isOpera", "isBrowser", "isQuirks", "isWebKit", "isChrome", "isSafari", "isAIR", /* new 1.4 */ "isMac" ] }, dijit:{ "Widget-Development":[ "create", "postCreate","buildRendering","inherited", "connect", "templateString", "templatePath", "widgetsInTemplate", "dojoAttachEvent", "dojoAttachPoint", "disconnect", "postMixInProperties", "attributeMap", "destroyRendering", "uninitialize", "_Widget", "_Templated" ], "Dijit-Attributes":[ "domNode", "srcNodeRef", "containerNode", "titleNode", "focusNode", "style", "id", "title", "defaultDuration", "nodesWithKeyClick", "defaultDuration" ], "Widget-Access":[ "byId", "byNode", "getEnclosingWidget", "findWidgets" ], "Widget-Control":[ "placeAt", "attr", "toString", "destroy", "startup", "destroyRecursive", "destroyDescendants", "getDescendants", "getChildren", "setAttribute", "placeOnScreen", "placeOnScreenAroundNode", "placeOnScreenAroundRectangle", "placeOnScreenAroundElement" ], "Widget-Events":[ "onClick", "onFocus", "onDblClick", "onKeyPress", "onMouseOver", "onBlur", "onKeyDown", "onKeyUp", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseMove", "onMouseUp", "onMouseDown" ], "ARIA-A11y-i18n":[ "hasWaiRole", "getWaiRole", "setWaiRole", "hasWaiState", "removeWaiState", "removeWaiRole", "getWaiState", "setWaiState", "waiRole", "waiState", "isLeftToRight", "isFocusable", "getFocus", "isTabNavigable", "getFirstInTabbingOrder", "getLastInTabbingOrder", "focus" ], "Dijit-Utils":[ "getUniqueId", "getDocumentWindow", "getViewport", "scrollIntoView", "BackgroundIframe", "registerIframe", "moveToBookmark", "getBookmark", "isCollapsed", "placementRegistry", "registerWin" ] } }, getTag: function(key, part){ part = part || "dojo"; if(api.tags[part]){ // summary: find the first matching function name in the tagMap for(var i in api.tags[part]){ if(dojo.indexOf(api.tags[part][i], key) >= 0){ return i; } } } return "Unknown-Tag"; }, getUl: function(tag){ // find the UL within a <div> with this tag's id, or make it. // return the UL node var n = dojo.byId(tag); if(!n){ var x = dojo.place("<fieldset id='" +tag+ "'><div class='box'><legend align='center'>" + api._deslash(tag) + "</legend><ul></ul></div></fieldset>", "container"); n = dojo.query("ul", x)[0]; } return n; }, getSig: function(key, member, fn){ // makup up a function signature for this object if(!dojo.isFunction(fn)){ // var t = (typeof fn).toLowerCase() // switch(t){ // case "boolean" : // case "string" : // case "array" : // case "number" : // member += "<span class='sig'> [" + t + "]</span>"; // break; // case "object" : // for(var i in fn){ // console.log(i); // } // break; // default: // console.log(t); // break; // } return key + member; } if(/^_?[A-Z]/.test(member)){ key = "<span class='sig'>new</span> " + key; // FIXME: determine the actual signature for the a declaredclass? // if(fn.prototype._constructor){ // console.log(fn.prototype._constructor) // } } // FIXME: unwrap key (refactor all this) so we can link around it to API docs return key + member + "<span class='sig'>" + fn.toString().replace(/function\s+/, "").split(")")[0] + ")" + "</span>"; }, save: function(){ dojo.xhrPost({ url:"cheat.php", content: { body: dojo.body().innerHTML }, load: function(response){ window.location.href = "./cheat.html"; }, error: function(er){ console.log("Error in saving:", er.responseText); } }); }, buildNav: function(){ dojo.query("#container fieldset").forEach(function(n){ var id = n.id; var mySize = dojo.query(n).query("li").length; dojo.place("<li><a href='#" + id + "'>" + api._deslash(id) + "</a> (" + mySize + ")</li>", "nav"); // console.log(mySize, n.id || n); }).addClass("dijitInline"); // .style("float","left"); }, addIn: function(strsomething, fs, base){ var d = dojo, something; if(d.isObject(strsomething)){ // only self referencing single-objects something = strsomething[strsomething]; }else if(dojo.exists(strsomething)){ something = dojo.getObject(strsomething); } if(!something){ return; } var k = api.varmap[strsomething] || (strsomething + "."); for(var i in something){ if( (!i.match(/^_/) || dojo.indexOf(api.useful_privates, i) >= 0) && dojo.indexOf(api.ignore, i) == -1 ){ var ul = fs || api.getUl(api.getTag(i, base)); dojo.place("<li>" + api.getSig(k, i, something[i]) + "</li>", ul); } } }, _deslash: function(str){ return str.replace(/-/g, " "); }, sortFields: function(id){ dojo.query("#" + id).floatup(); }, hasTag: function(tag){ return window.location.href.indexOf(tag) >= 0; } }); })();