META-INF.resources.primefaces.core.core.expressions.js Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of primefaces Show documentation
Show all versions of primefaces Show documentation
PrimeFaces is one of the most popular UI libraries in Java EE Ecosystem and widely used by software companies, world renowned brands, banks, financial institutions, insurance companies, universities and more.
if (!PrimeFaces.expressions) {
PrimeFaces.expressions = {};
PrimeFaces.expressions.SearchExpressionFacade = {
resolveComponentsAsSelector: function(expressions) {
var splittedExpressions = PrimeFaces.expressions.SearchExpressionFacade.splitExpressions(expressions);
var elements = $();
if (splittedExpressions) {
for (var i = 0; i < splittedExpressions.length; ++i) {
var expression = $.trim(splittedExpressions[i]);
if (expression.length > 0) {
// skip unresolvable keywords
if (expression == '@none' || expression == '@all') {
continue;
}
// just a id
if (expression.indexOf("@") == -1) {
elements = elements.add(
$(document.getElementById(expression)));
}
// @widget
else if (expression.indexOf("@widgetVar(") == 0) {
var widgetVar = expression.substring(11, expression.length - 1);
var widget = PrimeFaces.widgets[widgetVar];
if (widget) {
elements = elements.add(
$(document.getElementById(widget.id)));
} else {
PrimeFaces.error("Widget for widgetVar \"" + widgetVar + "\" not avaiable");
}
}
// PFS
else if (expression.indexOf("@(") == 0) {
//converts pfs to jq selector e.g. @(div.mystyle :input) to div.mystyle :input
elements = elements.add(
$(expression.substring(2, expression.length - 1)));
}
}
}
}
return elements;
},
resolveComponents: function(expressions) {
var splittedExpressions = PrimeFaces.expressions.SearchExpressionFacade.splitExpressions(expressions),
ids = [];
if (splittedExpressions) {
for (var i = 0; i < splittedExpressions.length; ++i) {
var expression = $.trim(splittedExpressions[i]);
if (expression.length > 0) {
// just a id or passtrough keywords
if (expression.indexOf("@") == -1 || expression == '@none' || expression == '@all') {
if (!PrimeFaces.inArray(ids, expression)) {
ids.push(expression);
}
}
// @widget
else if (expression.indexOf("@widgetVar(") == 0) {
var widgetVar = expression.substring(11, expression.length - 1),
widget = PrimeFaces.widgets[widgetVar];
if (widget) {
if (!PrimeFaces.inArray(ids, widget.id)) {
ids.push(widget.id);
}
} else {
PrimeFaces.error("Widget for widgetVar \"" + widgetVar + "\" not avaiable");
}
}
// PFS
else if (expression.indexOf("@(") == 0) {
//converts pfs to jq selector e.g. @(div.mystyle :input) to div.mystyle :input
var elements = $(expression.substring(2, expression.length - 1));
for (var j = 0; j < elements.length; j++) {
var element = $(elements[j]),
clientId = element.data(PrimeFaces.CLIENT_ID_DATA) || element.attr('id');
if (!PrimeFaces.inArray(ids, clientId)) {
ids.push(clientId);
}
}
}
}
}
}
return ids;
},
splitExpressions: function(expression) {
var expressions = [];
var buffer = '';
var parenthesesCounter = 0;
for (var i = 0; i < expression.length; i++) {
var c = expression[i];
if (c === '(') {
parenthesesCounter++;
}
if (c === ')') {
parenthesesCounter--;
}
if ((c === ' ' || c === ',') && parenthesesCounter === 0) {
// lets add token inside buffer to our tokens
expressions.push(buffer);
// now we need to clear buffer
buffer = '';
} else {
buffer += c;
}
}
// lets not forget about part after the separator
expressions.push(buffer);
return expressions;
}
};
}