Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Bugfix KNOWAGE-8257 #79

Merged
merged 8 commits into from
Nov 15, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions src/components/UI/KnParameterSidebar/KnParameterSidebar.vue
Original file line number Diff line number Diff line change
Expand Up @@ -373,7 +373,7 @@ export default defineComponent({
} else {
parameter.parameterValue[0] = { value: '', description: '' }
}
this.parameters.filterStatus.forEach((el: any) => this.updateDependency(el, true))
this.updateParameterDependencyAfterParameterResetDefaultValue(parameter)
return
}

Expand Down Expand Up @@ -419,7 +419,12 @@ export default defineComponent({
}
parameter.parameterValue[0].value = parameter.driverDefaultValue[0].value ?? parameter.driverDefaultValue[0][valueIndex]
}
this.parameters.filterStatus.forEach((el: any) => this.updateDependency(el))
this.updateParameterDependencyAfterParameterResetDefaultValue(parameter)
},
updateParameterDependencyAfterParameterResetDefaultValue(parameter: any) {
parameter.dependentParameters?.forEach((el: any) => this.updateDependency(el, true))
parameter.dataDependentParameters?.forEach((el: any) => this.updateDependency(el, true))
parameter.lovDependentParameters?.forEach((el: any) => this.updateDependency(el, true))
},
onResetAllParameters() {
this.parameters.filterStatus.forEach((el: any) => this.resetParameterValue(el))
Expand Down
4 changes: 4 additions & 0 deletions src/modules/documentExecution/dashboard/DashboardHelpers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -12,6 +12,7 @@ import mainStore from '@/App.store'
import UserFunctionalitiesConstants from '@/UserFunctionalitiesConstants.json'
import { formatVegaWidget } from './widget/WidgetEditor/helpers/chartWidget/vega/VegaHelpers'
import descriptor from './DashboardDescriptor.json'
import { formatDashboardTableWidgetAfterLoading } from './widget/WidgetEditor/helpers/tableWidget/TableWidgetFunctions'

const store = mainStore()

Expand Down Expand Up @@ -192,6 +193,9 @@ export const formatNewModel = async (dashboard: IDashboard, datasets: IDataset[]
const formatWidget = (widget: IWidget) => {
addColumnIdsToWidgetColumns(widget)
switch (widget.type) {
case 'table':
formatDashboardTableWidgetAfterLoading(widget);
break
case 'chartJS':
formatChartJSWidget(widget)
break
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,7 @@ export const formatRadar = (formattedChartModel: IHighchartsChartModel) => {
}

export const formatBubble = (formattedChartModel: IHighchartsChartModel) => {
if (formattedChartModel.yAxis[0]) delete formattedChartModel.yAxis[0].type
formatBubbleTooltips(formattedChartModel)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,7 @@ export class KnowageHighcharts {

updateChartColorSettings(widgetModel: IWidget) {
if (!this.model.plotOptions || !this.model.chart.type) return
this.model.colors = widgetModel.settings.chart.colors
this.model.colors = [...widgetModel.settings.chart.colors]
}

handleFormatter(that: any, seriesLabelSetting: IHighchartsSerieLabelSettings, chartType: string) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,9 @@ export class KnowageHighchartsBubbleChart extends KnowageHighcharts {

setSpecificOptionsDefaultValues() {
this.setPlotOptions()
if (!this.model.xAxis || !this.model.xAxis.title) this.setBubbleXAxis()
if (!this.model.yAxis || !this.model.yAxis.title) this.setBubbleYAxis()
if (!this.model.xAxis || !this.model.xAxis[0] || !this.model.xAxis[0].title) this.setBubbleXAxis()
if (!this.model.yAxis || !this.model.yAxis[0] || !this.model.yAxis[0].title) this.setBubbleYAxis()
if (this.model.yAxis[0]) delete this.model.yAxis[0].type
}

setPlotOptions() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,21 +76,25 @@ export default defineComponent({
changeChartType(chartType, this.widget, this.isEnterprise)

delete this.widget.invalid
const tempWidgetColors = [...this.widget.settings.chartModel.model.colors]

// TODO widgetChange
if (chartType === 'wordcloud') {
this.widget.type = 'vega'
this.widget.settings = createNewVegaSettings()
this.widget.settings.chart.colors = tempWidgetColors
this.widget.settings.chartModel = createVegaModel(this.widget, chartType)
} else if (this.isEnterprise) {
const oldChartModel = this.widget.settings.chartModel?.model
const type = chartType.replace('Stacked', '')
this.widget.type = 'highcharts'
this.widget.settings = createNewHighchartsSettings()
this.widget.settings.chart.colors = tempWidgetColors
this.widget.settings.chartModel = createNewHighchartsModel(this.widget, type, oldChartModel, chartType.endsWith('Stacked'), chartType.endsWith('Inverted'))
} else {
this.widget.type = 'chartJS'
this.widget.settings = createNewChartJSSettings()
this.widget.settings.chart.colors = tempWidgetColors
this.widget.settings.chartModel = createChartJSModel(chartType)
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -94,14 +94,13 @@ export default defineComponent({
},
loadWidgetModel() {
this.widget = this.widgetModel
if (this.widget.settings.chartModel?.model?.colors) this.widget.settings.chart.colors = [...this.widget.settings.chartModel.model.colors]
},
toggleColorPicker(index) {
this.colorPickerVisible = !this.colorPickerVisible
this.editIndex = index
},
onRowReorder(event) {
this.widget.settings.chart.colors = event.value
this.widget.settings.chart.colors = [...event.value]
emitter.emit('refreshChart', this.widgetModel.id)
},
addColor() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -129,7 +129,7 @@ export default defineComponent({
}
},
getIconClass() {
if (this.option.type && this.model?.icon) return this.model.icon
if (this.option.type === 'icon' && this.model?.icon) return this.model.icon
return this.option.type ? descriptor.icons[this.option.type] : ''
},
getDefaultTooltip() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -455,8 +455,7 @@
"fontWeight": ""
},
"text": ""
},
"type": "category"
}
},
"defaultSerieAccessibilitySetting": {
"description": "",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
import { IWidget, IWidgetColumn, ITableWidgetColumnGroup, IWidgetInteractionParameter, ITableWidgetSettings } from "../../../../Dashboard"
import { IWidget, IWidgetColumn, ITableWidgetColumnGroup, IWidgetInteractionParameter, ITableWidgetSettings, ITableWidgetConfiguration, ITableWidgetHeaders, ITableWidgetVisualization, ITableWidgetConditionalStyles, IWidgetInteractions, IWidgetSelection, ITableWidgetColumnGroups, IWidgetCrossNavigation } from "../../../../Dashboard"
import { emitter } from '../../../../DashboardHelpers'
import * as tableWidgetDefaultValues from './TableWidgetDefaultValues'
import * as widgetCommonDefaultValues from '../common/WidgetCommonDefaultValues'
Expand Down Expand Up @@ -109,4 +109,120 @@ export const removeColumnGroupFromModel = (widgetModel: IWidget, columnGroup: IT

export default removeColumnFromTableWidgetModel

const columnNameIdMap = {}

export function formatDashboardTableWidgetAfterLoading(widget: IWidget) {
if (!widget) return

loadColumnNameIdMap(widget)
formatTableSettings(widget.settings)
}


const loadColumnNameIdMap = (widget: IWidget) => {
widget.columns?.forEach((column: IWidgetColumn) => {
if (column.columnName) columnNameIdMap[column.columnName] = column.id
})
}

const getColumnId = (columnName: string) => {
return columnName ? columnNameIdMap[columnName] : ''
}

const formatTableSettings = (widgetSettings: ITableWidgetSettings) => {
formatTableWidgetConfiguration(widgetSettings.configuration)
formatTableWidgetVisualisation(widgetSettings.visualization)
formatTableWidgetConditionalStyle(widgetSettings.conditionalStyles)
formatTableInteractions(widgetSettings.interactions)
}

const formatTableWidgetConfiguration = (widgetConfiguration: ITableWidgetConfiguration) => {
formatRowsConfiguration(widgetConfiguration)
formatHeadersConfiguration(widgetConfiguration)
formatColumnGroups(widgetConfiguration)
}

const formatRowsConfiguration = (widgetConfiguration: ITableWidgetConfiguration) => {
if (!widgetConfiguration.rows) return
widgetConfiguration.rows.rowSpan.column = getColumnId(widgetConfiguration.rows.rowSpan.column)
}

const formatHeadersConfiguration = (widgetConfiguration: ITableWidgetConfiguration) => {
if (!widgetConfiguration.headers) return
formatHeaderConfigurationRules(widgetConfiguration.headers)
}

const formatHeaderConfigurationRules = (configurationHeaders: ITableWidgetHeaders) => {
for (let i = 0; i < configurationHeaders.custom.rules.length; i++) {
const tempRule = configurationHeaders.custom.rules[i]
const formattedRuleColumns = [] as string[]
for (let j = 0; j < tempRule.target.length; j++) {
formattedRuleColumns.push(getColumnId(tempRule.target[j]))
}
tempRule.target = formattedRuleColumns
delete tempRule.variablePivotDatasetOptions
}
}

const formatColumnGroups = (widgetConfiguration: ITableWidgetConfiguration) => {
if (!widgetConfiguration.columnGroups) return
formatColumnGroupsColumnIdToName(widgetConfiguration.columnGroups)
}

const formatTableWidgetVisualisation = (widgetVisualization: ITableWidgetVisualization) => {
formatVisualizationTypes(widgetVisualization)
formatVisibilityConditions(widgetVisualization)
}

const formatVisualizationTypes = (widgetVisualization: ITableWidgetVisualization) => {
for (let i = 1; i < widgetVisualization.visualizationTypes.types.length; i++) {
const tempVisualization = widgetVisualization.visualizationTypes.types[i]
const formattedRuleColumns = [] as string[]
for (let j = 0; j < tempVisualization.target.length; j++) {
formattedRuleColumns.push(getColumnId(tempVisualization.target[j]))
}
tempVisualization.target = formattedRuleColumns
}
}
const formatVisibilityConditions = (widgetVisualization: ITableWidgetVisualization) => {
for (let i = 0; i < widgetVisualization.visibilityConditions.conditions.length; i++) {
const tempCondition = widgetVisualization.visibilityConditions.conditions[i]
const formattedRuleColumns = [] as string[]
for (let j = 0; j < tempCondition.target.length; j++) {
formattedRuleColumns.push(getColumnId(tempCondition.target[j]))
}
tempCondition.target = formattedRuleColumns
delete tempCondition.condition.variablePivotDatasetOptions
}
}

const formatTableWidgetConditionalStyle = (widgetConditionalStyles: ITableWidgetConditionalStyles) => {
for (let i = 0; i < widgetConditionalStyles.conditions.length; i++) {
const tempCondition = widgetConditionalStyles.conditions[i]
delete tempCondition.condition.variablePivotDatasetOptions
}
}

const formatColumnGroupsColumnIdToName = (columnGroupsConfiguration: ITableWidgetColumnGroups) => {
for (let i = 0; i < columnGroupsConfiguration.groups.length; i++) {
const tempColumnGroup = columnGroupsConfiguration.groups[i]
const formattedColumnGroupColumns = [] as string[]
for (let j = 0; j < tempColumnGroup.columns.length; j++) {
formattedColumnGroupColumns.push(getColumnId(tempColumnGroup.columns[j]))
}
tempColumnGroup.columns = formattedColumnGroupColumns
}
}

const formatTableInteractions = (widgetInteractions: IWidgetInteractions) => {
formatSelection(widgetInteractions.selection as IWidgetSelection)
formatCrossNavigation(widgetInteractions.crossNavigation)
}

const formatSelection = (selection: IWidgetSelection) => {
if (selection.modalColumn) selection.modalColumn = getColumnId(selection.modalColumn)
}

const formatCrossNavigation = (crossNavigation: IWidgetCrossNavigation) => {
if (crossNavigation.column) crossNavigation.column = getColumnId(crossNavigation.column)
}
Loading