|
|
@@ -10,13 +10,12 @@ export default {
|
|
|
code: null,
|
|
|
header: { label: '未命名' },
|
|
|
baseConfig: { dataSource: '', viewType: '' },
|
|
|
- preparing: { groupBy: {} },
|
|
|
- aggregateTableConfig: { targetColumn: {}, statistics: [] },
|
|
|
- dataViewConfig: {},
|
|
|
- barConfig: { xAxis: { column: {}, granularity: {} }, yAxis: { column: {}, gauge: {} } },
|
|
|
- lineConfig: { xAxis: { column: {}, granularity: {} }, yAxis: { column: {}, gauge: {} } },
|
|
|
+ aggregateTableConfig: { targetColumn: {}, statistics: [], groupBy: [] },
|
|
|
+ dataViewConfig: { viewColumns: [], sortColumn: {}, sortType: 'asc' },
|
|
|
+ barConfig: { xAxis: { column: {}, granularity: {} }, yAxis: { column: {}, gauge: {} }, groupBy: {} },
|
|
|
+ lineConfig: { xAxis: { column: {}, granularity: {} }, yAxis: { column: {}, gauge: {} }, groupBy: {} },
|
|
|
pieConfig: { xAxis: { column: {}, granularity: {} }, yAxis: { column: {}, gauge: {} } },
|
|
|
- scatterConfig: { xAxis: { column: {}, granularity: {} }, yAxis: { column: {}, gauge: {} } },
|
|
|
+ scatterConfig: { xAxis: { column: {}, granularity: {} }, yAxis: { column: {}, gauge: {} }, groupBy: {} },
|
|
|
style: {},
|
|
|
filters: [],
|
|
|
chartOption: {},
|
|
|
@@ -27,71 +26,19 @@ export default {
|
|
|
{ value: 'owner', name: '创建人' },
|
|
|
{ value: 'anyone', name: '所有人' }
|
|
|
],
|
|
|
- header: {
|
|
|
- label: '标题'
|
|
|
- },
|
|
|
+ header: { label: '标题' },
|
|
|
baseConfig: {
|
|
|
dataSource: '',
|
|
|
viewType: ''
|
|
|
},
|
|
|
- preparing: {
|
|
|
- groupBy: []
|
|
|
- },
|
|
|
- aggregateTableConfig: {
|
|
|
- targetColumn: {},
|
|
|
- statistics: []
|
|
|
- },
|
|
|
- dataViewConfig: {
|
|
|
- viewColumns: [],
|
|
|
- sortColumn: {
|
|
|
-
|
|
|
- }
|
|
|
- },
|
|
|
- barConfig: {
|
|
|
- xAxis: {
|
|
|
- column: {},
|
|
|
- granularity: {}
|
|
|
- },
|
|
|
- yAxis: {
|
|
|
- column: {},
|
|
|
- gauge: {}
|
|
|
- }
|
|
|
- },
|
|
|
- lineConfig: {
|
|
|
- xAxis: {
|
|
|
- column: {},
|
|
|
- granularity: {}
|
|
|
- },
|
|
|
- yAxis: {
|
|
|
- column: {},
|
|
|
- gauge: {}
|
|
|
- }
|
|
|
- },
|
|
|
- pieConfig: {
|
|
|
- xAxis: {
|
|
|
- column: {},
|
|
|
- granularity: {}
|
|
|
- },
|
|
|
- yAxis: {
|
|
|
- column: {},
|
|
|
- gauge: {}
|
|
|
- }
|
|
|
- },
|
|
|
- scatterConfig: {
|
|
|
- xAxis: {
|
|
|
- column: {},
|
|
|
- granularity: {}
|
|
|
- },
|
|
|
- yAxis: {
|
|
|
- column: {},
|
|
|
- gauge: {}
|
|
|
- }
|
|
|
- },
|
|
|
- styleConfig: {
|
|
|
-
|
|
|
- },
|
|
|
- otherConfig:{
|
|
|
- },
|
|
|
+ aggregateTableConfig: { targetColumn: {}, statistics: [], groupBy: [] },
|
|
|
+ dataViewConfig: { viewColumns: [], sortColumn: {}, sortType: 'asc' },
|
|
|
+ barConfig: { xAxis: { column: {}, granularity: {} }, yAxis: { column: {}, gauge: {} }, groupBy: {} },
|
|
|
+ lineConfig: { xAxis: { column: {}, granularity: {} }, yAxis: { column: {}, gauge: {} }, groupBy: {} },
|
|
|
+ pieConfig: { xAxis: { column: {}, granularity: {} }, yAxis: { column: {}, gauge: {} } },
|
|
|
+ scatterConfig: { xAxis: { column: {}, granularity: {} }, yAxis: { column: {}, gauge: {} }, groupBy: {} },
|
|
|
+ styleConfig: { },
|
|
|
+ otherConfig:{ },
|
|
|
description: '',
|
|
|
filters: [],
|
|
|
chartOption: {},
|
|
|
@@ -210,14 +157,14 @@ export default {
|
|
|
{ name: 'baseConfig', value: { dataSource: dataSource.code, viewType: '' } }
|
|
|
] });
|
|
|
const chartDesigner = yield select(state => state.present.chartDesigner);
|
|
|
- const { baseConfig, preparing } = chartDesigner;
|
|
|
+ const { baseConfig } = chartDesigner;
|
|
|
|
|
|
let body = {
|
|
|
chartName: dataSource.name + '(未命名)',
|
|
|
dataId: baseConfig.dataSource,
|
|
|
- groupBy: preparing.groupBy && preparing.groupBy.key ? [{
|
|
|
- columnName: preparing.groupBy.key,
|
|
|
- columnRamane: preparing.groupBy.label
|
|
|
+ groupBy: baseConfig.groupBy && baseConfig.groupBy.key ? [{
|
|
|
+ columnName: baseConfig.groupBy.key,
|
|
|
+ columnRamane: baseConfig.groupBy.label
|
|
|
}] : [],
|
|
|
createBy: 'zhuth',
|
|
|
describes: '',
|
|
|
@@ -249,15 +196,11 @@ export default {
|
|
|
yield put({ type: 'chart/remoteModify' });
|
|
|
const { newHeaderLabel } = action;
|
|
|
const chartDesigner = yield select(state => state.present.chartDesigner);
|
|
|
- const { baseConfig, pieConfig, lineConfig, preparing,
|
|
|
- barConfig, scatterConfig, aggregateTableConfig, dataViewConfig, otherConfig, description, group } = chartDesigner;
|
|
|
+ const { baseConfig, pieConfig, lineConfig, barConfig, scatterConfig, aggregateTableConfig,
|
|
|
+ dataViewConfig, otherConfig, description, group } = chartDesigner;
|
|
|
let body = {
|
|
|
chartName: newHeaderLabel,
|
|
|
dataId: baseConfig.dataSource,
|
|
|
- groupBy: preparing.groupBy ? [{
|
|
|
- columnName: preparing.groupBy.key,
|
|
|
- columnRamane: preparing.groupBy.label
|
|
|
- }] : [],
|
|
|
createBy: 'zhuth',
|
|
|
describes: description || '',
|
|
|
style: '',
|
|
|
@@ -267,21 +210,39 @@ export default {
|
|
|
if(baseConfig.viewType === 'bar') {
|
|
|
body.chartType = 'Histogram';
|
|
|
body.chartConfig = JSON.stringify(barConfig);
|
|
|
+ body.groupBy = barConfig.groupBy ? [{
|
|
|
+ columnName: barConfig.groupBy.key,
|
|
|
+ columnRamane: barConfig.groupBy.label
|
|
|
+ }] : [];
|
|
|
}else if(baseConfig.viewType === 'pie') {
|
|
|
body.chartType = 'Pie';
|
|
|
body.chartConfig = JSON.stringify(pieConfig);
|
|
|
}else if(baseConfig.viewType === 'line') {
|
|
|
body.chartType = 'Line';
|
|
|
body.chartConfig = JSON.stringify(lineConfig);
|
|
|
+ body.groupBy = lineConfig.groupBy ? [{
|
|
|
+ columnName: lineConfig.groupBy.key,
|
|
|
+ columnRamane: lineConfig.groupBy.label
|
|
|
+ }] : [];
|
|
|
}else if(baseConfig.viewType === 'scatter') {
|
|
|
body.chartType = 'scatter';
|
|
|
body.chartConfig = JSON.stringify(scatterConfig);
|
|
|
+ body.groupBy = scatterConfig.groupBy ? [{
|
|
|
+ columnName: scatterConfig.groupBy.key,
|
|
|
+ columnRamane: scatterConfig.groupBy.label
|
|
|
+ }] : [];
|
|
|
}else if(baseConfig.viewType === 'aggregateTable') {
|
|
|
body.chartType = 'population';
|
|
|
body.chartConfig = JSON.stringify(aggregateTableConfig);
|
|
|
+ body.groupBy = aggregateTableConfig.groupBy && aggregateTableConfig.groupBy.length > 0 ? aggregateTableConfig.groupBy.map(g => {
|
|
|
+ return {
|
|
|
+ columnName: g.key,
|
|
|
+ columnRamane: g.label
|
|
|
+ }
|
|
|
+ }) : [];
|
|
|
}else if(baseConfig.viewType === 'dataView') {
|
|
|
body.chartType = 'individual';
|
|
|
- body.chartConfig = JSON.stringify(dataViewConfig);
|
|
|
+ body.chartConfig = JSON.stringify(dataViewConfig);;
|
|
|
}
|
|
|
const res = yield call(service.fetch, {
|
|
|
url: URLS.CHART_ADD,
|
|
|
@@ -306,7 +267,7 @@ export default {
|
|
|
url: URLS.DATASOURCE_QUERY_DATACOLUMNS,
|
|
|
body: code
|
|
|
});
|
|
|
- console.log('获得图表管理数据源列数据', code, res);
|
|
|
+ console.log('获得图表关联数据源列数据', code, res);
|
|
|
if(!res.err && res.data.code > 0) {
|
|
|
let resData = res.data.data;
|
|
|
|
|
|
@@ -353,10 +314,10 @@ export default {
|
|
|
*fetchBarData(action, { select, call, put }) {
|
|
|
try {
|
|
|
const chartDesigner = yield select(state => state.present.chartDesigner);
|
|
|
- const { code, barConfig, preparing } = chartDesigner;
|
|
|
+ const { code, barConfig } = chartDesigner;
|
|
|
const body = {
|
|
|
id: code,
|
|
|
- groups: preparing.groupBy && preparing.groupBy.key ? [preparing.groupBy.key] : [],
|
|
|
+ groups: barConfig.groupBy && barConfig.groupBy.key ? [barConfig.groupBy.key] : [],
|
|
|
xAxis: {
|
|
|
columnRename: barConfig.xAxis.column.value,
|
|
|
columnType: barConfig.xAxis.column.type,
|
|
|
@@ -425,7 +386,7 @@ export default {
|
|
|
option: {
|
|
|
xAxis: res.data.data.xAxis,
|
|
|
columnName: columnName,
|
|
|
- serieses: res.data.data.serieses
|
|
|
+ serieses: res.data.data.serieses || []
|
|
|
}
|
|
|
}
|
|
|
yield put({ type: 'silentSetField', name: 'chartOption', value: config });
|
|
|
@@ -440,7 +401,7 @@ export default {
|
|
|
*fetchLineData(action, { select, call, put }) {
|
|
|
try {
|
|
|
const chartDesigner = yield select(state => state.present.chartDesigner);
|
|
|
- const { code, lineConfig, preparing } = chartDesigner;
|
|
|
+ const { code, lineConfig } = chartDesigner;
|
|
|
const body = {
|
|
|
id: code,
|
|
|
xAxis: {
|
|
|
@@ -451,7 +412,7 @@ export default {
|
|
|
columnRename: lineConfig.yAxis.column.value,
|
|
|
showDataType: lineConfig.yAxis.gauge.value
|
|
|
},
|
|
|
- groups: preparing.groupBy && preparing.groupBy.key ? [preparing.groupBy.key] : [],
|
|
|
+ groups: lineConfig.groupBy && lineConfig.groupBy.key ? [lineConfig.groupBy.key] : [],
|
|
|
};
|
|
|
let res = yield call(service.fetch, {
|
|
|
url: URLS.CHART_LINE_OPTION,
|
|
|
@@ -482,7 +443,7 @@ export default {
|
|
|
*fetchScatterData(action, { select, call, put }) {
|
|
|
try {
|
|
|
const chartDesigner = yield select(state => state.present.chartDesigner);
|
|
|
- const { code, scatterConfig, preparing } = chartDesigner;
|
|
|
+ const { code, scatterConfig } = chartDesigner;
|
|
|
const body = {
|
|
|
id: code,
|
|
|
xAxis: {
|
|
|
@@ -493,7 +454,7 @@ export default {
|
|
|
columnRename: scatterConfig.yAxis.column.value,
|
|
|
showDataType: scatterConfig.yAxis.gauge.value
|
|
|
},
|
|
|
- groups: preparing.groupBy && preparing.groupBy.key ? [preparing.groupBy.key] : [],
|
|
|
+ groups: scatterConfig.groupBy && scatterConfig.groupBy.key ? [scatterConfig.groupBy.key] : [],
|
|
|
};
|
|
|
console.log(body);
|
|
|
let res = yield call(service.fetch, {
|
|
|
@@ -529,13 +490,42 @@ export default {
|
|
|
const { code, dataViewConfig } = chartDesigner;
|
|
|
const body = {
|
|
|
id: code,
|
|
|
- columnName: dataViewConfig.targetColumn,
|
|
|
- columnListName: dataViewConfig.viewColumns,
|
|
|
- sort: "desc",
|
|
|
- showLine: dataViewConfig.maxRows,
|
|
|
- operation: ''
|
|
|
+ columnListName: dataViewConfig.viewColumns.map(c => c.key),
|
|
|
+ sortColumn: dataViewConfig.sortColumn.key,
|
|
|
+ sort: dataViewConfig.sortType,
|
|
|
+ showLine: '20'
|
|
|
};
|
|
|
- console.log(body);return;
|
|
|
+ let res = yield call(service.fetch, {
|
|
|
+ url: URLS.CHART_DATAVIEW_OPTION,
|
|
|
+ body: body
|
|
|
+ });
|
|
|
+ console.log('请求个体统计数据', body, res);
|
|
|
+ if(!res.err && res.data.code > 0) {
|
|
|
+ const resData = res.data.data;
|
|
|
+
|
|
|
+ let columns = dataViewConfig.viewColumns.map(c => {
|
|
|
+ return {
|
|
|
+ title: c.label,
|
|
|
+ dataIndex: c.key
|
|
|
+ }
|
|
|
+ })
|
|
|
+ let dataSource = [];
|
|
|
+ dataSource = resData.map(data => {
|
|
|
+ let d = {};
|
|
|
+ columns.map(c => {
|
|
|
+ return d[c.dataIndex] = data[c.dataIndex.toUpperCase()]
|
|
|
+ });
|
|
|
+ return d
|
|
|
+ });
|
|
|
+ let config = {
|
|
|
+ viewType: 'dataView',
|
|
|
+ option: {
|
|
|
+ columns: columns,
|
|
|
+ data: dataSource
|
|
|
+ }
|
|
|
+ }
|
|
|
+ yield put({ type: 'silentSetField', name: 'chartOption', value: config });
|
|
|
+ }
|
|
|
}catch(e) {
|
|
|
console.error(e);
|
|
|
yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
|
|
|
@@ -544,15 +534,14 @@ export default {
|
|
|
*fetchAggregateTableData(action, { select, call, put }) {
|
|
|
try {
|
|
|
const chartDesigner = yield select(state => state.present.chartDesigner);
|
|
|
- const { code, aggregateTableConfig, preparing } = chartDesigner;
|
|
|
+ const { code, aggregateTableConfig } = chartDesigner;
|
|
|
const { targetColumn, statistics } = aggregateTableConfig;
|
|
|
- const { groupBy } = preparing;
|
|
|
|
|
|
const body = {
|
|
|
id: code,
|
|
|
columnName: targetColumn.name,
|
|
|
operatorList: statistics,
|
|
|
- groupByList: groupBy && groupBy.length > 0 ? groupBy.map(g => g.key) : [],
|
|
|
+ groupByList: aggregateTableConfig.groupBy && aggregateTableConfig.groupBy.length > 0 ? aggregateTableConfig.groupBy.map(g => g.key) : [],
|
|
|
};
|
|
|
let res = yield call(service.fetch, {
|
|
|
url: URLS.CHART_AGGREGATETABLE_OPTION,
|
|
|
@@ -572,8 +561,8 @@ export default {
|
|
|
let columns = [column];
|
|
|
let dataSource = [data]
|
|
|
|
|
|
- if(groupBy && groupBy.length > 0) {
|
|
|
- columns = columns.concat(groupBy.map(g => {
|
|
|
+ if(aggregateTableConfig.groupBy && aggregateTableConfig.groupBy.length > 0) {
|
|
|
+ columns = columns.concat(aggregateTableConfig.groupBy.map(g => {
|
|
|
return {
|
|
|
title: g.label,
|
|
|
dataIndex: g.key
|
|
|
@@ -587,7 +576,7 @@ export default {
|
|
|
dataSource = resData.map(d => {
|
|
|
let obj = {};
|
|
|
stypes.map(st => obj[st.value] = d[st.value.toUpperCase()]);
|
|
|
- groupBy.map(g => obj[g.key] = d[g.key])
|
|
|
+ aggregateTableConfig.groupBy.map(g => obj[g.key] = d[g.key])
|
|
|
return { ...data, ...obj };
|
|
|
});
|
|
|
}else {
|
|
|
@@ -610,7 +599,6 @@ export default {
|
|
|
data: dataSource
|
|
|
}
|
|
|
}
|
|
|
- console.log(config);
|
|
|
yield put({ type: 'silentSetField', name: 'chartOption', value: config });
|
|
|
}else {
|
|
|
yield put({ type: 'silentSetField', name: 'chartOption', value: {} });
|