From 055a4f32a13ca9d8d6a35faf3a3fb3c545074678 Mon Sep 17 00:00:00 2001 From: Daniel Quathamer Date: Wed, 4 Jan 2023 16:05:45 +0100 Subject: [PATCH] Dynamische Elemente und Resultsets #5 --- superx/xml/js/viz/viz_functions.js | 206 +++++++++++++++++++++++------ superx/xml/viz_html_chart.xsl | 8 +- 2 files changed, 169 insertions(+), 45 deletions(-) diff --git a/superx/xml/js/viz/viz_functions.js b/superx/xml/js/viz/viz_functions.js index 51a9483..c4c1da7 100644 --- a/superx/xml/js/viz/viz_functions.js +++ b/superx/xml/js/viz/viz_functions.js @@ -64,8 +64,13 @@ function chartModel(id,name,renderer,datasources) this.getChartSVGWithPlot=function () { console.log("using Plot"); - //copy ChartElements to marks: var marksArray=new Array(); + //first empty marks: + for(var k=0;k< this.options["marks"].length;k++) + { + delete this.options["marks"][k]; + } + //copy ChartElements to marks: for(var k=0;k< this.chartElements.length;k++) { marksArray[k]=renderChartElementWithPlot(this.chartElements[k]); @@ -172,8 +177,9 @@ var isDefault=true; for(var j=0;j < rsColumnMetaData[datasource].length;j++) { if(rsColumnMetaData[datasource][j].colcaption.trim() !="" - && ( - isMeasure==false || rsColumnMetaData[datasource][j].coltype == 4 || rsColumnMetaData[datasource][j].coltype == 3) + //&& ( + // isMeasure==false || rsColumnMetaData[datasource][j].coltype == 4 || rsColumnMetaData[datasource][j].coltype == 3) + // ) { //console.log("feld "+rsColumnMetaData[j].nr+selectionRsMetaData[j].targetColumn); @@ -339,8 +345,10 @@ function renderChart(chartDiv,currentChartModel) var renderer=document.getElementById('fldVizRenderer').value; var mySVG=currentChartModel.getChartSVG(); document.getElementById(chartDiv).innerHTML=""; + if(typeof mySVG === 'object') + { document.getElementById(chartDiv).appendChild(mySVG); - + } } function prepareSelectionForm() @@ -434,7 +442,7 @@ function createChartElementConfig1Form(renderer,elemID) selVizTypeElem.onchange= function () { createChartElementsConfig2Form(renderer); }; - fillSelectOptions(selVizTypeElem,getPossibleVizTypes(renderer),true); + fillSelectOptions(selVizTypeElem,getPossibleVizTypes(renderer),false); fieldVizTypeElem.appendChild(selVizTypeElem); elementVizTypeDiv.appendChild(fieldVizTypeElem); @@ -462,11 +470,26 @@ function createChartElementsConfig2Form(renderer) const saveBtn = document.createElement("input"); saveBtn.type="BUTTON"; saveBtn.value="Übernehmen"; + saveBtn.classList.add("button"); + saveBtn.classList.add("is-small"); + saveBtn.onclick =function() {             saveChartElementConfig()         } saveBtnDiv.appendChild(saveBtn); elementDivBox.appendChild(saveBtnDiv); + //remove: + const removeBtnDiv = document.createElement("div"); + const removeBtn = document.createElement("input"); + removeBtn.type="BUTTON"; + removeBtn.value="Entfernen"; + removeBtn.classList.add("button"); + removeBtn.classList.add("is-small"); + removeBtn.onclick =function() { +            removeChartElementConfig() +        } + removeBtnDiv.appendChild(removeBtn); + elementDivBox.appendChild(removeBtnDiv); formChartElementConfig2Div.appendChild(elementDivBox); /*columnsDiv.appendChild(columnDiv); @@ -512,6 +535,16 @@ function saveChartElementConfig() //myVizType.elementTypeProperties=null; //TODO: Existenz abfangen, hier wird einfach hinzugefügt: myChartModel.chartElements.push(myVizType); + //Reset Elements Form + elemID++; + document.getElementById("chartElementID").value=elemID; + document.getElementById("chartElementVizType").value=""; + var formChartElementConfig2Div=document.getElementById("ChartElementConfig2Div"); + while (formChartElementConfig2Div.firstChild) { + formChartElementConfig2Div.removeChild(formChartElementConfig2Div.firstChild); + } + + renderChart('chartDiv',myChartModel); /*var marksArray=new Array(); marksArray[elemID]=Plot.barX(rs_table0, @@ -524,19 +557,41 @@ function saveChartElementConfig() chartOptions["marks"].push(marksArray);*/ } +function removeChartElementConfig() +{ + + var propertyCounter=myChartModel.chartElements.length; + var elemID=document.getElementById("chartElementID").value; + if(propertyCounter>0) + { + /*var filtered=myChartModel.chartElements.filter(obj => obj.nr !== propertyCounter-1); + myChartModel.chartElements=filtered;*/ + delete myChartModel.chartElements[propertyCounter-1]; + elemID--; + document.getElementById("chartElementID").value=elemID; + + renderChart('chartDiv',myChartModel); + } +} + +function resetChartPropertiesForm() +{ + myChartModel=new chartModel(1,"",document.getElementById("fldVizRenderer").value,rsTableMetaData); + renderChart('chartDiv',myChartModel); + return true; +} function getPossibleVizTypes(renderer) { var possibleVizTypes=new Array(); for(var k=0;k < vizTypes.length;k++) { - var isDefault=true; if(vizTypes[k].rendererUniquename==renderer) { var newVizType = new possibleVizType( //nr,value,name,explanation,isDefault - k,vizTypes[k].uniquename,vizTypes[k].caption,'',isDefault); + k,vizTypes[k].uniquename,vizTypes[k].caption,'',false); possibleVizTypes.push(newVizType); - isDefault=false; + } } @@ -909,6 +964,7 @@ function renderGeneralChartPropertiesForm(formDiv,myCommonChartProperties,render { if((myCommonChartProperties[k].groupVariableName=="layout" || myCommonChartProperties[k].groupVariableName=="style" + || myCommonChartProperties[k].groupVariableName=="x" ) && myCommonChartProperties[k].rendererUniquename==renderer) divBox.appendChild(renderChartPropertyField(myCommonChartProperties[k])); @@ -1155,6 +1211,7 @@ if(!isMandatory) //add an empty option: var o=new Option("",""); myCombo.options[optionCounter]=o; + selectedOption=optionCounter; optionCounter++; } for(var j=0;j < myValues.length;j++) @@ -1322,47 +1379,51 @@ var myDiv=document.getElementById(chartDivElem); function renderChartElementWithPlot(chartElem) { var plotMark=new Object; +if(chartElem) +{ var chartType=chartElem.vizTypeUniquename; -/* -var selectionRsMetaData=[]; -var selectionRs=[]; - - -selectionRsMetaData=fillSelectionResultMetaData(); - -selectionRs=fillSelectionResult(selectionRsMetaData); -*/ +var myDatasourceRs=rs[chartElem.datasource]; +var optionString="{\"dummy\": \"1\""; +for(var k=0;k0) +{ + switch (renderer) { + case "plot": + var myFigure=myChartDiv.childNodes[0]; + if(myFigure.childNodes.length>0) + { + var mySvg=myFigure.childNodes[0]; + svg_xml = (new XMLSerializer).serializeToString(mySvg); + } + break; + case "d3js": + for (var i=0;i].push(new dataRow_
- - + +
@@ -2048,7 +2048,7 @@ rs[
].push(new dataRow_ --> + onClick="showChartDiv('chartDiv2'); renderChart('chartDiv2',myChartModel);"> @@ -2080,7 +2080,7 @@ rs[].push(new dataRow_ --> + onClick="showSrcCode(myChartModel.renderer);">