<?xml version="1.0" encoding="UTF-8" ?>
<!-- created at 2025-12-17 15:29:06 -->
<UANodeSet xmlns="http://opcfoundation.org/UA/2011/03/UANodeSet.xsd" xmlns:uax="http://opcfoundation.org/UA/2008/02/Types.xsd">
	<Extensions>
		<atvise Version="3.13"/>
	</Extensions>
	<NamespaceUris>
		<Uri>http://www.atvise.com/atServer/UA/</Uri>
	</NamespaceUris>
	<Aliases>
		<!-- data types -->
		<Alias Alias="Boolean">i=1</Alias>
		<Alias Alias="SByte">i=2</Alias>
		<Alias Alias="Byte">i=3</Alias>
		<Alias Alias="Int16">i=4</Alias>
		<Alias Alias="UInt16">i=5</Alias>
		<Alias Alias="Int32">i=6</Alias>
		<Alias Alias="UInt32">i=7</Alias>
		<Alias Alias="Int64">i=8</Alias>
		<Alias Alias="UInt64">i=9</Alias>
		<Alias Alias="Float">i=10</Alias>
		<Alias Alias="Double">i=11</Alias>
		<Alias Alias="String">i=12</Alias>
		<Alias Alias="DateTime">i=13</Alias>
		<Alias Alias="ByteString">i=15</Alias>
		<Alias Alias="XmlElement">i=16</Alias>
		<Alias Alias="NodeId">i=17</Alias>
		<Alias Alias="LocalizedText">i=21</Alias>
		<!-- references -->
		<Alias Alias="Organizes">i=35</Alias>
		<Alias Alias="HasEventSource">i=36</Alias>
		<Alias Alias="HasModellingRule">i=37</Alias>
		<Alias Alias="HasTypeDefinition">i=40</Alias>
		<Alias Alias="HasSubtype">i=45</Alias>
		<Alias Alias="HasProperty">i=46</Alias>
		<Alias Alias="HasComponent">i=47</Alias>
		<Alias Alias="HasNotifier">i=48</Alias>
		<Alias Alias="HasCondition">i=9006</Alias>
		<Alias Alias="HasHistoricalConfiguration">i=56</Alias>
		<!-- types -->
		<Alias Alias="BaseDataType">i=24</Alias>
		<Alias Alias="BaseObjectType">i=58</Alias>
		<Alias Alias="FolderType">i=61</Alias>
		<Alias Alias="BaseVariableType">i=62</Alias>
		<Alias Alias="BaseDataVariableType">i=63</Alias>
		<Alias Alias="PropertyType">i=68</Alias>
		<Alias Alias="AlarmConditionStateType">ns=1;i=1001</Alias>
		<!-- modelling rules -->
		<Alias Alias="New">i=78</Alias>
		<Alias Alias="Shared">i=79</Alias>
		<Alias Alias="SharedExclusive">i=336</Alias>
		<!-- other -->
		<Alias Alias="Server">i=2253</Alias>
		<Alias Alias="Objects">i=85</Alias>
	</Aliases>
	<UAObject NodeId="ns=1;s=SYSTEM" BrowseName="1:SYSTEM">
		<DisplayName Locale="en">SYSTEM</DisplayName>
		<Description Locale="en">SYSTEM</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">Objects</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise ExportedNodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.popup" ExportedBrowseName="1:popup" Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY" BrowseName="1:LIBRARY">
		<DisplayName Locale="en">LIBRARY</DisplayName>
		<Description Locale="en">LIBRARY</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT" BrowseName="1:PROJECT">
		<DisplayName Locale="en">PROJECT</DisplayName>
		<Description Locale="en">PROJECT</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS" BrowseName="1:OBJECTDISPLAYS">
		<DisplayName Locale="en">OBJECTDISPLAYS</DisplayName>
		<Description Locale="en">OBJECTDISPLAYS</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement" BrowseName="1:historymanagement">
		<DisplayName Locale="en">historymanagement</DisplayName>
		<Description Locale="en">historymanagement</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.popup" BrowseName="1:popup">
		<DisplayName Locale="en">popup</DisplayName>
		<Description Locale="en">popup</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
	</UAObject>
	<UAVariable NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.popup.edit_dialog" BrowseName="1:edit_dialog" DataType="XmlElement" AccessLevel="103" UserAccessLevel="103" Historizing="true">
		<DisplayName Locale="en">edit_dialog</DisplayName>
		<Description Locale="en">edit_dialog</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.popup</Reference>
			<Reference ReferenceType="HasTypeDefinition">ns=1;s=VariableTypes.ATVISE.Display</Reference>
		</References>
		<Value>
			<uax:XmlElement><![CDATA[<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<svg height="180" version="1.2" width="430" xmlns="http://www.w3.org/2000/svg" xmlns:atv="http://webmi.atvise.com/2007/svgext" xmlns:xlink="http://www.w3.org/1999/xlink">
 <defs>
  <linearGradient id="gradient" x1="0" x2="1" y1="0" y2="1">
   <stop offset="0" stop-color="#ffffff"/>
   <stop offset="1" stop-color="#0000c8"/>
  </linearGradient>
  <linearGradient gradientUnits="objectBoundingBox" id="linear_0" x1="0" x2="1" y1="0" y2="1">
   <stop offset="0" stop-color="#000000" stop-opacity="0.10588235294117647"/>
   <stop offset="1" stop-color="#000000" stop-opacity="0"/>
  </linearGradient>
 </defs>
 <desc>Dialog to edit the historical assignments of a node.</desc>
 <title>Edit Dialog</title>
 <metadata>
  <atv:parameter behavior="optional" name="nodeId" valuetype="address"/>
  <atv:parameter behavior="hidden" defaultvalue="SYSTEM.GLOBALS.atvFontColor" name="atvFontColor" valuetype="global"/>
  <atv:gridconfig enabled="true" gridstyle="lines" height="5" width="5"/>
  <atv:snapconfig enabled="true" height="5" width="5"/>
 </metadata>
 <rect atv:refpx="214.999" atv:refpy="90" fill="#000000" fill-opacity="0.105882" height="180" id="background" stroke="none" stroke-linecap="butt" stroke-width="1" width="430" x="0" y="0"/>
 <rect atv:refpx="-176.857" atv:refpy="-58" fill="#ffffff" height="100" id="id_13" rx="11.598" ry="11.598" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0" width="380" x="24" y="32"/>
 <svg atv:refpx="300.348" atv:refpy="62.121" height="30" id="Combobox_Archiv" transform="matrix(1.1739,0,0,1,0,0)" width="160" x="175.863" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.combobox" y="47.121">
  <atv:argument name="context_menu_font_size" value="14"/>
  <atv:argument name="fontSize" value="14"/>
  <atv:overwrite id="focus_frame" transform="matrix(0.8519,0,0,1,0,0)" width="183.824"/>
  <atv:overwrite id="button_stroke" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="id_7" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="button_bg" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="combobox_label" transform="matrix(0.8519,0,0,1,0,0)" x="153.324"/>
  <atv:overwrite id="blinking_frame" transform="matrix(0.8519,0,0,1,0,0)" width="155.824"/>
  <atv:overwrite id="combobox_bg" transform="matrix(0.8519,0,0,1,0,0)" width="155.824"/>
  <atv:overwrite id="id_1" transform="matrix(0.8519,0,0,1,0,0)" width="185.824"/>
  <atv:overwrite id="id_0" transform="matrix(0.8519,0,0,1,0,0)" width="187.824"/>
 </svg>
 <svg atv:refpx="166.795" atv:refpy="-152.566" height="30" id="Combobox_Template" transform="matrix(1.1739,0,0,1,0,0)" width="160" x="175.938" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.combobox" y="87.317">
  <atv:argument name="context_menu_font_size" value="14"/>
  <atv:argument name="fontSize" value="14"/>
  <atv:overwrite id="focus_frame" transform="matrix(0.8519,0,0,1,0,0)" width="183.824"/>
  <atv:overwrite id="button_stroke" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="id_7" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="button_bg" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="combobox_label" transform="matrix(0.8519,0,0,1,0,0)" x="153.324"/>
  <atv:overwrite id="blinking_frame" transform="matrix(0.8519,0,0,1,0,0)" width="155.824"/>
  <atv:overwrite id="combobox_bg" transform="matrix(0.8519,0,0,1,0,0)" width="155.824"/>
  <atv:overwrite id="id_1" transform="matrix(0.8519,0,0,1,0,0)" width="185.824"/>
  <atv:overwrite id="id_0" transform="matrix(0.8519,0,0,1,0,0)" width="187.824"/>
 </svg>
 <svg atv:refpx="-63.978" atv:refpy="712.367" height="30" id="id_15" width="80" x="-104.234" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.clickarea" y="695.957"/>
 <g atv:refpx="215" atv:refpy="156.999" id="id_2" transform="matrix(1,0,0,1,-0.513,-82.123)">
  <svg atv:dynamic="true" atv:refpx="426.81" atv:refpy="371.753" height="30" id="cancel_button" width="80" x="249.086" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.button" y="224.123">
   <atv:argument name="label" value="T{Cancel}"/>
   <atv:argument name="tabIndex" value="5"/>
   <atv:argument name="borderVisible" value="true"/>
   <atv:argument name="extraBorderColor" value="#ffffff"/>
  </svg>
  <svg atv:dynamic="true" atv:refpx="279.664" atv:refpy="371.753" height="30" id="ok_button" width="80" x="101.94" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.button" y="224.123">
   <atv:argument name="label" value="T{OK}"/>
   <atv:argument name="tabIndex" value="4"/>
   <atv:argument name="borderVisible" value="true"/>
   <atv:argument name="extraBorderColor" value="#ffffff"/>
  </svg>
 </g>
 <text atv:refpx="215" atv:refpy="17.5" fill="#575757" font-family="Arial" font-size="16" font-weight="bold" id="label_name" text-anchor="middle" x="215" y="22">XXX</text>
 <script atv:desc="" atv:name="" type="text/ecmascript"><![CDATA[var archive = webMI.query["archive"];
var aggregate = webMI.query["aggregate"];
const node = webMI.query["node"];
var shortNode = node.replace("AGENT.OBJECTS.", "");

if(shortNode.length >= 50) shortNode = "..." + shortNode.substr(shortNode.length - 45);

webMI.gfx.setText("label_name", shortNode);

webMI.addOnload(()=>{
	
	webMI.data.call("GetArchivesAndAggregates", {}, function(e) {
		var entriesArchive = e.archives;
		webMI.trigger.fire("setItems", entriesArchive, "Combobox_Archiv");
		
		var entriesTemplate = e.templates;
		webMI.trigger.fire("setItems", entriesTemplate, "Combobox_Template");
		
		webMI.trigger.fire("setSelectedItem", archive, "Combobox_Archiv");
		webMI.trigger.fire("setSelectedItem", aggregate, "Combobox_Template");
	});
});

webMI.trigger.connect("valuechanged", function(e){
	archive = e.value;
},"Combobox_Archiv")

webMI.trigger.connect("valuechanged", function(e){ 
	aggregate = e.value;
},"Combobox_Template")

webMI.trigger.connect("clicked", function(e) 
{
	webMI.data.call("UpdateHistorization", {archive, aggregate, node}, (e) =>
	{
		//setTimeout(() => {
			webMI.trigger.fire("UpdateHistoryTable");
			webMI.display.closeWindow();
		//},100);
	});
}, "ok_button");

webMI.trigger.connect("clicked", function(e) 
{
	webMI.display.closeWindow();
}, "cancel_button");

]]]]><![CDATA[></script>
 <text atv:refpx="82.5" atv:refpy="62.121" fill="#575757" font-family="Arial" font-size="14" id="id_3" x="54" y="66.621">T{Archive}:</text>
 <text atv:refpx="118" atv:refpy="102.317" fill="#575757" font-family="Arial" font-size="14" id="id_4" x="54" y="106.817">T{Aggregate Template}:</text>
</svg>
]]></uax:XmlElement>
		</Value>
	</UAVariable>
	<UAObject NodeId="ns=1;s=SYSTEM" BrowseName="1:SYSTEM">
		<DisplayName Locale="en">SYSTEM</DisplayName>
		<Description Locale="en">SYSTEM</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">Objects</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise ExportedNodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement" ExportedBrowseName="1:historymanagement" Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY" BrowseName="1:LIBRARY">
		<DisplayName Locale="en">LIBRARY</DisplayName>
		<Description Locale="en">LIBRARY</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT" BrowseName="1:PROJECT">
		<DisplayName Locale="en">PROJECT</DisplayName>
		<Description Locale="en">PROJECT</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS" BrowseName="1:OBJECTDISPLAYS">
		<DisplayName Locale="en">OBJECTDISPLAYS</DisplayName>
		<Description Locale="en">OBJECTDISPLAYS</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement" BrowseName="1:historymanagement">
		<DisplayName Locale="en">historymanagement</DisplayName>
		<Description Locale="en">historymanagement</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
	</UAObject>
	<UAVariable NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.history_manager" BrowseName="1:history_manager" DataType="XmlElement" AccessLevel="103" UserAccessLevel="103" Historizing="true">
		<DisplayName Locale="en">history_manager</DisplayName>
		<Description Locale="en">history_manager</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement</Reference>
			<Reference ReferenceType="HasTypeDefinition">ns=1;s=VariableTypes.ATVISE.Display</Reference>
		</References>
		<Value>
			<uax:XmlElement><![CDATA[<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<svg height="680" version="1.2" width="1280" xmlns="http://www.w3.org/2000/svg" xmlns:atv="http://webmi.atvise.com/2007/svgext" xmlns:xlink="http://www.w3.org/1999/xlink">
 <defs/>
 <desc>Overview and management of nodes and their historical assignments.</desc>
 <title>History Management</title>
 <metadata>
  <!-- common -->
  <!-- table -->
  <!-- font -->
  <!-- appeareance -->
  <!-- options -->
  <!-- menu -->
  <!-- security -->
  <atv:parameter behavior="optional" defaultvalue="AGENT.OBJECTS" desc="root address" name="address" valuetype="address"/>
  <atv:parameter behavior="optional" config="AGENT.HISTORY" defaultvalue="" group="Default filter" name="archive" valuetype="address"/>
  <atv:parameter behavior="optional" config="AGENT.HISTORY.AGGREGATETEMPLATES" defaultvalue="" group="Default filter" name="template" valuetype="address"/>
  <atv:parameter defaultvalue="{&quot;value&quot;: 1, &quot;name&quot;: &quot;AND&quot;}" desc="and / or" group="Default filter" name="logical" config="AND={&quot;value&quot;: 1, &quot;name&quot;: &quot;AND&quot;};OR={&quot;value&quot;: 0, &quot;name&quot;: &quot;OR&quot;}" valuetype="enum" behavior="optional"/>
  <atv:parameter behavior="optional" defaultvalue="true" group="Default filter" name="recursive" valuetype="bool"/>
  <atv:parameter behavior="optional" defaultvalue="true" desc="get only historized nodes" group="Default filter" name="onlyHistorizedNodes" valuetype="bool"/>
  <atv:gridconfig enabled="true" gridstyle="lines" height="2" width="2"/>
  <atv:snapconfig enabled="true" height="2" width="2"/>
 </metadata>
 <rect atv:refpx="1002.02" atv:refpy="59.817" fill="#e5e5e5" height="80" id="filters_bg" rx="0" ry="0" stroke="#e5e5e5" stroke-width="1" width="1280" x="0" y="0"/>
 <svg atv:refpx="725.251" atv:refpy="45" height="30" id="picker_archive" transform="matrix(0.7925,0,0,1,0,0)" width="160" x="883.284" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.combobox" y="35">
  <atv:overwrite id="focus_frame" transform="matrix(1.2618,0,0,1,0,0)" width="122.8"/>
  <atv:overwrite id="button_stroke" transform="matrix(1.2618,0,0,1,0,0)" x="101.8"/>
  <atv:overwrite id="id_7" transform="matrix(1.2618,0,0,1,0,0)" x="101.8"/>
  <atv:overwrite id="button_bg" transform="matrix(1.2618,0,0,1,0,0)" x="101.8"/>
  <atv:overwrite id="combobox_label" transform="matrix(1.2618,0,0,1,0,0)" x="92.3"/>
  <atv:overwrite id="blinking_frame" transform="matrix(1.2618,0,0,1,0,0)" width="94.8"/>
  <atv:overwrite id="combobox_bg" transform="matrix(1.2618,0,0,1,0,0)" width="94.8"/>
  <atv:overwrite id="id_1" transform="matrix(1.2618,0,0,1,0,0)" width="124.8"/>
  <atv:overwrite id="id_0" transform="matrix(1.2618,0,0,1,0,0)" width="126.8"/>
 </svg>
 <svg atv:refpx="979.842" atv:refpy="45" height="30" id="picker_aggregate" transform="matrix(0.7754,0,0,1,0,0)" width="160" x="1220.015" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.combobox" y="35">
  <atv:overwrite id="focus_frame" transform="matrix(1.2897,0,0,1,0,0)" width="120.064"/>
  <atv:overwrite id="button_stroke" transform="matrix(1.2897,0,0,1,0,0)" x="99.064"/>
  <atv:overwrite id="id_7" transform="matrix(1.2897,0,0,1,0,0)" x="99.064"/>
  <atv:overwrite id="button_bg" transform="matrix(1.2897,0,0,1,0,0)" x="99.064"/>
  <atv:overwrite id="combobox_label" transform="matrix(1.2897,0,0,1,0,0)" x="89.564"/>
  <atv:overwrite id="blinking_frame" transform="matrix(1.2897,0,0,1,0,0)" width="92.064"/>
  <atv:overwrite id="combobox_bg" transform="matrix(1.2897,0,0,1,0,0)" width="92.064"/>
  <atv:overwrite id="id_1" transform="matrix(1.2897,0,0,1,0,0)" width="122.064"/>
  <atv:overwrite id="id_0" transform="matrix(1.2897,0,0,1,0,0)" width="124.064"/>
 </svg>
 <svg atv:refpx="1120" atv:refpy="45" height="30" id="button_filter" width="80" x="1080" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.button" y="35">
  <atv:argument name="label" value="T{Filter}"/>
 </svg>
 <svg atv:refpx="639.985" atv:refpy="380.01" height="640" id="id_0" transform="matrix(2,0,0,0.9375,0,0)" width="640" x="0" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.slickgrid.table" y="85.336">
  <atv:argument name="tableID" value="simpleTable"/>
  <atv:argument name="columnReorder" value="false"/>
  <atv:argument name="multiselect" value="false"/>
  <atv:argument name="header_text_horizontal" value="center"/>
  <atv:argument name="row_height" value="28"/>
 </svg>
 <svg atv:refpx="879" atv:refpy="19" height="30" id="AND" width="160" x="844" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.radiobutton" y="8.5">
  <atv:argument name="radiogroupId" value="logical"/>
  <atv:argument name="label" value="T{AND}"/>
  <atv:argument name="value" value="1"/>
 </svg>
 <svg atv:refpx="879" atv:refpy="45" height="30" id="OR" width="160" x="844" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.radiobutton" y="41.5">
  <atv:argument name="radiogroupId" value="logical"/>
  <atv:argument name="label" value="T{OR}"/>
  <atv:argument name="value" value="0"/>
 </svg>
 <svg atv:refpx="434.243" atv:refpy="33" height="30" id="picker_address" transform="matrix(1.1531,0,0,1,0,0)" width="160" x="296.592" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.picker_address" y="23">
  <atv:argument name="base" prefix="address" value=""/>
  <atv:overwrite id="addresspicker_clickarea" transform="matrix(0.8672,0,0,1,0,0)" x="156.496"/>
  <atv:overwrite id="focus_frame" transform="matrix(0.8672,0,0,1,0,0)" width="180.496"/>
  <atv:overwrite id="button_stroke" transform="matrix(0.8672,0,0,1,0,0)" x="159.496"/>
  <atv:overwrite id="button_symbol" transform="matrix(0.8672,0,0,1,0,0)" x="159.246"/>
  <atv:overwrite id="button_bg" transform="matrix(0.8672,0,0,1,0,0)" x="159.496"/>
  <atv:overwrite id="input_label" transform="matrix(1.0118,0,0,1,-7.154,0)" x="134.996"/>
  <atv:overwrite id="blinking_frame" transform="matrix(0.8672,0,0,1,0,0)" width="152.496"/>
  <atv:overwrite id="addresspicker_bg" transform="matrix(0.8672,0,0,1,0,0)" width="152.496"/>
  <atv:overwrite id="id_0" transform="matrix(0.8672,0,0,1,0,0)" width="182.496"/>
  <atv:overwrite id="addresspicker_stroke" transform="matrix(0.8672,0,0,1,0,0)" width="184.496"/>
 </svg>
 <svg atv:refpx="1217.927" atv:refpy="45" height="30" id="button_reset" transform="matrix(1.1978,0,0,1,0,0)" width="80" x="976.791" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.button" y="35">
  <atv:argument name="label" value="T{Reset}"/>
  <atv:overwrite id="id_6" transform="matrix(0.8349,0,0,1,0,0)" width="93.824"/>
  <atv:overwrite id="button_label_2" transform="matrix(0.8349,0,0,1,0,0)" x="47.912"/>
  <atv:overwrite id="button_label_1" transform="matrix(0.8349,0,0,1,0,0)" x="47.912"/>
  <atv:overwrite id="button_label" transform="matrix(0.8349,0,0,1,0,0)" x="47.912"/>
  <atv:overwrite id="button_symbol_bottom" transform="matrix(0.5009,0,0,0.6,0,0)" x="69.687"/>
  <atv:overwrite id="button_symbol_top" transform="matrix(0.5009,0,0,0.6,0,0)" x="69.687"/>
  <atv:overwrite id="button_symbol" transform="matrix(0.8349,0,0,1,0,0)" x="37.912"/>
  <atv:overwrite id="button_stroke" transform="matrix(0.8349,0,0,1,0,0)" width="91.824"/>
  <atv:overwrite id="button_bg" transform="matrix(0.8349,0,0,1,0,0)" width="93.824"/>
  <atv:overwrite id="outer_frame" transform="matrix(0.8349,0,0,1,0,0)" width="95.824"/>
 </svg>
 <svg atv:refpx="607.989" atv:refpy="19" height="30" id="checkbox_recursive" transform="matrix(0.775,0,0,1,0,0)" width="160" x="704.516" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.checkbox" y="8">
  <atv:argument name="label" value="T{Recursive}"/>
  <atv:argument name="outputValueOn" value="true"/>
  <atv:argument name="outputValueOff" value="false"/>
  <atv:argument name="valueOn" value="true"/>
  <atv:overwrite id="checkbox_item" transform="matrix(1.2903,0,0,1,0,0)"/>
  <atv:overwrite id="checkbox_symbol" transform="matrix(1.2903,0,0,1,0,0)"/>
  <atv:overwrite id="blinking_frame" transform="matrix(1.2903,0,0,1,0,0)"/>
  <atv:overwrite id="focus_frame" transform="matrix(1.2903,0,0,1,0,0)"/>
  <atv:overwrite id="checkbox_bg" transform="matrix(1.2903,0,0,1,0,0)"/>
  <atv:overwrite id="checkbox_frame" transform="matrix(1.2903,0,0,1,0,0)"/>
  <atv:overwrite id="checkbox_stroke" transform="matrix(1.2903,0,0,1,0,0)"/>
 </svg>
 <text atv:refpx="182.699" atv:refpy="37" fill="$FONTCOLOR$" font-family="Arial" font-size="22" id="title" text-anchor="start" x="55" y="44.5">T{History Manager}</text>
 <svg atv:refpx="27.799" atv:refpy="22.999" height="60" id="logo" transform="matrix(0.6,0,0,0.6,0,0)" width="60" x="16.667" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Symbols.60x60.history" y="31.666">
  <atv:argument name="displayAcNotification" value="false"/>
 </svg>
 <svg atv:refpx="630.985" atv:refpy="51" height="30" id="checkbox_onlyHistorized" transform="matrix(1.0625,0,0,1,0,0)" width="160" x="513.882" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.checkbox" y="41">
  <atv:argument name="label" value="T{Only historized nodes}"/>
  <atv:argument name="outputValueOn" value="true"/>
  <atv:argument name="outputValueOff" value="false"/>
  <atv:argument name="valueOn" value="true"/>
  <atv:overwrite id="checkbox_item" transform="matrix(0.841,0,0,1,3.3542,0)" x="37.5"/>
  <atv:overwrite id="checkbox_symbol" transform="matrix(0.9412,0,0,1,0,0)"/>
  <atv:overwrite id="blinking_frame" transform="matrix(0.9412,0,0,1,0,0)"/>
  <atv:overwrite id="focus_frame" transform="matrix(0.9412,0,0,1,0,0)"/>
  <atv:overwrite id="checkbox_bg" transform="matrix(0.9412,0,0,1,0,0)"/>
  <atv:overwrite id="checkbox_frame" transform="matrix(0.9412,0,0,1,0,0)"/>
  <atv:overwrite id="checkbox_stroke" transform="matrix(0.9412,0,0,1,0,0)"/>
 </svg>
 <svg atv:refpx="640" atv:refpy="340" height="30" id="label_norights" transform="matrix(10.425,0,0,6.6,0,0)" width="80" x="21.391" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.label" y="36.515">
  <atv:argument name="text" value="T{No read rights for historical archives}"/>
  <atv:argument name="font-size" value="42"/>
  <atv:argument name="horizontal-align" value="center"/>
  <atv:argument name="vertical-align" value="middle"/>
 </svg>
 <svg atv:refpx="271" atv:refpy="34" height="30" id="id_5" transform="matrix(1.275,0,0,0.8,0,0)" width="80" x="183.529" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.label" y="32.5">
  <atv:argument name="text" value="T{Start address}:"/>
  <atv:argument name="vertical-align" value="middle"/>
  <atv:argument name="horizontal-align" value="center"/>
  <atv:argument name="font-size" value="14"/>
 </svg>
 <svg atv:refpx="763" atv:refpy="18" height="30" id="id_8" transform="matrix(1.575,0,0,0.8,0,0)" width="80" x="444.444" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.label" y="18.75">
  <atv:argument name="text" value="T{Archive groups}:"/>
  <atv:argument name="vertical-align" value="middle"/>
  <atv:argument name="horizontal-align" value="center"/>
  <atv:argument name="font-size" value="14"/>
 </svg>
 <svg atv:refpx="1008" atv:refpy="18" height="30" id="id_9" transform="matrix(1.55,0,0,0.8,0,0)" width="80" x="610.323" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.label" y="13.75">
  <atv:argument name="text" value="T{Aggregate templates}:"/>
  <atv:argument name="vertical-align" value="middle"/>
  <atv:argument name="horizontal-align" value="center"/>
  <atv:argument name="font-size" value="14"/>
 </svg>
 <script atv:desc="" atv:name="" type="text/ecmascript"><![CDATA[
const default_address = webMI.query.address;
const default_archive = webMI.query.archive;
const default_aggregate = webMI.query.template;
const default_logical = webMI.query.logical;
const default_recursive = webMI.query.recursive === 'true' ? true : false;
const default_getOnlyHistorized = webMI.query.onlyHistorizedNodes === 'true' ? true : false;

var address = webMI.query.address;
var archive = webMI.query.archive;
var aggregateTemplate = webMI.query.template;
var logical = webMI.query.logical;
var recursive = webMI.query.recursive;
var getOnlyHistorized = webMI.query.onlyHistorizedNodes;

const nonRecursiveDepth = 1;
var firstLoad = true;
var reload = true;
var data = [];
var tableController;

if (webMI.getAccessControlSupport()) {
	gAccessControlManager = webMI.callExtension("SYSTEM.LIBRARY.ATVISE.QUICKDYNAMICS.Access Control Manager");
}

function handleAccessControlResponse(compareRights, successCallback, failCallback) {
	if (!gAccessControlManager) {
		successCallback();
		return;
	}


	var requiredRights = {
		nodeIds: [],
		rights: []
	};

	compareRights = [].concat(compareRights);
	compareRights.forEach(function (r) {
		requiredRights.nodeIds.push(r.node);
		requiredRights.rights.push(r.right);
	});

	gAccessControlManager.getRightsDict(requiredRights.nodeIds, requiredRights.rights, function (response) {
		// do the checks
		var allRights = true;

		for (var c in compareRights) {
			if (
				typeof response[compareRights[c].node] != "undefined" &&
				typeof response[compareRights[c].node][compareRights[c].right] != "undefined"
			) {
				allRights = allRights && response[compareRights[c].node][compareRights[c].right];
			} else {
				allRights = false;
				break;
			}
		}
		if (allRights) {
			successCallback();
		} else {
			failCallback();
		}
	});
}

async function getData(searchaddress) {
	return new Promise((resolve, reject) => {
		searchaddress = searchaddress === "" ? "AGENT.OBJECTS" : searchaddress;
		webMI.data.call("GetHistorizedNodes", { startAddress: searchaddress }, (e) => {
			if (!e) {
				reject("Fehler: Kein Ergebnis von GetHistorizedNodes!");
				return;
			}
			let fullData = [];
			for (const row in e) {
				if (e[row] != "") {
					fullData.push({ node: row, archive: e[row][0], aggregateTemplate: e[row][1], folder: e[row][2], atvise_marker: false, atvise_expand: false });
				}
			}
			resolve(fullData);
		});
	});
}

async function loadData_Table(address) {
	if (reload) {
		try {
			data = await getData(address);
		} catch (err) {
			console.error("Fehler beim Laden der Daten:", err);
			return; // Falls ein Fehler auftritt, beende die Funktion
		}
		reload = false;
	}
	if (firstLoad) {
		setupTable();
		firstLoad = false;
	} else {
		loadFilteredData();
	}

}

webMI.addOnload(() => {
	webMI.trigger.fire("radioClicked_logical", JSON.parse(default_logical));
	handleAccessControlResponse({ node: "AGENT.HISTORY", right: "read" }, function () {
		webMI.gfx.setVisible("label_norights", false);
		loadData_Table(default_address);
		webMI.data.call("GetArchivesAndAggregates", {}, function (e) {
			const entriesArchive = e.archives;
			const entriesTemplate = e.templates;

			webMI.trigger.fire("setItems", entriesArchive, "picker_archive");
			webMI.trigger.fire("setItems", entriesTemplate, "picker_aggregate");

			setInitValues();
		});
	}, function () {
		webMI.gfx.setVisible("label_norights", null);
	});
});




function setupTable() {
	webMI.table.loadResources(function () {

		var config = [];

		config["columns"] = [
			{ id: "edit", name: "T{Edit}", field: "edit", sortable: false, filter: false, width: 50, sortByDefault: false, formatter: buttonFormatter },
			{ id: "node", name: "T{Node}", field: "node", sortable: true, filter: true, width: 300, sortByDefault: true, sortByDefaultAsc: true },
			{ id: "archive", name: "T{Archive}", field: "archive", sortable: true, filter: true, width: 50, sortByDefault: false, sortByDefaultAsc: true, textoption: "center" },
			{ id: "aggregateTemplate", name: "T{Aggregate Template}", field: "aggregateTemplate", sortable: true, filter: true, width: 50, sortByDefault: false, sortByDefaultAsc: true, textoption: "center" }
		];

		config["mode"] = "once";

		config["dataRequestFunction"] = function myRequest() {
			tableController = this;
			loadFilteredData();
		};

		config.onClickCallback = function (e, clickinfo) {
			clickHandler(clickinfo);
		};

		webMI.table.register("simpleTable", "config", config);
		webMI.table.setReady("simpleTable", "config");
	});
}

function setInitValues() {
	const filterTemplate = default_aggregate.replace("AGENT.HISTORY.AGGREGATETEMPLATES.", "");
	const filterArchive = default_archive.replace("AGENT.HISTORY.", "");

	webMI.trigger.fire("setSelectedItem", filterArchive, "picker_archive");
	webMI.trigger.fire("setSelectedItem", filterTemplate, "picker_aggregate");
	webMI.trigger.fire("setValue", "", "picker_address");

	webMI.trigger.fire("radioClicked_logical", JSON.parse(default_logical));
	webMI.trigger.fire("setChecked", default_recursive, "checkbox_recursive");
	webMI.trigger.fire("setChecked", default_getOnlyHistorized, "checkbox_onlyHistorized");
	if (!default_getOnlyHistorized) {
		webMI.trigger.fire("com.atvise.setActive", false, "picker_archive");
		webMI.trigger.fire("setSelectedItem", "", "picker_archive");
		webMI.trigger.fire("com.atvise.setActive", false, "picker_aggregate");
		webMI.trigger.fire("setSelectedItem", "", "picker_aggregate");
		webMI.trigger.fire("com.atvise.setActive", false, "AND");
		webMI.trigger.fire("com.atvise.setActive", false, "OR");
	}
};

function loadFilteredData() {
	tableController.clearData();
	tableController.addData(filterData(data));
}

function filterData(fullData) {
	var tmpdata = {};
	tmpdata.result = fullData.filter((item) => {
		if (getOnlyHistorized) {
			if (item.archive === '' && item.aggregateTemplate === '') {
				return false;
			} else {
				if (logical.name === 'AND') {
					if (archive && item.archive !== archive) return false;
					if (aggregateTemplate && item.aggregateTemplate !== aggregateTemplate) return false;
				} else {
					if (archive && item.archive !== archive) {
						if (!aggregateTemplate) return false;
						if (item.aggregateTemplate !== aggregateTemplate) return false;
					}

					if (aggregateTemplate && item.aggregateTemplate !== aggregateTemplate) {
						if (!archive) return false;
						if (item.archive !== archive) return false;
					}
				}
			}
		}
		if (address) {
			if (item.node === address) {
				return false;
			}
		}
		if (!recursive) {
			if (address) {
				var newAddress = address.replace(default_address + ".", "");

				if (item.node.split(".").length - newAddress.split(".").length > nonRecursiveDepth)
					return false;

			}
			else if (item.node.split(".").length > nonRecursiveDepth) {
				return false;
			}
		}
		return true;
	});
	return tmpdata;
};

function buttonFormatter(row, cell, value, columnDef, dataContext) {
	return '<span style="width: 100%; text-align: center"><i id="${id}" class="fas fa-edit"></i></span>';
};

function openEditPopup(row) {
	const query =
	{
		node: default_address + "." + row.node,
		archive: row.archive,
		aggregate: row.aggregateTemplate
	}
	if (address !== "") {
		query.node = address + "." + row.node;
	}

	webMI.display.openWindow(
		{
			display: "SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.popup.edit_dialog",
			extern: false,
			height: 200,
			menubar: false,
			modal: false,
			movable: false,
			resizable: false,
			scrollbars: false,
			status: false,
			title: "",
			toolbar: false,
			width: 430,
			query: query
		});
}


function clickHandler(clickinfo) {
	if (clickinfo.column.id == "edit")
		openEditPopup(clickinfo.item);
}


handleAccessControlResponse({ node: "AGENT.HISTORY", right: "read" }, function () {
	webMI.trigger.connect("valuechanged", function (e) {
		address = e.value;
		reload = true;
	}, "picker_address")

	webMI.trigger.connect("valuechanged", function (e) {
		archive = e.value;
	}, "picker_archive")

	webMI.trigger.connect("valuechanged", function (e) {
		aggregateTemplate = e.value
	}, "picker_aggregate")

	webMI.trigger.connect("valuechanged", function (e) {
		recursive = e.value == "true";
	}, "checkbox_recursive")

	webMI.trigger.connect("valuechanged", function (e) {
		getOnlyHistorized = e.value == "true";
		if (!getOnlyHistorized) {
			webMI.trigger.fire("com.atvise.setActive", false, "picker_archive");
			webMI.trigger.fire("setSelectedItem", "", "picker_archive");
			webMI.trigger.fire("com.atvise.setActive", false, "picker_aggregate");
			webMI.trigger.fire("setSelectedItem", "", "picker_aggregate");
			webMI.trigger.fire("com.atvise.setActive", false, "AND");
			webMI.trigger.fire("com.atvise.setActive", false, "OR");
		} else {
			webMI.trigger.fire("com.atvise.setActive", true, "picker_archive");
			webMI.trigger.fire("com.atvise.setActive", true, "picker_aggregate");
			webMI.trigger.fire("com.atvise.setActive", true, "AND");
			webMI.trigger.fire("com.atvise.setActive", true, "OR");
		}
	}, "checkbox_onlyHistorized")

	webMI.trigger.connect("radioClicked_logical", (e) => {
		logical = e.value;
	});

	webMI.trigger.connect("clicked", function (e) {
		loadData_Table(address);
	}, "button_filter");

	webMI.trigger.connect("clicked", function (e) {
		setInitValues();
		setTimeout(() => {
			loadData_Table(address);
		}, 100);
	}, "button_reset");

	webMI.trigger.connect("UpdateHistoryTable", () => {
		reload = true;
		loadData_Table(address);
	});
}, function () { });]]]]><![CDATA[></script>
</svg>
]]></uax:XmlElement>
		</Value>
	</UAVariable>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.popup" BrowseName="1:popup">
		<DisplayName Locale="en">popup</DisplayName>
		<Description Locale="en">popup</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
	</UAObject>
	<UAVariable NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.popup.edit_dialog" BrowseName="1:edit_dialog" DataType="XmlElement" AccessLevel="103" UserAccessLevel="103" Historizing="true">
		<DisplayName Locale="en">edit_dialog</DisplayName>
		<Description Locale="en">edit_dialog</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.popup</Reference>
			<Reference ReferenceType="HasTypeDefinition">ns=1;s=VariableTypes.ATVISE.Display</Reference>
		</References>
		<Value>
			<uax:XmlElement><![CDATA[<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<svg height="180" version="1.2" width="430" xmlns="http://www.w3.org/2000/svg" xmlns:atv="http://webmi.atvise.com/2007/svgext" xmlns:xlink="http://www.w3.org/1999/xlink">
 <defs>
  <linearGradient id="gradient" x1="0" x2="1" y1="0" y2="1">
   <stop offset="0" stop-color="#ffffff"/>
   <stop offset="1" stop-color="#0000c8"/>
  </linearGradient>
  <linearGradient gradientUnits="objectBoundingBox" id="linear_0" x1="0" x2="1" y1="0" y2="1">
   <stop offset="0" stop-color="#000000" stop-opacity="0.10588235294117647"/>
   <stop offset="1" stop-color="#000000" stop-opacity="0"/>
  </linearGradient>
 </defs>
 <desc>Dialog to edit the historical assignments of a node.</desc>
 <title>Edit Dialog</title>
 <metadata>
  <atv:parameter behavior="optional" name="nodeId" valuetype="address"/>
  <atv:parameter behavior="hidden" defaultvalue="SYSTEM.GLOBALS.atvFontColor" name="atvFontColor" valuetype="global"/>
  <atv:gridconfig enabled="true" gridstyle="lines" height="5" width="5"/>
  <atv:snapconfig enabled="true" height="5" width="5"/>
 </metadata>
 <rect atv:refpx="214.999" atv:refpy="90" fill="#000000" fill-opacity="0.105882" height="180" id="background" stroke="none" stroke-linecap="butt" stroke-width="1" width="430" x="0" y="0"/>
 <rect atv:refpx="-176.857" atv:refpy="-58" fill="#ffffff" height="100" id="id_13" rx="11.598" ry="11.598" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0" width="380" x="24" y="32"/>
 <svg atv:refpx="300.348" atv:refpy="62.121" height="30" id="Combobox_Archiv" transform="matrix(1.1739,0,0,1,0,0)" width="160" x="175.863" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.combobox" y="47.121">
  <atv:argument name="context_menu_font_size" value="14"/>
  <atv:argument name="fontSize" value="14"/>
  <atv:overwrite id="focus_frame" transform="matrix(0.8519,0,0,1,0,0)" width="183.824"/>
  <atv:overwrite id="button_stroke" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="id_7" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="button_bg" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="combobox_label" transform="matrix(0.8519,0,0,1,0,0)" x="153.324"/>
  <atv:overwrite id="blinking_frame" transform="matrix(0.8519,0,0,1,0,0)" width="155.824"/>
  <atv:overwrite id="combobox_bg" transform="matrix(0.8519,0,0,1,0,0)" width="155.824"/>
  <atv:overwrite id="id_1" transform="matrix(0.8519,0,0,1,0,0)" width="185.824"/>
  <atv:overwrite id="id_0" transform="matrix(0.8519,0,0,1,0,0)" width="187.824"/>
 </svg>
 <svg atv:refpx="166.795" atv:refpy="-152.566" height="30" id="Combobox_Template" transform="matrix(1.1739,0,0,1,0,0)" width="160" x="175.938" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.combobox" y="87.317">
  <atv:argument name="context_menu_font_size" value="14"/>
  <atv:argument name="fontSize" value="14"/>
  <atv:overwrite id="focus_frame" transform="matrix(0.8519,0,0,1,0,0)" width="183.824"/>
  <atv:overwrite id="button_stroke" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="id_7" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="button_bg" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="combobox_label" transform="matrix(0.8519,0,0,1,0,0)" x="153.324"/>
  <atv:overwrite id="blinking_frame" transform="matrix(0.8519,0,0,1,0,0)" width="155.824"/>
  <atv:overwrite id="combobox_bg" transform="matrix(0.8519,0,0,1,0,0)" width="155.824"/>
  <atv:overwrite id="id_1" transform="matrix(0.8519,0,0,1,0,0)" width="185.824"/>
  <atv:overwrite id="id_0" transform="matrix(0.8519,0,0,1,0,0)" width="187.824"/>
 </svg>
 <svg atv:refpx="-63.978" atv:refpy="712.367" height="30" id="id_15" width="80" x="-104.234" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.clickarea" y="695.957"/>
 <g atv:refpx="215" atv:refpy="156.999" id="id_2" transform="matrix(1,0,0,1,-0.513,-82.123)">
  <svg atv:dynamic="true" atv:refpx="426.81" atv:refpy="371.753" height="30" id="cancel_button" width="80" x="249.086" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.button" y="224.123">
   <atv:argument name="label" value="T{Cancel}"/>
   <atv:argument name="tabIndex" value="5"/>
   <atv:argument name="borderVisible" value="true"/>
   <atv:argument name="extraBorderColor" value="#ffffff"/>
  </svg>
  <svg atv:dynamic="true" atv:refpx="279.664" atv:refpy="371.753" height="30" id="ok_button" width="80" x="101.94" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.button" y="224.123">
   <atv:argument name="label" value="T{OK}"/>
   <atv:argument name="tabIndex" value="4"/>
   <atv:argument name="borderVisible" value="true"/>
   <atv:argument name="extraBorderColor" value="#ffffff"/>
  </svg>
 </g>
 <text atv:refpx="215" atv:refpy="17.5" fill="#575757" font-family="Arial" font-size="16" font-weight="bold" id="label_name" text-anchor="middle" x="215" y="22">XXX</text>
 <script atv:desc="" atv:name="" type="text/ecmascript"><![CDATA[var archive = webMI.query["archive"];
var aggregate = webMI.query["aggregate"];
const node = webMI.query["node"];
var shortNode = node.replace("AGENT.OBJECTS.", "");

if(shortNode.length >= 50) shortNode = "..." + shortNode.substr(shortNode.length - 45);

webMI.gfx.setText("label_name", shortNode);

webMI.addOnload(()=>{
	
	webMI.data.call("GetArchivesAndAggregates", {}, function(e) {
		var entriesArchive = e.archives;
		webMI.trigger.fire("setItems", entriesArchive, "Combobox_Archiv");
		
		var entriesTemplate = e.templates;
		webMI.trigger.fire("setItems", entriesTemplate, "Combobox_Template");
		
		webMI.trigger.fire("setSelectedItem", archive, "Combobox_Archiv");
		webMI.trigger.fire("setSelectedItem", aggregate, "Combobox_Template");
	});
});

webMI.trigger.connect("valuechanged", function(e){
	archive = e.value;
},"Combobox_Archiv")

webMI.trigger.connect("valuechanged", function(e){ 
	aggregate = e.value;
},"Combobox_Template")

webMI.trigger.connect("clicked", function(e) 
{
	webMI.data.call("UpdateHistorization", {archive, aggregate, node}, (e) =>
	{
		//setTimeout(() => {
			webMI.trigger.fire("UpdateHistoryTable");
			webMI.display.closeWindow();
		//},100);
	});
}, "ok_button");

webMI.trigger.connect("clicked", function(e) 
{
	webMI.display.closeWindow();
}, "cancel_button");

]]]]><![CDATA[></script>
 <text atv:refpx="82.5" atv:refpy="62.121" fill="#575757" font-family="Arial" font-size="14" id="id_3" x="54" y="66.621">T{Archive}:</text>
 <text atv:refpx="118" atv:refpy="102.317" fill="#575757" font-family="Arial" font-size="14" id="id_4" x="54" y="106.817">T{Aggregate Template}:</text>
</svg>
]]></uax:XmlElement>
		</Value>
	</UAVariable>
	<UAObject NodeId="ns=1;s=SYSTEM" BrowseName="1:SYSTEM">
		<DisplayName Locale="en">SYSTEM</DisplayName>
		<Description Locale="en">SYSTEM</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">Objects</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise ExportedNodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.WEBMIMETHODS.GetArchivesAndAggregates" ExportedBrowseName="1:GetArchivesAndAggregates" Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY" BrowseName="1:LIBRARY">
		<DisplayName Locale="en">LIBRARY</DisplayName>
		<Description Locale="en">LIBRARY</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT" BrowseName="1:PROJECT">
		<DisplayName Locale="en">PROJECT</DisplayName>
		<Description Locale="en">PROJECT</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.WEBMIMETHODS" BrowseName="1:WEBMIMETHODS">
		<DisplayName Locale="en">WEBMIMETHODS</DisplayName>
		<Description Locale="en">WEBMIMETHODS</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAVariable NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.WEBMIMETHODS.GetArchivesAndAggregates" BrowseName="1:GetArchivesAndAggregates" DataType="XmlElement" AccessLevel="103" UserAccessLevel="103" Historizing="true">
		<DisplayName Locale="en">GetArchivesAndAggregates</DisplayName>
		<Description Locale="en">GetArchivesAndAggregates</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT.WEBMIMETHODS</Reference>
			<Reference ReferenceType="HasTypeDefinition">ns=1;s=VariableTypes.ATVISE.ScriptCode</Reference>
		</References>
		<Value>
			<uax:XmlElement><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<script>
  <metadata>
    <priority>0</priority>
    <owner>root</owner>
    <runcontext>caller</runcontext>
  </metadata>
  <code><![CDATA[const data = {};
data.archives = [{text: " ", value: ""}];
data.templates = [{text: " ", value: ""}];

const myArchive = [];

var result = Ua.findNode("AGENT.HISTORY").result.browse({});

for(const res of result.result)
	if(res.node.typeDefinition.value === "ns=1;s=ObjectTypes.ATVISE.ArchiveGroup.Data")
		data.archives.push({text: res.node.browseName.name, value:  res.node.browseName.name});	

result = Ua.findNode("AGENT.HISTORY.AGGREGATETEMPLATES").result.browse({});

for(const res of result.result)
	if(res.node.typeDefinition.value == "ns=1;s=ObjectTypes.ATVISE.AggregateTemplate")
			data.templates.push({text: res.node.browseName.name, value:  res.node.browseName.name});

return data;]]]]><![CDATA[></code>
</script>
]]></uax:XmlElement>
		</Value>
	</UAVariable>
	<UAObject NodeId="ns=1;s=SYSTEM" BrowseName="1:SYSTEM">
		<DisplayName Locale="en">SYSTEM</DisplayName>
		<Description Locale="en">SYSTEM</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">Objects</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise ExportedNodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.WEBMIMETHODS.GetHistorizedNodes" ExportedBrowseName="1:GetHistorizedNodes" Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY" BrowseName="1:LIBRARY">
		<DisplayName Locale="en">LIBRARY</DisplayName>
		<Description Locale="en">LIBRARY</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT" BrowseName="1:PROJECT">
		<DisplayName Locale="en">PROJECT</DisplayName>
		<Description Locale="en">PROJECT</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.WEBMIMETHODS" BrowseName="1:WEBMIMETHODS">
		<DisplayName Locale="en">WEBMIMETHODS</DisplayName>
		<Description Locale="en">WEBMIMETHODS</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAVariable NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.WEBMIMETHODS.GetHistorizedNodes" BrowseName="1:GetHistorizedNodes" DataType="XmlElement" AccessLevel="103" UserAccessLevel="103" Historizing="true">
		<DisplayName Locale="en">GetHistorizedNodes</DisplayName>
		<Description Locale="en">GetHistorizedNodes</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT.WEBMIMETHODS</Reference>
			<Reference ReferenceType="HasTypeDefinition">ns=1;s=VariableTypes.ATVISE.ScriptCode</Reference>
		</References>
		<Value>
			<uax:XmlElement><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<script>
  <metadata>
    <priority>0</priority>
    <owner>root</owner>
    <runcontext>caller</runcontext>
  </metadata>
  <parameter name="request" type="http.request" trigger="false" relative="false" value=""/>
  <code><![CDATA[const parameter = request.postvalues;

var array = [];
var startAddress = parameter.startAddress; 
var table = {}


function getHistoryRefs(nodeid) {
	var node = Ua.findNode(nodeid); 
	var references = node.result.browse({
		direction: Ua.Node.BROWSEDIRECTION_FORWARD,
		reference: Ua.Reference.HASHISTORICALCONFIGURATION,
		nodeClass: Ua.NodeClass.UNSPECIFIED,
		maxResult: 0
	});

	 for (const ref of references.result) {
		if(ref.node.nodeId.address.indexOf("AGENT.HISTORY.") >= 0) {
			array.push([nodeid.replace("ns=1;s=", ""), ref.node.nodeId.address]);
		}
	}
	
	if(references.result.length < 1 && nodeid.includes("AGENT.OBJECTS."))
		array.push([nodeid.replace("ns=1;s=", ""), ""]);

	var res = node.result.browse({
		direction: Ua.Node.BROWSEDIRECTION_FORWARD,
		reference: Ua.Reference.HIERARCHICALREFERENCES,
		maxResult:0,
		nodeClass: Ua.NodeClass.VARIABLE,
		recursive: true 
	});
	
	for(const r of res.result){
		if(r.node.typeDefinition.value.indexOf("VariableTypes.ATVISE") <= 0)
			getHistoryRefs(r.node.nodeId.xml);
	}
}

getHistoryRefs(startAddress);

var keys = []

for (const ele of array)
	if (!keys.includes(ele[0]))
		keys.push(ele[0].replace(startAddress + ".", ""));

for(const k of keys)
{
	var a = ["",""]; 
	
	for(const ele of array)
	{
		if (startAddress + "." + k === ele[0]) {
			var historyString = ele[1];
			if (historyString.startsWith("AGENT.HISTORY.AGGREGATETEMPLATES.")) {
				historyString = historyString.replace("AGENT.HISTORY.AGGREGATETEMPLATES.", "");
				a[1]=historyString;
			} else if (historyString.startsWith("AGENT.HISTORY.")) {
				historyString = historyString.replace("AGENT.HISTORY.", "");
				a[0]=historyString;        
			}  					
		}
	}
	
	var subFolder = k.split(".")	
	a[2] = subFolder.length > 1;
	
	table[k] = a;
}
return table;]]]]><![CDATA[></code>
</script>
]]></uax:XmlElement>
		</Value>
	</UAVariable>
	<UAObject NodeId="ns=1;s=SYSTEM" BrowseName="1:SYSTEM">
		<DisplayName Locale="en">SYSTEM</DisplayName>
		<Description Locale="en">SYSTEM</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">Objects</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise ExportedNodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.WEBMIMETHODS.UpdateHistorization" ExportedBrowseName="1:UpdateHistorization" Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY" BrowseName="1:LIBRARY">
		<DisplayName Locale="en">LIBRARY</DisplayName>
		<Description Locale="en">LIBRARY</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT" BrowseName="1:PROJECT">
		<DisplayName Locale="en">PROJECT</DisplayName>
		<Description Locale="en">PROJECT</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.WEBMIMETHODS" BrowseName="1:WEBMIMETHODS">
		<DisplayName Locale="en">WEBMIMETHODS</DisplayName>
		<Description Locale="en">WEBMIMETHODS</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAVariable NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.WEBMIMETHODS.UpdateHistorization" BrowseName="1:UpdateHistorization" DataType="XmlElement" AccessLevel="103" UserAccessLevel="103" Historizing="true">
		<DisplayName Locale="en">UpdateHistorization</DisplayName>
		<Description Locale="en">UpdateHistorization</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT.WEBMIMETHODS</Reference>
			<Reference ReferenceType="HasTypeDefinition">ns=1;s=VariableTypes.ATVISE.ScriptCode</Reference>
		</References>
		<Value>
			<uax:XmlElement><![CDATA[<?xml version="1.0" encoding="UTF-8"?>
<script>
  <metadata>
    <priority>0</priority>
    <owner>root</owner>
    <runcontext>caller</runcontext>
  </metadata>
  <parameter name="request" type="http.request" trigger="false" relative="false" value=""/>
  <code><![CDATA[const archiveName = request.postvalues.archive;
const nodeAddress = request.postvalues.node;
const aggregateName = request.postvalues.aggregate;
const node =  Ua.findNode(nodeAddress);

// Clear historical references

var historicalReferences = node.result.browse({
	reference: Ua.Reference.HASHISTORICALCONFIGURATION
});

for(const ref of historicalReferences.result)
	node.result.deleteReference(Ua.Reference.HASHISTORICALCONFIGURATION, ref.node.nodeId.address);
// Add historical archive
if(archiveName)
	node.result.addReference(Ua.Reference.HASHISTORICALCONFIGURATION, "AGENT.HISTORY." + archiveName);
	
// Add aggregate template
if(aggregateName)
	node.result.addReference(Ua.Reference.HASHISTORICALCONFIGURATION, "AGENT.HISTORY.AGGREGATETEMPLATES." + aggregateName);]]]]><![CDATA[></code>
</script>
]]></uax:XmlElement>
		</Value>
	</UAVariable>
	<UAObject NodeId="ns=1;s=AGENT" BrowseName="1:AGENT">
		<DisplayName Locale="en">AGENT</DisplayName>
		<Description Locale="en">AGENT</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">Objects</Reference>
			<Reference ReferenceType="HasTypeDefinition">ns=1;s=ObjectTypes.ATVISE.Server.Local</Reference>
		</References>
		<Extensions>
			<atvise ExportedNodeId="ns=1;s=AGENT.DISPLAYS.MAIN.History Manager" ExportedBrowseName="1:History Manager" Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=AGENT.DISPLAYS" BrowseName="1:DISPLAYS">
		<DisplayName Locale="en">DISPLAYS</DisplayName>
		<Description Locale="en">DISPLAYS</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=AGENT</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=AGENT.DISPLAYS.MAIN" BrowseName="1:MAIN">
		<DisplayName Locale="en">MAIN</DisplayName>
		<Description Locale="en">MAIN</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=AGENT.DISPLAYS</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAVariable NodeId="ns=1;s=AGENT.DISPLAYS.MAIN.History Manager" BrowseName="1:History Manager" DataType="XmlElement" AccessLevel="103" UserAccessLevel="103" Historizing="true">
		<DisplayName Locale="en">History Manager</DisplayName>
		<Description Locale="en">History Manager</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=AGENT.DISPLAYS.MAIN</Reference>
			<Reference ReferenceType="HasTypeDefinition">ns=1;s=VariableTypes.ATVISE.Display</Reference>
		</References>
		<Value>
			<uax:XmlElement><![CDATA[<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<svg height="890" version="1.2" width="1675" xmlns="http://www.w3.org/2000/svg" xmlns:atv="http://webmi.atvise.com/2007/svgext" xmlns:xlink="http://www.w3.org/1999/xlink">
 <defs/>
 <metadata>
  <atv:gridconfig enabled="false" gridstyle="lines" height="20" width="20"/>
  <atv:snapconfig enabled="false" height="10" width="10"/>
 </metadata>
 <script atv:desc="" atv:name="" type="text/ecmascript"/>
 <svg atv:refpx="837.5" atv:refpy="446.392" height="680" id="id_0" transform="matrix(1.3086,0,0,1.3086,0,0)" width="1280" x="0" xlink:href="SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.history_manager" y="1.124"/>
</svg>
]]></uax:XmlElement>
		</Value>
	</UAVariable>
	<UAObject NodeId="ns=1;s=SYSTEM" BrowseName="1:SYSTEM">
		<DisplayName Locale="en">SYSTEM</DisplayName>
		<Description Locale="en">SYSTEM</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">Objects</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise ExportedNodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.popup.edit_dialog" ExportedBrowseName="1:edit_dialog" Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY" BrowseName="1:LIBRARY">
		<DisplayName Locale="en">LIBRARY</DisplayName>
		<Description Locale="en">LIBRARY</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT" BrowseName="1:PROJECT">
		<DisplayName Locale="en">PROJECT</DisplayName>
		<Description Locale="en">PROJECT</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS" BrowseName="1:OBJECTDISPLAYS">
		<DisplayName Locale="en">OBJECTDISPLAYS</DisplayName>
		<Description Locale="en">OBJECTDISPLAYS</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement" BrowseName="1:historymanagement">
		<DisplayName Locale="en">historymanagement</DisplayName>
		<Description Locale="en">historymanagement</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.popup" BrowseName="1:popup">
		<DisplayName Locale="en">popup</DisplayName>
		<Description Locale="en">popup</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAVariable NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.popup.edit_dialog" BrowseName="1:edit_dialog" DataType="XmlElement" AccessLevel="103" UserAccessLevel="103" Historizing="true">
		<DisplayName Locale="en">edit_dialog</DisplayName>
		<Description Locale="en">edit_dialog</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.popup</Reference>
			<Reference ReferenceType="HasTypeDefinition">ns=1;s=VariableTypes.ATVISE.Display</Reference>
		</References>
		<Value>
			<uax:XmlElement><![CDATA[<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<svg height="180" version="1.2" width="430" xmlns="http://www.w3.org/2000/svg" xmlns:atv="http://webmi.atvise.com/2007/svgext" xmlns:xlink="http://www.w3.org/1999/xlink">
 <defs>
  <linearGradient id="gradient" x1="0" x2="1" y1="0" y2="1">
   <stop offset="0" stop-color="#ffffff"/>
   <stop offset="1" stop-color="#0000c8"/>
  </linearGradient>
  <linearGradient gradientUnits="objectBoundingBox" id="linear_0" x1="0" x2="1" y1="0" y2="1">
   <stop offset="0" stop-color="#000000" stop-opacity="0.10588235294117647"/>
   <stop offset="1" stop-color="#000000" stop-opacity="0"/>
  </linearGradient>
 </defs>
 <desc>Dialog to edit the historical assignments of a node.</desc>
 <title>Edit Dialog</title>
 <metadata>
  <atv:parameter behavior="optional" name="nodeId" valuetype="address"/>
  <atv:parameter behavior="hidden" defaultvalue="SYSTEM.GLOBALS.atvFontColor" name="atvFontColor" valuetype="global"/>
  <atv:gridconfig enabled="true" gridstyle="lines" height="5" width="5"/>
  <atv:snapconfig enabled="true" height="5" width="5"/>
 </metadata>
 <rect atv:refpx="214.999" atv:refpy="90" fill="#000000" fill-opacity="0.105882" height="180" id="background" stroke="none" stroke-linecap="butt" stroke-width="1" width="430" x="0" y="0"/>
 <rect atv:refpx="-176.857" atv:refpy="-58" fill="#ffffff" height="100" id="id_13" rx="11.598" ry="11.598" stroke="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="0" width="380" x="24" y="32"/>
 <svg atv:refpx="300.348" atv:refpy="62.121" height="30" id="Combobox_Archiv" transform="matrix(1.1739,0,0,1,0,0)" width="160" x="175.863" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.combobox" y="47.121">
  <atv:argument name="context_menu_font_size" value="14"/>
  <atv:argument name="fontSize" value="14"/>
  <atv:overwrite id="focus_frame" transform="matrix(0.8519,0,0,1,0,0)" width="183.824"/>
  <atv:overwrite id="button_stroke" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="id_7" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="button_bg" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="combobox_label" transform="matrix(0.8519,0,0,1,0,0)" x="153.324"/>
  <atv:overwrite id="blinking_frame" transform="matrix(0.8519,0,0,1,0,0)" width="155.824"/>
  <atv:overwrite id="combobox_bg" transform="matrix(0.8519,0,0,1,0,0)" width="155.824"/>
  <atv:overwrite id="id_1" transform="matrix(0.8519,0,0,1,0,0)" width="185.824"/>
  <atv:overwrite id="id_0" transform="matrix(0.8519,0,0,1,0,0)" width="187.824"/>
 </svg>
 <svg atv:refpx="166.795" atv:refpy="-152.566" height="30" id="Combobox_Template" transform="matrix(1.1739,0,0,1,0,0)" width="160" x="175.938" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.combobox" y="87.317">
  <atv:argument name="context_menu_font_size" value="14"/>
  <atv:argument name="fontSize" value="14"/>
  <atv:overwrite id="focus_frame" transform="matrix(0.8519,0,0,1,0,0)" width="183.824"/>
  <atv:overwrite id="button_stroke" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="id_7" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="button_bg" transform="matrix(0.8519,0,0,1,0,0)" x="162.824"/>
  <atv:overwrite id="combobox_label" transform="matrix(0.8519,0,0,1,0,0)" x="153.324"/>
  <atv:overwrite id="blinking_frame" transform="matrix(0.8519,0,0,1,0,0)" width="155.824"/>
  <atv:overwrite id="combobox_bg" transform="matrix(0.8519,0,0,1,0,0)" width="155.824"/>
  <atv:overwrite id="id_1" transform="matrix(0.8519,0,0,1,0,0)" width="185.824"/>
  <atv:overwrite id="id_0" transform="matrix(0.8519,0,0,1,0,0)" width="187.824"/>
 </svg>
 <svg atv:refpx="-63.978" atv:refpy="712.367" height="30" id="id_15" width="80" x="-104.234" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.clickarea" y="695.957"/>
 <g atv:refpx="215" atv:refpy="156.999" id="id_2" transform="matrix(1,0,0,1,-0.513,-82.123)">
  <svg atv:dynamic="true" atv:refpx="426.81" atv:refpy="371.753" height="30" id="cancel_button" width="80" x="249.086" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.button" y="224.123">
   <atv:argument name="label" value="T{Cancel}"/>
   <atv:argument name="tabIndex" value="5"/>
   <atv:argument name="borderVisible" value="true"/>
   <atv:argument name="extraBorderColor" value="#ffffff"/>
  </svg>
  <svg atv:dynamic="true" atv:refpx="279.664" atv:refpy="371.753" height="30" id="ok_button" width="80" x="101.94" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.button" y="224.123">
   <atv:argument name="label" value="T{OK}"/>
   <atv:argument name="tabIndex" value="4"/>
   <atv:argument name="borderVisible" value="true"/>
   <atv:argument name="extraBorderColor" value="#ffffff"/>
  </svg>
 </g>
 <text atv:refpx="215" atv:refpy="17.5" fill="#575757" font-family="Arial" font-size="16" font-weight="bold" id="label_name" text-anchor="middle" x="215" y="22">XXX</text>
 <script atv:desc="" atv:name="" type="text/ecmascript"><![CDATA[var archive = webMI.query["archive"];
var aggregate = webMI.query["aggregate"];
const node = webMI.query["node"];
var shortNode = node.replace("AGENT.OBJECTS.", "");

if(shortNode.length >= 50) shortNode = "..." + shortNode.substr(shortNode.length - 45);

webMI.gfx.setText("label_name", shortNode);

webMI.addOnload(()=>{
	
	webMI.data.call("GetArchivesAndAggregates", {}, function(e) {
		var entriesArchive = e.archives;
		webMI.trigger.fire("setItems", entriesArchive, "Combobox_Archiv");
		
		var entriesTemplate = e.templates;
		webMI.trigger.fire("setItems", entriesTemplate, "Combobox_Template");
		
		webMI.trigger.fire("setSelectedItem", archive, "Combobox_Archiv");
		webMI.trigger.fire("setSelectedItem", aggregate, "Combobox_Template");
	});
});

webMI.trigger.connect("valuechanged", function(e){
	archive = e.value;
},"Combobox_Archiv")

webMI.trigger.connect("valuechanged", function(e){ 
	aggregate = e.value;
},"Combobox_Template")

webMI.trigger.connect("clicked", function(e) 
{
	webMI.data.call("UpdateHistorization", {archive, aggregate, node}, (e) =>
	{
		//setTimeout(() => {
			webMI.trigger.fire("UpdateHistoryTable");
			webMI.display.closeWindow();
		//},100);
	});
}, "ok_button");

webMI.trigger.connect("clicked", function(e) 
{
	webMI.display.closeWindow();
}, "cancel_button");

]]]]><![CDATA[></script>
 <text atv:refpx="82.5" atv:refpy="62.121" fill="#575757" font-family="Arial" font-size="14" id="id_3" x="54" y="66.621">T{Archive}:</text>
 <text atv:refpx="118" atv:refpy="102.317" fill="#575757" font-family="Arial" font-size="14" id="id_4" x="54" y="106.817">T{Aggregate Template}:</text>
</svg>
]]></uax:XmlElement>
		</Value>
	</UAVariable>
	<UAObject NodeId="ns=1;s=SYSTEM" BrowseName="1:SYSTEM">
		<DisplayName Locale="en">SYSTEM</DisplayName>
		<Description Locale="en">SYSTEM</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">Objects</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise ExportedNodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.history_manager" ExportedBrowseName="1:history_manager" Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY" BrowseName="1:LIBRARY">
		<DisplayName Locale="en">LIBRARY</DisplayName>
		<Description Locale="en">LIBRARY</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT" BrowseName="1:PROJECT">
		<DisplayName Locale="en">PROJECT</DisplayName>
		<Description Locale="en">PROJECT</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS" BrowseName="1:OBJECTDISPLAYS">
		<DisplayName Locale="en">OBJECTDISPLAYS</DisplayName>
		<Description Locale="en">OBJECTDISPLAYS</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAObject NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement" BrowseName="1:historymanagement">
		<DisplayName Locale="en">historymanagement</DisplayName>
		<Description Locale="en">historymanagement</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS</Reference>
			<Reference ReferenceType="HasTypeDefinition">FolderType</Reference>
		</References>
		<Extensions>
			<atvise Upstream="true"/>
		</Extensions>
	</UAObject>
	<UAVariable NodeId="ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.history_manager" BrowseName="1:history_manager" DataType="XmlElement" AccessLevel="103" UserAccessLevel="103" Historizing="true">
		<DisplayName Locale="en">history_manager</DisplayName>
		<Description Locale="en">history_manager</Description>
		<References>
			<Reference ReferenceType="HasComponent" IsForward="false">ns=1;s=SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement</Reference>
			<Reference ReferenceType="HasTypeDefinition">ns=1;s=VariableTypes.ATVISE.Display</Reference>
		</References>
		<Value>
			<uax:XmlElement><![CDATA[<?xml version='1.0' encoding='UTF-8' standalone='no'?>
<svg height="680" version="1.2" width="1280" xmlns="http://www.w3.org/2000/svg" xmlns:atv="http://webmi.atvise.com/2007/svgext" xmlns:xlink="http://www.w3.org/1999/xlink">
 <defs/>
 <desc>Overview and management of nodes and their historical assignments.</desc>
 <title>History Management</title>
 <metadata>
  <!-- common -->
  <!-- table -->
  <!-- font -->
  <!-- appeareance -->
  <!-- options -->
  <!-- menu -->
  <!-- security -->
  <atv:parameter behavior="optional" defaultvalue="AGENT.OBJECTS" desc="root address" name="address" valuetype="address"/>
  <atv:parameter behavior="optional" config="AGENT.HISTORY" defaultvalue="" group="Default filter" name="archive" valuetype="address"/>
  <atv:parameter behavior="optional" config="AGENT.HISTORY.AGGREGATETEMPLATES" defaultvalue="" group="Default filter" name="template" valuetype="address"/>
  <atv:parameter defaultvalue="{&quot;value&quot;: 1, &quot;name&quot;: &quot;AND&quot;}" desc="and / or" group="Default filter" name="logical" config="AND={&quot;value&quot;: 1, &quot;name&quot;: &quot;AND&quot;};OR={&quot;value&quot;: 0, &quot;name&quot;: &quot;OR&quot;}" valuetype="enum" behavior="optional"/>
  <atv:parameter behavior="optional" defaultvalue="true" group="Default filter" name="recursive" valuetype="bool"/>
  <atv:parameter behavior="optional" defaultvalue="true" desc="get only historized nodes" group="Default filter" name="onlyHistorizedNodes" valuetype="bool"/>
  <atv:gridconfig enabled="true" gridstyle="lines" height="2" width="2"/>
  <atv:snapconfig enabled="true" height="2" width="2"/>
 </metadata>
 <rect atv:refpx="1002.02" atv:refpy="59.817" fill="#e5e5e5" height="80" id="filters_bg" rx="0" ry="0" stroke="#e5e5e5" stroke-width="1" width="1280" x="0" y="0"/>
 <svg atv:refpx="725.251" atv:refpy="45" height="30" id="picker_archive" transform="matrix(0.7925,0,0,1,0,0)" width="160" x="883.284" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.combobox" y="35">
  <atv:overwrite id="focus_frame" transform="matrix(1.2618,0,0,1,0,0)" width="122.8"/>
  <atv:overwrite id="button_stroke" transform="matrix(1.2618,0,0,1,0,0)" x="101.8"/>
  <atv:overwrite id="id_7" transform="matrix(1.2618,0,0,1,0,0)" x="101.8"/>
  <atv:overwrite id="button_bg" transform="matrix(1.2618,0,0,1,0,0)" x="101.8"/>
  <atv:overwrite id="combobox_label" transform="matrix(1.2618,0,0,1,0,0)" x="92.3"/>
  <atv:overwrite id="blinking_frame" transform="matrix(1.2618,0,0,1,0,0)" width="94.8"/>
  <atv:overwrite id="combobox_bg" transform="matrix(1.2618,0,0,1,0,0)" width="94.8"/>
  <atv:overwrite id="id_1" transform="matrix(1.2618,0,0,1,0,0)" width="124.8"/>
  <atv:overwrite id="id_0" transform="matrix(1.2618,0,0,1,0,0)" width="126.8"/>
 </svg>
 <svg atv:refpx="979.842" atv:refpy="45" height="30" id="picker_aggregate" transform="matrix(0.7754,0,0,1,0,0)" width="160" x="1220.015" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.combobox" y="35">
  <atv:overwrite id="focus_frame" transform="matrix(1.2897,0,0,1,0,0)" width="120.064"/>
  <atv:overwrite id="button_stroke" transform="matrix(1.2897,0,0,1,0,0)" x="99.064"/>
  <atv:overwrite id="id_7" transform="matrix(1.2897,0,0,1,0,0)" x="99.064"/>
  <atv:overwrite id="button_bg" transform="matrix(1.2897,0,0,1,0,0)" x="99.064"/>
  <atv:overwrite id="combobox_label" transform="matrix(1.2897,0,0,1,0,0)" x="89.564"/>
  <atv:overwrite id="blinking_frame" transform="matrix(1.2897,0,0,1,0,0)" width="92.064"/>
  <atv:overwrite id="combobox_bg" transform="matrix(1.2897,0,0,1,0,0)" width="92.064"/>
  <atv:overwrite id="id_1" transform="matrix(1.2897,0,0,1,0,0)" width="122.064"/>
  <atv:overwrite id="id_0" transform="matrix(1.2897,0,0,1,0,0)" width="124.064"/>
 </svg>
 <svg atv:refpx="1120" atv:refpy="45" height="30" id="button_filter" width="80" x="1080" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.button" y="35">
  <atv:argument name="label" value="T{Filter}"/>
 </svg>
 <svg atv:refpx="639.985" atv:refpy="380.01" height="640" id="id_0" transform="matrix(2,0,0,0.9375,0,0)" width="640" x="0" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.slickgrid.table" y="85.336">
  <atv:argument name="tableID" value="simpleTable"/>
  <atv:argument name="columnReorder" value="false"/>
  <atv:argument name="multiselect" value="false"/>
  <atv:argument name="header_text_horizontal" value="center"/>
  <atv:argument name="row_height" value="28"/>
 </svg>
 <svg atv:refpx="879" atv:refpy="19" height="30" id="AND" width="160" x="844" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.radiobutton" y="8.5">
  <atv:argument name="radiogroupId" value="logical"/>
  <atv:argument name="label" value="T{AND}"/>
  <atv:argument name="value" value="1"/>
 </svg>
 <svg atv:refpx="879" atv:refpy="45" height="30" id="OR" width="160" x="844" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.radiobutton" y="41.5">
  <atv:argument name="radiogroupId" value="logical"/>
  <atv:argument name="label" value="T{OR}"/>
  <atv:argument name="value" value="0"/>
 </svg>
 <svg atv:refpx="434.243" atv:refpy="33" height="30" id="picker_address" transform="matrix(1.1531,0,0,1,0,0)" width="160" x="296.592" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.picker_address" y="23">
  <atv:argument name="base" prefix="address" value=""/>
  <atv:overwrite id="addresspicker_clickarea" transform="matrix(0.8672,0,0,1,0,0)" x="156.496"/>
  <atv:overwrite id="focus_frame" transform="matrix(0.8672,0,0,1,0,0)" width="180.496"/>
  <atv:overwrite id="button_stroke" transform="matrix(0.8672,0,0,1,0,0)" x="159.496"/>
  <atv:overwrite id="button_symbol" transform="matrix(0.8672,0,0,1,0,0)" x="159.246"/>
  <atv:overwrite id="button_bg" transform="matrix(0.8672,0,0,1,0,0)" x="159.496"/>
  <atv:overwrite id="input_label" transform="matrix(1.0118,0,0,1,-7.154,0)" x="134.996"/>
  <atv:overwrite id="blinking_frame" transform="matrix(0.8672,0,0,1,0,0)" width="152.496"/>
  <atv:overwrite id="addresspicker_bg" transform="matrix(0.8672,0,0,1,0,0)" width="152.496"/>
  <atv:overwrite id="id_0" transform="matrix(0.8672,0,0,1,0,0)" width="182.496"/>
  <atv:overwrite id="addresspicker_stroke" transform="matrix(0.8672,0,0,1,0,0)" width="184.496"/>
 </svg>
 <svg atv:refpx="1217.927" atv:refpy="45" height="30" id="button_reset" transform="matrix(1.1978,0,0,1,0,0)" width="80" x="976.791" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.button" y="35">
  <atv:argument name="label" value="T{Reset}"/>
  <atv:overwrite id="id_6" transform="matrix(0.8349,0,0,1,0,0)" width="93.824"/>
  <atv:overwrite id="button_label_2" transform="matrix(0.8349,0,0,1,0,0)" x="47.912"/>
  <atv:overwrite id="button_label_1" transform="matrix(0.8349,0,0,1,0,0)" x="47.912"/>
  <atv:overwrite id="button_label" transform="matrix(0.8349,0,0,1,0,0)" x="47.912"/>
  <atv:overwrite id="button_symbol_bottom" transform="matrix(0.5009,0,0,0.6,0,0)" x="69.687"/>
  <atv:overwrite id="button_symbol_top" transform="matrix(0.5009,0,0,0.6,0,0)" x="69.687"/>
  <atv:overwrite id="button_symbol" transform="matrix(0.8349,0,0,1,0,0)" x="37.912"/>
  <atv:overwrite id="button_stroke" transform="matrix(0.8349,0,0,1,0,0)" width="91.824"/>
  <atv:overwrite id="button_bg" transform="matrix(0.8349,0,0,1,0,0)" width="93.824"/>
  <atv:overwrite id="outer_frame" transform="matrix(0.8349,0,0,1,0,0)" width="95.824"/>
 </svg>
 <svg atv:refpx="607.989" atv:refpy="19" height="30" id="checkbox_recursive" transform="matrix(0.775,0,0,1,0,0)" width="160" x="704.516" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.checkbox" y="8">
  <atv:argument name="label" value="T{Recursive}"/>
  <atv:argument name="outputValueOn" value="true"/>
  <atv:argument name="outputValueOff" value="false"/>
  <atv:argument name="valueOn" value="true"/>
  <atv:overwrite id="checkbox_item" transform="matrix(1.2903,0,0,1,0,0)"/>
  <atv:overwrite id="checkbox_symbol" transform="matrix(1.2903,0,0,1,0,0)"/>
  <atv:overwrite id="blinking_frame" transform="matrix(1.2903,0,0,1,0,0)"/>
  <atv:overwrite id="focus_frame" transform="matrix(1.2903,0,0,1,0,0)"/>
  <atv:overwrite id="checkbox_bg" transform="matrix(1.2903,0,0,1,0,0)"/>
  <atv:overwrite id="checkbox_frame" transform="matrix(1.2903,0,0,1,0,0)"/>
  <atv:overwrite id="checkbox_stroke" transform="matrix(1.2903,0,0,1,0,0)"/>
 </svg>
 <text atv:refpx="182.699" atv:refpy="37" fill="$FONTCOLOR$" font-family="Arial" font-size="22" id="title" text-anchor="start" x="55" y="44.5">T{History Manager}</text>
 <svg atv:refpx="27.799" atv:refpy="22.999" height="60" id="logo" transform="matrix(0.6,0,0,0.6,0,0)" width="60" x="16.667" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Symbols.60x60.history" y="31.666">
  <atv:argument name="displayAcNotification" value="false"/>
 </svg>
 <svg atv:refpx="630.985" atv:refpy="51" height="30" id="checkbox_onlyHistorized" transform="matrix(1.0625,0,0,1,0,0)" width="160" x="513.882" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.checkbox" y="41">
  <atv:argument name="label" value="T{Only historized nodes}"/>
  <atv:argument name="outputValueOn" value="true"/>
  <atv:argument name="outputValueOff" value="false"/>
  <atv:argument name="valueOn" value="true"/>
  <atv:overwrite id="checkbox_item" transform="matrix(0.841,0,0,1,3.3542,0)" x="37.5"/>
  <atv:overwrite id="checkbox_symbol" transform="matrix(0.9412,0,0,1,0,0)"/>
  <atv:overwrite id="blinking_frame" transform="matrix(0.9412,0,0,1,0,0)"/>
  <atv:overwrite id="focus_frame" transform="matrix(0.9412,0,0,1,0,0)"/>
  <atv:overwrite id="checkbox_bg" transform="matrix(0.9412,0,0,1,0,0)"/>
  <atv:overwrite id="checkbox_frame" transform="matrix(0.9412,0,0,1,0,0)"/>
  <atv:overwrite id="checkbox_stroke" transform="matrix(0.9412,0,0,1,0,0)"/>
 </svg>
 <svg atv:refpx="640" atv:refpy="340" height="30" id="label_norights" transform="matrix(10.425,0,0,6.6,0,0)" width="80" x="21.391" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.label" y="36.515">
  <atv:argument name="text" value="T{No read rights for historical archives}"/>
  <atv:argument name="font-size" value="42"/>
  <atv:argument name="horizontal-align" value="center"/>
  <atv:argument name="vertical-align" value="middle"/>
 </svg>
 <svg atv:refpx="271" atv:refpy="34" height="30" id="id_5" transform="matrix(1.275,0,0,0.8,0,0)" width="80" x="183.529" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.label" y="32.5">
  <atv:argument name="text" value="T{Start address}:"/>
  <atv:argument name="vertical-align" value="middle"/>
  <atv:argument name="horizontal-align" value="center"/>
  <atv:argument name="font-size" value="14"/>
 </svg>
 <svg atv:refpx="763" atv:refpy="18" height="30" id="id_8" transform="matrix(1.575,0,0,0.8,0,0)" width="80" x="444.444" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.label" y="18.75">
  <atv:argument name="text" value="T{Archive groups}:"/>
  <atv:argument name="vertical-align" value="middle"/>
  <atv:argument name="horizontal-align" value="center"/>
  <atv:argument name="font-size" value="14"/>
 </svg>
 <svg atv:refpx="1008" atv:refpy="18" height="30" id="id_9" transform="matrix(1.55,0,0,0.8,0,0)" width="80" x="610.323" xlink:href="SYSTEM.LIBRARY.ATVISE.OBJECTDISPLAYS.Advanced.label" y="13.75">
  <atv:argument name="text" value="T{Aggregate templates}:"/>
  <atv:argument name="vertical-align" value="middle"/>
  <atv:argument name="horizontal-align" value="center"/>
  <atv:argument name="font-size" value="14"/>
 </svg>
 <script atv:desc="" atv:name="" type="text/ecmascript"><![CDATA[
const default_address = webMI.query.address;
const default_archive = webMI.query.archive;
const default_aggregate = webMI.query.template;
const default_logical = webMI.query.logical;
const default_recursive = webMI.query.recursive === 'true' ? true : false;
const default_getOnlyHistorized = webMI.query.onlyHistorizedNodes === 'true' ? true : false;

var address = webMI.query.address;
var archive = webMI.query.archive;
var aggregateTemplate = webMI.query.template;
var logical = webMI.query.logical;
var recursive = webMI.query.recursive;
var getOnlyHistorized = webMI.query.onlyHistorizedNodes;

const nonRecursiveDepth = 1;
var firstLoad = true;
var reload = true;
var data = [];
var tableController;

if (webMI.getAccessControlSupport()) {
	gAccessControlManager = webMI.callExtension("SYSTEM.LIBRARY.ATVISE.QUICKDYNAMICS.Access Control Manager");
}

function handleAccessControlResponse(compareRights, successCallback, failCallback) {
	if (!gAccessControlManager) {
		successCallback();
		return;
	}


	var requiredRights = {
		nodeIds: [],
		rights: []
	};

	compareRights = [].concat(compareRights);
	compareRights.forEach(function (r) {
		requiredRights.nodeIds.push(r.node);
		requiredRights.rights.push(r.right);
	});

	gAccessControlManager.getRightsDict(requiredRights.nodeIds, requiredRights.rights, function (response) {
		// do the checks
		var allRights = true;

		for (var c in compareRights) {
			if (
				typeof response[compareRights[c].node] != "undefined" &&
				typeof response[compareRights[c].node][compareRights[c].right] != "undefined"
			) {
				allRights = allRights && response[compareRights[c].node][compareRights[c].right];
			} else {
				allRights = false;
				break;
			}
		}
		if (allRights) {
			successCallback();
		} else {
			failCallback();
		}
	});
}

async function getData(searchaddress) {
	return new Promise((resolve, reject) => {
		searchaddress = searchaddress === "" ? "AGENT.OBJECTS" : searchaddress;
		webMI.data.call("GetHistorizedNodes", { startAddress: searchaddress }, (e) => {
			if (!e) {
				reject("Fehler: Kein Ergebnis von GetHistorizedNodes!");
				return;
			}
			let fullData = [];
			for (const row in e) {
				if (e[row] != "") {
					fullData.push({ node: row, archive: e[row][0], aggregateTemplate: e[row][1], folder: e[row][2], atvise_marker: false, atvise_expand: false });
				}
			}
			resolve(fullData);
		});
	});
}

async function loadData_Table(address) {
	if (reload) {
		try {
			data = await getData(address);
		} catch (err) {
			console.error("Fehler beim Laden der Daten:", err);
			return; // Falls ein Fehler auftritt, beende die Funktion
		}
		reload = false;
	}
	if (firstLoad) {
		setupTable();
		firstLoad = false;
	} else {
		loadFilteredData();
	}

}

webMI.addOnload(() => {
	webMI.trigger.fire("radioClicked_logical", JSON.parse(default_logical));
	handleAccessControlResponse({ node: "AGENT.HISTORY", right: "read" }, function () {
		webMI.gfx.setVisible("label_norights", false);
		loadData_Table(default_address);
		webMI.data.call("GetArchivesAndAggregates", {}, function (e) {
			const entriesArchive = e.archives;
			const entriesTemplate = e.templates;

			webMI.trigger.fire("setItems", entriesArchive, "picker_archive");
			webMI.trigger.fire("setItems", entriesTemplate, "picker_aggregate");

			setInitValues();
		});
	}, function () {
		webMI.gfx.setVisible("label_norights", null);
	});
});




function setupTable() {
	webMI.table.loadResources(function () {

		var config = [];

		config["columns"] = [
			{ id: "edit", name: "T{Edit}", field: "edit", sortable: false, filter: false, width: 50, sortByDefault: false, formatter: buttonFormatter },
			{ id: "node", name: "T{Node}", field: "node", sortable: true, filter: true, width: 300, sortByDefault: true, sortByDefaultAsc: true },
			{ id: "archive", name: "T{Archive}", field: "archive", sortable: true, filter: true, width: 50, sortByDefault: false, sortByDefaultAsc: true, textoption: "center" },
			{ id: "aggregateTemplate", name: "T{Aggregate Template}", field: "aggregateTemplate", sortable: true, filter: true, width: 50, sortByDefault: false, sortByDefaultAsc: true, textoption: "center" }
		];

		config["mode"] = "once";

		config["dataRequestFunction"] = function myRequest() {
			tableController = this;
			loadFilteredData();
		};

		config.onClickCallback = function (e, clickinfo) {
			clickHandler(clickinfo);
		};

		webMI.table.register("simpleTable", "config", config);
		webMI.table.setReady("simpleTable", "config");
	});
}

function setInitValues() {
	const filterTemplate = default_aggregate.replace("AGENT.HISTORY.AGGREGATETEMPLATES.", "");
	const filterArchive = default_archive.replace("AGENT.HISTORY.", "");

	webMI.trigger.fire("setSelectedItem", filterArchive, "picker_archive");
	webMI.trigger.fire("setSelectedItem", filterTemplate, "picker_aggregate");
	webMI.trigger.fire("setValue", "", "picker_address");

	webMI.trigger.fire("radioClicked_logical", JSON.parse(default_logical));
	webMI.trigger.fire("setChecked", default_recursive, "checkbox_recursive");
	webMI.trigger.fire("setChecked", default_getOnlyHistorized, "checkbox_onlyHistorized");
	if (!default_getOnlyHistorized) {
		webMI.trigger.fire("com.atvise.setActive", false, "picker_archive");
		webMI.trigger.fire("setSelectedItem", "", "picker_archive");
		webMI.trigger.fire("com.atvise.setActive", false, "picker_aggregate");
		webMI.trigger.fire("setSelectedItem", "", "picker_aggregate");
		webMI.trigger.fire("com.atvise.setActive", false, "AND");
		webMI.trigger.fire("com.atvise.setActive", false, "OR");
	}
};

function loadFilteredData() {
	tableController.clearData();
	tableController.addData(filterData(data));
}

function filterData(fullData) {
	var tmpdata = {};
	tmpdata.result = fullData.filter((item) => {
		if (getOnlyHistorized) {
			if (item.archive === '' && item.aggregateTemplate === '') {
				return false;
			} else {
				if (logical.name === 'AND') {
					if (archive && item.archive !== archive) return false;
					if (aggregateTemplate && item.aggregateTemplate !== aggregateTemplate) return false;
				} else {
					if (archive && item.archive !== archive) {
						if (!aggregateTemplate) return false;
						if (item.aggregateTemplate !== aggregateTemplate) return false;
					}

					if (aggregateTemplate && item.aggregateTemplate !== aggregateTemplate) {
						if (!archive) return false;
						if (item.archive !== archive) return false;
					}
				}
			}
		}
		if (address) {
			if (item.node === address) {
				return false;
			}
		}
		if (!recursive) {
			if (address) {
				var newAddress = address.replace(default_address + ".", "");

				if (item.node.split(".").length - newAddress.split(".").length > nonRecursiveDepth)
					return false;

			}
			else if (item.node.split(".").length > nonRecursiveDepth) {
				return false;
			}
		}
		return true;
	});
	return tmpdata;
};

function buttonFormatter(row, cell, value, columnDef, dataContext) {
	return '<span style="width: 100%; text-align: center"><i id="${id}" class="fas fa-edit"></i></span>';
};

function openEditPopup(row) {
	const query =
	{
		node: default_address + "." + row.node,
		archive: row.archive,
		aggregate: row.aggregateTemplate
	}
	if (address !== "") {
		query.node = address + "." + row.node;
	}

	webMI.display.openWindow(
		{
			display: "SYSTEM.LIBRARY.PROJECT.OBJECTDISPLAYS.historymanagement.popup.edit_dialog",
			extern: false,
			height: 200,
			menubar: false,
			modal: false,
			movable: false,
			resizable: false,
			scrollbars: false,
			status: false,
			title: "",
			toolbar: false,
			width: 430,
			query: query
		});
}


function clickHandler(clickinfo) {
	if (clickinfo.column.id == "edit")
		openEditPopup(clickinfo.item);
}


handleAccessControlResponse({ node: "AGENT.HISTORY", right: "read" }, function () {
	webMI.trigger.connect("valuechanged", function (e) {
		address = e.value;
		reload = true;
	}, "picker_address")

	webMI.trigger.connect("valuechanged", function (e) {
		archive = e.value;
	}, "picker_archive")

	webMI.trigger.connect("valuechanged", function (e) {
		aggregateTemplate = e.value
	}, "picker_aggregate")

	webMI.trigger.connect("valuechanged", function (e) {
		recursive = e.value == "true";
	}, "checkbox_recursive")

	webMI.trigger.connect("valuechanged", function (e) {
		getOnlyHistorized = e.value == "true";
		if (!getOnlyHistorized) {
			webMI.trigger.fire("com.atvise.setActive", false, "picker_archive");
			webMI.trigger.fire("setSelectedItem", "", "picker_archive");
			webMI.trigger.fire("com.atvise.setActive", false, "picker_aggregate");
			webMI.trigger.fire("setSelectedItem", "", "picker_aggregate");
			webMI.trigger.fire("com.atvise.setActive", false, "AND");
			webMI.trigger.fire("com.atvise.setActive", false, "OR");
		} else {
			webMI.trigger.fire("com.atvise.setActive", true, "picker_archive");
			webMI.trigger.fire("com.atvise.setActive", true, "picker_aggregate");
			webMI.trigger.fire("com.atvise.setActive", true, "AND");
			webMI.trigger.fire("com.atvise.setActive", true, "OR");
		}
	}, "checkbox_onlyHistorized")

	webMI.trigger.connect("radioClicked_logical", (e) => {
		logical = e.value;
	});

	webMI.trigger.connect("clicked", function (e) {
		loadData_Table(address);
	}, "button_filter");

	webMI.trigger.connect("clicked", function (e) {
		setInitValues();
		setTimeout(() => {
			loadData_Table(address);
		}, 100);
	}, "button_reset");

	webMI.trigger.connect("UpdateHistoryTable", () => {
		reload = true;
		loadData_Table(address);
	});
}, function () { });]]]]><![CDATA[></script>
</svg>
]]></uax:XmlElement>
		</Value>
	</UAVariable>
</UANodeSet>
