| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340 | 
							- var _hooking = 3,
 
-     _layoutRuns = []
 
-     _syncStatusCheck = function () {
 
-         _hooking--;
 
-     };
 
- Ext.require([
 
-         'Ext.perf.Monitor',
 
-         'Ext.perf.Accumulator'
 
-     ],
 
-     function(){
 
-         if (typeof _accumulatorCfg != 'undefined') {
 
-             Ext.Perf.setup(_accumulatorCfg);
 
-         }
 
-         _syncStatusCheck();
 
-     }
 
- )
 
- Ext.define('PageAnalyzer.hook.Context', function () {
 
-     function compareTriggers (a, b) {
 
-         if (a.value === undefined) {
 
-             if (b.value !== undefined) {
 
-                 return -1;
 
-             }
 
-         } else if (b.value === undefined) {
 
-             return 1;
 
-         }
 
-         return a.name < b.name ? -1 : (b.name < a.name ? 1 : 0);
 
-     }
 
-     function getLayoutName (layout) {
 
-         return layout.owner.id + '<' + layout.type + '>';
 
-     }
 
-     function getLayoutResults (me, layout, reported, orphan) {
 
-         var owner = layout.owner,
 
-             ownerContext = me.getCmp(owner),
 
-             sizeModel = ownerContext.sizeModel,
 
-             stats = me.layoutsById[layout.id],
 
-             results = {
 
-                 allDone: layout.done,
 
-                 done: layout.done,
 
-                 id: layout.id,
 
-                 type: layout.type,
 
-                 name: getLayoutName(layout),
 
-                 blocks: [],
 
-                 boxParent: ownerContext.boxParent ? ownerContext.boxParent.id : null,
 
-                 isBoxParent: ownerContext.isBoxParent,
 
-                 triggers: [],
 
-                 orphan: !!orphan,
 
-                 heightModel: ownerContext.heightModel.name,
 
-                 widthModel: ownerContext.widthModel.name,
 
-                 children: [],
 
-                 duration: stats ? stats.duration : 0,
 
-                 totalTime: stats ? stats.duration : 0,
 
-                 count: stats ? stats.count : 1
 
-             },
 
-             order = [false, true],
 
-             child, i;
 
-         reported[layout.id] = true;
 
-         if (results.heightModel != sizeModel.height.name) {
 
-             results.heightModel += ' (' + sizeModel.height.name + ')';
 
-         }
 
-         if (results.widthModel != sizeModel.width.name) {
 
-             results.widthModel += ' (' + sizeModel.width.name + ')';
 
-         }
 
-         Ext.Object.each(layout.blockedBy, function (t) {
 
-             results.blocks.push(t);
 
-         });
 
-         Ext.Object.each(me.triggersByLayoutId[layout.id], function (name, info) {
 
-             var item = info.item,
 
-                 dirty = item.dirty || false,
 
-                 prop = info.name,
 
-                 value = item.props[prop];
 
-             results.triggers.push({
 
-                 name: name,
 
-                 prop: prop,
 
-                 value: value,
 
-                 dirty: dirty && (prop in dirty),
 
-                 missing: value === undefined,
 
-                 setBy: (item.setBy && item.setBy[prop]) || '??'
 
-             });
 
-         });
 
-         results.blocks.sort();
 
-         results.triggers.sort(compareTriggers);
 
-         for (i = 0; i < 2; ++i) {
 
-             Ext.Object.each(me.layouts, function (id, childLayout) {
 
-                 if (childLayout.done === order[i] && childLayout.owner.ownerLayout === layout) {
 
-                     child = getLayoutResults(me, childLayout, reported);
 
-                     if (!child.allDone) {
 
-                         results.allDone = false;
 
-                     }
 
-                     results.totalTime += child.totalTime;
 
-                     results.children.push(child);
 
-                 }
 
-             });
 
-         }
 
-         return results;
 
-     }
 
-     function beforeRun (me) {
 
-         me.calcsByType = {};
 
-         me.numByType = {};
 
-         me.timesByType = {};
 
-         me.triggersByLayoutId = {};
 
-         me.layoutsById = {};
 
-         me.layoutsByType = {};
 
-         me.flushLayoutStats = {};
 
-         return {
 
-             startTime: Ext.perf.getTimestamp()
 
-         };
 
-     }
 
-     function afterRun (me, before, ok) {
 
-         var t2 = new Date(),
 
-             reported = {};
 
-         var data = {
 
-             duration: Ext.perf.getTimestamp() - before.startTime,
 
-             time: t2,
 
-             success: ok,
 
-             cycleCount: me.cycleCount,
 
-             flushCount: me.flushCount,
 
-             calcCount: me.calcCount,
 
-             orphans: 0,
 
-             layouts: [],
 
-             statsById: me.layoutsById,
 
-             statsByType: me.layoutsByType,
 
-             flushTime: me.flushTime,
 
-             flushInvalidateTime: me.flushInvalidateTime,
 
-             flushCount: me.flushCount,
 
-             flushInvalidateCount: me.flushInvalidateCount,
 
-             flushLayoutStats: me.flushLayoutStats
 
-         };
 
-         data.totalTime = data.duration;
 
-         Ext.Object.each(me.layouts, function (id, layout) {
 
-             if (me.items[layout.owner.el.id].isTopLevel) {
 
-                 data.layouts.push(getLayoutResults(me, layout, reported));
 
-             }
 
-         });
 
-         Ext.Object.each(me.layouts, function (id, layout) {
 
-             if (!reported[layout.id]) {
 
-                 ++data.orphans;
 
-                 data.layouts.push(getLayoutResults(me, layout, reported, true));
 
-             }
 
-         });
 
-         _layoutRuns.push(Ext.encode(data));
 
-     }
 
-     function beforeRunLayout (me) {
 
-         return {
 
-             startTime: Ext.perf.getTimestamp()
 
-         };
 
-     }
 
-     function afterRunLayout (me, layout, before) {
 
-         var id = layout.id,
 
-             type = layout.type,
 
-             duration =  Ext.perf.getTimestamp() - before.startTime,
 
-             typeMapping = me.layoutsByType[type] || (me.layoutsByType[type] = {
 
-                 duration: 0,
 
-                 layoutCount: 0,
 
-                 count: 0
 
-             }),
 
-             idMapping = me.layoutsById[id];
 
-         if(!idMapping) {
 
-             typeMapping.layoutCount++;
 
-             idMapping = me.layoutsById[id] = {
 
-                 duration: 0,
 
-                 count: 0
 
-             };
 
-         }
 
-         idMapping.duration += duration;
 
-         typeMapping.duration +=  duration;
 
-         idMapping.count++;
 
-         typeMapping.count++;
 
-     }
 
-     return {
 
-         override: 'Ext.layout.Context',
 
-         flushInvalidateTime: 0,
 
-         flushInvalidateCount: 0,
 
-         flushTime: 0,
 
-         flushCount: 0,
 
-         flush: function() {
 
-             var start = Ext.perf.getTimestamp();
 
-             this.callParent(arguments);
 
-             this.flushTime += Ext.perf.getTimestamp() - start;
 
-             this.flushCount++;
 
-         },
 
-         flushInvalidates: function() {
 
-             var start = Ext.perf.getTimestamp();
 
-             this.callParent(arguments);
 
-             this.flushInvalidateTime += Ext.perf.getTimestamp() - start;
 
-             this.flushInvalidateCount++;
 
-         },
 
-         flushLayouts: function (queueName, methodName, dontClear) {
 
-             var start = Ext.perf.getTimestamp(),
 
-                 stats = this.flushLayoutStats[methodName] ||
 
-                     (this.flushLayoutStats[methodName] = {
 
-                         count: 0,
 
-                         time: 0
 
-                     });
 
-             this.callParent(arguments);
 
-             stats.time += Ext.perf.getTimestamp() - start;
 
-             stats.count++;
 
-         },
 
-         run: function () {
 
-             var me = this,
 
-                 before = beforeRun(me),
 
-                 ok = me.callParent(arguments);
 
-             afterRun(me, before, ok);
 
-             return ok;
 
-         },
 
-         runLayout: function (layout) {
 
-             var me = this,
 
-                 before = beforeRunLayout(me);
 
-             me.callParent(arguments);
 
-             afterRunLayout(me, layout, before);
 
-         }
 
-     };
 
- }(), _syncStatusCheck);
 
