siesta-lite
Version:
Stress-free JavaScript unit testing and functional testing tool, works in NodeJS and browsers
146 lines (103 loc) • 4.93 kB
HTML
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>The source code</title>
<link href="../resources/prettify/prettify.css" type="text/css" rel="stylesheet" />
<script type="text/javascript" src="../resources/prettify/prettify.js"></script>
<style type="text/css">
.highlight { display: block; background-color: #ddd; }
</style>
<script type="text/javascript">
function highlight() {
document.getElementById(location.hash.replace(/#/, "")).className = "highlight";
}
</script>
</head>
<body onload="prettyPrint(); highlight();">
<pre class="prettyprint lang-js">/*
Siesta 5.6.1
Copyright(c) 2009-2022 Bryntum AB
https://bryntum.com/contact
https://bryntum.com/products/siesta/license
*/
Role('Ariadne.ExtJSDomQueryFinder.Role.ExtJSHelper', {
methods : {
getComponentOfDomElement : function (el) {
var doc = el.ownerDocument
var body = doc.body
var Ext = (doc.defaultView || doc.parentWindow).Ext
if (!Ext || !Ext.getCmp) return null
while (el && el != body) {
var elId = el.getAttribute('id')
if (elId && Ext.getCmp(elId)) return Ext.getCmp(elId)
el = el.parentElement
}
return null
},
getExtByDomElement : function (el) {
var doc = el.ownerDocument
return (doc.defaultView || doc.parentWindow).Ext
},
getExtCssClassPrefixRegexp : function (el) {
var Ext = this.getExtByDomElement(el)
if (!Ext) return null
var baseCSSPrefix = Ext.baseCSSPrefix || 'x'
return new RegExp('^' + baseCSSPrefix)
},
// Ext JS 4+: Form fields sometimes get their 'name' generated based on a parent id
// property is considered to be auto-generated if it contains an id string and id is in turn auto-generated
valueIsAutoGeneratedByComponent : function (comp, value) {
// Not relevant for Ext < 4
if (!comp.up) return false;
value = String(value)
var componentsToCheck = comp.autoGenId ? [ comp ] : []
var parentWithAutoId = comp.up('[autoGenId=true]');
if (parentWithAutoId) componentsToCheck.push(parentWithAutoId)
var childrenWithAutoId = parentWithAutoId && parentWithAutoId.query && parentWithAutoId.query('[autoGenId=true]')
if (childrenWithAutoId) componentsToCheck.push.apply(componentsToCheck, childrenWithAutoId)
return componentsToCheck.some(function (comp) {
return value.indexOf(comp.id) >= 0
})
},
componentHasAutoGeneratedId : function (component, Ext) {
var id = component.id
// Ext3 ?
if (/^ext-gen\d+|^ext-comp\d+/.test(id)) {
return true;
}
if (Ext && this.idIsGeneratedByExtDotIdCall(id, Ext)) return true
if (component.isWidget) {
return id.replace(/\d+$/, '') == component.identifiablePrefix
}
// even if `autoGenId` can be set to false, the id of the component can be formed from the id
// if its parent, like "window-1019-header_hd" (id of window header), where "window-1019" is autogenerated id
// of parent component
return component.autoGenId || this.valueIsAutoGeneratedByComponent(component, id);
},
// detect ids generated with `Ext.id()`
idIsGeneratedByExtDotIdCall : function (id, Ext, el) {
Ext = Ext || this.getExtByDomElement(el)
if (!Ext) return false
var match = /^(.+?)\d+$/.exec(id)
return Boolean(match && match[ 1 ] == Ext.idPrefix)
},
domElementHasAutoGeneratedId : function (el) {
var id = el.getAttribute('id') || ''
if (/^ext-/.test(id) || this.idIsGeneratedByExtDotIdCall(id, null, el)) return true
// id of node in the dom can be formed from the id of the component this node belongs to
// for example dom node `container-1019-innertCt` belonging to container-1019
// such ids are considered auto-generated and should be ignored
var comp = this.getComponentOfDomElement(el)
if (comp) {
if ((id !== comp.id && id.indexOf(comp.id) > -1) || this.componentHasAutoGeneratedId(comp)) {
return true
}
}
return false
}
}
});
</pre>
</body>
</html>