forked from github/dataease
Merge remote-tracking branch 'origin/dev' into dev
This commit is contained in:
commit
479b9a111c
@ -105,6 +105,9 @@ public class DriverService {
|
||||
public void deleteDriverFile(String driverFileId) throws Exception{
|
||||
DeDriverDetails deDriverDetails = deDriverDetailsMapper.selectByPrimaryKey(driverFileId);
|
||||
DeDriver deDriver = deDriverMapper.selectByPrimaryKey(deDriverDetails.getDeDriverId());
|
||||
if(deDriver == null){
|
||||
throw new Exception(Translator.get("I18N_DRIVER_NOT_FOUND"));
|
||||
}
|
||||
DeFileUtils.deleteFile(DRIVER_PATH + deDriverDetails.getDeDriverId() + "/" + deDriverDetails.getFileName());
|
||||
SysLogDTO sysLogDTO = DeLogUtils.buildLog(SysLogConstants.OPERATE_TYPE.DELETE, SysLogConstants.SOURCE_TYPE.DRIVER_FILE, deDriverDetails.getId(), deDriverDetails.getDeDriverId(), null, null);
|
||||
DeLogUtils.save(sysLogDTO);
|
||||
@ -114,6 +117,10 @@ public class DriverService {
|
||||
}
|
||||
|
||||
public DeDriverDetails saveJar(MultipartFile file, String driverId) throws Exception {
|
||||
DeDriver deDriver = deDriverMapper.selectByPrimaryKey(driverId);
|
||||
if(deDriver == null){
|
||||
throw new Exception(Translator.get("I18N_DRIVER_NOT_FOUND"));
|
||||
}
|
||||
String filename = file.getOriginalFilename();
|
||||
String dirPath = DRIVER_PATH + driverId + "/";
|
||||
String filePath = dirPath + filename;
|
||||
@ -138,7 +145,6 @@ public class DriverService {
|
||||
deDriverDetailsMapper.insert(deDriverDetails);
|
||||
SysLogDTO sysLogDTO = DeLogUtils.buildLog(SysLogConstants.OPERATE_TYPE.UPLOADFILE, SysLogConstants.SOURCE_TYPE.DRIVER_FILE, deDriverDetails.getId(), driverId, null, null);
|
||||
DeLogUtils.save(sysLogDTO);
|
||||
DeDriver deDriver = deDriverMapper.selectByPrimaryKey(driverId);
|
||||
DefaultJdbcProvider defaultJdbcProvider = (DefaultJdbcProvider)ProviderFactory.getProvider(deDriver.getType());
|
||||
defaultJdbcProvider.reloadCustomJdbcClassLoader(deDriver);
|
||||
return deDriverDetails;
|
||||
|
@ -155,4 +155,5 @@ SOURCE_TYPE_DRIVER_FILE=DRIVER FILE
|
||||
SOURCE_TYPE_MENU=MENU
|
||||
|
||||
I18N_DRIVER_NOT_DELETE=Drivers in use cannot be deleted
|
||||
I18N_DRIVER_REPEAT_NAME=Driver name cannot be same.
|
||||
I18N_DRIVER_REPEAT_NAME=Driver name cannot be same.
|
||||
I18N_DRIVER_NOT_FOUND=Cannot find driver.
|
@ -159,3 +159,4 @@ I18N_TIME=操作时间
|
||||
|
||||
I18N_DRIVER_NOT_DELETE=使用中的驱动不允许删除
|
||||
I18N_DRIVER_REPEAT_NAME=名称重复
|
||||
I18N_DRIVER_NOT_FOUND=未找到驱动
|
||||
|
@ -154,4 +154,5 @@ SOURCE_TYPE_DRIVER_FILE=驅動文件
|
||||
SOURCE_TYPE_MENU=菜單
|
||||
|
||||
I18N_DRIVER_NOT_DELETE=使用中的驅動不允許删除
|
||||
I18N_DRIVER_REPEAT_NAME=名稱重複
|
||||
I18N_DRIVER_REPEAT_NAME=名稱重複
|
||||
I18N_DRIVER_NOT_FOUND=未找到驅動
|
@ -660,6 +660,8 @@ export default {
|
||||
kettle_setting: 'Kettle Setting'
|
||||
},
|
||||
chart: {
|
||||
view_reset: 'View Reset',
|
||||
view_reset_tips: 'Discard Changes To View?',
|
||||
export_img: 'Export Img',
|
||||
title_repeat: 'The Title Already Exist',
|
||||
save_snapshot: 'Save Snapshot',
|
||||
|
@ -662,6 +662,8 @@ export default {
|
||||
kettle_setting: 'Kettle 設置'
|
||||
},
|
||||
chart: {
|
||||
view_reset: '视图重置',
|
||||
view_reset_tips: '放弃对视图的修改?',
|
||||
export_img: '导出图片',
|
||||
title_repeat: '當前標題已存在',
|
||||
save_snapshot: '保存縮略圖',
|
||||
|
@ -663,6 +663,8 @@ export default {
|
||||
kettle_setting: 'Kettle 设置'
|
||||
},
|
||||
chart: {
|
||||
view_reset: '视图重置',
|
||||
view_reset_tips: '放弃对视图的修改?',
|
||||
export_img: '导出图片',
|
||||
title_repeat: '当前标题已存在',
|
||||
save_snapshot: '保存缩略图',
|
||||
|
@ -95,7 +95,7 @@
|
||||
:key="item.id"
|
||||
class="item-dimension"
|
||||
:title="item.name"
|
||||
@click="insertFieldToCodeMirror('['+item.id+']')"
|
||||
@click="insertFieldToCodeMirror('['+item.name+']')"
|
||||
>
|
||||
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
|
||||
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
|
||||
@ -125,7 +125,7 @@
|
||||
:key="item.id"
|
||||
class="item-quota"
|
||||
:title="item.name"
|
||||
@click="insertFieldToCodeMirror('['+item.id+']')"
|
||||
@click="insertFieldToCodeMirror('['+item.name+']')"
|
||||
>
|
||||
<svg-icon v-if="item.deType === 0" icon-class="field_text" class="field-icon-text" />
|
||||
<svg-icon v-if="item.deType === 1" icon-class="field_time" class="field-icon-time" />
|
||||
@ -283,7 +283,8 @@ export default {
|
||||
dimensionData: [],
|
||||
quotaData: [],
|
||||
functionData: [],
|
||||
tableFields: {}
|
||||
tableFields: {},
|
||||
name2Auto: []
|
||||
}
|
||||
},
|
||||
computed: {
|
||||
@ -332,7 +333,7 @@ export default {
|
||||
this.$refs.myCm.codemirror.showHint()
|
||||
})
|
||||
this.initFunctions()
|
||||
this.initField()
|
||||
// this.initField()
|
||||
},
|
||||
methods: {
|
||||
onCmReady(cm) {
|
||||
@ -356,6 +357,7 @@ export default {
|
||||
pos2.line = pos1.line
|
||||
pos2.ch = pos1.ch
|
||||
this.$refs.myCm.codemirror.replaceRange(param, pos2)
|
||||
this.$refs.myCm.codemirror.markText(pos2, { line: pos2.line, ch: param.length + pos2.ch }, { atomic: true, selectRight: true })
|
||||
},
|
||||
|
||||
initFunctions() {
|
||||
@ -370,28 +372,63 @@ export default {
|
||||
initField() {
|
||||
if (this.field.id || this.mode === 'copy') {
|
||||
this.fieldForm = JSON.parse(JSON.stringify(this.field))
|
||||
this.name2Auto = []
|
||||
this.fieldForm.originName = this.setNameIdTrans('id', 'name', this.fieldForm.originName, this.name2Auto)
|
||||
setTimeout(() => {
|
||||
this.matchToAuto()
|
||||
}, 500)
|
||||
} else {
|
||||
this.fieldForm = JSON.parse(JSON.stringify(this.fieldForm))
|
||||
}
|
||||
},
|
||||
matchToAuto() {
|
||||
if (!this.name2Auto.length) return
|
||||
this.name2Auto.forEach(ele => {
|
||||
const search = this.$refs.myCm.codemirror.getSearchCursor(ele, { line: 0, ch: 0 })
|
||||
if (search.find()) {
|
||||
const { from, to } = search.pos
|
||||
this.$refs.myCm.codemirror.markText({ line: from.line, ch: from.ch - 1 }, { line: to.line, ch: to.ch + 1 }, { atomic: true, selectRight: true })
|
||||
}
|
||||
})
|
||||
},
|
||||
|
||||
closeCalcField() {
|
||||
this.resetField()
|
||||
this.$emit('onEditClose', {})
|
||||
},
|
||||
|
||||
setNameIdTrans(from, to, originName, name2Auto) {
|
||||
let name2Id = originName
|
||||
const nameIdMap = [...this.dimensionData, ...this.quotaData].reduce((pre, next) => {
|
||||
pre[next[from]] = next[to]
|
||||
return pre
|
||||
}, {})
|
||||
const on = originName.match(/(?<=\[).+?(?=\])/g)
|
||||
if (on) {
|
||||
on.forEach(ele => {
|
||||
if (name2Auto) {
|
||||
name2Auto.push(nameIdMap[ele])
|
||||
}
|
||||
name2Id = name2Id.replace(ele, nameIdMap[ele])
|
||||
})
|
||||
}
|
||||
return name2Id
|
||||
},
|
||||
|
||||
saveCalcField() {
|
||||
if (this.fieldForm.name && this.fieldForm.name.length > 50) {
|
||||
const { id, name = [], deType, originName } = this.fieldForm
|
||||
if (name.length > 50) {
|
||||
this.$message.error(this.$t('dataset.field_name_less_50'))
|
||||
return
|
||||
}
|
||||
if (!this.fieldForm.id) {
|
||||
this.fieldForm.type = this.fieldForm.deType
|
||||
this.fieldForm.deExtractType = this.fieldForm.deType
|
||||
if (!id) {
|
||||
this.fieldForm.type = deType
|
||||
this.fieldForm.deExtractType = deType
|
||||
this.fieldForm.tableId = this.param.tableId
|
||||
this.fieldForm.columnIndex = 0
|
||||
this.fieldForm.chartId = this.param.id
|
||||
}
|
||||
this.fieldForm.originName = this.setNameIdTrans('name', 'id', originName)
|
||||
post('/chart/field/save/' + this.panelInfo.id, this.fieldForm).then(response => {
|
||||
this.closeCalcField()
|
||||
})
|
||||
@ -425,6 +462,8 @@ export default {
|
||||
|
||||
this.dimensionData = JSON.parse(JSON.stringify(this.tableFields.dimensionList)).filter(ele => ele.extField === 0)
|
||||
this.quotaData = JSON.parse(JSON.stringify(this.tableFields.quotaList)).filter(ele => ele.extField === 0)
|
||||
|
||||
this.initField()
|
||||
})
|
||||
}
|
||||
}
|
||||
|
@ -1098,6 +1098,7 @@ import { pluginTypes } from '@/api/chart/chart'
|
||||
import ValueFormatterEdit from '@/views/chart/components/value-formatter/ValueFormatterEdit'
|
||||
import ChartStyle from '@/views/chart/view/ChartStyle'
|
||||
import CustomSortEdit from '@/views/chart/components/compare/CustomSortEdit'
|
||||
import {delGroup} from "@/api/panel/panel";
|
||||
import ChartFieldEdit from '@/views/chart/view/ChartFieldEdit'
|
||||
import CalcChartFieldEdit from '@/views/chart/view/CalcChartFieldEdit'
|
||||
|
||||
@ -2504,11 +2505,19 @@ export default {
|
||||
|
||||
reset() {
|
||||
const _this = this
|
||||
resetViewCacheCallBack(_this.param.id, _this.panelInfo.id, function(rsp) {
|
||||
_this.changeEditStatus(false)
|
||||
_this.getChart(_this.param.id, 'panel')
|
||||
// _this.getData(_this.param.id)
|
||||
bus.$emit('view-in-cache', { type: 'propChange', viewId: _this.param.id })
|
||||
|
||||
this.$confirm(this.$t('chart.view_reset'), this.$t('chart.view_reset_tips'), {
|
||||
confirmButtonText: this.$t('commons.confirm'),
|
||||
cancelButtonText: this.$t('commons.cancel'),
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
resetViewCacheCallBack(_this.param.id, _this.panelInfo.id, function(rsp) {
|
||||
_this.changeEditStatus(false)
|
||||
_this.getChart(_this.param.id, 'panel')
|
||||
bus.$emit('view-in-cache', { type: 'propChange', viewId: _this.param.id })
|
||||
})
|
||||
}).catch(() => {
|
||||
// Do Nothing
|
||||
})
|
||||
},
|
||||
changeEditStatus(status) {
|
||||
|
Loading…
Reference in New Issue
Block a user