source: Dev/trunk/src/client/util/docscripts/cheat/lib.js @ 483

Last change on this file since 483 was 483, checked in by hendrikvanantwerpen, 11 years ago

Added Dojo 1.9.3 release.

File size: 8.9 KB
Line 
1dojo.provide("util.docscripts.cheat.lib");
2dojo.require("util.docscripts.cheat.floatup");
3(function(){
4       
5        var api = util.docscripts.cheat.lib;
6        dojo.mixin(api, {
7
8                varmap:{
9                        // a map of things to prefix common things
10                        "dojo":"d.",
11                        "dojo.NodeList.prototype":"$('.nodes').",
12                        "dojo.keys":" ",
13                        "dojo.fx":"d.fx.",
14                        "dojo.fx.easing":"",
15                        "dijit._Widget.prototype":"_Widget.",
16                        "dijit._Templated.prototype":"_Templated.",
17                        "dijit.WidgetSet.prototype":"dijit.registry.",
18                        "dojo.Animation.prototype":"anim.",
19                        "dojo.Color.prototype":"color.",
20                        "dojo.xhrArgs":"args."
21                },
22
23                ignore:[
24                        // stuff to ignore:
25                        "keys", "NodeList", "fx", "prototype", "lib", /* AMD package module */
26                       
27                        // lifecycle stuff to hide
28                        "loaded", "unloaded", "loadInit", "windowUnloaded", "simulatedLoading", "floatup",
29                        "preamble", "WidgetSet", "registry", "inherited", "postscript",
30
31                        // dijit.WidgetSet
32                        "add", "remove",
33
34                        //
35                        "dijit", "form", "layout", "lang", "dir", "class",
36                        "declaredClass", "wai", "typematic", "popup",
37
38                        // dojo.Color
39                        "r","g","b","a"
40                ],
41
42                useful_privates:[
43                        "_Widget", "_Templated", "_toArray"
44                ],
45
46                tags: {
47                        dojo:{
48                                "Effects":[
49                                        "anim", "animateProperty", "fadeIn", "fadeOut", "animate", "fx.chain", "fx.combine",
50                                        "_Animation", "_Line", "Animation" /* _Animation deprecated in 1.4 */
51                                ],
52
53                                "Ajax":[
54                                        "xhr", "xhrGet", "xhrPost", "xhrPut", "xhrDelete", "rawXhrPut", "rawXhrPost", "contentHandlers"
55                                ],
56
57                                "Language-Helpers":[
58                                        "isArray", "isFunction", "isString", "isObject", "isArrayLike", "unique",
59                                        "eval", "isAlien", "trim", "Deferred", "_toArray", "replace", "when"
60                                ],
61
62                                "Arrays":[
63                                        "at", "forEach", "indexOf", "map", "concat", "some", "every", "lastIndexOf",
64                                        "qw", "filter", "splice", "slice", "end"
65                                ],
66
67                                "Event-System":[
68                                        "connect", "publish", "subscribe", "pub", "sub", "unsubscribe", "disconnect",
69                                        "fixEvent", "stopEvent", "connectPublisher", "isCopyKey", "mouseButtons", "on"
70                                ],
71
72                                "NodeList-Events":[
73                                        "onmousedown", "onmouseenter", "onmouseleave", "onmousemove", "onmouseover",
74                                         "onmouseout", "onblur",
75                                        "onfocus", "onclick", "onchange", "onload", "onmousedown", "onmouseup", "onsubmit",
76                                        "onerror", "onkeydown", "onkeypress", "onkeyup", "hover", "on"
77                                ],
78
79                                "NodeList-Misc":[
80                                        "first", "last", "end", "_stash"
81                                ],
82
83                                "Objects-OO":[
84                                        "mixin", "declare", "extend", "delegate", "hitch", "partial", "setObject",
85                                        "getObject", "exists", "instantiate", "safeMixin" /* ? */
86                                ],
87
88                                "Package-System":[
89                                        "require", "provide", "load", "requireLocalization", "requireIf", "dfdLoad",
90                                        "moduleUrl", "requireAfterIf", "registerModulePath", "platformRequire", "isAsync"
91                                ],
92
93                                "Document-Lifecycle":[
94                                        "addOnLoad", "addOnUnload", "addOnWindowUnload","loaded",
95                                        "unloaded", "loadInit",  "windowUnloaded", "ready"
96                                ],
97
98                                "DOM-Manipulation":[
99                                        "create", "wrap", "place", "byId", "query", "empty", "destroy", "generateId", "clone",
100                                        "body", "append", "appendTo", "addContent", "adopt", "orphan"
101                                ],
102
103                                "DOM-Attributes":[
104                                        "hasAttr", "removeAttr", "position", "getNodeProp",
105                                        "setSelectable", "isDescendant", "val", "attr", "coords", "marginBox", "contentBox"
106                                ],
107
108                                "Colors":[
109                                        "Color", "colorFromArray", "colorFromString", "blendColors", "colorFromRgb", "colorFromHex"
110                                ],
111
112                                "Styles-CSS":[
113                                        "style", "addClass", "removeClass", "toggleClass", "replaceClass", "hasClass", "getComputedStyle", "boxModel",
114                                        "show", "hide", "toggle", "hoverClass"
115                                ],
116
117                                "JSON":[
118                                        "fromJson", "toJson", "toJsonIndentStr", "formToObject", "queryToObject", "formToQuery",
119                                        "formToJson", "objectToQuery", "fieldToObject"
120                                ],
121
122                                "Miscellaneous":[
123                                        "experimental", "deprecated", "config", "version", "locale", "baseUrl"
124                                ],
125
126                                "Advanced-Scope":[
127                                        "conflict", "withDoc", "withGlobal", "setContext", "doc", "global"
128                                ],
129
130                                "Sniffing":[
131                                        "isBrowser", "isFF", "isKhtml", "isMoz", "isMozilla", "isIE", "isOpera", "isBrowser",
132                                        "isQuirks", "isWebKit", "isChrome", "isSafari", "isAIR", /* new 1.4 */ "isMac"
133                                ]
134                        },
135                       
136                        dijit:{
137                                "Widget-Development":[
138                                        "create", "postCreate","buildRendering","inherited",
139                                        "connect", "templateString", "templatePath", "widgetsInTemplate",
140                                        "dojoAttachEvent", "dojoAttachPoint", "disconnect", "postMixInProperties",
141                                        "attributeMap", "destroyRendering", "uninitialize", "_Widget", "_Templated"
142                                ],
143                                                               
144                                "Dijit-Attributes":[
145                                        "domNode", "srcNodeRef", "containerNode", "titleNode", "focusNode",
146                                        "style", "id", "title", "defaultDuration", "nodesWithKeyClick", "defaultDuration"
147                                ],
148                               
149                                "Widget-Access":[
150                                        "byId", "byNode", "getEnclosingWidget", "findWidgets"
151                                ],
152                               
153                                "Widget-Control":[
154                                        "placeAt", "attr", "toString", "destroy", "startup", "destroyRecursive",
155                                        "destroyDescendants", "getDescendants", "getChildren", "setAttribute",
156                                        "placeOnScreen", "placeOnScreenAroundNode", "placeOnScreenAroundRectangle",
157                                        "placeOnScreenAroundElement"
158                                ],
159                               
160                                "Widget-Events":[
161                                        "onClick", "onFocus", "onDblClick", "onKeyPress", "onMouseOver", "onBlur",
162                                        "onKeyDown", "onKeyUp", "onMouseEnter", "onMouseLeave", "onMouseOut", "onMouseMove",
163                                        "onMouseUp", "onMouseDown"
164                                ],
165                               
166                                "ARIA-A11y-i18n":[
167                                        "hasWaiRole", "getWaiRole", "setWaiRole", "hasWaiState", "removeWaiState",
168                                        "removeWaiRole", "getWaiState", "setWaiState", "waiRole", "waiState",
169                                        "isLeftToRight", "isFocusable", "getFocus", "isTabNavigable", "getFirstInTabbingOrder",
170                                        "getLastInTabbingOrder", "focus"
171                                ],
172                               
173                                "Dijit-Utils":[
174                                        "getUniqueId", "getDocumentWindow", "getViewport", "scrollIntoView", "BackgroundIframe",
175                                        "registerIframe", "moveToBookmark", "getBookmark", "isCollapsed", "placementRegistry",
176                                        "registerWin"
177                                ]
178                        }
179                },
180
181                getTag: function(key, part){
182                        part = part || "dojo";
183                        if(api.tags[part]){
184                                // summary: find the first matching function name in the tagMap
185                                for(var i in api.tags[part]){
186                                        if(dojo.indexOf(api.tags[part][i], key) >= 0){
187                                                return i;
188                                        }
189                                }
190                        }
191                        return "Unknown-Tag";
192                },
193
194                getUl: function(tag){
195                        // find the UL within a <div> with this tag's id, or make it.
196                        // return the UL node
197                        var n = dojo.byId(tag);
198                        if(!n){
199                                var x = dojo.place("<fieldset id='" +tag+ "'><div class='box'><legend align='center'>" + api._deslash(tag) + "</legend><ul></ul></div></fieldset>", "container");
200                                n = dojo.query("ul", x)[0];
201                        }
202                        return n;
203
204                },
205
206                getSig: function(key, member, fn){
207                        // makup up a function signature for this object
208                        if(!dojo.isFunction(fn)){
209//                              var t = (typeof fn).toLowerCase()
210//                              switch(t){
211//                                      case "boolean" :
212//                                      case "string" :
213//                                      case "array" :
214//                                      case "number" :
215//                                              member += "<span class='sig'> [" + t + "]</span>";
216//                                              break;
217//                                      case "object" :
218//                                              for(var i in fn){
219//                                                      console.log(i);
220//                                              }
221//                                              break;
222//                                      default:
223//                                              console.log(t);
224//                                              break;
225//                              }
226                                return key + member;
227                        }
228                        if(/^_?[A-Z]/.test(member)){
229                                key = "<span class='sig'>new</span> " + key;
230
231// FIXME: determine the actual signature for the a declaredclass?
232//                              if(fn.prototype._constructor){
233//                                      console.log(fn.prototype._constructor)
234//                              }
235                               
236                        }
237                        // FIXME: unwrap key (refactor all this) so we can link around it to API docs
238                        return key + member + "<span class='sig'>" + fn.toString().replace(/function\s+/, "").split(")")[0] + ")" + "</span>";
239                },
240
241                save: function(){
242                        dojo.xhrPost({
243                                url:"cheat.php",
244                                content: { body: dojo.body().innerHTML },
245                                load: function(response){
246                                        window.location.href = "./cheat.html";
247                                },
248                                error: function(er){
249                                        console.log("Error in saving:", er.responseText);
250                                }
251                        });
252                },
253
254                buildNav: function(){
255
256                        dojo.query("#container fieldset").forEach(function(n){
257
258                                var id = n.id;
259                                var mySize = dojo.query(n).query("li").length;
260
261                                dojo.place("<li><a href='#" + id + "'>" + api._deslash(id) + "</a> (" + mySize + ")</li>", "nav");
262
263                        //      console.log(mySize, n.id || n);
264
265                        }).addClass("dijitInline"); // .style("float","left");
266
267                },
268               
269                addIn: function(strsomething, fs, base){
270                        var d = dojo, something;
271                        if(d.isObject(strsomething)){
272                                // only self referencing single-objects
273                                something = strsomething[strsomething];
274                        }else if(dojo.exists(strsomething)){
275                                something = dojo.getObject(strsomething);
276                        }
277                        if(!something){ return; }
278                       
279                        var k = api.varmap[strsomething] || (strsomething + ".");
280                        for(var i in something){
281                                if( (!i.match(/^_/) || dojo.indexOf(api.useful_privates, i) >= 0) && dojo.indexOf(api.ignore, i) == -1 ){
282                                        var ul = fs || api.getUl(api.getTag(i, base));
283                                        dojo.place("<li>" + api.getSig(k, i, something[i]) + "</li>", ul);
284                                }
285                       
286                        }
287
288                },
289
290                _deslash: function(str){
291                        return str.replace(/-/g, " ");
292                },
293               
294                sortFields: function(id){
295                        dojo.query("#" + id).floatup();
296                },
297               
298                hasTag: function(tag){
299                        return window.location.href.indexOf(tag) >= 0;
300                }
301
302        });
303
304})();
Note: See TracBrowser for help on using the repository browser.