Skip to content
Snippets Groups Projects
Commit e01552fa authored by Johannes Hörmann's avatar Johannes Hörmann
Browse files

treetable lib erweitert, wrapper klasse, die trees nur aufbaut, sobald...

treetable lib erweitert, wrapper klasse, die trees nur aufbaut, sobald doppelte Id vorhanden ist. Alte chart lib entfernt
parent ed044860
No related branches found
No related tags found
No related merge requests found
import("system.logging");
import("system.result");
import("system.vars");
import("system.db");
import("system.util");
import("Product_lib");
var prodid = vars.exists("$param.ProductId_param")
&& vars.get("$param.ProductId_param") != null ? vars.get("$param.ProductId_param") : "";
if(prodid != "")
{
var p2pUtils = new Prod2ProdUtils(prodid);
logging.log("casllllldsfasdf")
result.object(p2pUtils.getPartsListForRecordContainer());
import("system.logging");
import("system.result");
import("system.vars");
import("system.db");
import("system.util");
import("Product_lib");
var prodid = vars.exists("$param.ProductId_param")
&& vars.get("$param.ProductId_param") != null ? vars.get("$param.ProductId_param") : "";
if(prodid != "")
{
var p2pUtils = new Prod2ProdUtils(prodid);
result.object(p2pUtils.getPartsListForRecordContainer());
}
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.1.1">
<name>Turnover_entity</name>
<title>Turnover</title>
<majorModelMode>DISTRIBUTED</majorModelMode>
<iconId>VAADIN:CHART</iconId>
<recordContainer>jdito</recordContainer>
<entityFields>
<entityIncomingField>
<name>#INCOMING</name>
</entityIncomingField>
<entityField>
<name>UID</name>
<title>Year</title>
</entityField>
<entityField>
<name>Y</name>
<title>Turnover</title>
</entityField>
<entityField>
<name>PARENT</name>
<title>Parent</title>
</entityField>
<entityField>
<name>CATEGORY</name>
<title>Category</title>
</entityField>
<entityField>
<name>X</name>
<title>Year</title>
<contentType>TEXT</contentType>
</entityField>
</entityFields>
<recordContainers>
<jDitoRecordContainer>
<name>jdito</name>
<jDitoRecordAlias>Data_alias</jDitoRecordAlias>
<contentProcess>%aditoprj%/entity/Turnover_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
<recordFields>
<element>UID.value</element>
<element>PARENT.value</element>
<element>CATEGORY.value</element>
<element>Y.value</element>
<element>X.value</element>
</recordFields>
</jDitoRecordContainer>
</recordContainers>
</entity>
<?xml version="1.0" encoding="UTF-8"?>
<entity xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.1" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.1.1">
<name>Turnover_entity</name>
<title>Turnover</title>
<majorModelMode>DISTRIBUTED</majorModelMode>
<iconId>VAADIN:CHART</iconId>
<recordContainer>jdito</recordContainer>
<entityFields>
<entityIncomingField>
<name>#INCOMING</name>
</entityIncomingField>
<entityField>
<name>UID</name>
<title>Year</title>
</entityField>
<entityField>
<name>Y</name>
<title>Turnover</title>
</entityField>
<entityField>
<name>PARENT</name>
<title>Parent</title>
</entityField>
<entityField>
<name>CATEGORY</name>
<title>Category</title>
</entityField>
<entityField>
<name>X</name>
<title>Year</title>
<contentType>TEXT</contentType>
</entityField>
</entityFields>
<recordContainers>
<jDitoRecordContainer>
<name>jdito</name>
<jDitoRecordAlias>Data_alias</jDitoRecordAlias>
<contentProcess>%aditoprj%/entity/Turnover_entity/recordcontainers/jdito/contentProcess.js</contentProcess>
<recordFields>
<element>UID.value</element>
<element>PARENT.value</element>
<element>CATEGORY.value</element>
<element>X.value</element>
<element>Y.value</element>
</recordFields>
</jDitoRecordContainer>
</recordContainers>
</entity>
import("system.datetime");
import("system.db");
import("system.result");
import("system.translate");
var sumOfMonthTurnover = db.table("select year(SALESORDERDATE) yearNum, 'turnover', month(SALESORDERDATE) monthNum, sum(NET + VAT) from SALESORDER group by year(SALESORDERDATE), month(SALESORDERDATE) order by yearNum, monthNum");
var sumOfMonthForecast = db.table("select year(DATE_START) yearNum, 'forecast', month(DATE_START) monthNum, sum(VOLUME) from SALESPROJECT_FORECAST group by year(DATE_START), month(DATE_START) order by yearNum, monthNum");
var chartData = [];
var turnoverSkippedCount = 0;
var forecastSkippedCount = 0;
for (let i = 0; i < 4; i++)
{
var year = i + 2016;
_addMonthRows(year);
}
result.object(chartData);
function _addRow(pRow)
{
//logging.log(pRow.toSource())
// month = 0 --> sum of the whole year
var parent = "";
var dateDisplay = pRow[0];
if (pRow[2] != 0)
{
parent = pRow[0] + "0" + pRow[1].trim();
var rowDate = new Date(pRow[0], pRow[2]-1);
dateDisplay = datetime.toDate(rowDate.getTime(), "MMM yyyy", "UTC")
}
chartData.push([pRow[0] + pRow[2] + pRow[1].trim(), parent,
((pRow[1].trim() == "turnover") ? translate.text("Turnover") : translate.text("Forecast")), parseFloat(pRow[3]), dateDisplay]);
}
function _addMonthRows(pYear)
{
var turnoverSkippedCount = 0;
var forecastSkippedCount = 0;
var turnoverYearSum = 0;
var forecastYearSum = 0;
var filteredTurnover = sumOfMonthTurnover.filter(function(row)
{
return row[0] == pYear
});
var filteredForecast = sumOfMonthForecast.filter(function(row)
{
return row[0] == pYear
});
for (let i = 1; i <= 12; i++)
{
var turnoverSum = filteredTurnover[i - turnoverSkippedCount - 1];
var forecastSum = filteredForecast[i - forecastSkippedCount - 1];
if (turnoverSum != undefined && turnoverSum[0] == pYear && turnoverSum[2] == i.toString())
{
_addRow(turnoverSum);
turnoverYearSum += parseInt(turnoverSum[3]);
}
else
{
_addRow([year.toString(), 'turnover', i, 0.0]);
turnoverSkippedCount++;
}
if (forecastSum != undefined && forecastSum[0] == pYear && forecastSum[2] == i)
{
_addRow(forecastSum);
forecastYearSum += parseInt(forecastSum[3]);
}
else
{
_addRow([year.toString(), 'forecast', i, 0.0]);
forecastSkippedCount++;
}
}
_addRow([year.toString(), 'turnover', 0, turnoverYearSum]);
_addRow([year.toString(), 'forecast', 0, forecastYearSum]);
}
/*
*
* import("system.datetime");
import("system.db");
import("system.result");
import("system.translate");
import("Chart_lib");
// [[id, x, y, ...], [x, y, ...]]
var sumOfMonthTurnover = db.table("select year(SALESORDERDATE) yearNum, sum(NET + VAT) from SALESORDER where year(SALESORDERDATE) <> 2017 group by year(SALESORDERDATE) order by yearNum");
var sumOfMonthForecast = db.table("select year(DATE_START) yearNum, sum(VOLUME) from SALESPROJECT_FORECAST group by year(DATE_START) order by yearNum");
var chart = MultiDataChart.begin();
chart.addDataSource(translate.text("Turnover"), sumOfMonthTurnover)
.addDataSource(translate.text("Forecast"), sumOfMonthForecast)
*/
\ No newline at end of file
import("system.logging");
import("system.datetime");
import("system.db");
import("system.result");
import("system.translate");
import("Data_lib");
// load data
var sumOfMonthTurnover = db.table("select year(SALESORDERDATE) yearNum, 'turnover', month(SALESORDERDATE) monthNum, sum(NET + VAT) from SALESORDER group by year(SALESORDERDATE), month(SALESORDERDATE) order by yearNum, monthNum");
var sumOfMonthForecast = db.table("select year(DATE_START) yearNum, 'forecast', month(DATE_START) monthNum, sum(VOLUME * 1000) from SALESPROJECT_FORECAST group by year(DATE_START), month(DATE_START) order by yearNum, monthNum");
// build chartData
var rootNode = "";
var chartData = ParentingData.begin(rootNode);
var skippedCounts = {};
for (let i = 0; i < 4; i++)
{
// TODO: currently years are hardcoded.
var year = i + 2016;
var turnoverYearSum = 0;
var forecastYearSum = 0;
// filter data by current year
var turnoverYearData = sumOfMonthTurnover.filter(function(row)
{
return row[0] == year
});
var forecastYearData = sumOfMonthForecast.filter(function(row)
{
return row[0] == year
});
for (let i = 1; i <= 12; i++)
{
// add months
turnoverYearSum += _addMonth(year, i, turnoverYearData, "turnover");
forecastYearSum += _addMonth(year, i, forecastYearData, "forecast");
}
// add year nodes
chartData.add("turnover" + year, rootNode, ["turnover", year.toString(), turnoverYearSum]);
chartData.add("forecast" + year, rootNode, ["forecast", year.toString(), forecastYearSum]);
}
result.object(chartData.toArray());
function _addMonth(pYear, pMonth, pData, pCategory)
{
var yearSum = 0;
// count months, which didn't exist in data source.
if (pMonth == 1)
{
skippedCounts[pCategory] = 0;
}
var currentMonthData = pData[pMonth - skippedCounts[pCategory] - 1];
var monthDate = new Date(pYear, pMonth-1);
monthDate = datetime.toDate(monthDate.getTime(), "MMM yyyy", "UTC");
var monthValue = 0.0;
if (currentMonthData != undefined && currentMonthData[2] == pMonth.toString())
{
monthValue = currentMonthData[3];
yearSum += parseInt(currentMonthData[3]);
}
else
{
// if month didn't exist in data source, use 0.0 as value.
skippedCounts[pCategory]++;
}
// add month node
chartData.add(pCategory + pYear + pMonth, pCategory + pYear, [pCategory, monthDate, monthValue]);
return yearSum;
}
\ No newline at end of file
This diff is collapsed.
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<changeSet author="j.hoermanns" id="76912d9-ced7-4626-a031-d7138dfc948e">
<insert tableName="SALESPROJECT">
<column name="SALESPROJECTID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2016-06-13T09:03:43"/>
<column name="PROJECTCODE" valueNumeric="1000"/>
<column name="PROJECTTITLE" value="GfK"/>
<column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
<column name="INFO" value="evtl. noch mit Berater Müller sprechen, ob ihm bekannt"/>
<column name="STATE" valueNumeric="1"/>
<column name="PHASE" valueNumeric="4"/>
<column name="VOLUME" valueNumeric="15"/>
<column name="PHASE" valueNumeric="4"/>
<column name="STARTDATE" valueDate="2017-07-21T09:03:43"/>
<column name="ENDDATE" valueDate="2017-10-14T09:03:43"/>
<column name="ESTIMATION" value="; 2; 4; 11; "/>
<column name="ESTIMATIONVALUE" valueNumeric="2"/>
<column name="PROBABILITY" valueNumeric="30"/>
</insert>
<insert tableName="SALESPROJECT_SOURCE">
<column name="SALESPROJECT_SOURCEID" value="1c1f83ad-9e4b-4d0f-b820-98e724e34aec"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2016-06-13T09:03:43"/>
<column name="ENTRYDATE" valueDate="2017-08-21T09:03:43"/>
<column name="INFO" value="Initialeintrag"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="SOURCE" valueNumeric="1"/>
</insert>
<insert tableName="SALESPROJECT_CYCLE">
<column name="SALESPROJECT_CYCLEID" value="c1eb7a04-666f-4bb0-8021-3feadff5d5df"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2016-06-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="TYPE" valueNumeric="1"/>
<column name="VALUE" valueNumeric="1"/>
<column name="DATE_START" valueDate="2016-06-13T09:03:43"/>
<column name="DATE_END" valueDate="2016-06-13T09:03:43"/>
</insert>
<insert tableName="SALESPROJECT_FORECAST">
<column name="SALESPROJECT_FORECASTID" value="affd17db-d925-4e20-81d5-ea9e4ca37c94"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2018-06-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
<column name="TYPE" value="PLAN"/>
<column name="GROUPCODE" valueNumeric="1"/>
<column name="INFO" value="grob abgeschätzt, da große Unsicherheit"/>
<column name="DATE_START" valueDate="2018-06-13T09:03:43"/>
<column name="VOLUME" valueNumeric="100"/>
</insert>
<insert tableName="SALESPROJECT_FORECAST">
<column name="SALESPROJECT_FORECASTID" value="35f5f997-cc23-4850-8e71-b497bb7d12d6"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2016-06-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
<column name="TYPE" value="PLAN"/>
<column name="GROUPCODE" valueNumeric="1"/>
<column name="INFO" value="grob abgeschätzt, da große Unsicherheit"/>
<column name="DATE_START" valueDate="2016-06-13T09:03:43"/>
<column name="VOLUME" valueNumeric="150"/>
</insert>
<insert tableName="SALESPROJECT_FORECAST">
<column name="SALESPROJECT_FORECASTID" value="625dd1eb-3d60-4818-8e9a-c55650d7fd87"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2017-06-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
<column name="TYPE" value="PLAN"/>
<column name="GROUPCODE" valueNumeric="1"/>
<column name="INFO" value="grob abgeschätzt, da große Unsicherheit"/>
<column name="DATE_START" valueDate="2017-06-13T09:03:43"/>
<column name="VOLUME" valueNumeric="500"/>
</insert>
<insert tableName="SALESPROJECT_FORECAST">
<column name="SALESPROJECT_FORECASTID" value="c2b3303e-4a11-455c-b214-16400f9d8c16"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2017-05-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
<column name="TYPE" value="PLAN"/>
<column name="GROUPCODE" valueNumeric="1"/>
<column name="INFO" value="grob abgeschätzt, da große Unsicherheit"/>
<column name="DATE_START" valueDate="2017-05-13T09:03:43"/>
<column name="VOLUME" valueNumeric="600"/>
</insert>
<insert tableName="SALESPROJECT_COMPETITION">
<column name="SALESPROJECT_COMPETITIONID" value="a3ae9702-a3da-4d5f-a3ab-e386c8a0ac40"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2016-06-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="DATE_CANCELLED" valueDate="2016-06-13T09:03:43"/>
<column name="INFO" value="starkes Prozess Know-How, wird gefährlich für uns. Dazu private Verbindungen"/>
<column name="RELATION_ID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
<column name="STATUS" valueNumeric="1"/>
</insert>
<insert tableName="SALESPROJECT_MEMBER">
<column name="SALESPROJECT_MEMBERID" value="f9dc15c0-91b8-43d3-ba98-80ca581db3a3"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2016-06-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="RELATION_ID" value="73d731a2-e7f5-11e8-9f32-f2801f1b9fd1"/>
<column name="SALESPROJECT_ROLE" valueNumeric="1"/>
</insert>
<insert tableName="SALESPROJECT_CLASSIFICATION">
<column name="SALESPROJECT_CLASSIFICATIONID" value="77da9dcb-b49a-4608-9c7d-68545b0ec29b"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2016-06-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="CLASS" valueNumeric="1"/>
<column name="TYPE" value="CLASS.BRANCHE"/>
<column name="VALUE" valueNumeric="2"/>
</insert>
<rollback>
<delete tableName="SALESPROJECT">
<where>SALESPROJECTID = ?</where>
<whereParams>
<param value="0833465c-8851-4fbb-b7e3-8c1d73c903da" />
</whereParams>
</delete>
<delete tableName="SALESPROJECT_SOURCE">
<where>SALESPROJECT_ID = ?</where>
<whereParams>
<param value="0833465c-8851-4fbb-b7e3-8c1d73c903da" />
</whereParams>
</delete>
<delete tableName="SALESPROJECT_CYCLE">
<where>SALESPROJECT_ID = ?</where>
<whereParams>
<param value="0833465c-8851-4fbb-b7e3-8c1d73c903da" />
</whereParams>
</delete>
<delete tableName="SALESPROJECT_FORECAST">
<where>SALESPROJECT_ID = ?</where>
<whereParams>
<param value="0833465c-8851-4fbb-b7e3-8c1d73c903da" />
</whereParams>
</delete>
<delete tableName="SALESPROJECT_COMPETITION">
<where>SALESPROJECT_ID = ?</where>
<whereParams>
<param value="0833465c-8851-4fbb-b7e3-8c1d73c903da" />
</whereParams>
</delete>
<delete tableName="SALESPROJECT_MEMBER">
<where>SALESPROJECT_ID = ?</where>
<whereParams>
<param value="0833465c-8851-4fbb-b7e3-8c1d73c903da" />
</whereParams>
</delete>
<delete tableName="SALESPROJECT_CLASSIFICATION">
<where>SALESPROJECT_ID = ?</where>
<whereParams>
<param value="0833465c-8851-4fbb-b7e3-8c1d73c903da" />
</whereParams>
</delete>
</rollback>
</changeSet>
</databaseChangeLog>
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" xmlns:ext="http://www.liquibase.org/xml/ns/dbchangelog-ext" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog-ext http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-ext.xsd http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<changeSet author="j.hoermanns" id="76912d9-ced7-4626-a031-d7138dfc948e">
<insert tableName="SALESPROJECT">
<column name="SALESPROJECTID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2016-06-13T09:03:43"/>
<column name="PROJECTCODE" valueNumeric="1000"/>
<column name="PROJECTTITLE" value="GfK"/>
<column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
<column name="INFO" value="evtl. noch mit Berater Müller sprechen, ob ihm bekannt"/>
<column name="STATE" valueNumeric="1"/>
<column name="PHASE" valueNumeric="4"/>
<column name="VOLUME" valueNumeric="15"/>
<column name="PHASE" valueNumeric="4"/>
<column name="STARTDATE" valueDate="2017-07-21T09:03:43"/>
<column name="ENDDATE" valueDate="2017-10-14T09:03:43"/>
<column name="ESTIMATION" value="; 2; 4; 11; "/>
<column name="ESTIMATIONVALUE" valueNumeric="2"/>
<column name="PROBABILITY" valueNumeric="30"/>
</insert>
<insert tableName="SALESPROJECT_SOURCE">
<column name="SALESPROJECT_SOURCEID" value="1c1f83ad-9e4b-4d0f-b820-98e724e34aec"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2016-06-13T09:03:43"/>
<column name="ENTRYDATE" valueDate="2017-08-21T09:03:43"/>
<column name="INFO" value="Initialeintrag"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="SOURCE" valueNumeric="1"/>
</insert>
<insert tableName="SALESPROJECT_CYCLE">
<column name="SALESPROJECT_CYCLEID" value="c1eb7a04-666f-4bb0-8021-3feadff5d5df"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2016-06-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="TYPE" valueNumeric="1"/>
<column name="VALUE" valueNumeric="1"/>
<column name="DATE_START" valueDate="2016-06-13T09:03:43"/>
<column name="DATE_END" valueDate="2016-06-13T09:03:43"/>
</insert>
<insert tableName="SALESPROJECT_FORECAST">
<column name="SALESPROJECT_FORECASTID" value="affd17db-d925-4e20-81d5-ea9e4ca37c94"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2018-06-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
<column name="TYPE" value="PLAN"/>
<column name="GROUPCODE" valueNumeric="1"/>
<column name="INFO" value="grob abgeschätzt, da große Unsicherheit"/>
<column name="DATE_START" valueDate="2018-06-13T09:03:43"/>
<column name="VOLUME" valueNumeric="1"/>
</insert>
<insert tableName="SALESPROJECT_FORECAST">
<column name="SALESPROJECT_FORECASTID" value="35f5f997-cc23-4850-8e71-b497bb7d12d6"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2016-06-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
<column name="TYPE" value="PLAN"/>
<column name="GROUPCODE" valueNumeric="1"/>
<column name="INFO" value="grob abgeschätzt, da große Unsicherheit"/>
<column name="DATE_START" valueDate="2016-06-13T09:03:43"/>
<column name="VOLUME" valueNumeric="1.1"/>
</insert>
<insert tableName="SALESPROJECT_FORECAST">
<column name="SALESPROJECT_FORECASTID" value="625dd1eb-3d60-4818-8e9a-c55650d7fd87"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2017-06-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
<column name="TYPE" value="PLAN"/>
<column name="GROUPCODE" valueNumeric="1"/>
<column name="INFO" value="grob abgeschätzt, da große Unsicherheit"/>
<column name="DATE_START" valueDate="2017-06-13T09:03:43"/>
<column name="VOLUME" valueNumeric="1.5"/>
</insert>
<insert tableName="SALESPROJECT_FORECAST">
<column name="SALESPROJECT_FORECASTID" value="c2b3303e-4a11-455c-b214-16400f9d8c16"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2017-05-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="RELATION_ID" value="b219b58a-f120-42d8-9a64-0b176501eac7"/>
<column name="TYPE" value="PLAN"/>
<column name="GROUPCODE" valueNumeric="1"/>
<column name="INFO" value="grob abgeschätzt, da große Unsicherheit"/>
<column name="DATE_START" valueDate="2017-05-13T09:03:43"/>
<column name="VOLUME" valueNumeric="1.3"/>
</insert>
<insert tableName="SALESPROJECT_COMPETITION">
<column name="SALESPROJECT_COMPETITIONID" value="a3ae9702-a3da-4d5f-a3ab-e386c8a0ac40"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2016-06-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="DATE_CANCELLED" valueDate="2016-06-13T09:03:43"/>
<column name="INFO" value="starkes Prozess Know-How, wird gefährlich für uns. Dazu private Verbindungen"/>
<column name="RELATION_ID" value="eda61ea6-35ed-4a92-a93c-6118fc67d533"/>
<column name="STATUS" valueNumeric="1"/>
</insert>
<insert tableName="SALESPROJECT_MEMBER">
<column name="SALESPROJECT_MEMBERID" value="f9dc15c0-91b8-43d3-ba98-80ca581db3a3"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2016-06-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="RELATION_ID" value="73d731a2-e7f5-11e8-9f32-f2801f1b9fd1"/>
<column name="SALESPROJECT_ROLE" valueNumeric="1"/>
</insert>
<insert tableName="SALESPROJECT_CLASSIFICATION">
<column name="SALESPROJECT_CLASSIFICATIONID" value="77da9dcb-b49a-4608-9c7d-68545b0ec29b"/>
<column name="USER_NEW" value="admin"/>
<column name="DATE_NEW" valueDate="2016-06-13T09:03:43"/>
<column name="SALESPROJECT_ID" value="0833465c-8851-4fbb-b7e3-8c1d73c903da"/>
<column name="CLASS" valueNumeric="1"/>
<column name="TYPE" value="CLASS.BRANCHE"/>
<column name="VALUE" valueNumeric="2"/>
</insert>
<rollback>
<delete tableName="SALESPROJECT">
<where>SALESPROJECTID = ?</where>
<whereParams>
<param value="0833465c-8851-4fbb-b7e3-8c1d73c903da" />
</whereParams>
</delete>
<delete tableName="SALESPROJECT_SOURCE">
<where>SALESPROJECT_ID = ?</where>
<whereParams>
<param value="0833465c-8851-4fbb-b7e3-8c1d73c903da" />
</whereParams>
</delete>
<delete tableName="SALESPROJECT_CYCLE">
<where>SALESPROJECT_ID = ?</where>
<whereParams>
<param value="0833465c-8851-4fbb-b7e3-8c1d73c903da" />
</whereParams>
</delete>
<delete tableName="SALESPROJECT_FORECAST">
<where>SALESPROJECT_ID = ?</where>
<whereParams>
<param value="0833465c-8851-4fbb-b7e3-8c1d73c903da" />
</whereParams>
</delete>
<delete tableName="SALESPROJECT_COMPETITION">
<where>SALESPROJECT_ID = ?</where>
<whereParams>
<param value="0833465c-8851-4fbb-b7e3-8c1d73c903da" />
</whereParams>
</delete>
<delete tableName="SALESPROJECT_MEMBER">
<where>SALESPROJECT_ID = ?</where>
<whereParams>
<param value="0833465c-8851-4fbb-b7e3-8c1d73c903da" />
</whereParams>
</delete>
<delete tableName="SALESPROJECT_CLASSIFICATION">
<where>SALESPROJECT_ID = ?</where>
<whereParams>
<param value="0833465c-8851-4fbb-b7e3-8c1d73c903da" />
</whereParams>
</delete>
</rollback>
</changeSet>
</databaseChangeLog>
<?xml version="1.0" encoding="UTF-8"?>
<process xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.7" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/process/1.1.7">
<name>Chart_lib</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<process>%aditoprj%/process/Chart_lib/process.js</process>
<variants>
<element>LIBRARY</element>
</variants>
</process>
import("system.logging");
import("system.util");
// TODO lib is not finished yet
/**
*
* @class
*/
function MultiDataChart()
{
this._X = 0;
this._Y = 1;
this.dataSources = {};
this.drilldowns = {};
this._resultData = [];
}
MultiDataChart.begin = function()
{
var chart = new MultiDataChart();
return chart;
}
/**
* Add a new datasource
* Has to be an array with [[x, y, ...], [x, y, ...]]
* ... means you can add additional columns, used as identification and naming of drilldowns
*/
MultiDataChart.prototype.addDataSource = function(pName, pData, pFixedXValues)
{
this.dataSources[pName] = {
data: pData,
fixedValues: pFixedXValues
}
return this;
}
/**
*
*/
MultiDataChart.prototype.addCumulativeDrillDown = function(pDataSourceName, pGetParentXCallback, pGetCummulationCallback)
{
if (this.dataSources[pDataSourceName] != undefined)
{
this.drilldowns[pDataSourceName].type = "cumulative";
this.drilldowns[pDataSourceName].dataSource = pDataSourceName;
this.drilldowns[pDataSourceName].getParentX = pGetParentXCallback;
this.drilldowns[pDataSourceName].getCumulation = pGetCummulationCallback;
}
else
{
throw new Error("MultiDataChart::addCumulativeDrillDown: Data source " + pDataSourceName + " doesn't exist!");
}
return this;
}
/**
*
*/
MultiDataChart.prototype.build = function()
{
for (dataSource in this.dataSources)
{
for (let i = 0; i < this.dataSources[dataSource].data.length; i++)
{
var dataRow = this.dataSources[dataSource].data[i];
var rowId = util.getNewUUID();
// id, parent, group, x, y
this._resultData.push([rowId, "", dataSource, dataRow[this._X], dataRow[this._Y]]);
}
}
logging.log(this._resultData.toSource())
return this._resultData;
}
/**
* check if all X-Values exist. If not, create empty values.
*
*
* TODO!!!!!!!!!!!!!
*
*/
MultiDataChart.prototype._normalize = function(pDataSource)
{
var fixed = pDataSource.fixedValues;
var data = pDataSource.data;
var found = {};
var resultData = [];
for (let i = 0; i < data.length; i++)
{
if (found[data[i][this._X]] == undefined)
{
if (fixed.indexOf(data[i][this._X]) >= 0)
{
}
else
{
throw new Error("The X-Value " + data[i][this._X] + " is not in the fixed values of the dataSource!");
}
}
found[data[i][this._X]] = true;
resultData.push(data[i]);
}
return resultData;
}
/*
for (drilldown in this.drilldowns)
{
if (drilldown.type == "cumulative")
{
this._processCumulativeDrilldown(drilldown);
}
}
}
MultiDataChart.prototype._processDrilldowns = function()
{
for (drilldown in this.drilldowns)
{
if (drilldown.type == "cumulative")
{
this._processCumulativeDrilldown(drilldown);
}
}
}
MultiDataChart.prototype._processCumulativeDrilldown = function(pDrilldown)
{
var parentId = util.getNewUUID();
var data = this.dataSources[pDrilldown.dataSource];
}*/
\ No newline at end of file
import("system.util");
import("system.logging");
/**
*
* TODO: documentation!!
* @class
*/
function ParentingData(pRootId)
{
this._data = [];
this._uids = {};
this._rootId = pRootId;
}
/**
* @return {DataTree}
*/
ParentingData.begin = function(pRootId)
{
return new ParentingData(pRootId);
}
ParentingData.prototype.addArray = function(pData)
{
pData.forEach(function(pRow)
{
this.add(pRow[0], pRow[1], pRow.splice(2));
}, this);
return this;
}
ParentingData.prototype.add = function(pUid, pParentId, pData)
{
if (this._dataTree == undefined && this._uids[pUid] == undefined)
{
this._uids[pUid] = true;
this._data.push([pUid, pParentId].concat(pData));
} else {
this._convertToTree();
this._dataTree.add(pUid, pParentId, pData);
}
}
ParentingData.prototype.toArray = function(pMaxDepth)
{
if (this._dataTree == undefined)
{
return this._data;
}
else
{
return this._dataTree.toArray(pMaxDepth);
}
}
ParentingData.prototype._convertToTree = function()
{
if (this._dataTree == undefined)
{
this._dataTree = DataTree.begin(this._rootId)
.addArray(this._data);
this._data = undefined;
}
}
/**
* TODO: documentation + evtl. check-function for loops
* @class
*/
function DataTree(pRootId)
{
this._dataTree = {
/*
root: {
ids: []
}*/
};
this._resultData = [];
this.rootId = pRootId
this.rootId = pRootId;
this.baseId = util.getNewUUID();
}
/**
......@@ -22,8 +83,7 @@ function DataTree(pRootId)
*/
DataTree.begin = function(pRootId)
{
var tree = new DataTree(pRootId);
return tree;
return new DataTree(pRootId);
}
/**
......@@ -39,14 +99,12 @@ DataTree.prototype.getTreeObject = function()
DataTree.prototype.add = function(pUid, pParentId, pData, pManipulateNodeFn)
{
logging.log(pUid + " " + pParentId + " " + pData.toSource())
if (this._dataTree[pParentId] == undefined)
{
// create parent node. It will be replaced later, if the actual parent is added.
this._dataTree[pParentId] = {
ids: [],
parent: "root"
parent: this.baseId
}
}
this._dataTree[pParentId].ids.push(pUid);
......@@ -56,7 +114,7 @@ DataTree.prototype.add = function(pUid, pParentId, pData, pManipulateNodeFn)
var tmpIds = [];
// node already created as parent by a childNode.
if (this._dataTree[pUid] != undefined && this._dataTree[pUid].parent == "root")
if (this._dataTree[pUid] != undefined && this._dataTree[pUid].parent == this.baseId)
{
// tmp-save already added ids of the node
tmpIds = this._dataTree[pUid].ids;
......@@ -87,7 +145,6 @@ DataTree.prototype.add = function(pUid, pParentId, pData, pManipulateNodeFn)
*/
DataTree.prototype.addArray = function(pData, pManipulateNodeFn)
{
logging.log(pData.toSource())
pData.forEach(function(pRow)
{
this.add(pRow[0], pRow[1], pRow.splice(2), pManipulateNodeFn);
......@@ -96,26 +153,30 @@ DataTree.prototype.addArray = function(pData, pManipulateNodeFn)
return this;
}
DataTree.prototype.toArray = function()
DataTree.prototype.toArray = function(pMaxDepth)
{
var that = this;
// TODO: maybe implement without recursion to prevent stack overflow even on deep cycles...
var treeArray = [];
var tree = this._dataTree;
// in this function Ids are just concatenated. This is bad, because it results in very long strings.
// Because of this the concatenated id's are maped to new uids in the resulting array
var uidMap = {};
__push(this.rootId, tree[this.rootId]);
__push(this.rootId, tree[this.rootId], 0);
function __push(pParent, pNode) {
function __push(pParent, pNode, pDepth) {
for (var i = 0; i < pNode.ids.length; i++) {
if (pNode.parent == "root")
if (pNode.parent == that.baseId)
{
pParent = ""
pParent = "";
}
var nextUid = pParent + pNode.ids[i];
__addRow(nextUid, pParent, tree[pNode.ids[i]].data)
logging.log(nextUid + "\n---- " + tree[pNode.ids[i]].toSource())
__push(nextUid, tree[pNode.ids[i]])
__addRow(nextUid, pParent, tree[pNode.ids[i]].data);
if (pMaxDepth == undefined || pDepth < pMaxDepth)
__push(nextUid, tree[pNode.ids[i]], pDepth+1);
}
}
......@@ -123,7 +184,6 @@ DataTree.prototype.toArray = function()
{
uidMap[pUid] = util.getNewUUID();
if (uidMap[pParentId] == undefined) {
logging.log(pParentId)
if (pParentId == "")
{
uidMap[pParentId] = "";
......@@ -137,7 +197,5 @@ DataTree.prototype.toArray = function()
treeArray.push([uidMap[pUid], uidMap[pParentId]].concat(pRowdata));
}
logging.log(treeArray.toSource())
return treeArray;
}
\ No newline at end of file
This diff is collapsed.
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment