feat(视图):spark 缓存模式修改;视图创建支持名称编辑,同时将视图名称默认作为chart title

This commit is contained in:
junjie 2021-04-14 11:27:44 +08:00
parent 230ff9e5a5
commit 97d822796b
4 changed files with 51 additions and 23 deletions

View File

@ -22,6 +22,7 @@ import org.apache.spark.sql.*;
import org.apache.spark.sql.types.DataTypes; import org.apache.spark.sql.types.DataTypes;
import org.apache.spark.sql.types.StructField; import org.apache.spark.sql.types.StructField;
import org.apache.spark.sql.types.StructType; import org.apache.spark.sql.types.StructType;
import org.apache.spark.storage.StorageLevel;
import org.springframework.core.env.Environment; import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import scala.Tuple2; import scala.Tuple2;
@ -144,7 +145,7 @@ public class SparkCalc {
}); });
StructType structType = DataTypes.createStructType(structFields); StructType structType = DataTypes.createStructType(structFields);
Dataset<Row> dataFrame = sqlContext.createDataFrame(rdd, structType).persist(); Dataset<Row> dataFrame = sqlContext.createDataFrame(rdd, structType).persist(StorageLevel.MEMORY_AND_DISK_SER());
CacheUtil.getInstance().addCacheData(hTable, dataFrame); CacheUtil.getInstance().addCacheData(hTable, dataFrame);
dataFrame.count(); dataFrame.count();
return dataFrame; return dataFrame;

View File

@ -697,7 +697,9 @@ export default {
rose_type: '玫瑰图模式', rose_type: '玫瑰图模式',
radius_mode: '半径', radius_mode: '半径',
area_mode: '面积', area_mode: '面积',
rose_radius: '圆角' rose_radius: '圆角',
view_name: '视图名称',
name_can_not_empty: '名称不能为空'
}, },
dataset: { dataset: {
datalist: '数据集', datalist: '数据集',

View File

@ -199,10 +199,17 @@
width="70%" width="70%"
class="dialog-css" class="dialog-css"
> >
<el-row style="width: 400px;">
<el-form ref="form" :model="table" label-width="80px" size="mini" class="form-item">
<el-form-item :label="$t('chart.view_name')">
<el-input v-model="table.name" size="mini" />
</el-form-item>
</el-form>
</el-row>
<table-selector @getTable="getTable" /> <table-selector @getTable="getTable" />
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button size="mini" @click="selectTableFlag = false">{{ $t('chart.cancel') }}</el-button> <el-button size="mini" @click="closeCreateChart">{{ $t('chart.cancel') }}</el-button>
<el-button type="primary" size="mini" @click="createChart">{{ $t('chart.confirm') }}</el-button> <el-button type="primary" size="mini" :disabled="!table.id" @click="createChart">{{ $t('chart.confirm') }}</el-button>
</div> </div>
</el-dialog> </el-dialog>
@ -518,10 +525,24 @@ export default {
this.selectTableFlag = true this.selectTableFlag = true
}, },
closeCreateChart() {
this.selectTableFlag = false
this.table = {}
},
createChart() { createChart() {
console.log(this.table) console.log(this.table)
if (!this.table.name) {
this.$message({
message: this.$t('chart.name_can_not_empty'),
type: 'error',
showClose: true
})
return
}
const view = {} const view = {}
view.name = this.table.name view.name = this.table.name
view.title = this.table.name
view.sceneId = this.currGroup.id view.sceneId = this.currGroup.id
view.tableId = this.table.id view.tableId = this.table.id
view.type = 'bar' view.type = 'bar'
@ -540,7 +561,7 @@ export default {
}) })
view.customFilter = JSON.stringify([]) view.customFilter = JSON.stringify([])
post('/chart/view/save', view).then(response => { post('/chart/view/save', view).then(response => {
this.selectTableFlag = false this.closeCreateChart()
this.$store.dispatch('chart/setTableId', null) this.$store.dispatch('chart/setTableId', null)
this.$store.dispatch('chart/setTableId', this.table.id) this.$store.dispatch('chart/setTableId', this.table.id)
// this.$router.push('/chart/chart-edit') // this.$router.push('/chart/chart-edit')
@ -551,7 +572,7 @@ export default {
}, },
getTable(table) { getTable(table) {
this.table = table this.table = JSON.parse(JSON.stringify(table))
}, },
refresh() { refresh() {
@ -630,4 +651,8 @@ export default {
.dialog-css >>> .el-dialog__body { .dialog-css >>> .el-dialog__body {
padding: 10px 20px 20px; padding: 10px 20px 20px;
} }
.form-item>>>.el-form-item__label{
font-size: 12px;
}
</style> </style>

View File

@ -132,23 +132,23 @@
</el-tab-pane> </el-tab-pane>
</el-tabs> </el-tabs>
</div> </div>
<div style="overflow:auto;border-top: 1px solid #e6e6e6" class="padding-lr filter-class"> <!-- <div style="overflow:auto;border-top: 1px solid #e6e6e6" class="padding-lr filter-class">-->
<span>{{ $t('chart.result_filter') }}</span> <!-- <span>{{ $t('chart.result_filter') }}</span>-->
<div style="margin: 8px" class="filter-inner-class"> <!-- <div style="margin: 8px" class="filter-inner-class">-->
<draggable <!-- <draggable-->
v-model="view.customFilter" <!-- v-model="view.customFilter"-->
group="drag" <!-- group="drag"-->
animation="300" <!-- animation="300"-->
:move="onMove" <!-- :move="onMove"-->
style="height:100%;margin:0;overflow-x: auto;background-color: white;" <!-- style="height:100%;margin:0;overflow-x: auto;background-color: white;"-->
@end="end2" <!-- @end="end2"-->
> <!-- >-->
<transition-group class="draggable-group"> <!-- <transition-group class="draggable-group">-->
<filter-item v-for="(item,index) in view.customFilter" :key="item.id" :index="index" :item="item" /> <!-- <filter-item v-for="(item,index) in view.customFilter" :key="item.id" :index="index" :item="item" />-->
</transition-group> <!-- </transition-group>-->
</draggable> <!-- </draggable>-->
</div> <!-- </div>-->
</div> <!-- </div>-->
</el-col> </el-col>
<el-col style="height: 100%;min-width: 500px;border-top: 1px solid #E6E6E6;"> <el-col style="height: 100%;min-width: 500px;border-top: 1px solid #E6E6E6;">