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.StructField;
import org.apache.spark.sql.types.StructType;
import org.apache.spark.storage.StorageLevel;
import org.springframework.core.env.Environment;
import org.springframework.stereotype.Service;
import scala.Tuple2;
@ -144,7 +145,7 @@ public class SparkCalc {
});
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);
dataFrame.count();
return dataFrame;

View File

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

View File

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

View File

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