- //-----------------------------------------------------------------------------
 
- Ext.define('PageAnalyzer.hook.ContextItem', function () {
 
-     function getLayoutName (layout) {
 
-         return layout.owner.id + '<' + layout.type + '>';
 
-     }
 
-     return {
 
-         override: 'Ext.layout.ContextItem',
 
-         addBlock: function (name, layout, propName) {
 
-             //Ext.log(this.id,'.',propName,' ',name,': ',getLayoutName(layout));
 
-             (layout.blockedBy || (layout.blockedBy = {}))[
 
-                 this.id+'.'+propName+(name.substring(0,3)=='dom' ? ':dom' : '')] = 1;
 
-             return this.callParent(arguments);
 
-         },
 
-         addBoxChild: function (boxChildItem) {
 
-             var ret = this.callParent(arguments),
 
-                 boxChildren = this.boxChildren,
 
-                 boxParents;
 
-             if (boxChildren && boxChildren.length == 1) {
 
-                 // the boxParent collection is created by the run override found in
 
-                 // Ext.diag.layout.Context, but IE sometimes does not load that override, so
 
-                 // we work around it for now
 
-                 boxParents = this.context.boxParents ||
 
-                             (this.context.boxParents = new Ext.util.MixedCollection());
 
-                 boxParents.add(this);
 
-             }
 
-             return ret;
 
-         },
 
-         addTrigger: function (propName, inDom) {
 
-             var layout = this.context.currentLayout,
 
-                 triggers;
 
-             this.callParent(arguments);
 
-             //Ext.log(this.id,'.',propName,' ',name = inDom ? ':dom' : '',' ',getLayoutName(layout));
 
-             triggers = this.context.triggersByLayoutId;
 
-             (triggers[layout.id] || (triggers[layout.id] = {}))[
 
-                 this.id+'.'+propName+(inDom ? ':dom' : '')] = {
 
-                     item: this,
 
-                     name: propName
 
-                 };
 
-         },
 
-         clearBlocks: function (name, propName) {
 
-             var collection = this[name],
 
-                 blockedLayouts = collection && collection[propName],
 
-                 key = this.id+'.'+propName+(name.substring(0,3)=='dom' ? ':dom' : ''),
 
-                 layout, layoutId;
 
-             if (blockedLayouts) {
 
-                 for (layoutId in blockedLayouts) {
 
-                     layout = blockedLayouts[layoutId];
 
-                     delete layout.blockedBy[key];
 
-                 }
 
-             }
 
-             return this.callParent(arguments);
 
-         },
 
-         setProp: function (propName, value, dirty) {
 
-             var me = this,
 
-                 layout = me.context.currentLayout,
 
-                 setBy = getLayoutName(layout),
 
-                 //fullName = me.id + '.' + propName,
 
-                 setByProps;
 
-             if (value !== null) {
 
-                 setByProps = me.setBy || (me.setBy = {});
 
-                 if (!setByProps[propName]) {
 
-                     setByProps[propName] = setBy;
 
-                 } else if (setByProps[propName] != setBy) {
 
-                     //Ext.log({level: 'warn'}, 'BAD! ', fullName, ' set by ', setByProps[propName], ' and ', setBy);
 
-                 }
 
-             }
 
-             if (typeof value != 'undefined' && !isNaN(value) && me.props[propName] !== value) {
 
-                 //Ext.log('set ', fullName, ' = ', value, ' (', dirty, ')');
 
-             }
 
-             return this.callParent(arguments);
 
-         }
 
-     };
 
- }(), _syncStatusCheck);
 
 
  |