see ref:Flex tip: conditions like ‘&&’ in MXML
<BetterFormItem label="{Util.geti18nText(this,'roles')}"
width="100%"
id="role_gateway_id"
key="rules"
includeInLayout="{raciGridPerformersRaci.dataProvider.length>0 && raciGridPerformersRaci.selectedItem.@type_id =='ROLE'}"
visible="{raciGridPerformersRaci.dataProvider.length>0 && raciGridPerformersRaci.selectedItem.@type_id =='ROLE'}"
>
</BetterFormItem>
Thursday, June 28, 2012
Thursday, May 3, 2012
ExtJS Debug: dynamic loading Ext Class and our own class
in app.html
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>MyTestBedPurecode</title>
<link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css"/>
<script type="text/javascript" src="ext/ext-debug.js"></script>
<script type="text/javascript" src="app.js"></script>
<script type="text/javascript" src="app/overrides/CustomXmlReader.js"></script>
</head>
<body></body>
</html>
use ext-debug.js( instead of ext-all-dev.js) will ensure we only load class when needed.
and the file size is small so the app can be easy debug.
MyTestBed
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>MyTestBedPurecode</title>
<link rel="stylesheet" type="text/css" href="ext/resources/css/ext-all.css"/>
<script type="text/javascript" src="ext/ext-debug.js"></script>
<script type="text/javascript" src="app.js"></script>
<script type="text/javascript" src="app/overrides/CustomXmlReader.js"></script>
</head>
<body></body>
</html>
use ext-debug.js( instead of ext-all-dev.js) will ensure we only load class when needed.
and the file size is small so the app can be easy debug.
Tuesday, May 1, 2012
Ext.override
// in app.html
<link rel="stylesheet" type="text/css" href="http://localhost/extjstest/extjs-4.0.7/resources/css/ext-all.css"/>
<script type="text/javascript" src="http://localhost/extjstest/extjs-4.0.7/ext-all-dev.js"></script>
<script type="text/javascript" src="app/overrides/Ext.data.reader.Xml.js"></script>
/* file name app/overrides/Ext.data.reader.Xml.js */
Ext.override(Ext.data.reader.Xml,{
extractData: function(root) {
var recordName = this.record;
//<debug>
if (!recordName) {
Ext.Error.raise('Record is a required parameter');
}
//</debug>
if (recordName != root.nodeName) {
//root = Ext.DomQuery.select(recordName, root);
//patch
root = Ext.DomQuery.select('>' + recordName, root);
} else {
root = [root];
}
return this.callParent([root]);
}
});
<link rel="stylesheet" type="text/css" href="http://localhost/extjstest/extjs-4.0.7/resources/css/ext-all.css"/>
<script type="text/javascript" src="http://localhost/extjstest/extjs-4.0.7/ext-all-dev.js"></script>
<script type="text/javascript" src="app/overrides/Ext.data.reader.Xml.js"></script>
/* file name app/overrides/Ext.data.reader.Xml.js */
Ext.override(Ext.data.reader.Xml,{
extractData: function(root) {
var recordName = this.record;
//<debug>
if (!recordName) {
Ext.Error.raise('Record is a required parameter');
}
//</debug>
if (recordName != root.nodeName) {
//root = Ext.DomQuery.select(recordName, root);
//patch
root = Ext.DomQuery.select('>' + recordName, root);
} else {
root = [root];
}
return this.callParent([root]);
}
});
treecolumn renderer function for Ext.tree.Panel
Ext.define('MyApp.view.XmlTreePanel', {
extend: 'Ext.tree.Panel',
alias: 'widget.xmltreepanel',
title: 'My Tree Panel',
store: 'MyXmlTreeStore',
id:'xmltreepanel',
initComponent: function() {
var me = this;
Ext.applyIf(me, {
viewConfig: {
},
columns: [
{
xtype: 'treecolumn',
renderer: function(value, metaData, record, rowIndex, colIndex, store, view) {
return unescape(value);
},
text: 'MyTreeColumn'
}
]
});
me.callParent(arguments);
}
});
urldecode xml attribute , mapping , convert
Ext.define('MyApp.model.MyModel', {
extend: 'Ext.data.Model',
fields: [
{
convert:function(v,rec){
return unescape(v);
} ,
mapping: '@label',
name: 'label',
type: 'string'
}
]
});
<?xml version="1.0" encoding="UTF-8"?>
<explorer >
<node label="%20Feng%20Guideline%20" type="GUIDELINE" nodeid="9740015D-3447-1CC6-949E-C91D0876F8D1" selected="true" version="0.34" seqnum="" year="2012" versionid="D956A51D-A9A8-8398-B191-79A44A97D75F">
</node>
</explorer>
Ext.define('MyApp.view.BottomPanel', {
extend: 'Ext.panel.Panel',
alias: 'widget.bottompanel',
height: 150,
id: 'bottompanel',
title: 'My Panel',
initComponent: function() {
var me = this;
Ext.applyIf(me, {
tpl: [
'Label: {label}<br>'
]
});
me.callParent(arguments);
}
});
Sunday, April 29, 2012
Css Selectors
ref:
http://www.w3.org/TR/2005/WD-css3-selectors-20051215/#selectors
The following table summarizes the Selector syntax:
http://www.w3.org/TR/2005/WD-css3-selectors-20051215/#selectors
The following table summarizes the Selector syntax:
| Pattern | Meaning | Described in section | First defined in CSS level |
|---|---|---|---|
| * | any element | Universal selector | 2 |
| E | an element of type E | Type selector | 1 |
| E[foo] | an E element with a "foo" attribute | Attribute selectors | 2 |
| E[foo="bar"] | an E element whose "foo" attribute value is exactly equal to "bar" | Attribute selectors | 2 |
| E[foo~="bar"] | an E element whose "foo" attribute value is a list of space-separated values, one of which is exactly equal to "bar" | Attribute selectors | 2 |
| E[foo^="bar"] | an E element whose "foo" attribute value begins exactly with the string "bar" | Attribute selectors | 3 |
| E[foo$="bar"] | an E element whose "foo" attribute value ends exactly with the string "bar" | Attribute selectors | 3 |
| E[foo*="bar"] | an E element whose "foo" attribute value contains the substring "bar" | Attribute selectors | 3 |
| E[hreflang|="en"] | an E element whose "hreflang" attribute has a hyphen-separated list of values beginning (from the left) with "en" | Attribute selectors | 2 |
| E:root | an E element, root of the document | Structural pseudo-classes | 3 |
| E:nth-child(n) | an E element, the n-th child of its parent | Structural pseudo-classes | 3 |
| E:nth-last-child(n) | an E element, the n-th child of its parent, counting from the last one | Structural pseudo-classes | 3 |
| E:nth-of-type(n) | an E element, the n-th sibling of its type | Structural pseudo-classes | 3 |
| E:nth-last-of-type(n) | an E element, the n-th sibling of its type, counting from the last one | Structural pseudo-classes | 3 |
| E:first-child | an E element, first child of its parent | Structural pseudo-classes | 2 |
| E:last-child | an E element, last child of its parent | Structural pseudo-classes | 3 |
| E:first-of-type | an E element, first sibling of its type | Structural pseudo-classes | 3 |
| E:last-of-type | an E element, last sibling of its type | Structural pseudo-classes | 3 |
| E:only-child | an E element, only child of its parent | Structural pseudo-classes | 3 |
| E:only-of-type | an E element, only sibling of its type | Structural pseudo-classes | 3 |
| E:empty | an E element that has no children (including text nodes) | Structural pseudo-classes | 3 |
| E:link E:visited |
an E element being the source anchor of a hyperlink of which the target is not yet visited (:link) or already visited (:visited) | The link pseudo-classes | 1 |
| E:active E:hover E:focus |
an E element during certain user actions | The user action pseudo-classes | 1 and 2 |
| E:target | an E element being the target of the referring URI | The target pseudo-class | 3 |
| E:lang(fr) | an element of type E in language "fr" (the document language specifies how language is determined) | The :lang() pseudo-class | 2 |
| E:enabled E:disabled |
a user interface element E which is enabled or disabled | The UI element states pseudo-classes | 3 |
| E:checked | a user interface element E which is checked (for instance a radio-button or checkbox) | The UI element states pseudo-classes | 3 |
| E::first-line | the first formatted line of an E element | The ::first-line pseudo-element | 1 |
| E::first-letter | the first formatted letter of an E element | The ::first-letter pseudo-element | 1 |
| E::selection | the portion of an E element that is currently selected/highlighted by the user | The UI element fragments pseudo-elements | 3 |
| E::before | generated content before an E element | The ::before pseudo-element | 2 |
| E::after | generated content after an E element | The ::after pseudo-element | 2 |
| E.warning | an E element whose class is "warning" (the document language specifies how class is determined). | Class selectors | 1 |
| E#myid | an E element with ID equal to "myid". | ID selectors | 1 |
| E:not(s) | an E element that does not match simple selector s | Negation pseudo-class | 3 |
| E F | an F element descendant of an E element | Descendant combinator | 1 |
| E > F | an F element child of an E element | Child combinator | 2 |
| E + F | an F element immediately preceded by an E element | Adjacent sibling combinator | 2 |
| E ~ F | an F element preceded by an E element | General sibling combinator | 3 |
Extjs Element.dom property
NOTE The Element.dom property is the same DOM object reference as
returned by document.getElementById().
Subscribe to:
Posts (Atom)