This is an automated email from the ASF dual-hosted git repository. zjffdu pushed a commit to branch web_angular in repository https://gitbox.apache.org/repos/asf/zeppelin.git
The following commit(s) were added to refs/heads/web_angular by this push: new 5ac0005 [ZEPPELIN-4516] Fix pie chart does not color by key 5ac0005 is described below commit 5ac0005de454e6d284d08bf677b2d8358c4422fe Author: Hsuan Lee <hsua...@gmail.com> AuthorDate: Fri Dec 27 11:06:20 2019 +0800 [ZEPPELIN-4516] Fix pie chart does not color by key ### What is this PR for? Fix pie chart does not color by key ### What type of PR is it? [Bug Fix] ### What is the Jira issue? https://issues.apache.org/jira/browse/ZEPPELIN-4516 ### How should this be tested? N/A ### Screenshots (if appropriate) ![Kapture 2019-12-27 at 11 19 06](https://user-images.githubusercontent.com/22736418/71499297-ceedff80-289a-11ea-809f-1d2e0a30776f.gif) ### Questions: * Does the licenses files need update? No * Is there breaking changes for older versions? No * Does this needs documentation? No Author: Hsuan Lee <hsua...@gmail.com> Closes #3574 from hsuanxyz/fix/pie-chart and squashes the following commits: 1ca2dc935 [Hsuan Lee] fix: fix the pie chart's color --- .../src/pivot-transformation.ts | 49 ++++++++++++++++++---- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/zeppelin-web-angular/projects/zeppelin-visualization/src/pivot-transformation.ts b/zeppelin-web-angular/projects/zeppelin-visualization/src/pivot-transformation.ts index cade722..963cc48 100644 --- a/zeppelin-web-angular/projects/zeppelin-visualization/src/pivot-transformation.ts +++ b/zeppelin-web-angular/projects/zeppelin-visualization/src/pivot-transformation.ts @@ -16,7 +16,6 @@ import { get } from 'lodash'; import { TableData } from './table-data'; import { Transformation } from './transformation'; -// tslint:disable-next-line:no-any export class PivotTransformation extends Transformation { constructor(config) { super(config); @@ -87,6 +86,8 @@ export class PivotTransformation extends Transformation { let groups = []; let values = []; let aggregates = []; + + // set values from config if (config.mode !== 'scatterChart') { keys = config.keys.map(e => e.name); groups = config.groups.map(e => e.name); @@ -101,6 +102,7 @@ export class PivotTransformation extends Transformation { groups = group ? [group] : []; } + // try coercion to number type dv.transform({ type: 'map', callback: row => { @@ -114,7 +116,10 @@ export class PivotTransformation extends Transformation { } }); + // not applicable with type scatter chart if (config.mode !== 'scatterChart') { + + // aggregate values dv.transform({ type: 'aggregate', fields: config.values.map(v => v.name), @@ -123,19 +128,36 @@ export class PivotTransformation extends Transformation { groupBy: [...keys, ...groups] }); - // dv.transform({ - // type: 'fill-rows', - // groupBy: groups, - // orderBy: keys, - // fillBy: 'order' - // }); - + // fill the rows to keep the charts is continuity dv.transform({ type: 'fill-rows', groupBy: [...keys, ...groups], fillBy: 'group' }); + /** + * fill the field to keep the charts is continuity + * + * before + * ``` + * [ + * { x: 0, y: 1 }, + * { x: 0, y: 2 }, + * { x: 0, y: 3 }, + * { x: 0 } + * ] + * ``` + * after + * ``` + * [ + * { x: 0, y: 1 }, + * { x: 0, y: 2 }, + * { x: 0, y: 3 }, + * { x: 0, y: 0 } + * // ^^^^^ filled this + * ] + * ``` + */ config.values .map(v => `${v.name}(${v.aggr})`) .forEach(field => { @@ -165,9 +187,17 @@ export class PivotTransformation extends Transformation { Object.keys(dv.rows).forEach(groupKey => { const groupName = groupKey.replace(/^_/, ''); dv.rows[groupKey].forEach(row => { + const getKey = () => { + if (config.mode !== 'pieChart') { + return groupName ? `${row.__key__}.${groupName}` : row.__key__ + } else { + const keyName = keys.map(k => row[k]).join('.'); + return groupName ? `${keyName}.${groupName}` : keyName; + } + }; groupsData.push({ ...row, - __key__: groupName ? `${row.__key__}.${groupName}` : row.__key__ + __key__: getKey() }); }); }); @@ -177,6 +207,7 @@ export class PivotTransformation extends Transformation { dv.origin.findIndex(o => o[firstKey] === a[firstKey]) - dv.origin.findIndex(o => o[firstKey] === b[firstKey]) ); + console.log(groupsData); dv = ds .createView({ state: {