|
|
@@ -16,109 +16,9 @@ function register(options: any) {
|
|
|
index[options.type] = new SqlPartDef(options);
|
|
|
}
|
|
|
|
|
|
-function replaceAggregationAddStrategy(selectParts, partModel) {
|
|
|
- var hasAlias = false;
|
|
|
-
|
|
|
- // look for existing aggregation
|
|
|
- for (var i = 0; i < selectParts.length; i++) {
|
|
|
- var part = selectParts[i];
|
|
|
- if (part.def.type === 'aggregate') {
|
|
|
- selectParts[i] = partModel;
|
|
|
- return;
|
|
|
- }
|
|
|
- if (part.def.type === 'alias') {
|
|
|
- hasAlias = true;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // add alias if none exists yet
|
|
|
- if (!hasAlias) {
|
|
|
- var aliasModel = createPart({ type: 'alias', params: [selectParts[0].params[0]] });
|
|
|
- selectParts.push(aliasModel);
|
|
|
- }
|
|
|
-
|
|
|
- selectParts.splice(1, 0, partModel);
|
|
|
-}
|
|
|
-
|
|
|
-function replaceSpecialAddStrategy(selectParts, partModel) {
|
|
|
- var hasAlias = false;
|
|
|
-
|
|
|
- // look for existing aggregation
|
|
|
- for (var i = 0; i < selectParts.length; i++) {
|
|
|
- var part = selectParts[i];
|
|
|
- if (part.def.type === 'special') {
|
|
|
- selectParts[i] = partModel;
|
|
|
- return;
|
|
|
- }
|
|
|
- if (part.def.type === 'alias') {
|
|
|
- hasAlias = true;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- // add alias if none exists yet
|
|
|
- if (!hasAlias) {
|
|
|
- var aliasModel = createPart({ type: 'alias', params: [selectParts[0].params[0]] });
|
|
|
- selectParts.push(aliasModel);
|
|
|
- }
|
|
|
-
|
|
|
- selectParts.splice(1, 0, partModel);
|
|
|
-}
|
|
|
-
|
|
|
-function addMathStrategy(selectParts, partModel) {
|
|
|
- var partCount = selectParts.length;
|
|
|
- if (partCount > 0) {
|
|
|
- // if last is math, replace it
|
|
|
- if (selectParts[partCount - 1].def.type === 'math') {
|
|
|
- selectParts[partCount - 1] = partModel;
|
|
|
- return;
|
|
|
- }
|
|
|
- // if next to last is math, replace it
|
|
|
- if (partCount > 1 && selectParts[partCount - 2].def.type === 'math') {
|
|
|
- selectParts[partCount - 2] = partModel;
|
|
|
- return;
|
|
|
- } else if (selectParts[partCount - 1].def.type === 'alias') {
|
|
|
- // if last is alias add it before
|
|
|
- selectParts.splice(partCount - 1, 0, partModel);
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- selectParts.push(partModel);
|
|
|
-}
|
|
|
-
|
|
|
-function addAliasStrategy(selectParts, partModel) {
|
|
|
- var partCount = selectParts.length;
|
|
|
- if (partCount > 0) {
|
|
|
- // if last is alias, replace it
|
|
|
- if (selectParts[partCount - 1].def.type === 'alias') {
|
|
|
- selectParts[partCount - 1] = partModel;
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
- selectParts.push(partModel);
|
|
|
-}
|
|
|
-
|
|
|
-function addColumnStrategy(selectParts, partModel, query) {
|
|
|
- // copy all parts
|
|
|
- var parts = _.map(selectParts, function(part: any) {
|
|
|
- return createPart({ type: part.def.type, params: _.clone(part.params) });
|
|
|
- });
|
|
|
-
|
|
|
- query.selectModels.push(parts);
|
|
|
-}
|
|
|
-
|
|
|
-function addExpressionStrategy(selectParts, partModel, query) {
|
|
|
- // copy all parts
|
|
|
- var parts = _.map(selectParts, function(part: any) {
|
|
|
- return createPart({ type: part.def.type, params: _.clone(part.params) });
|
|
|
- });
|
|
|
-
|
|
|
- query.selectModels.push(parts);
|
|
|
-}
|
|
|
-
|
|
|
register({
|
|
|
type: 'column',
|
|
|
style: 'label',
|
|
|
- addStrategy: addColumnStrategy,
|
|
|
params: [{ type: 'column', dynamicLookup: true }],
|
|
|
defaultParams: ['value'],
|
|
|
});
|
|
|
@@ -127,7 +27,6 @@ register({
|
|
|
type: 'expression',
|
|
|
style: 'expression',
|
|
|
label: 'Expr:',
|
|
|
- addStrategy: addExpressionStrategy,
|
|
|
params: [
|
|
|
{ name: 'left', type: 'string', dynamicLookup: true },
|
|
|
{ name: 'op', type: 'string', dynamicLookup: true },
|
|
|
@@ -140,7 +39,6 @@ register({
|
|
|
type: 'macro',
|
|
|
style: 'label',
|
|
|
label: 'Macro:',
|
|
|
- addStrategy: addExpressionStrategy,
|
|
|
params: [],
|
|
|
defaultParams: [],
|
|
|
});
|
|
|
@@ -148,23 +46,13 @@ register({
|
|
|
register({
|
|
|
type: 'aggregate',
|
|
|
style: 'label',
|
|
|
- addStrategy: replaceAggregationAddStrategy,
|
|
|
params: [{ name: 'name', type: 'string', dynamicLookup: true }],
|
|
|
defaultParams: ['avg'],
|
|
|
});
|
|
|
|
|
|
-register({
|
|
|
- type: 'math',
|
|
|
- style: 'label',
|
|
|
- addStrategy: addMathStrategy,
|
|
|
- params: [{ name: 'expr', type: 'string' }],
|
|
|
- defaultParams: [' / 100'],
|
|
|
-});
|
|
|
-
|
|
|
register({
|
|
|
type: 'alias',
|
|
|
style: 'label',
|
|
|
- addStrategy: addAliasStrategy,
|
|
|
params: [{ name: 'name', type: 'string', quote: 'double' }],
|
|
|
defaultParams: ['alias'],
|
|
|
});
|
|
|
@@ -199,7 +87,6 @@ register({
|
|
|
},
|
|
|
],
|
|
|
defaultParams: ['increase'],
|
|
|
- addStrategy: replaceSpecialAddStrategy,
|
|
|
});
|
|
|
|
|
|
export default {
|