Skip to content
Snippets Groups Projects
Commit 9d70106f authored by Sebastian Kern's avatar Sebastian Kern Committed by Sebastian Listl
Browse files

Audit Log History

parent 5ba29552
No related branches found
No related tags found
No related merge requests found
Showing
with 641 additions and 3 deletions
<?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="s.kern" id="d4b5f8bc-b211-442a-b417-3b5d3c92def5">
<addColumn tableName="AB_LOGHISTORY">
<column name="AB_LOGHISTORYID" type="CHAR(36)"/>
</addColumn>
<addNotNullConstraint
columnName="AB_LOGHISTORYID"
tableName="AB_LOGHISTORY"
/>
<addPrimaryKey
columnNames="AB_LOGHISTORYID"
constraintName="pk_AB_LOGHISTORYID"
tableName="AB_LOGHISTORY"
/>
</changeSet>
</databaseChangeLog>
<?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<include file="addAb_loghistoryId.xml" relativeToChangelogFile="true" />
</databaseChangeLog>
\ No newline at end of file
<?xml version="1.1" encoding="UTF-8" standalone="no"?> <?xml version="1.1" encoding="UTF-8" standalone="no"?>
<databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog" <databaseChangeLog xmlns="http://www.liquibase.org/xml/ns/dbchangelog"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd"> xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.6.xsd">
<include relativeToChangelogFile="true" file="Loghistory/changelog.xml"/>
</databaseChangeLog> </databaseChangeLog>
...@@ -16,6 +16,7 @@ ...@@ -16,6 +16,7 @@
<include relativeToChangelogFile="true" file="basic/2020.1.2/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.1.2/changelog.xml"/>
<include relativeToChangelogFile="true" file="basic/2020.1.3/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.1.3/changelog.xml"/>
<include relativeToChangelogFile="true" file="basic/2020.2.0/changelog.xml"/> <include relativeToChangelogFile="true" file="basic/2020.2.0/changelog.xml"/>
<include relativeToChangelogFile="true" file="basic/2020.2.1/changelog.xml"/>
<!--enable this only when you definetly want to overwrite the existing data with demo records:--> <!--enable this only when you definetly want to overwrite the existing data with demo records:-->
<!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>--> <!--<include relativeToChangelogFile="true" file="basic/_demoData/changelog.xml" context="example"/>-->
......
...@@ -8025,6 +8025,20 @@ ...@@ -8025,6 +8025,20 @@
<title></title> <title></title>
<description></description> <description></description>
</entityFieldDb> </entityFieldDb>
<entityFieldDb>
<name>AB_LOGHISTORYID</name>
<dbName></dbName>
<primaryKey v="true" />
<columnType v="1" />
<size v="36" />
<scale v="0" />
<notNull v="true" />
<isUnique v="true" />
<index v="true" />
<documentation></documentation>
<title></title>
<description></description>
</entityFieldDb>
</entityFields> </entityFields>
</entityDb> </entityDb>
<entityDb> <entityDb>
......
...@@ -297,6 +297,10 @@ ...@@ -297,6 +297,10 @@
<kind v="10077" /> <kind v="10077" />
<title></title> <title></title>
</entityNode> </entityNode>
<entityNode>
<name>AuditLogHistory</name>
<kind v="10077" />
</entityNode>
<entityNode> <entityNode>
<name>ExportTemplate</name> <name>ExportTemplate</name>
<kind v="10077" /> <kind v="10077" />
......
<?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.3.17" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/entity/1.3.17">
<name>AuditLogHistory_entity</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<icon>VAADIN:LINES_LIST</icon>
<title>Audit Log</title>
<grantCreate v="false" />
<grantUpdate v="false" />
<grantDelete v="true" />
<grantDeleteProcess>%aditoprj%/entity/AuditLogHistory_entity/grantDeleteProcess.js</grantDeleteProcess>
<initFilterProcess>%aditoprj%/entity/AuditLogHistory_entity/initFilterProcess.js</initFilterProcess>
<titlePlural>Audit Logs</titlePlural>
<recordContainer>db</recordContainer>
<entityFields>
<entityProvider>
<name>#PROVIDER</name>
<targetContextField>TARGET_CONTEXT</targetContextField>
<targetIdField>TARGET_ID</targetIdField>
</entityProvider>
<entityField>
<name>LOGTYPE</name>
<title>Action</title>
<dropDownProcess>%aditoprj%/entity/AuditLogHistory_entity/entityfields/logtype/dropDownProcess.js</dropDownProcess>
</entityField>
<entityField>
<name>DATE_NEW</name>
<title>Date</title>
<contentType>DATE</contentType>
<resolution>MINUTE</resolution>
<state>READONLY</state>
</entityField>
<entityField>
<name>DESCRIPTION</name>
<title>Description</title>
</entityField>
<entityField>
<name>TABLENAME</name>
<title>Tablename</title>
<dropDownProcess>%aditoprj%/entity/AuditLogHistory_entity/entityfields/tablename/dropDownProcess.js</dropDownProcess>
</entityField>
<entityField>
<name>UID</name>
</entityField>
<entityField>
<name>TABLENAMEID</name>
</entityField>
<entityField>
<name>USER_NEW</name>
<title>Editor</title>
<state>READONLY</state>
</entityField>
<entityField>
<name>SOURCE_TABLENAME</name>
</entityField>
<entityField>
<name>SOURCE_TABLENAMEID</name>
</entityField>
<entityField>
<name>TARGET_CONTEXT</name>
<valueProcess>%aditoprj%/entity/AuditLogHistory_entity/entityfields/target_context/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>TARGET_ID</name>
<valueProcess>%aditoprj%/entity/AuditLogHistory_entity/entityfields/target_id/valueProcess.js</valueProcess>
</entityField>
<entityField>
<name>PREVIEW_TITLE</name>
<valueProcess>%aditoprj%/entity/AuditLogHistory_entity/entityfields/preview_title/valueProcess.js</valueProcess>
</entityField>
<entityProvider>
<name>#PROVIDER_AGGREGATES</name>
<useAggregates v="true" />
</entityProvider>
</entityFields>
<recordContainers>
<dbRecordContainer>
<name>db</name>
<alias>Data_alias</alias>
<linkInformation>
<linkInformation>
<name>ed8bd1ca-64eb-443e-a04d-ea7aee0c352a</name>
<tableName>AB_LOGHISTORY</tableName>
<primaryKey>AB_LOGHISTORYID</primaryKey>
<isUIDTable v="false" />
<readonly v="true" />
</linkInformation>
</linkInformation>
<recordFieldMappings>
<dbRecordFieldMapping>
<name>UID.value</name>
<recordfield>AB_LOGHISTORY.AB_LOGHISTORYID</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>USER_NEW.value</name>
<recordfield>AB_LOGHISTORY.USER_NEW</recordfield>
<isFilterable v="true" />
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>TABLENAMEID.value</name>
<recordfield>AB_LOGHISTORY.TABLENAMEID</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>TABLENAME.value</name>
<recordfield>AB_LOGHISTORY.TABLENAME</recordfield>
<isFilterable v="true" />
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>SOURCE_TABLENAMEID.value</name>
<recordfield>AB_LOGHISTORY.SOURCE_TABLENAMEID</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>SOURCE_TABLENAME.value</name>
<recordfield>AB_LOGHISTORY.SOURCE_TABLENAME</recordfield>
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>LOGTYPE.value</name>
<recordfield>AB_LOGHISTORY.LOGTYPE</recordfield>
<isFilterable v="true" />
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>DESCRIPTION.value</name>
<recordfield>AB_LOGHISTORY.DESCRIPTION</recordfield>
<isFilterable v="true" />
</dbRecordFieldMapping>
<dbRecordFieldMapping>
<name>DATE_NEW.value</name>
<recordfield>AB_LOGHISTORY.DATE_NEW</recordfield>
<isFilterable v="true" />
</dbRecordFieldMapping>
</recordFieldMappings>
<filterExtensions>
<filterExtension>
<name>contextFilter</name>
<title>Kontext</title>
<contentType>TEXT</contentType>
<filterValuesProcess>%aditoprj%/entity/AuditLogHistory_entity/recordcontainers/db/filterextensions/contextfilter/filterValuesProcess.js</filterValuesProcess>
<filterConditionProcess>%aditoprj%/entity/AuditLogHistory_entity/recordcontainers/db/filterextensions/contextfilter/filterConditionProcess.js</filterConditionProcess>
<isLookupFilter v="true" />
<filtertype>BASIC</filtertype>
</filterExtension>
</filterExtensions>
</dbRecordContainer>
</recordContainers>
</entity>
import("system.translate");
import("system.result");
result.object([
["I", translate.text("Inserted")]
,["U", translate.text("Updated")]
,["D", translate.text("Deleted")]
]);
\ No newline at end of file
import("system.translate");
import("Sql_lib");
import("system.result");
import("system.vars");
var context = vars.get("$field.TARGET_CONTEXT");
var title = "";
switch(context)
{
case "AcquisitionProject":
title = "Acquisition project";
break;
case "Bulkmail":
case "BULKMAIL":
title = "Bulk mail";
break;
case "CampaignStep":
title = "Campaign";
break;
case "DSGVO":
title = "Data Privacy";
break;
case "SerialLetter":
title = "Serial letter";
break;
case "Person":
title = "Contact";
break;
case "Event_context":
title = "Event";
break;
default:
if(context.length > 1)
{
title = context.substring(0, 1).toUpperCase() + context.substring(1).toLowerCase();
}
}
result.string(translate.text(title));
\ No newline at end of file
import("Sql_lib");
import("system.result");
result.object(newSelect("distinct TABLENAME, TABLENAME").from("AB_LOGHISTORY").orderBy("TABLENAME").table());
import("Sql_lib");
import("system.result");
import("system.vars");
var tablename = vars.get("$field.TABLENAME");
var tablenameId = vars.get("$field.TABLENAMEID");
var isPerson = "";
var res = "";
switch(tablename)
{
case "AB_ATTRIBUTERELATION":
isPerson = newSelect("PERSON_ID")
.from("CONTACT")
.where("CONTACT.CONTACTID", tablenameId)
.cell();
if(isPerson)
res = "Person";
else
res = "Organisation";
break;
case "AB_OBJECTRELATION":
isPerson = newSelect("CONTACT.PERSON_ID")
.from("CONTACT")
.join("AB_OBJECTRELATION on AB_OBJECTRELATION.OBJECT1_ROWID = CONTACT.CONTACTID")
.where("AB_OBJECTRELATION.AB_OBJECTRELATIONID", tablenameId)
.cell();
if(isPerson)
res = "Person";
else
res = "Organisation"
break;
case "ACTIVITYLINK":
case "ACTIVITY":
res = "Activity";
break;
case "ACQUISITIONPROJECT":
res = "AcquisitionProject";
break;
case "ASYS_BINARIES":
res = newSelect("ASYS_BINARIES.TABLENAME", "_____SYSTEMALIAS")
.from("ASYS_BINARIES")
.where("ASYS_BINARIES.ID", tablenameId)
.cell();
break;
case "BULKMAILRECIPIENT":
case "BULKMAIL":
res = "Bulkmail";
break;
case "CONTACT":
isPerson = newSelect("PERSON_ID")
.from("CONTACT")
.where("CONTACT.CONTACTID", tablenameId)
.cell();
if(isPerson)
res = "Person";
else
res = "Organisation";
break;
case "CAMPAIGNSTEP":
res = "CampaignStep";
break;
case "CAMPAIGNCOST":
case "CAMPAIGNPARTICIPANT":
case "CAMPAIGN":
res = "Campaign";
break;
case "DSGVO":
res = "DSGVO";
break;
case "EVENTPARTICIPANT":
case "EVENT":
res = "Event_context";
break;
case "ORGANISATION":
res = "Organisation";
break;
case "OBJECTMEMBER":
res = newSelect("OBJECTMEMBER.OBJECT_TYPE")
.from("OBJECTMEMBER")
.where("OBJECTMEMBER.OBJECTMEMBERID", tablenameId)
.cell();
break;
case "PERSON":
res = "Person";
break;
case "SALESORDER":
res = "Salesorder";
break;
case "SALESPROJECT_MILESTONE":
case "SALESPROJECT":
res = "Salesproject";
break;
case "LETTERRECIPIENT":
case "SERIALLETTER":
res = "SerialLetter";
break;
case "TASKLINK":
case "TASK":
res = "Task";
break;
case "TASKLINK":
res = "TaskLink";
break;
default:
res = tablename;
}
result.string(res);
\ No newline at end of file
import("Sql_lib");
import("system.result");
import("system.vars");
var tablename = vars.get("$field.TABLENAME");
var tablenameid = vars.get("$field.TABLENAMEID");
var returnId = "";
var res = tablenameid;
switch(tablename)
{
case "AB_OBJECTRELATION":
returnId = newSelect("OBJECT1_ROWID")
.from("AB_OBJECTRELATION")
.where("AB_OBJECTRELATION.AB_OBJECTRELATIONID", tablenameid)
.cell();
res = returnId;
break;
case "ACTIVITYLINK":
returnId = newSelect("ACTIVITY_ID")
.from("ACTIVITYLINK")
.where("ACTIVITYLINK.ACTIVITYLINKID", tablenameid)
.cell();
res = returnId;
break;
case "ASYS_BINARIES":
res = newSelect("ASYS_BINARIES.ROW_ID", "_____SYSTEMALIAS")
.from("ASYS_BINARIES")
.where("ASYS_BINARIES.ID", tablenameid)
.cell();
break;
case "BULKMAILRECIPIENT":
returnId = newSelect("BULKMAIL_ID")
.from("BULKMAILRECIPIENT")
.where("BULKMAILRECIPIENT.BULKMAILRECIPIENTID", tablenameid)
.cell();
res = returnId;
break;
case "CAMPAIGNCOST":
returnId = newSelect("CAMPAIGNCOST.CAMPAIGN_ID")
.from("CAMPAIGNCOST")
.where("CAMPAIGNCOST.CAMPAIGNCOSTID", tablenameid)
.cell();
res = returnId;
break;
case "EVENTPARTICIPANT":
returnId = newSelect("EVENTPARTICIPANT.EVENT_ID")
.from("EVENTPARTICIPANT")
.where("EVENTPARTICIPANT.EVENTPARTICIPANTID", tablenameid)
.cell();
res = returnId;
break;
case "CAMPAIGNPARTICIPANT":
returnId = newSelect("CAMPAIGNPARTICIPANT.CAMPAIGN_ID")
.from("CAMPAIGNPARTICIPANT")
.where("CAMPAIGNPARTICIPANT.CAMPAIGNPARTICIPANTID", tablenameid)
.cell();
res = returnId;
break;
case "OBJECTMEMBER":
res = newSelect("OBJECTMEMBER.OBJECT_ROWID")
.from("OBJECTMEMBER")
.where("OBJECTMEMBER.OBJECTMEMBERID", tablenameid)
.cell();
break;
case "PERSON":
res = newSelect("CONTACT.CONTACTID")
.from("CONTACT")
.join("PERSON", "CONTACT.PERSON_ID = PERSON.PERSONID")
.where("PERSON.PERSONID", tablenameid)
.cell();
break;
case "LETTERRECIPIENT":
returnId = newSelect("LETTERRECIPIENT.SERIALLETTER_ID")
.from("LETTERRECIPIENT")
.where("LETTERRECIPIENT.LETTERRECIPIENTID", tablenameid)
.cell();
res = returnId;
break;
case "SALESPROJECT_MILESTONE":
returnId = newSelect("SALESPROJECT_MILESTONE.SALESPROJECT_ID")
.from("SALESPROJECT_MILESTONE")
.where("SALESPROJECT_MILESTONE.SALESPROJECT_MILESTONEID", tablenameid)
.cell();
res = returnId;
break;
case "TASKLINK":
returnId = newSelect("TASKLINK.TASK_ID")
.from("TASKLINK")
.where("TASKLINK.TASKLINKID", tablenameid)
.cell();
res = returnId;
break;
}
result.string(res);
\ No newline at end of file
import("system.result");
import("system.neon");
import("system.datetime");
import("system.vars");
let presMode = vars.get("$sys.presentationmode");
let curDate = datetime.toDate(vars.get("$sys.date"), "dd.MM.yyyy");
if (presMode == neon.CONTEXT_PRESENTATIONMODE_FILTER || presMode == neon.CONTEXT_PRESENTATIONMODE_DASHBOARD)
{
var filter = {
"type":"group",
"operator":"AND",
"timestamp": curDate,
"childs":
[
{
"type":"row",
"name":"DATE_NEW",
"operator":"TIMEFRAME_PAST",
"value":"1 Tag",
"key":"REL=FIXED;START=P-1D",
"contenttype":"DATE"
}
]
};
result.string(JSON.stringify(filter));
}
\ No newline at end of file
import("system.result");
import("Sql_lib");
import("Entity_lib");
import("system.vars");
import("system.logging");
let values = [];
let operator = "";
let condition = "";
let additionalCondition = "";
let setAttrCondition = false;
switch(vars.get("$local.operator"))
{
case "1": // equals
operator = " in ";
break;
case "11": // is not empty
operator = " is not null ";
break;
case "2": // not equals
operator = " not in ";
break;
case "12": // is empty
operator = " is null ";
break;
}
condition = "TABLENAME " + operator;
if(vars.get("$local.operator") == "1" || vars.get("$local.operator") == "2")
{
values = [vars.get("$local.value").trim()];
switch(values[0])
{
case "'TASK'":
values.push("'TASKLINK'");
break;
case "'ACTIVITY'":
setAttrCondition = true;
values.push("'ACTIVITYLINK'");
break;
case "'BULKMAIL'":
values.push("'BULKMAILRECIPIENT'");
break;
case "'EVENT'":
values.push("'EVENTPARTICIPANT'");
break;
case "'SALESPROJECT'":
setAttrCondition = true;
values.push("'SALESPROJECT_MILESTONE'");
break;
case "'SERIALLETTER'":
values.push("'LETTERRECIPIENT'");
break;
case "'PERSON'":
setAttrCondition = true;
additionalCondition = " or AB_LOGHISTORYID in ("
+ newSelect("AB_LOGHISTORYID")
.from("AB_OBJECTRELATION")
.join("AB_LOGHISTORY", "TABLENAMEID = AB_OBJECTRELATIONID")
.join("CONTACT", "(OBJECT1_ROWID = CONTACTID or OBJECT2_ROWID = CONTACTID) and CONTACT.PERSON_ID is not null")
+ ")";
break;
case "'ORGANISATION'":
setAttrCondition = true;
additionalCondition = " or AB_LOGHISTORYID in ("
+ newSelect("AB_LOGHISTORYID")
.from("AB_OBJECTRELATION")
.join("AB_LOGHISTORY", "TABLENAMEID = AB_OBJECTRELATIONID")
.join("CONTACT", "(OBJECT1_ROWID = CONTACTID or OBJECT2_ROWID = CONTACTID) and CONTACT.PERSON_ID is null")
+ ")";
break;
}
if (setAttrCondition)
{
additionalCondition += " or AB_LOGHISTORYID in ("
+ newSelect("AB_LOGHISTORYID")
.from("AB_ATTRIBUTERELATION")
.join("AB_LOGHISTORY", "TABLENAMEID = OBJECT_ROWID and OBJECT_TYPE = "
+ values[0].substring(0, 2).toUpperCase() + values[0].substring(2).toLowerCase())
+ ")";
}
condition += "(" + values.join(", ") + ")";
condition += additionalCondition ? additionalCondition : "";
}
result.string(condition);
\ No newline at end of file
import("system.translate");
import("system.result");
result.object(
[
["ACTIVITY", translate.text("Activity")],
["BULKMAIL", translate.text("Bulk mail")],
["PERSON", translate.text("Contact")],
["DSGVO", translate.text("DSGVO")],
["EVENT", translate.text("Event")],
["ORGANISATION", translate.text("Organisation")],
["PERSON", translate.text("Person")],
["SALESORDER", translate.text("Salesorder")],
["SALESPROJECT", translate.text("Salesproject")],
["SERIALLETTER", translate.text("Serial letter")],
["TASK", translate.text("Task")],
]
);
<?xml version="1.0" encoding="UTF-8"?>
<neonContext 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/neonContext/1.1.1">
<name>AuditLogHistory</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<filterView>AuditLogHistoryFilter_view</filterView>
<entity>AuditLogHistory_entity</entity>
<references>
<neonViewReference>
<name>c468be91-da18-4c22-abbd-cfa1c410d013</name>
<view>AuditLogHistoryFilter_view</view>
</neonViewReference>
</references>
</neonContext>
<?xml version="1.0" encoding="UTF-8"?>
<neonView xmlns="http://www.adito.de/2018/ao/Model" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" VERSION="1.1.6" xsi:schemaLocation="http://www.adito.de/2018/ao/Model adito://models/xsd/neonView/1.1.6">
<name>AuditLogHistoryFilter_view</name>
<majorModelMode>DISTRIBUTED</majorModelMode>
<filterable v="true" />
<dashletConfigurations>
<neonDashletConfiguration>
<name>AuditDashlet</name>
<title>AuditLogs</title>
<description>Show all audits</description>
<fragment>AuditLogHistory/filter</fragment>
<storeRoles>
<element>INTERNAL_ADMINISTRATOR</element>
<element>INTERNAL_DASHBOARDSTOREADMIN</element>
<element>INTERNAL_DESIGNER</element>
</storeRoles>
<icon>VAADIN:LINES_LIST</icon>
<categories>
<neonDashletCategory>
<name>Admin</name>
<title>Admin</title>
</neonDashletCategory>
</categories>
</neonDashletConfiguration>
</dashletConfigurations>
<layout>
<boxLayout>
<name>layout</name>
</boxLayout>
</layout>
<children>
<timelineViewTemplate>
<name>Timeline</name>
<dateField>DATE_NEW</dateField>
<titleField>PREVIEW_TITLE</titleField>
<descriptionField>DESCRIPTION</descriptionField>
<subdescriptionField>LOGTYPE</subdescriptionField>
<additionalInfoField>USER_NEW</additionalInfoField>
<hideContentSearch v="false" />
<entityField>#ENTITY</entityField>
<isEditable v="false" />
<informationField></informationField>
<isCreatable v="false" />
</timelineViewTemplate>
</children>
</neonView>
...@@ -250,12 +250,12 @@ LogHistoryExecutor.prototype._addEntryForInsert = function (pTablename, pTablena ...@@ -250,12 +250,12 @@ LogHistoryExecutor.prototype._addEntryForInsert = function (pTablename, pTablena
//the "SOURCE_TABLENAME" and "SOURCE_TABLENAMEID" are reserved for later usage in the change-notification-subscriptions //TODO: check if they are really needed //the "SOURCE_TABLENAME" and "SOURCE_TABLENAMEID" are reserved for later usage in the change-notification-subscriptions //TODO: check if they are really needed
this.toInsert = { this.toInsert = {
statements: [] statements: []
,cols: ["LOGTYPE","TABLENAME","TABLENAMEID","DESCRIPTION", "SOURCE_TABLENAME", "SOURCE_TABLENAMEID", "DATE_NEW","USER_NEW"] ,cols: ["LOGTYPE","TABLENAME","TABLENAMEID","DESCRIPTION", "SOURCE_TABLENAME", "SOURCE_TABLENAMEID", "DATE_NEW","USER_NEW", "AB_LOGHISTORYID"]
}; };
this.toInsert.types = db.getColumnTypes("AB_LOGHISTORY", this.toInsert.cols);//load only once for better performance this.toInsert.types = db.getColumnTypes("AB_LOGHISTORY", this.toInsert.cols);//load only once for better performance
} }
var vals = [this.sqlAction, pTablename, pTablenameId, pDescription, pSourceTablename, pSourceTablenameId, this.timestamp, this.triggeringUser]; var vals = [this.sqlAction, pTablename, pTablenameId, pDescription, pSourceTablename, pSourceTablenameId, this.timestamp, this.triggeringUser, util.getNewUUID()];
this.toInsert.statements.push(["AB_LOGHISTORY", this.toInsert.cols, this.toInsert.types, vals]); this.toInsert.statements.push(["AB_LOGHISTORY", this.toInsert.cols, this.toInsert.types, vals]);
}; };
......
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