Skip to content

Commit

Permalink
Partial-Bug: #1436506 Added support for suffixes on the Stats Query P…
Browse files Browse the repository at this point in the history
…ages in WebUI

Change-Id: Id42240e9d42bb760c5b484df43c50931fa28d7af
  • Loading branch information
czanpure committed May 5, 2015
1 parent bc8a28d commit efe070e
Show file tree
Hide file tree
Showing 2 changed files with 120 additions and 66 deletions.
44 changes: 35 additions & 9 deletions webroot/reports/api/qe.api.js
Expand Up @@ -919,16 +919,42 @@ function parseWhereANDClause(whereANDClause)
for (i = 0; i < whereANDLength; i += 1) {
whereANDArray[i] = whereANDArray[i].trim();
whereANDClause = whereANDArray[i];
if(whereANDClause.indexOf('Starts with') != -1){
operator = 'Starts with';
whereANDClauseArray = whereANDClause.split(operator);
} else if(whereANDClause.indexOf('=') != -1){
operator = '='
whereANDClauseArray = whereANDClause.split(operator);
if (whereANDClause.indexOf('&') == -1) {
if (whereANDClause.indexOf('Starts with') != -1) {
operator = 'Starts with';
whereANDClauseArray = whereANDClause.split(operator);
} else if (whereANDClause.indexOf('=') != -1) {
operator = '=';
whereANDClauseArray = whereANDClause.split(operator);
}
whereANDClause = {"name": "", value: "", op: ""};
populateWhereANDClause(whereANDClause, whereANDClauseArray[0].trim(), whereANDClauseArray[1].trim(), operator);
whereANDArray[i] = whereANDClause;
} else {
whereANDClauseWithSuffixArrray = whereANDClause.split('&');
// Treat whereANDClauseWithSuffixArrray[0] as a normal AND term and
// whereANDClauseWithSuffixArrray[1] as a special suffix term
if (whereANDClauseWithSuffixArrray != null && whereANDClauseWithSuffixArrray.length != 0) {
var tempWhereANDClauseWithSuffix;
for (var j = 0; j < whereANDClauseWithSuffixArrray.length; j++) {
if (whereANDClauseWithSuffixArrray[j].indexOf('Starts with') != -1) {
operator = 'Starts with';
whereANDTerm = whereANDClauseWithSuffixArrray[j].split(operator);
} else if (whereANDClauseWithSuffixArrray[j].indexOf('=') != -1) {
operator = '=';
whereANDTerm = whereANDClauseWithSuffixArrray[j].split(operator);
}
whereANDClause = {"name": "", value: "", op: ""};
populateWhereANDClause(whereANDClause, whereANDTerm[0].trim(), whereANDTerm[1].trim(), operator);
if (j == 0) {
tempWhereANDClauseWithSuffix = whereANDClause;
} else if (j == 1) {
tempWhereANDClauseWithSuffix.suffix = whereANDClause;
}
}
whereANDArray[i] = tempWhereANDClauseWithSuffix;
}
}
whereANDClause = {"name":"", value:"", op:""};
populateWhereANDClause(whereANDClause, whereANDClauseArray[0].trim(), whereANDClauseArray[1].trim(), operator);
whereANDArray[i] = whereANDClause;
}
return whereANDArray;
};
Expand Down
142 changes: 85 additions & 57 deletions webroot/reports/views/queries.view
Expand Up @@ -5,15 +5,15 @@
<script type="text/x-handlebars-template" id="new-or-clause-template">
<div class="row-fluid or-text">OR </div>
<div class="or-clause-item open row-fluid">
<div class="or-clause-item-condensed row-fluid">
<div class="or-clause-item-action pull-left margin-0-5">
<i class="or-clause-icon-caret icon-caret-down" onclick="toggleORClause('{{queryPrefix}}',this);"></i>
</div>
<p class="or-clause-item-term span10 margin-0-5" onclick="toggleORClause('{{queryPrefix}}',this);"></p>
<div class="{{queryPrefix}}-or-clause-item-action- or-clause-item-action pull-right margin-0-5">
<i class="icon-remove" onclick="deleteWhereORTerm(this);"></i>
</div>
</div>
<div class="or-clause-item-condensed row-fluid">
<div class="or-clause-item-action pull-left margin-0-10">
<i class="or-clause-icon-caret icon-caret-down" onclick="toggleORClause('{{queryPrefix}}',this);"></i>
</div>
<p class="or-clause-item-term span10 margin-0-10" onclick="toggleORClause('{{queryPrefix}}',this);"></p>
<div class="{{queryPrefix}}-or-clause-item-action- or-clause-item-action pull-right margin-0-10">
<i class="icon-remove" onclick="deleteWhereORTerm(this);"></i>
</div>
</div>
<div class="or-clause-item-edit">
<form onsubmit="return false;">
<div>
Expand All @@ -36,41 +36,55 @@
{{setLoopIndex @index}}
<div class="row-fluid or-text">OR</div>
<div class="or-clause-item row-fluid">
<div id="{{../queryPrefix}}-or-clause-item-{{@index}}" class="or-clause-item-condensed row-fluid">
<div class="{{queryPrefix}}-or-clause-item-action-{{@index}} or-clause-item-action pull-left margin-0-5">
<i class="or-clause-icon-caret icon-caret-right" onclick="toggleORClause('{{queryPrefix}}',this);"></i>
</div>
<p class="or-clause-item-term span10 margin-0-5" style="display:block;" onclick="toggleORClause('{{queryPrefix}}',this);">{{this.text}}</p>
<div class="{{queryPrefix}}-or-clause-item-action-{{@index}} or-clause-item-action pull-right margin-0-5">
<i class="icon-remove" onclick="deleteWhereORTerm(this);"></i>
</div>
</div>
<div class="or-clause-item-edit">
<form onsubmit="return false;">
<div class="{{../queryPrefix}}-where-clause and-clauses">
{{#each this.whereClauseEdit}}
<div id='{{../../queryPrefix}}-where-clause-{{../loopIndex}}-{{@index}}' class="and-clause-item row-fluid">
<div class="span1 and-text">AND</div>
<select class="span4" name="field[]"
data-bind="options: selectFields, value: '{{this.field}}', optionsText: 'name', optionsValue: 'value', select2: {'minimumResultsForSearch': 7}"
onchange="updateWhereOptions('{{../../queryPrefix}}-where-clause-{{../loopIndex}}-{{@index}}', '{{../../queryPrefix}}', '', '', true);">
</select>
<select class="span2" name="operator[]"
data-bind="options: opValues, value: '{{this.operator}}', optionsText: 'name', optionsValue: 'value', select2: {'minimumResultsForSearch': 7}">
</select>
<div class="span4"><input type="text" class="span12" name="value[]" value="" data-bind="value: '{{this.value}}'"/></div>
<div class="span1"><i class="icon-remove" onclick="deleteAppendedWhere('{{../../queryPrefix}}-where-clause-{{../loopIndex}}-{{@index}}');"></i></div>
</div>
{{/each}}
</div>
<div class="row-fluid and-clause-item">
<div class="span1 and-text">&nbsp;</div>
<div class="span3 new-and-text">
<a class="add-clause" onclick="appendWhere('{{../queryPrefix}}',this);"><i class="icon-plus"></i> &nbsp;AND</a>
</div>
</div>
</form>
</div>
<div id="{{../queryPrefix}}-or-clause-item-{{@index}}" class="or-clause-item-condensed row-fluid">
<div class="{{queryPrefix}}-or-clause-item-action-{{@index}} or-clause-item-action pull-left margin-0-10">
<i class="or-clause-icon-caret icon-caret-right" onclick="toggleORClause('{{queryPrefix}}',this);"></i>
</div>
<p class="or-clause-item-term span10 margin-0-10" style="display:block;" onclick="toggleORClause('{{queryPrefix}}',this);">{{this.text}}</p>
<div class="{{queryPrefix}}-or-clause-item-action-{{@index}} or-clause-item-action pull-right margin-0-10">
<i class="icon-remove" onclick="deleteWhereORTerm(this);"></i>
</div>
</div>
<div class="or-clause-item-edit">
<form onsubmit="return false;">
<div class="{{../queryPrefix}}-where-clause and-clauses">
{{#each this.whereClauseEdit}}
<div id='{{../../queryPrefix}}-where-clause-{{../loopIndex}}-{{@index}}' class="and-clause-item row-fluid">
<div class="row-fluid and-clause-prefix">
<div class="span1 and-text">AND</div>
<select class="span4" name="field[]"
data-bind="options: selectFields, value: '{{this.field}}', optionsText: 'name', optionsValue: 'value', select2: {'minimumResultsForSearch': 7}"
onchange="updateWhereOptions('{{../../queryPrefix}}-where-clause-{{../loopIndex}}-{{@index}}', '{{../../queryPrefix}}', '', '', true);">
</select>
<select class="span2" name="operator[]"
data-bind="options: opValues, value: '{{this.operator}}', optionsText: 'name', optionsValue: 'value', select2: {'minimumResultsForSearch': 7}"
onchange="updateSuffixWhereOptions('{{../../queryPrefix}}','{{../../queryPrefix}}-where-clause-{{../loopIndex}}-{{@index}}');">
</select>
<div class="span4"><input type="text" class="span12" name="value[]" value="" data-bind="value: '{{this.value}}'"/></div>
<div class="span1"><i class="icon-remove" onclick="deleteAppendedWhere('{{../../queryPrefix}}-where-clause-{{../loopIndex}}-{{@index}}');"></i></div>
</div>
<div class="row-fluid and-clause-suffix hide">
<div class="span1 and-text">&nbsp;</div>
<div class="span4" name="suffix-field[]" data-bind="value: '{{this.suffixFields.field}}'">
</div>
<select class="span2" name="suffix-operator[]"
data-bind="options: opValues, value: '{{this.suffixFields.operator}}', optionsText: 'name', optionsValue: 'value', select2: {'minimumResultsForSearch': 7}">
</select>
<div class="span4">
<input type="text" class="span12" name="suffix-value[]" data-bind="value: '{{this.suffixFields.value}}'"/>
</div>
</div>
</div>
{{/each}}
</div>
<div class="row-fluid and-clause-item">
<div class="span1 and-text">&nbsp;</div>
<div class="span3 new-and-text">
<a class="add-clause" onclick="appendWhere('{{../queryPrefix}}',this);"><i class="icon-plus"></i> &nbsp;AND</a>
</div>
</div>
</form>
</div>
</div>
{{/each}}
<div id="{{queryPrefix}}-or-clause-item-new-term" class="or-clause-item row-fluid margin-5-0">
Expand All @@ -85,19 +99,33 @@
</script>

<script type="text/x-handlebars-template" id="append-and-clause-template">
<div id="append-where-clause-{{andIndex}}" class="row-fluid and-clause-item">
<div class="span1 and-text">AND</div>
<select class="{{queryPrefix}}-new-and-clause-field span4" name="field[]"
data-bind="options: selectFields, optionsText: 'name', optionsValue: 'value', select2: {'minimumResultsForSearch': 7}">
</select>
<select class="span2" name="operator[]" data-bind="options: opValues, optionsText: 'name', optionsValue: 'value', select2: {'minimumResultsForSearch': 7}">
</select>
<div class="span4">
<input type="text" class="span12" name="value[]" value=""/>
</div>
<div class="{{queryPrefix}}-delete-new-and-clause span1">
<i class="icon-remove"></i>
</div>
<div id="append-where-clause-{{andIndex}}" class="row-fluid and-clause-item">
<div class="row-fluid and-clause-prefix">
<div class="span1 and-text">AND</div>
<select class="{{queryPrefix}}-new-and-clause-field span4" name="field[]"
data-bind="options: selectFields, optionsText: 'name', optionsValue: 'value', select2: {'minimumResultsForSearch': 7}">
</select>
<select class="span2 {{queryPrefix}}-new-and-clause-operator" name="operator[]"
data-bind="options: opValues, optionsText: 'name', optionsValue: 'value', select2: {'minimumResultsForSearch': 7}"
onchange="updateSuffixWhereOptions('{{queryPrefix}}','append-where-clause-{{andIndex}}');">
</select>
<div class="span4">
<input type="text" class="span12" name="value[]" value=""/>
</div>
<div class="{{queryPrefix}}-delete-new-and-clause span1">
<i class="icon-remove"></i>
</div>
</div>
<div class="row-fluid and-clause-suffix hide">
<div class="span1 and-text">&nbsp;</div>
<div class="{{queryPrefix}}-new-and-clause-suffix-field span4" name="suffix-field[]">
</div>
<select class="span2" name="suffix-operator[]" data-bind="options: opValues, optionsText: 'name', optionsValue: 'value', select2: {'minimumResultsForSearch': 7}">
</select>
<div class="span4">
<input type="text" class="span12" name="suffix-value[]" value=""/>
</div>
</div>
</div>
</script>

Expand Down

0 comments on commit efe070e

Please sign in to comment.