Merge branch 'dev' into pr@dev_memory_component

This commit is contained in:
dataeaseShu 2023-01-31 17:52:42 +08:00
commit 9156b14bac
18 changed files with 190 additions and 75 deletions

16
.github/workflows/sync2gitee.yml vendored Normal file
View File

@ -0,0 +1,16 @@
name: sync2gitee
on: [push]
jobs:
repo-sync:
runs-on: ubuntu-latest
steps:
- name: Mirror the Github organization repos to Gitee.
uses: Yikun/hub-mirror-action@master
with:
src: 'github/dataease'
dst: 'gitee/fit2cloud-feizhiyun'
dst_key: ${{ secrets.GITEE_PRIVATE_KEY }}
dst_token: ${{ secrets.GITEE_TOKEN }}
static_list: "DataEase"
force_update: true

View File

@ -509,6 +509,9 @@ public class PanelGroupService {
if (dynamicDataMap == null) {
DataEaseException.throwException("Please use the template after v1.9");
}
//custom组件替换.tableId parentFieldId 追加识别标识
templateData = templateData.replaceAll("\"tableId\":\"", "\"tableId\":\"no_auth");
templateData = templateData.replaceAll("\"fieldsParent\":\\{\"id\":\"", "\"fieldsParent\":\\{\"id\":\"no_auth");
List<PanelViewInsertDTO> panelViews = new ArrayList<>();
List<PanelGroupExtendDataDTO> viewsData = new ArrayList<>();

View File

@ -138,6 +138,14 @@ export function fieldList(id, showLoading = true) {
}
export function fieldListWithPermission(id, showLoading = true) {
//初始模板中的过滤组件无需走后台
if (id.indexOf('no_auth') > -1) {
return new Promise(function(resolve) {
resolve({
data: []
})
})
}
return request({
url: '/dataset/field/listWithPermission/' + id,
loading: showLoading,

View File

@ -252,6 +252,9 @@ export default {
bus.$off('button-dialog-edit', this.editButtonDialog)
},
methods: {
getWrapperChildRefs() {
return this.$refs[this.editorRefName].getWrapperChildRefs()
},
initEvents() {
bus.$on('component-dialog-edit', this.editDialog)
bus.$on('button-dialog-edit', this.editButtonDialog)

View File

@ -154,7 +154,7 @@
/>
</el-dropdown-item>
<el-dropdown-item>
<el-dropdown-item v-if="showPdfPageButton">
<span>
<svg-icon
style="width: 16px; height: 16px;"
@ -286,7 +286,8 @@ export default {
scale: '100%',
timer: null,
changes: 0,
closePanelVisible: false
closePanelVisible: false,
showPdfPageButton: false
}
},
computed: {

View File

@ -223,10 +223,18 @@ export default {
runAnimation(this.$el, this.config.animations)
},
methods: {
setChartData(chart) {
this.chart = chart
getComponentId() {
return this.config.id
},
getCanvasId() {
return this.canvasId
},
getType() {
return this.config.type
},
getWrapperChildRefs() {
return this.$refs.wrapperChild.getWrapperChildRefs()
},
getStyle,
getShapeStyleIntDeDrag(style, prop) {
if (prop === 'rotate') {
return style['rotate']

View File

@ -1017,7 +1017,7 @@ export default {
]),
searchButtonInfo() {
const result = this.buildButtonFilterMap(this.componentData)
const result = this.buildButtonFilterMap(this.$store.state.componentData)
return result
},
filterMap() {
@ -1138,6 +1138,25 @@ export default {
created() {
},
methods: {
getWrapperChildRefs() {
return this.$refs['wrapperChild']
},
getAllWrapperChildRefs() {
let allChildRefs = []
const currentChildRefs = this.getWrapperChildRefs()
if (currentChildRefs && currentChildRefs.length > 0) {
allChildRefs.push.apply(allChildRefs, currentChildRefs)
}
currentChildRefs && currentChildRefs.forEach(subRef => {
if (subRef?.getType && subRef.getType() === 'de-tabs') {
const currentTabChildRefs = subRef.getWrapperChildRefs()
if (currentTabChildRefs && currentTabChildRefs.length > 0) {
allChildRefs.push.apply(allChildRefs, currentTabChildRefs)
}
}
})
return allChildRefs
},
setChartData(chart) {
this.componentData.forEach((item, index) => {
if (item.type === 'view' && item.component === 'user-view' && item.propValue.viewId === chart.id) {
@ -1154,7 +1173,7 @@ export default {
})
},
refreshButtonInfo(isClear = false) {
const result = this.buildButtonFilterMap(this.componentData, isClear)
const result = this.buildButtonFilterMap(this.$store.state.componentData, isClear)
this.searchButtonInfo.buttonExist = result.buttonExist
this.searchButtonInfo.relationFilterIds = result.relationFilterIds
this.searchButtonInfo.filterMap = result.filterMap
@ -1162,10 +1181,12 @@ export default {
this.buttonFilterMap = this.searchButtonInfo.filterMap
},
triggerSearchButton(isClear = false) {
if (this.canvasId !== 'canvas-main') {
return
}
this.refreshButtonInfo(isClear)
this.buttonFilterMap = this.searchButtonInfo.filterMap
this.componentData.forEach(component => {
this.$store.state.componentData.forEach(component => {
if (component.type === 'view' && this.buttonFilterMap[component.propValue.viewId]) {
component.filters = this.buttonFilterMap[component.propValue.viewId]
}
@ -1212,20 +1233,16 @@ export default {
return result
},
buildViewKeyFilters(panelItems, result, isClear = false) {
const refs = this.$refs
if (!this.$refs['wrapperChild'] || !this.$refs['wrapperChild'].length) return result
const len = this.$refs['wrapperChild'].length
const wrapperChildAll = this.getAllWrapperChildRefs()
if (!wrapperChildAll || !wrapperChildAll.length) return result
panelItems.forEach((element) => {
if (element.type !== 'custom') {
return true
}
let param = null
const index = this.getComponentIndex(element.id)
if (index < 0 || index >= len) {
return true
}
const wrapperChild = refs['wrapperChild'][index]
let wrapperChild
wrapperChildAll?.forEach(item => {
if (item?.['getComponentId'] && item.getComponentId() === element.id) {
wrapperChild = item
}
})
if (!wrapperChild || !wrapperChild.getCondition) return true
if (isClear) {
wrapperChild.clearHandler && wrapperChild.clearHandler()
@ -1234,9 +1251,11 @@ export default {
const condition = formatCondition(param)
const vValid = valueValid(condition)
const filterComponentId = condition.componentId
const conditionCanvasId = wrapperChild.getCanvasId && wrapperChild.getCanvasId()
Object.keys(result).forEach(viewId => {
const vidMatch = viewIdMatch(condition.viewIds, viewId)
const viewFilters = result[viewId]
const canvasMatch = this.checkCanvasViewIdsMatch(conditionCanvasId, viewId)
let j = viewFilters.length
while (j--) {
const filter = viewFilters[j]
@ -1244,14 +1263,24 @@ export default {
viewFilters.splice(j, 1)
}
}
vidMatch && vValid && viewFilters.push(condition)
canvasMatch && vidMatch && vValid && viewFilters.push(condition)
})
})
return result
},
checkCanvasViewIdsMatch(conditionCanvasId, viewId) {
if (conditionCanvasId === 'canvas-main') {
return true
}
for (let index = 0; index < this.$store.state.componentData.length; index++) {
const item = this.$store.state.componentData[index]
if (item.type === 'view' && item.propValue.viewId === viewId && item.canvasId === conditionCanvasId) return true
}
return false
},
getComponentIndex(id) {
for (let index = 0; index < this.componentData.length; index++) {
const item = this.componentData[index]
for (let index = 0; index < this.$store.state.componentData.length; index++) {
const item = this.$store.state.componentData[index]
if (item.id === id) return index
}
return -1

View File

@ -346,10 +346,10 @@ export default {
return this.targetLinkageInfo[this.element.propValue.viewId]
},
miniHeight() {
return this.mobileLayoutStatus ? 1 : 4
return this.mobileLayoutStatus ? 1 : 1
},
miniWidth() {
return this.mobileLayoutStatus ? 1 : 4
return this.mobileLayoutStatus ? 1 : 1
},
curCanvasScaleSelf() {
return this.curCanvasScaleMap[this.canvasId]

View File

@ -366,7 +366,7 @@ export default {
]),
searchButtonInfo() {
const result = this.buildButtonFilterMap(this.componentData)
const result = this.buildButtonFilterMap(this.$store.state.componentData)
return result
},
filterMap() {
@ -448,6 +448,26 @@ export default {
bus.$off('trigger-reset-button', this.triggerResetButton)
},
methods: {
getWrapperChildRefs() {
return this.$refs['viewWrapperChild']
},
getAllWrapperChildRefs() {
let allChildRefs = []
const currentChildRefs = this.getWrapperChildRefs()
if (currentChildRefs && currentChildRefs.length > 0) {
allChildRefs.push.apply(allChildRefs, currentChildRefs)
}
currentChildRefs && currentChildRefs.forEach(subRef => {
if (subRef?.getType && subRef.getType() === 'de-tabs') {
const currentTabChildRefs = subRef.getWrapperChildRefs()
if (currentTabChildRefs && currentTabChildRefs.length > 0) {
allChildRefs.push.apply(allChildRefs, currentTabChildRefs)
}
}
})
return allChildRefs
},
getCanvasHeight() {
return this.mainHeightCount
},
@ -484,12 +504,15 @@ export default {
})
},
triggerSearchButton(isClear = false) {
const result = this.buildButtonFilterMap(this.componentData, isClear)
if (this.canvasId !== 'canvas-main') {
return
}
const result = this.buildButtonFilterMap(this.$store.state.componentData, isClear)
this.searchButtonInfo.autoTrigger = result.autoTrigger
this.searchButtonInfo.filterMap = result.filterMap
this.buttonFilterMap = this.searchButtonInfo.filterMap
this.componentData.forEach(component => {
this.$store.state.componentData.forEach(component => {
if (component.type === 'view' && this.buttonFilterMap[component.propValue.viewId]) {
component.filters = this.buttonFilterMap[component.propValue.viewId]
}
@ -534,19 +557,20 @@ export default {
return result
},
buildViewKeyFilters(panelItems, result, isClear = false) {
const refs = this.$refs
if (!this.$refs['viewWrapperChild'] || !this.$refs['viewWrapperChild'].length) return result
const wrapperChildAll = this.getAllWrapperChildRefs()
if (!wrapperChildAll || !wrapperChildAll.length) return result
panelItems.forEach((element) => {
if (element.type !== 'custom') {
return true
}
const index = this.getComponentIndex(element.id)
if (index < 0) {
return true
}
let wrapperChild
wrapperChildAll?.forEach(item => {
if (item?.['getComponentId'] && item.getComponentId() === element.id) {
wrapperChild = item
}
})
if (!wrapperChild || !wrapperChild.getCondition) return true
let param = null
const wrapperChild = refs['viewWrapperChild'][index]
if (isClear) {
wrapperChild.clearHandler && wrapperChild.clearHandler()
}
@ -554,9 +578,12 @@ export default {
const condition = formatCondition(param)
const vValid = valueValid(condition)
const filterComponentId = condition.componentId
const conditionCanvasId = wrapperChild.getCanvasId && wrapperChild.getCanvasId()
Object.keys(result).forEach(viewId => {
const vidMatch = viewIdMatch(condition.viewIds, viewId)
const viewFilters = result[viewId]
const canvasMatch = this.checkCanvasViewIdsMatch(conditionCanvasId, viewId)
let j = viewFilters.length
while (j--) {
const filter = viewFilters[j]
@ -564,11 +591,21 @@ export default {
viewFilters.splice(j, 1)
}
}
vidMatch && vValid && viewFilters.push(condition)
canvasMatch && vidMatch && vValid && viewFilters.push(condition)
})
})
return result
},
checkCanvasViewIdsMatch(conditionCanvasId, viewId) {
if (conditionCanvasId === 'canvas-main') {
return true
}
for (let index = 0; index < this.$store.state.componentData.length; index++) {
const item = this.$store.state.componentData[index]
if (item.type === 'view' && item.propValue.viewId === viewId && item.canvasId === conditionCanvasId) return true
}
return false
},
getComponentIndex(id) {
for (let index = 0; index < this.componentData.length; index++) {
const item = this.componentData[index]

View File

@ -175,6 +175,12 @@ export default {
this.$set(this.element.style, 'innerBgColor', innerBgColor || '')
},
methods: {
getComponentId() {
return this.element.id
},
getCanvasId() {
return this.canvasId
},
handlerPositionChange(val) {
const { horizontal = 'left', vertical = 'center' } = val
this.titleStyle = {
@ -185,7 +191,6 @@ export default {
flexDirection: 'column'
}
if (vertical !== 'top' && this.element.component !== 'de-select-grid') {
this.titleStyle = null
this.outsideStyle = {

View File

@ -630,7 +630,8 @@ export default {
}
if (this.element.auxiliaryMatrix && this.curCanvasScaleSelf) {
const height = Math.round(this.height / this.curCanvasScaleSelf.matrixStyleHeight) * this.curCanvasScaleSelf.matrixStyleHeight
return (height - this.curGap * 2) + 'px'
const hp = (height - this.curGap * 2)
return (hp > 3 ? hp : 3) + 'px'
} else {
return (this.height - this.curGap * 2) + 'px'
}
@ -682,14 +683,14 @@ export default {
return (this.canvasStyleData.panel.gap === 'yes' && this.element.auxiliaryMatrix) ? this.componentGap : 0
},
miniWidth() {
return this.element.auxiliaryMatrix ? this.curCanvasScaleSelf.matrixStyleWidth * (this.mobileLayoutStatus ? 1 : 4) : 0
return this.element.auxiliaryMatrix ? this.curCanvasScaleSelf.matrixStyleWidth * (this.mobileLayoutStatus ? 1 : 1) : 0
},
miniHeight() {
if (this.element.auxiliaryMatrix) {
if (this.element.component === 'de-number-range') {
return this.element.auxiliaryMatrix ? this.curCanvasScaleSelf.matrixStyleHeight * (this.mobileLayoutStatus ? 1 : 4) : 0
return this.element.auxiliaryMatrix ? this.curCanvasScaleSelf.matrixStyleHeight * (this.mobileLayoutStatus ? 1 : 1) : 0
} else {
return this.element.auxiliaryMatrix ? this.curCanvasScaleSelf.matrixStyleHeight * (this.mobileLayoutStatus ? 1 : 4) : 0
return this.element.auxiliaryMatrix ? this.curCanvasScaleSelf.matrixStyleHeight * (this.mobileLayoutStatus ? 1 : 1) : 0
}
} else {
return 0

View File

@ -152,11 +152,17 @@ export default {
},
resetDefaultValue(id) {
if (this.inDraw && this.manualModify && this.element.id === id) {
const values = this.element.options.value
this.form.min = values[0]
if (values.length > 1) {
this.form.max = values[1]
if (!this.element.options.value) {
this.form.min = null
this.form.max = null
} else {
const values = this.element.options.value
this.form.min = values[0]
if (values.length > 1) {
this.form.max = values[1]
}
}
this.search()
}
},

View File

@ -76,6 +76,7 @@
>
<Preview
:component-data="tabCanvasComponentData(item.name)"
:ref="'canvasTabRef-'+item.name"
:canvas-style-data="canvasStyleData"
:canvas-id="element.id+'-'+item.name"
:panel-info="panelInfo"
@ -458,6 +459,23 @@ export default {
bus.$off('add-new-tab', this.addNewTab)
},
methods: {
getType() {
return this.element.type
},
getWrapperChildRefs() {
let refsSubAll = []
const _this = this
this.element.options.tabList.forEach(tabItem => {
const refsSub = _this.$refs['canvasTabRef-' + tabItem.name]
if (refsSub && refsSub.length) {
const refsSubArray = refsSub[0].getWrapperChildRefs()
if (refsSubArray && refsSubArray.length > 0) {
refsSubAll.push.apply(refsSubAll, refsSubArray)
}
}
})
return refsSubAll
},
titleStyle(itemName) {
if (this.activeTabName === itemName) {
return {

View File

@ -1884,7 +1884,7 @@ export default {
all_compute_mode: 'Direct connection and extraction mode',
extra_params: 'Extra JDBC connection string',
please_input_dataPath: 'Please enter the JsonPath data path',
show_api_data: 'View API raw data',
show_api_data: 'View API data structure',
warning: 'Contains invalid table',
data_table: 'Dataset Table',
data_table_name: 'Dataset Table name',

View File

@ -1878,7 +1878,7 @@ export default {
all_compute_mode: '直連、抽取模式',
extra_params: '額外的JDBC連接字符串',
please_input_dataPath: '請輸入 JsonPath 數據路徑',
show_api_data: '查看API原始數據',
show_api_data: '查看API数据結構',
warning: '包含無效數據表',
data_table: '數據表',
data_table_name: '數據表名稱',

View File

@ -1877,7 +1877,7 @@ export default {
all_compute_mode: '直连、抽取模式',
extra_params: '额外的JDBC连接字符串',
please_input_dataPath: '请输入 JsonPath 数据路径',
show_api_data: '查看API原始数据',
show_api_data: '查看API数据结构',
warning: '包含无效数据表',
data_table: '数据表',
data_table_name: '数据表名称',

View File

@ -357,23 +357,7 @@ export default {
},
'activeName': {
handler(newName, oldName) {
if (this.activeName === 'assembly') {
this.allParams = JSON.parse(JSON.stringify(this.childViews.datasetParams))
} else {
if (this.datasetParams.length > 0) {
for (var j = 0; j < this.datasetParams.length; j++) {
var hasParam = false
for (var i = 0; i < this.childViews.datasetParams.length; i++) {
if (this.childViews.datasetParams[i].id === this.datasetParams[j].id) {
hasParam = true
}
}
if (!hasParam) {
this.allParams.push(this.datasetParams[j])
}
}
}
}
}
}
},

View File

@ -1174,10 +1174,6 @@ export default {
}
},
showApiData(){
if (this.apiItem.useJsonPath && !this.apiItem.jsonPath) {
this.$message.error(i18n.t('datasource.please_input_dataPath'))
return
}
this.$refs.apiItemBasicInfo.validate((valid) => {
if (valid) {
const data = Base64.encode(JSON.stringify(this.apiItem))
@ -1302,16 +1298,16 @@ export default {
},
handleCheckAllChange(apiItem, row, ref) {
this.errMsg = []
this.handleCheckChange(apiItem, row)
apiItem.fields = []
this.handleFiledChange(apiItem, row)
this.handleCheckChange(this.apiItem, row)
this.apiItem.fields = []
this.handleFiledChange(this.apiItem, row)
if(ref === 'plxTable'){
this.$nextTick(() => {
this.$refs.plxTable?.reloadData(this.previewData(this.apiItem))
})
}else {
this.$nextTick(() => {
this.$refs.originPlxTable?.reloadData(this.previewData(this.originFieldItem))
this.$refs.originPlxTable?.reloadData(this.previewData(this.apiItem))
})
}