UNPKG

tia

Version:

Time is All (logs driven test engine with ExtJs support)

1,307 lines (1,098 loc) 36.8 kB
// jscs:ignore (function setExplorationMode() { 'use strict'; var standardXTypesList = [ 'textarea', 'checkbox', 'colormenu', 'treelist', 'multiselector-search', 'calendar-list', 'treepanel', 'celleditor', 'calendar-form-edit', 'd3-heatmap', 'polar', 'image', 'menu', 'radiogroup', 'multiselect', 'sparklineline', 'hidden', 'calendar-day', 'desktop', 'tbspacer', 'treecolumn', 'trigger', 'colorbutton', 'sliderwidget', 'slidertip', 'd3-partition', 'colorpickerslideralpha', 'colorpickerslidervalue', 'tip', 'templatecolumn', 'pivotconfigcontainer', 'sparkline', 'sparklinepie', 'segmentedbutton', 'filefield', 'pivotconfigfield', 'calendar-dayview', 'tabpanel', 'textfield', 'calendar-weekview', 'treelistitem', 'rating', 'gmappanel', 'tbitem', 'gridview', 'textareafield', 'widget', 'calendar-daysview', 'imagecomponent', 'timepicker', 'actioncolumn', 'pivotheatmap', 'datemenu', 'monthpicker', 'chart', 'datepicker', 'sparklinebullet', 'wallpaper', 'sparklinebar', 'rownumberer', 'colorpickersliderhue', 'calendar-daysheader', 'progress', 'fileuploadfield', 'tagfield', 'pickerfield', 'gridcolumn', 'd3-horizontal-tree', 'video', 'eventrecordermanager', 'menuseparator', 'sparklinetristate', 'toast', 'hiddenfield', 'combobox', 'timefield', 'colorpicker', 'calendar-weeks', 'container', 'splitbutton', 'tab', 'numberfield', 'itemselector', 'roweditor', 'tabbar', 'messagebox', 'numbercolumn', 'splitter', 'button', 'calendar-weeksheader', 'searchfield', 'tbfill', 'sliderfield', 'tbseparator', 'booleancolumn', 'toolbar', 'propertygrid', 'pivotgrid', 'gauge', 'menubar', 'calendar-month', 'd3-sunburst', 'combo', 'multiselectfield', 'trayclock', 'radio', 'pivotconfigpanel', 'progressbar', 'header', 'component', 'roweditorbuttons', 'triggerfield', 'form', 'colorpickercolormap', 'treeview', 'editor', 'draw', 'pivottreemap', 'filebutton', 'colorpickerslider', 'tablepanel', 'datecolumn', 'cycle', 'colorselector', 'displayfield', 'explorer', 'htmleditor', 'd3', 'fieldset', 'calendar-days', 'dataview', 'tbtext', 'loadmask', 'd3-canvas', 'slider', 'legend', 'taskbar', 'spinnerfield', 'dashboard-panel', 'sparklinediscrete', 'tool', 'breadcrumb', 'box', 'title', 'label', 'multiselector', 'colorpickercolorpreview', 'window', 'calendar-event', 'calendar-week', 'surface', 'axis', 'dashboard-column', 'axis3d', 'progressbarwidget', 'treepicker', 'fieldcontainer', 'd3-svg', 'uxiframe', 'calendar-calendar-picker', 'multislider', 'pivotd3container', 'd3-treemap', 'menucheckitem', 'flash', 'columnsplitter', 'calendar-weeksview', 'panel', 'headercontainer', 'checkboxgroup', 'd3-pack', 'dashboard', 'gridpanel', 'colorfield', 'datefield', 'itemselectorfield', 'cartesian', 'grid', 'radiofield', 'tableview', 'checkcolumn', 'tooltip', 'calendar-multiview', 'viewport', 'field', 'sparklinebox', 'bordersplitter', 'calendar', 'widgetcolumn', 'calendar-form-add', 'statusbar', 'mzpivotgrid', 'pagingtoolbar', 'd3-tree', 'boundlist', 'menuitem', 'interaction', 'checkboxfield', 'spacefilling', 'quicktip', 'buttongroup', 'chartnavigator', 'calendar-monthview', 'colorpickerslidersaturation', ]; var autoGenRE = /-\d{4}/; console.log('TIA: setEBrExplore'); window.tiaEJExp = { consts: { bigSep: '====================================================================', hugeSep: '==============================================================================================', avgSep: '======================', smallSep: '--------------------------', tinySep: '------------', nA: 'N/A', }, supportedXTypes: [ 'button', 'checkbox', 'combobox', 'component', 'tab', 'tabpanel', 'textfield', 'tableview', 'treeview', 'boundlist', 'gridcolumn', 'form', ], // xtypeToTiaApi: { // tableview: 'table', // treeview: 'tree', // }, // // convertXTypeToTiaApi: function (xtype) { // return this.xtypeToTiaApi[xtype] || xtype; // }, getFirstSupportedAscendant: function getFirstSupportedAscendant(xtypes) { var arr = xtypes.split('/'); for (var i = arr.length; i >= 0; i--) { var xtype = arr[i]; if (this.supportedXTypes.includes(xtype)) { return xtype; } } throw new Error(xtypes + ' not supported'); }, getCompHierarchy: function getCompHierarchy(comp, indent, parentsPath) { var resArr = []; if (!indent) { indent = ''; } if (!parentsPath) { parentsPath = ''; } var parent = comp.getId(); if (!tiaEJ.ctByObj.isCompVisible(comp)) { return []; } resArr.push(indent + this.consts.bigSep); resArr.push(indent + 'Parents: ' + parentsPath); resArr = resArr.concat(this.getComponentInfo(comp).map(function (str) { return indent + str; })); if (comp.isContainer) { resArr.push(indent + this.consts.hugeSep); resArr.push('Container children:'); var cnt = comp.items.getCount(); for (var i = 0; i < cnt; i++) { var child = comp.items.get(i); if (!tiaEJ.ctByObj.isCompVisible(child)) { continue; } resArr.push(indent + '*|' + 'child ' + i + '/' + cnt + ' for cmp: ' + parent); resArr = resArr.concat(this.getCompHierarchy(child, indent + '*|', parentsPath + '/' + parent)); } resArr.push(indent + this.consts.hugeSep); } return resArr; }, showCompHierarchy: function showCompHierarchy(onlyVisible) { var mainView = tiaEJ.getMainView(); var outArr = this.getCompHierarchy(mainView, onlyVisible); tiaEJ.showMsgBox(outArr.join('\n'), 'Components hierarchy'); }, /** * Returns array with strings about controller. It is for caller to join them or to add indent to each. * @param controller * @returns {Array} */ getControllerInfo: function getControllerInfo(controller, msg) { var res = ['++++++++++', 'CONTROLLER INFO (' + msg + '):', ]; if (!controller) { res.push('N/A'); return res; } var modelStr = ''; var refsObj = controller.getReferences(); var refsStr = Ext.Object.getKeys(refsObj).join(', '); var routesObj = controller.getRoutes(); var routesStr = Ext.Object.getKeys(routesObj).join(', '); // TODO: getStore ?? или это есть во ViewModel? var viewModel = controller.getViewModel(); if (viewModel) { modelStr += 'viewModel.$className: ' + viewModel.$className; } var view = controller.getView(); var viewStr = ''; if (view) { viewStr += 'view.$className: ' + view.$className + ', getConfig("xtype"): ' + view.getConfig('xtype') + ' ' + this.formGetIdStr(view, '18px'); var itemId = view.getConfig('itemId'); if (!autoGenRE.test(itemId)) { viewStr += ', itemId: ' + itemId; } var reference = view.getConfig('reference'); if (reference) { viewStr += ', reference: ' + reference; } } this.pushTextProp(controller, 'alias', res); return res.concat([ 'controller: isViewController: ' + controller.isViewController, 'clName: ' + controller.$className, 'getId(): ' + controller.getId(), 'getReferences(): ' + refsStr, 'routes: ' + routesStr, modelStr, viewStr, '++++++++++', ]); }, getStoreContent: function getStoreContent(store) { var storeInfoArr = [ this.consts.tinySep, 'Store Info:', ]; if (store) { storeInfoArr.push('Store $className: ' + store.$className); storeInfoArr = storeInfoArr.concat(tiaEJ.ctMisc.stringifyStore(store, false, true)); } else { storeInfoArr.push('N/A'); } storeInfoArr.push(this.consts.tinySep); return storeInfoArr; }, /** * Returns array of strings with info about form field. * @param field */ getFormFieldInfo: function getFormFieldInfo(field) { var formFieldArr = [ this.consts.avgSep, 'Form Field Info: ', ]; var name = field.getName() || ''; if (!Boolean(autoGenRE.test(name))) { formFieldArr.push('getName(): ' + this.boldIf(name, name, 'darkgreen')); } tia.cU.dumpObj(field, [ 'getValue()', 'getRawValue()', 'getSubmitValue()', 'getModelData()', 'getSubmitData()', 'getInputId()', 'initialConfig.inputType', 'initialConfig.boxLabel', 'boxLabel', 'inputType', 'getFieldLabel()', 'getActiveError()', 'getErrors()', ], formFieldArr); var store; if (field.isPickerField) { var pickerComp = field.getPicker(); formFieldArr = formFieldArr.concat([ this.consts.tinySep, 'Picker field info:']); tia.cU.dumpObj(pickerComp, ['$className'], formFieldArr); tia.cU.dumpObj(field, [ 'getConfig().displayField', 'initialConfig.hiddenName', ], formFieldArr); formFieldArr.push(this.consts.tinySep); if (field.getStore) { store = field.getStore(); formFieldArr = formFieldArr.concat(this.getStoreContent(store)); } } else if (field.displayField) { formFieldArr = formFieldArr.concat([ this.consts.tinySep, 'Form field containing "displayField" info:']); tia.cU.dumpObj(field, ['$className'], formFieldArr); tia.cU.dumpObj(field, [ 'getConfig().displayField', 'initialConfig.hiddenName', ], formFieldArr); formFieldArr.push(this.consts.tinySep); if (field.getStore) { store = field.getStore(); formFieldArr = formFieldArr.concat(this.getStoreContent(store)); } } formFieldArr.push(this.consts.avgSep); return formFieldArr; }, getRefHolderInfo: function getRefHolderInfo(comp) { var refHolder = comp.lookupReferenceHolder(true); var res = [ this.consts.avgSep, 'lookupReferenceHolder() info: ']; if (refHolder) { tia.cU.dumpObj(refHolder, [ 'isComponent', '$className', { path: 'getConfig()', args: [['xtype']] }, ], res, tia.cU.dumpObjErrMode.omitStringIfUndefined); res.push('getReferences(): ' + Object.keys(refHolder.getReferences()).join(', ')); } if (refHolder.isViewController) { res = res.concat(this.getControllerInfo(refHolder, 'reference holder')); } res.push(this.consts.avgSep); return res; }, boldIf: function (str, cond, color, size) { str = str.replace(/\&/g, '&amp;'); color = color || 'black'; size = size || '16px'; if (cond) { return '<b style="font-size: ' + size + '; font-weight: 900; color:' + color + ';">' + str + '</b>'; } return str; }, boldGreen: function (str) { return '<b style="font-size: 20px; font-weight: 900; color:green;">' + str + '</b>'; }, boldRed: function (str) { return '<b style="font-size: 20px; font-weight: 900; color:red;">' + str + '</b>'; }, boldBlack: function (str) { return '<b style="font-size: 20px; font-weight: 900; color:black;">' + str + '</b>'; }, boldYellow: function (str) { return '<b style="font-size: 20px; font-weight: 900; color:gold">' + str + '</b>'; }, // formGetIdStr: function (comp, size) { // size = size || '20px'; // return 'getId(): ' + this.boldIf(comp.getId(), !comp.autoGenId, 'green', size) + // (comp.autoGenId ? ' (autogenerated)' : '') + (comp.isPanel ? this.boldIf(' (panel)', true, 'darkblue'): '') // }, formGetIdStr: function (comp, size) { size = size || '20px'; return 'getId(): ' + this.boldIf(comp.getId(), !comp.autoGenId, 'green', size) + (comp.autoGenId ? ' (autogenerated)' : '') + (comp.isPanel ? this.boldIf(' (panel)', true, 'darkblue'): ''); }, capitalizeFirst: function (str) { return str.charAt(0).toUpperCase() + str.substr(1); }, pushVal: function (val, prop, outArr) { var textStr = prop + ': ' + val; var localeKeys = tiaEJ.getLocKeysByText(val); var extraLocaleKeys = tiaEJ.getLocKeysByText(val, true); outArr.push(textStr + ', Locale Keys: ' + localeKeys + ', Extra locale Keys: ' + extraLocaleKeys); }, pushTextProp: function (comp, prop, outArr) { var getterName = 'get' + this.capitalizeFirst(prop); var val = comp.getConfig(prop); if (val) { this.pushVal(val, prop, outArr); return; } val = comp[prop]; if (val) { this.pushVal(val, prop, outArr); return; } if (comp[getterName]) { val = comp[getterName](); if (val) { this.pushVal(val, comp[getterName] + '()', outArr); return; } } }, replaceToLocKeys: function replaceToLocKeys(propVal) { var localeKeys = tiaEJ.getLocKeysByText(propVal); if (localeKeys) { propVal = 'l"' + localeKeys + '"'; } else { localeKeys = tiaEJ.getLocKeysByText(propVal, true); if (localeKeys) { propVal = 'el"' + localeKeys + '"'; } propVal = '"' + propVal + '"'; } return propVal; }, getComponentSearchString: function getComponentSearchString(comp, xtypePriority) { if (!comp) { return 'PARENT-NOT-FOUND'; // throw new Error('getComponentSearchString: !comp'); } var xtypeToTiaInterface = { checkbox: 'Checkbox', }; var id = comp.getId(); var autoGenId = comp.autoGenId || (Boolean(autoGenRE.test(id))); var fakeId; if (!autoGenId) { return '#' + id; } else { fakeId = tiaEJ.idMap.getFakeId(id); id = null; if (fakeId) { return '##' + fakeId; } } var xtype = comp.getConfig('xtype'); if (xtype === 'celleditor') { return xtype; } xtype = xtype.replace(/\./g, '\\.'); var isXTypeCustom = !standardXTypesList.includes(xtype); var customXTypeCmpCount = 0; if (isXTypeCustom) { var cmps = Ext.ComponentQuery.query(xtype); customXTypeCmpCount = cmps.length; } if (xtypePriority) { if (customXTypeCmpCount === 1) { return xtype; } } var parentComp = null; var reference = comp.getConfig('reference'); if (reference) { var rh = comp.lookupReferenceHolder(true); parentComp = rh.isViewController ? rh.getView() : rh; return this.getComponentSearchString(parentComp, xtypePriority) + ' &' + reference; } if (comp.isMenu) { return xtype; } parentComp = comp.up(); function getChildSep(selector) { if (!parentComp) { return ' '; } if (!parentComp.child) { return ' '; } return Boolean(parentComp.child(selector)) ? ' > ' : ' '; } var curSelector = null; var curChildSep = ''; var itemId = comp.getConfig('itemId'); itemId = autoGenRE.test(itemId) ? null : itemId; if (itemId) { curSelector = xtype + '#' + itemId; curChildSep = getChildSep(curSelector); return this.getComponentSearchString(parentComp, xtypePriority) + curChildSep + curSelector; } var boxLabel = comp.boxLabel; if (boxLabel) { curSelector = xtype + '[boxLabel="' + boxLabel + '"]'; curChildSep = getChildSep(curSelector); return this.getComponentSearchString(parentComp, xtypePriority) + curChildSep + curSelector; } var name = comp.name; // TODO: getName if (name && (!Boolean(autoGenRE.test(name)))) { curSelector = xtype + '[name=' + name + ']'; curChildSep = getChildSep(curSelector); return this.getComponentSearchString(parentComp, xtypePriority) + curChildSep + curSelector; } if (customXTypeCmpCount === 1) { return xtype; } var compProps = [ 'text', 'title', 'fieldLabel', 'tooltip', ]; for (var propIndex = 0; propIndex < compProps.length; propIndex++) { var propName = compProps[propIndex]; var propVal = comp[propName]; if (propVal && !(typeof propVal === 'object')) { // For header title, title is object. curChildSep = getChildSep(curSelector); propVal = this.replaceToLocKeys(propVal); curSelector = xtype + '[' + propName + '=' + propVal + ']'; if (!parentComp/* && (xtype === 'window' || xtype === 'messagebox')*/) { return xtype + '[' + propName + '=' + propVal + ']'; } else { return this.getComponentSearchString(parentComp, xtypePriority) + curChildSep + xtype + '[' + propName + '=' + propVal + ']'; } } } if (!parentComp) { return xtype; } curChildSep = getChildSep(xtype); return this.getComponentSearchString(parentComp, xtypePriority) + curChildSep + xtype; }, dumpStoreData: function dumpStoreData(store, dataIndexes, outArr) { dataIndexes = dataIndexes.slice(); var count = store.getCount(); var totalCount = store.getTotalCount(); var model = store.getModel(); var modelName = model.getName(); var idProperty = model.idProperty; if (false) { dataIndexes.unshift(idProperty); } outArr.push('Store info: class: ' + store.$className + ', count: ' + count + ', totalCount: ' + totalCount + ', modelName: ' + modelName + ', idProperty: ' + idProperty); var data = store.getData(); var printColName = false; var i; for (i = 0; i < count; i++) { var row = data.getAt(i); var arr = []; // TODO: padding. dataIndexes.forEach(function (dataIndex) { arr.push((printColName ? (dataIndex + ': ') : '') + row.get(dataIndex)); }); outArr.push(arr.join(', ')); } }, dumpTreeStoreData: function dumpTreeStoreData(store, dataIndexes, outArr) { dataIndexes = dataIndexes.slice(); var node = store.getRoot(); var rootVisible = store.getRootVisible(); var model = store.getModel(); var modelName = model.getName(); var idProperty = model.idProperty; outArr.push('Store info: class: ' + store.$className + ', modelName: ' + modelName + ', idProperty: ' + idProperty); if (false) { dataIndexes.unshift(idProperty); } // var data = store.getData(); // var printColName = false; // // var i; // for (i = 0; i < count; i++) { // var row = data.getAt(i); // var arr = []; // // TODO: padding. // dataIndexes.forEach(function (dataIndex) { // arr.push((printColName ? (dataIndex + ': ') : '') + row.get(dataIndex)); // }); // resArr.push(arr.join(', ')); // } }, getTableInfo: function getTableInfo(comp) { if (!comp.isTableView) { return []; // TODO: пока только для таблиц. } var panel = comp.ownerGrid; window.p = panel; // TODO: remove me. var resArr = []; resArr.push(this.consts.avgSep); resArr.push('Columns info:'); var visColumns = panel.getVisibleColumns(); var dataIndexes = []; visColumns.forEach(function (col) { var innerCount = col.getColumnCount(); innerCount = innerCount ? ('innerColsCount: ' + innerCount) : ''; var dataIndex = col.dataIndex; // eslint-disable-next-line eqeqeq if (dataIndex != null) { dataIndexes.push(dataIndex); } // TODO: хорошо бы выдавать уникальность. Но не все гриды юзают модели. resArr.push('text/tooltip: ' + col.text + '/' + col.tooltip + ', dataIndex: ' + tiaEJExp.boldIf(dataIndex || '' , true) + innerCount); }); var store = comp.getStore(); if (!store) { return resArr; } resArr.push(this.consts.smallSep); if ((store.isTreeStore)) { this.dumpTreeStoreData(store, dataIndexes, resArr); } else if (store.$className === 'Ext.data.Store') { this.dumpStoreData(store, dataIndexes, resArr); } else { resArr.push('Unsupported store: ' + store.$className); } return resArr; }, addRowInfo: function addRowInfo(extDomEl, comp, outArr) { var self = this; outArr.push(this.consts.smallSep); outArr.push('Row/cell info: '); // var xtype = comp.getConfig('xtype'); // outArr.push('xtype: ' + xtype); var item; var m; var val; if (comp.isXType('boundlist') /* xtype === 'boundlist' */) { outArr.push('displayField: ' + comp.displayField); // row only. item = extDomEl.findParent(comp.itemSelector, 10, true); if (!item) { outArr.push('Mouse is not on some row'); return; } var index = item.getAttribute('data-recordindex'); m = comp.getStore().getAt(index); val = m.get(comp.displayField); val = this.replaceToLocKeys(val); outArr.push('value: ' + this.boldBlack(val)); // console.dir(item); } else if (comp.isXType('tableview')) { // outArr.push('displayField: ' + comp.displayField); // row only. var cellDom = extDomEl.findParent(comp.getCellSelector(), 15, true); window.cellDom = cellDom; console.log('cellSelector: ' + comp.getCellSelector()); console.log('cellDom:'); console.dir(cellDom); var s = comp.getStore(); var grouped = s.isGrouped(); var rowDom = extDomEl.findParent(comp.getItemSelector(), 15, true); window.rowDom = rowDom; console.log('itemSelector: ' + comp.getItemSelector()); console.log('rowDom:'); console.dir(rowDom); if (grouped) { console.log('Table is grouped'); var groupRootUnderMouse = rowDom.dom.querySelector('.' + tiaEJ.selectors.tableGroupTitleClass); if (groupRootUnderMouse) { outArr.push( 'GroupName: ' + self.boldBlack(groupRootUnderMouse.innerText) + ', Locale Keys: ' + self.boldBlack(tiaEJExp.replaceToLocKeys(groupRootUnderMouse.innerText)) ); } } var panel = comp.ownerGrid; var visColumns = panel.getVisibleColumns(); var dataIndex = null; visColumns.some(function (col) { var cellSelector = comp.getCellSelector(col); console.log('cellSelector: ' + cellSelector); var tmpDom = extDomEl.findParent(cellSelector, 15, true); if (tmpDom) { // Найден нужный столбец. dataIndex = col.dataIndex; console.log('column Found', col.text, col.tooltip, col.dataIndex); outArr.push('text/tooltip: ' + tiaEJExp.boldBlack( tiaEJExp.replaceToLocKeys(col.text) + ' / ' + tiaEJExp.replaceToLocKeys(col.tooltip)) ); return true; } }); if (!dataIndex) { console.log('Element under mouse has not any parents corresponding to cellSelector, so no column found.'); outArr.push(self.boldYellow('No cell is found.')); } var intId = rowDom.getAttribute('data-recordid'); // var intIndex = rowDom.getAttribute('data-recordindex'); m = s.getByInternalId(intId); if (!m) { console.log('No model is found in store.'); outArr.push(self.boldYellow('No model is found in store by internal id: ' + intId)); } else { console.log('Found model by internalId: ' + intId); window.model1 = m; if (dataIndex) { val = m.get(dataIndex); if (typeof val === 'undefined') { outArr.push(self.boldYellow('Cell dataIndex does not equal to column\'s dataIndex.')); var content = cellDom.dom.textContent; var data = m.getData(); var keys = Object.keys(data).filter(function (key) { return (typeof data[key] === 'string') && data[key] && (content.indexOf(data[key]) !== -1); }); keys.forEach(function (key) { outArr.push( 'fieldName: ' + self.boldBlack(key) ); outArr.push( 'value: ' + self.boldBlack(self.replaceToLocKeys(data[key])) ); }); } else { outArr.push( 'fieldName: ' + self.boldBlack(dataIndex) ); outArr.push( 'value: ' + self.boldBlack(self.replaceToLocKeys(val)) ); } } else { if (!grouped) { console.error('Table is not grouped, can not find locator for row'); outArr.push(self.boldRed('Can not find locator for row.')); } } } } }, getComponentInfo: function getComponentInfo(comp, extended, extDomEl) { if (!comp) { throw new Error('getComponentInfo: !comp'); } var tEQXT = this.getComponentSearchString(comp, true); var tEQRef = this.getComponentSearchString(comp, false); var xtypes = comp.getXTypes(); var firstSupportedXType = this.getFirstSupportedAscendant(xtypes); // firstSupportedXType = this.convertXTypeToTiaApi(firstSupportedXType); // And other stuff for form fields. var initialConfig = comp.getInitialConfig(); var config = comp.getConfig(); var id = comp.getId(); var autoGenId = comp.autoGenId || (Boolean(autoGenRE.test(id))); var fakeId; if (autoGenId) { fakeId = tiaEJ.idMap.getFakeId(id); id = null; } var itemId = comp.getConfig('itemId'); itemId = autoGenRE.test(itemId) ? null : itemId; // getController? // Private member. // var refHolder = comp.lookupReferenceHolder(false); // alert(refHolder.$className); var getReferencesStr = ''; if (comp.isContainer) { var getReferences = comp.getReferences(); if (getReferences) { getReferencesStr = Ext.Object.getKeys(getReferences).join(' '); } } var getControllerArr = this.getControllerInfo(comp.getController(), 'getController()'); var lookupControllerArr = this.getControllerInfo(comp.lookupController(false), 'lookupController(false)'); var lookupControllerSkipThisArr = this.getControllerInfo(comp.lookupController(true), 'lookupController(true)'); var outArr = []; outArr.push(this.boldIf('await gT.eC.' + firstSupportedXType, true, '#000000')); // ============= var teqId; try { // console.log(tEQXT); teqId = tiaEJ.searchAndWrap.byTeq(tEQXT).cmpInfo.constProps.realId; if (teqId !== comp.getId()) { outArr.push(this.boldIf('TEQ checking error: found Id: ' + teqId, true, '#FF0000')); } } catch (e) { outArr.push(this.boldIf(e.toString(), true, '#FF0000')); } outArr.push(this.boldIf('(\'' + tEQXT.replace(/\\/g, '\\\\') + '\')', true, '#0000FF', '18px')); // == if (tEQRef !== tEQXT) { try { teqId = tiaEJ.searchAndWrap.byTeq(tEQRef).cmpInfo.constProps.realId; // console.log(tEQRef); if (teqId !== comp.getId()) { outArr.push(this.boldIf('TEQ checking error: found Id: ' + teqId, true, '#FF0000')); } } catch (e) { outArr.push(this.boldIf(e.toString(), true, '#FF0000')); } outArr.push(this.boldIf('(\'' + tEQRef.replace(/\\/g, '\\\\') + '\')', true, '#0000FF', '18px')); } // == if (xtypes.includes('dataview')) { this.addRowInfo(extDomEl, comp, outArr); } outArr.push(this.consts.avgSep); // ============= if (id) { outArr.push('id: ' + this.boldGreen(id)); } if (fakeId) { outArr.push('fakeId: ' + this.boldGreen(fakeId)); } if (itemId) { outArr.push('itemId: ' + this.boldGreen(itemId)); } var reference = comp.getConfig('reference'); var referenceIndex = null; if (reference) { outArr.push('reference: ' + this.boldGreen(reference)); referenceIndex = outArr.length - 1; } var xtype = comp.getConfig('xtype'); var isXTypeCustom = !standardXTypesList.includes(xtype); var customXTypeCmpCount = 0; if (isXTypeCustom) { var cmps = Ext.ComponentQuery.query(xtype); customXTypeCmpCount = cmps.length; if (customXTypeCmpCount === 1) { xtype = this.boldIf(xtype, customXTypeCmpCount === 1, '#777700'); } } if (customXTypeCmpCount !== 1) { xtype = this.boldIf(xtype, true, '#000000'); } outArr.push('xtype: ' + xtype + (isXTypeCustom ? (' * ' + customXTypeCmpCount) : '')); // tia.cU.dumpObj(comp, [ // { path: 'getConfig()', args: [['xtype']] }, // // 'initialConfig.id' // ], outArr); this.pushTextProp(comp,'name', outArr); this.pushTextProp(comp,'text', outArr); this.pushTextProp(comp,'tooltip', outArr); this.pushTextProp(comp,'title', outArr); this.pushTextProp(comp, 'fieldLabel', outArr); this.pushTextProp(comp, 'boxLabel', outArr); // outArr.push('getConfig(id): ' + tiaEJ.ctByObj.safeGetConfig(comp, 'id')); // tia.cU.dumpObj(comp, [ // // 'initialConfig.reference', // 'getReference()' // ], outArr); // if (comp.getReference()) { // outArr.push('getReference(): ' + this.boldIf(comp.getReference(), comp.getReference(), 'green')); // outArr = outArr.concat(this.getRefHolderInfo(comp)); // } // outArr.push('getConfig(reference): ' + tiaEJ.ctByObj.safeGetConfig(comp, 'reference')); if (initialConfig.referenceHolder) { outArr.push( 'initialConfig.referenceHolder: ' + this.boldIf( comp.initialConfig.referenceHolder, comp.initialConfig.referenceHolder, 'orange', '20px') ); } // tia.cU.dumpObj(comp, [ // 'initialConfig.itemId', // 'getItemId()' // ], outArr); // outArr.push('getConfig(itemId): ' + tiaEJ.ctByObj.safeGetConfig(comp, 'itemId')); outArr.push(''); tia.cU.dumpObj(comp, [ 'ariaRole', '$className', ], outArr); if (!id) { outArr.push('id: ' + comp.getId()); } if (!itemId) { outArr.push('itemId: ' + comp.getItemId()); } outArr.push('xtypes: ' + this.boldIf(comp.getXTypes(), true, '#000000')); // outArr.push('isPanel:' + comp.isPanel + (comp.isPanel ? ' ! ! ! ! !' : '')); var keyMap = Object.keys(comp.keyMap || {}); keyMap = keyMap.join(', '); outArr = outArr.concat([ '------', 'keyMap: ' + keyMap, ]); outArr = outArr.concat([ '------', 'Attrs:', tiaEJ.ctMisc.getAttributes(comp), '------']); if (reference) { outArr = outArr.concat(this.getRefHolderInfo(comp)); } tia.cU.dumpObj(comp, [ {path: 'isVisible()', args: [[true]]}, 'isHidden()', 'isDisabled()', 'isSuspended()', // 'isMasked()', 'isFocusable()', 'rendered', ], outArr); if (comp.isFormField) { outArr = outArr.concat(this.getFormFieldInfo(comp)); } else { if (comp.isTableView) { outArr = outArr.concat(this.getTableInfo(comp)); } } if (extended) { tia.cU.dumpObj(comp, [ 'lookupViewModel().$className', 'lookupSession().$className', 'items.getCount()', 'isViewport', ], outArr); outArr.push('getReferences(): ' + getReferencesStr); outArr = outArr.concat(getControllerArr); outArr = outArr.concat(lookupControllerArr); outArr = outArr.concat(lookupControllerSkipThisArr); } outArr.push(this.consts.bigSep); return outArr; }, getComponentAndParentsInfo: function getComponentAndParentsInfo(comp, extended, extDomEl) { if (!comp) { return ''; } var outArr = this.getComponentInfo(comp, extended, extDomEl); outArr = outArr.concat(this.getComponentAndParentsInfo(comp.up(), extended, extDomEl)); return outArr; }, // var comp = extDomEl.component; undefined for unknown reason. // viewModel // parent / childs ? // tooltip, label // Shows info (alert + console.log) for object under mouse cursor, e - MouseEvent object. showCompInfoFromPoint: function showCompInfoFromPoint(e) { var x = e.clientX; var y = e.clientY; var el = Ext.dom.Element.fromPoint(x, y); window.tel = el; if (!el) { tiaEJ.showMsgBox('!Ext.dom.Element.fromPoint(x, y)', 'Error'); } var extDomEl = Ext.dom.Element.get(el); if (!extDomEl) { tiaEJ.showMsgBox('!Ext.dom.Element.get(el)', 'Error'); } var comp = Ext.Component.from(extDomEl); if (!comp) { tiaEJ.showMsgBox('!Ext.Component.from(extDomEl)', 'Error'); } // console.log('COMP FOUND: ' + comp.getId()); // boundlist // // fromPoint does not find disabled items, so let's hande this ourselves. if (comp.isContainer) { var newComp = null; comp.cascade(function (curComp) { if (curComp.isDisabled()) { var box = curComp.getBox(); if (x >= box.left && x <= box.right && y >= box.top && y <= box.bottom) { newComp = curComp; } } return true; }); if (newComp) { comp = newComp; } } // console.log('COMP after box handling: ' + comp.getId()); if (!comp) { tiaEJ.showMsgBox('Error at box handling ', 'Error'); } window.tcmp = comp; // var oldBorder = comp.getConfig().border; // var oldStyle = comp.getConfig().style; // // console.dir(oldBorder); // console.dir(oldStyle); // // comp.setConfig('border', 5) // comp.setConfig('style', { // borderColor: 'red', // borderStyle: 'solid' // }); // // setTimeout(function () { // comp.setConfig('border', oldBorder); // comp.setConfig('style', oldStyle); // }, 10000); // comp.setBorder(5); // comp.setStyle({ // borderColor: 'red', // borderStyle: 'solid' // }); var record = null; var recordStr = 'Record info: '; try { record = comp.getRecord(extDomEl); recordStr += '\n' + tiaEJ.ctMisc.stringifyAllRecord(record, true); recordStr += '\n' + this.consts.bigSep; } catch (err) { recordStr += this.consts.nA; if (tia.debugMode) { console.log('Exp exc:' + err); } } if (tia.debugMode) { window.c1 = comp; } var outStr = this.getComponentAndParentsInfo(comp, false, extDomEl).join('\n') + '\n' + recordStr; tiaEJ.showMsgBox(outStr, 'Info about a component under mouse cursor'); // console.log(outStr); }, }; })();