diff --git a/Dockerfile b/Dockerfile index a6ca401801..a7dd1fd772 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,15 @@ FROM registry.cn-qingdao.aliyuncs.com/dataease/fabric8-java-alpine-openjdk8-jre:edge -RUN echo -e 'https://dl-cdn.alpinelinux.org/alpine/edge/main/\nhttps://dl-cdn.alpinelinux.org/alpine/edge/community/' > /etc/apk/repositories +# RUN echo -e 'https://dl-cdn.alpinelinux.org/alpine/edge/main/\nhttps://dl-cdn.alpinelinux.org/alpine/edge/community/' > /etc/apk/repositories -RUN apk add chromium chromium-chromedriver fontconfig --no-cache --allow-untrusted +# RUN apk add chromium chromium-chromedriver fontconfig --no-cache --allow-untrusted -ADD simsun.ttc /usr/share/fonts/ +# ADD simsun.ttc /usr/share/fonts/ -RUN cd /usr/share/fonts/ \ - && mkfontscale \ - && mkfontdir \ - && fc-cache -fv +# RUN cd /usr/share/fonts/ \ +# && mkfontscale \ +# && mkfontdir \ +# && fc-cache -fv ARG IMAGE_TAG diff --git a/backend/src/main/resources/db/migration/V32__1.8.sql b/backend/src/main/resources/db/migration/V32__1.8.sql index 7657d638ed..0eacd3c270 100644 --- a/backend/src/main/resources/db/migration/V32__1.8.sql +++ b/backend/src/main/resources/db/migration/V32__1.8.sql @@ -313,3 +313,7 @@ ADD COLUMN `uuid` varchar(8) NULL COMMENT 'uuid' AFTER `user_id`; ALTER TABLE `chart_view` ADD COLUMN `is_plugin` bit(1) NULL COMMENT '是否插件' AFTER `chart_type`; + + +INSERT INTO `my_plugin` VALUES (2, '视图默认插件', 'default', 0, 20000, 'view', '默认视图插件', '1.0-SNAPSHOT', NULL, 'fit2cloud-chenyw', 0, NULL, NULL, 'deplugin-view-backend', NULL); + diff --git a/frontend/src/components/canvas/custom-component/UserView.vue b/frontend/src/components/canvas/custom-component/UserView.vue index a17634a791..a0243333f4 100644 --- a/frontend/src/components/canvas/custom-component/UserView.vue +++ b/frontend/src/components/canvas/custom-component/UserView.vue @@ -164,9 +164,7 @@ export default { sourceCustomStyleStr: null } }, - mounted() { - this.bindPluginEvent() - }, + computed: { scaleCoefficient() { if (this.terminal === 'pc' && !this.mobileLayoutStatus) { @@ -351,6 +349,9 @@ export default { deep: true } }, + mounted() { + this.bindPluginEvent() + }, created() { this.refId = uuid.v1 @@ -362,10 +363,17 @@ export default { }, methods: { bindPluginEvent() { - bus.$on('plugin-chart-click', this.chartClick) - bus.$on('plugin-jump-click', this.jumpClick) - bus.$on('plugin-add-view-track-filter', this.addViewTrackFilter) + bus.$on('plugin-chart-click', param => { + param.viewId && param.viewId === this.element.propValue.viewId && this.chartClick(param) + }) + bus.$on('plugin-jump-click', param => { + param.viewId && param.viewId === this.element.propValue.viewId && this.jumpClick(param) + }) + bus.$on('plugin-add-view-track-filter', param => { + param.viewId && param.viewId === this.element.propValue.viewId && this.addViewTrackFilter(param) + }) }, + addViewTrackFilter(linkageParam) { this.$store.commit('addViewTrackFilter', linkageParam) }, diff --git a/frontend/src/components/widget/DeWidget/DeTabs.vue b/frontend/src/components/widget/DeWidget/DeTabs.vue index c2230c3ed9..99a164d901 100644 --- a/frontend/src/components/widget/DeWidget/DeTabs.vue +++ b/frontend/src/components/widget/DeWidget/DeTabs.vue @@ -2,7 +2,7 @@
- + {{ $t('table.delete') }} @@ -35,7 +35,7 @@
- +
@@ -130,14 +130,15 @@ export default { dialogVisible: false, textarea: '', curItem: null, - viewDialogVisible: false, - tabList: [] + viewDialogVisible: false + } }, computed: { dropdownShow() { return this.isEdit && !this.mobileLayoutStatus }, + ...mapState([ 'curComponent', 'mobileLayoutStatus' @@ -152,8 +153,7 @@ export default { }, created() { bus.$on('add-new-tab', this.addNewTab) - this.tabList = this.element.options && this.element.options.tabList - this.activeTabName = this.tabList[0].name + this.activeTabName = this.element.options.tabList[0].name }, methods: { beforeHandleCommond(item, param) { @@ -192,7 +192,8 @@ export default { const newComponentId = uuid.v1() const componentInfo = { type: 'view', - id: node.id + /* id: node.id */ + id: node.innerId } componentList.forEach(componentTemp => { @@ -239,7 +240,7 @@ export default { while (len--) { if (this.element.options.tabList[len].name === param.name) { this.element.options.tabList.splice(len, 1) - this.tabList = this.element.options.tabList + const activIndex = (len - 1 + this.element.options.tabList.length) % this.element.options.tabList.length this.activeTabName = this.element.options.tabList[activIndex].name } @@ -256,7 +257,7 @@ export default { content: null } this.element.options.tabList.push(tab) - this.tabList = this.element.options.tabList + this.styleChange() }, styleChange() { diff --git a/frontend/src/icons/svg/buddle-map.svg b/frontend/src/icons/svg/buddle-map.svg index a56a4cf8c7..3930ea05b1 100644 --- a/frontend/src/icons/svg/buddle-map.svg +++ b/frontend/src/icons/svg/buddle-map.svg @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/frontend/src/store/index.js b/frontend/src/store/index.js index c93e013da1..26b4eb7e5d 100644 --- a/frontend/src/store/index.js +++ b/frontend/src/store/index.js @@ -203,20 +203,35 @@ const data = { for (let index = 0; index < state.componentData.length; index++) { const element = state.componentData[index] + if (element.type && element.type === 'de-tabs') { + for (let idx = 0; idx < element.options.tabList.length; idx++) { + const ele = element.options.tabList[idx].content + if (!ele.type || ele.type !== 'view') continue + const currentFilters = ele.filters || [] + const vidMatch = viewIdMatch(condition.viewIds, ele.propValue.viewId) + + let jdx = currentFilters.length + while (jdx--) { + const filter = currentFilters[jdx] + if (filter.componentId === filterComponentId) { + currentFilters.splice(jdx, 1) + } + } + // 不存在该条件 且 条件有效 直接保存该条件 + // !filterExist && vValid && currentFilters.push(condition) + vidMatch && vValid && currentFilters.push(condition) + ele.filters = currentFilters + } + state.componentData[index] = element + } if (!element.type || element.type !== 'view') continue const currentFilters = element.filters || [] const vidMatch = viewIdMatch(condition.viewIds, element.propValue.viewId) let j = currentFilters.length - // let filterExist = false while (j--) { const filter = currentFilters[j] if (filter.componentId === filterComponentId) { - // filterExist = true - // 已存在该条件 且 条件值有效 直接替换原体检 - // vidMatch && vValid && (currentFilters[j] = condition) - // 已存在该条件 且 条件值无效 直接删除原条件 - // vidMatch && !vValid && (currentFilters.splice(j, 1)) currentFilters.splice(j, 1) } } diff --git a/frontend/src/views/chart/chart/table/table-info.js b/frontend/src/views/chart/chart/table/table-info.js index d5a6f96938..dd6b000952 100644 --- a/frontend/src/views/chart/chart/table/table-info.js +++ b/frontend/src/views/chart/chart/table/table-info.js @@ -116,7 +116,12 @@ export function baseTableNormal(s2, container, chart, action, tableData) { // add drill list if (chart.drill) { - const drillFields = JSON.parse(chart.drillFields) + let drillFields = [] + try { + drillFields = JSON.parse(chart.drillFields) + } catch (err) { + drillFields = JSON.parse(JSON.stringify(chart.drillFields)) + } const drillField = drillFields[chart.drillFilters.length] const drillFilters = JSON.parse(JSON.stringify(chart.drillFilters)) diff --git a/frontend/src/views/chart/components/drag-item/QuotaExtItem.vue b/frontend/src/views/chart/components/drag-item/QuotaExtItem.vue index 28c0ed9cdf..053c311d21 100644 --- a/frontend/src/views/chart/components/drag-item/QuotaExtItem.vue +++ b/frontend/src/views/chart/components/drag-item/QuotaExtItem.vue @@ -180,8 +180,8 @@ export default { const t1 = xAxis.filter(ele => { return ele.deType === 1 }) - // 暂时只支持类别轴/维度的时间类型字段,且视图中有且只有一个时间字段 - if (t1.length === 1 && this.chart.type !== 'text' && this.chart.type !== 'gauge' && this.chart.type !== 'liquid') { + // 暂时只支持类别轴/维度的时间类型字段 + if (t1.length > 0 && this.chart.type !== 'text' && this.chart.type !== 'gauge' && this.chart.type !== 'liquid') { this.disableEditCompare = false } else { this.disableEditCompare = true diff --git a/frontend/src/views/chart/components/drag-item/QuotaItem.vue b/frontend/src/views/chart/components/drag-item/QuotaItem.vue index 5fada430df..66d14db6da 100644 --- a/frontend/src/views/chart/components/drag-item/QuotaItem.vue +++ b/frontend/src/views/chart/components/drag-item/QuotaItem.vue @@ -177,8 +177,8 @@ export default { const t1 = xAxis.filter(ele => { return ele.deType === 1 }) - // 暂时只支持类别轴/维度的时间类型字段,且视图中有且只有一个时间字段 - if (t1.length === 1 && this.chart.type !== 'text' && this.chart.type !== 'gauge' && this.chart.type !== 'liquid') { + // 暂时只支持类别轴/维度的时间类型字段 + if (t1.length > 0 && this.chart.type !== 'text' && this.chart.type !== 'gauge' && this.chart.type !== 'liquid') { this.disableEditCompare = false } else { this.disableEditCompare = true diff --git a/frontend/src/views/panel/filter/filterDialog.vue b/frontend/src/views/panel/filter/filterDialog.vue index b88623d20e..c4a085ae88 100644 --- a/frontend/src/views/panel/filter/filterDialog.vue +++ b/frontend/src/views/panel/filter/filterDialog.vue @@ -387,11 +387,28 @@ export default { return roots }, loadViews() { - const viewIds = this.componentData + /* const viewIds = this.componentData .filter(item => item.type === 'view' && item.propValue && item.propValue.viewId) - .map(item => item.propValue.viewId) + .map(item => item.propValue.viewId) */ + let viewIds = []; let tabViewIds = [] + for (let index = 0; index < this.componentData.length; index++) { + const element = this.componentData[index] + if (element.type && element.propValue && element.propValue.viewId && element.type === 'view') { + viewIds.push(element.propValue.viewId) + } + + if (element.type && element.type === 'de-tabs') { + tabViewIds = element.options.tabList.filter(item => item.content && item.content.type === 'view' && item.content.propValue && item.content.propValue.viewId).map(item => item.content.propValue.viewId) + } + viewIds = [...viewIds, ...tabViewIds] + } viewIds && viewIds.length > 0 && viewsWithIds(viewIds).then(res => { const datas = res.data + /* datas.forEach(item => { + if (tabViewIds.includes(item.id)) { + item.name = 'tabs(' + item.name + ')' + } + }) */ this.viewInfos = datas this.childViews.viewInfos = datas })