5 lines
71 KiB
JavaScript
5 lines
71 KiB
JavaScript
var __runInitializers=this&&this.__runInitializers||function(thisArg,initializers,value){for(var useValue=arguments.length>2,i=0;i<initializers.length;i++)value=useValue?initializers[i].call(thisArg,value):initializers[i].call(thisArg);return useValue?value:void 0},__esDecorate=this&&this.__esDecorate||function(ctor,descriptorIn,decorators,contextIn,initializers,extraInitializers){function accept(f){if(void 0!==f&&"function"!=typeof f)throw new TypeError("Function expected");return f}for(var _,kind=contextIn.kind,key="getter"===kind?"get":"setter"===kind?"set":"value",target=!descriptorIn&&ctor?contextIn.static?ctor:ctor.prototype:null,descriptor=descriptorIn||(target?Object.getOwnPropertyDescriptor(target,contextIn.name):{}),done=!1,i=decorators.length-1;i>=0;i--){var context={};for(var p in contextIn)context[p]="access"===p?{}:contextIn[p];for(var p in contextIn.access)context.access[p]=contextIn.access[p];context.addInitializer=function(f){if(done)throw new TypeError("Cannot add initializers after decoration has completed");extraInitializers.push(accept(f||null))};var result=(0,decorators[i])("accessor"===kind?{get:descriptor.get,set:descriptor.set}:descriptor[key],context);if("accessor"===kind){if(void 0===result)continue;if(null===result||"object"!=typeof result)throw new TypeError("Object expected");(_=accept(result.get))&&(descriptor.get=_),(_=accept(result.set))&&(descriptor.set=_),(_=accept(result.init))&&initializers.unshift(_)}else(_=accept(result))&&("field"===kind?initializers.unshift(_):descriptor[key]=_)}target&&Object.defineProperty(target,contextIn.name,descriptor),done=!0};import{TcHmiControl}from"Beckhoff.TwinCAT.HMI.Framework/index.esm.js";import{EditorFactory}from"../Helpers/TcHmiJsonEditors/EditorFactory.js";import*as SchemaParser from"../Helpers/TcHmiJsonEditors/SchemaParser.js";let TcHmiObjectBrowser=(()=>{var _a,_b,_c,_d,_e;let ___onButtonMouseDown_decorators,___onButtonMouseLeave_decorators,___onButtonMouseEnter_decorators,___onButtonMouseUp_decorators,___onEdit_decorators,___onElementExpanded_decorators,___onElementCollapsed_decorators,___onTreeViewPropertyChanged_decorators,___onResolverForDataWatchCallback_decorators,___onResolverForDataSchemaWatchCallback_decorators,___onDataSymbol_decorators,___onDataSymbolWatch_decorators,___onResolverForColumnsWatchCallback_decorators,_classSuper=TcHmiControl.Control,_instanceExtraInitializers=[];return class TcHmiObjectBrowser extends _classSuper{static{const _metadata="function"==typeof Symbol&&Symbol.metadata?Object.create(_classSuper[Symbol.metadata]??null):void 0;___onButtonMouseDown_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onButtonMouseLeave_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onButtonMouseEnter_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onButtonMouseUp_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onEdit_decorators=[TcHmi.EventHandler()],___onElementExpanded_decorators=[TcHmi.EventHandler()],___onElementCollapsed_decorators=[TcHmi.EventHandler()],___onTreeViewPropertyChanged_decorators=[TcHmi.EventHandler()],___onResolverForDataWatchCallback_decorators=[(_a=TcHmi).CallbackMethod.bind(_a)],___onResolverForDataSchemaWatchCallback_decorators=[(_b=TcHmi).CallbackMethod.bind(_b)],___onDataSymbol_decorators=[(_c=TcHmi).CallbackMethod.bind(_c)],___onDataSymbolWatch_decorators=[(_d=TcHmi).CallbackMethod.bind(_d)],___onResolverForColumnsWatchCallback_decorators=[(_e=TcHmi).CallbackMethod.bind(_e)],__esDecorate(this,null,___onButtonMouseDown_decorators,{kind:"method",name:"__onButtonMouseDown",static:!1,private:!1,access:{has:obj=>"__onButtonMouseDown"in obj,get:obj=>obj.__onButtonMouseDown},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onButtonMouseLeave_decorators,{kind:"method",name:"__onButtonMouseLeave",static:!1,private:!1,access:{has:obj=>"__onButtonMouseLeave"in obj,get:obj=>obj.__onButtonMouseLeave},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onButtonMouseEnter_decorators,{kind:"method",name:"__onButtonMouseEnter",static:!1,private:!1,access:{has:obj=>"__onButtonMouseEnter"in obj,get:obj=>obj.__onButtonMouseEnter},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onButtonMouseUp_decorators,{kind:"method",name:"__onButtonMouseUp",static:!1,private:!1,access:{has:obj=>"__onButtonMouseUp"in obj,get:obj=>obj.__onButtonMouseUp},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onEdit_decorators,{kind:"method",name:"__onEdit",static:!1,private:!1,access:{has:obj=>"__onEdit"in obj,get:obj=>obj.__onEdit},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onElementExpanded_decorators,{kind:"method",name:"__onElementExpanded",static:!1,private:!1,access:{has:obj=>"__onElementExpanded"in obj,get:obj=>obj.__onElementExpanded},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onElementCollapsed_decorators,{kind:"method",name:"__onElementCollapsed",static:!1,private:!1,access:{has:obj=>"__onElementCollapsed"in obj,get:obj=>obj.__onElementCollapsed},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onTreeViewPropertyChanged_decorators,{kind:"method",name:"__onTreeViewPropertyChanged",static:!1,private:!1,access:{has:obj=>"__onTreeViewPropertyChanged"in obj,get:obj=>obj.__onTreeViewPropertyChanged},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForDataWatchCallback_decorators,{kind:"method",name:"__onResolverForDataWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForDataWatchCallback"in obj,get:obj=>obj.__onResolverForDataWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForDataSchemaWatchCallback_decorators,{kind:"method",name:"__onResolverForDataSchemaWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForDataSchemaWatchCallback"in obj,get:obj=>obj.__onResolverForDataSchemaWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onDataSymbol_decorators,{kind:"method",name:"__onDataSymbol",static:!1,private:!1,access:{has:obj=>"__onDataSymbol"in obj,get:obj=>obj.__onDataSymbol},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onDataSymbolWatch_decorators,{kind:"method",name:"__onDataSymbolWatch",static:!1,private:!1,access:{has:obj=>"__onDataSymbolWatch"in obj,get:obj=>obj.__onDataSymbolWatch},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForColumnsWatchCallback_decorators,{kind:"method",name:"__onResolverForColumnsWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForColumnsWatchCallback"in obj,get:obj=>obj.__onResolverForColumnsWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),_metadata&&Object.defineProperty(this,Symbol.metadata,{enumerable:!0,configurable:!0,writable:!0,value:_metadata})}static#tchmiFQN="TcHmi.Controls.Beckhoff."+this.name;constructor(element,pcElement,attrs){super(element,pcElement,attrs);let loadingSpinnerDivTempDiv=document.createElement("div");loadingSpinnerDivTempDiv.innerHTML='<div\n class="TcHmi_Controls_Beckhoff_TcHmiObjectBrowser-loading-spinner-container"\n >\n <div class="TcHmi_Controls_Beckhoff_TcHmiObjectBrowser-loading-spinner">\n <div></div>\n <div></div>\n <div></div>\n <div></div>\n </div>\n </div>',this.__elementLoadingSpinner=loadingSpinnerDivTempDiv.firstElementChild}__localizedElements=(__runInitializers(this,_instanceExtraInitializers),new Map);__localizationReader=void 0;__treeView;__data;__oldData;__overriddenData;__dataSchema;__overriddenDataSchema;__dataSymbol;__dataSymbolExpressionWatchDestroyer=null;__dataSymbolExpression=null;__bindingMode="TwoWay";__destroyDataSymbolWatch=null;__dataHasChanged=!1;__columns;__subscriptionInfo={subscriptionId:null,timing:{isScrolling:!1,timeoutID:null,lastRequestTime:0,lastUpdateTime:0,minTimeout:100,responseLatencies:[],updateTimings:[],firstResponsePending:!1}};__ignoreFirstLevel;__firstLevelName;__isReadOnly;__promisedData=null;__promisedDataSchema=null;__updateDataAndSchemaTimoutId=0;__selectedEditButton=null;__subscriptionData=new Map;__expandedElements=[];__elementLoadingSpinner;__updateTreeviewDestroyFunction=null;__lastReportedErrorDetail;__initializedAttributes=[];__mouseUpDestroyer=null;__mouseLeaveDestroyer=null;__mouseEnterDestroyer=null;__editorFactory=new EditorFactory({parentControl:this});__previnit(){super.__previnit();let treeview=TcHmi.Controls.get(this.getId()+"_TcHmiTreeView");if(!treeview)throw new Error("Could not find treeview subcontrol in TcHmiObjectBrowser.");this.__treeView=treeview,this.__destroyOnDestroy.push(TcHmi.EventProvider.register(`${this.__treeView.getId()}.onDataChanged`,this.__onEdit),TcHmi.EventProvider.register(`${this.__treeView.getId()}.onElementExpanded`,this.__onElementExpanded),TcHmi.EventProvider.register(`${this.__treeView.getId()}.onElementCollapsed`,this.__onElementCollapsed),TcHmi.EventProvider.register(`${this.__treeView.getId()}.onSelectedItemChanged`,(event,args)=>{TcHmi.EventProvider.raise(this.__id+".onSelectedItemChanged",args)}),TcHmi.EventProvider.register(`${this.__treeView.getId()}.onPropertyChanged`,this.__onTreeViewPropertyChanged),this.__localization.watch(data=>{if(data.error===TcHmi.Errors.NONE&&data.reader){this.__localizationReader=data.reader;for(const[element,info]of this.__localizedElements){let localizedText=data.reader.get(info.key);info.parameters&&(localizedText=tchmi_format_string(localizedText,...info.parameters)),element.textContent=tchmi_decode_control_characters(localizedText)}}})),this.__element.append(this.__treeView.getElement()[0])}__init(){super.__init()}__attach(){super.__attach(),this.__dataSymbol&&!TCHMI_DESIGNER?this.__processDataSymbol():this.__processDataAndDataSchema(),this.__destroyOnDetach.push(TcHmi.EventProvider.registerDomEvent(this.__element[0],"mousedown",this.__onButtonMouseDown))}__detach(){super.__detach(),this.__updateTreeviewDestroyFunction?.(),this.__updateTreeviewDestroyFunction=null,this.__mouseUpDestroyer?.(),this.__mouseUpDestroyer=null,this.__mouseLeaveDestroyer?.(),this.__mouseLeaveDestroyer=null,this.__mouseEnterDestroyer?.(),this.__mouseEnterDestroyer=null,this.__subscriptionInfo.subscriptionId&&(TcHmi.Server.unsubscribeEx(this.__subscriptionInfo.subscriptionId,null),this.__subscriptionInfo.subscriptionId=null)}destroy(){this.__keepAlive||(this.__dataSymbolExpressionWatchDestroyer?.(),this.__dataSymbolExpressionWatchDestroyer=null,this.__destroyDataSymbolWatch?.(),this.__destroyDataSymbolWatch=null,this.__dataSymbol?.destroy(),this.__dataSymbol=null,super.destroy())}__addLocalizedElement(element,key,...parameters){let info={key};if(0!==parameters.length&&(info.parameters=parameters),this.__localizedElements.set(element,info),this.__localizationReader){let localizedText=this.__localizationReader.get(key);info.parameters&&(localizedText=tchmi_format_string(localizedText,...info.parameters)),element.textContent=tchmi_decode_control_characters(localizedText)}}__removeLocalizedElement(element){this.__localizedElements.delete(element)}__transformDataAndDataSchema(data,name,schema,timedAsyncTask){return new Promise(resolve=>{timedAsyncTask.do(()=>{let transformedData={name,value:null,datatype:schema.id??""},transformedSchema={type:"object",properties:{name:{type:"string"},datatype:{type:"string"}}};if(!Array.isArray(data)||"array"!==schema.type&&void 0!==schema.type)if("object"!=typeof data||null===data||"object"!==schema.type&&void 0!==schema.type){let resolvedSchema=SchemaParser.resolveReferences(schema);if("base64"===resolvedSchema.format)data=this.__convertFromBase64BySchemaId(data,resolvedSchema.id);else if(resolvedSchema.allOf)for(let entry of resolvedSchema.allOf)if("base64"===entry.format){data=this.__convertFromBase64BySchemaId(data,entry.id);break}transformedData.value=data,transformedSchema.properties.value=schema,resolve({data:transformedData,schema:transformedSchema})}else{let properties=Object.keys(data);if(transformedData.value=this.__createEditButton(`Object {${properties.length}}`),transformedSchema.properties.value={type:"object"},properties.length>0){let outgoing=0,incoming=0;for(const[i,property]of properties.entries()){outgoing++;let propertySchema=schema.properties?.[property];if(!propertySchema&&schema.patternProperties){const patterns=Object.keys(schema.patternProperties);for(const pattern of patterns){new RegExp(pattern).test(property)&&(propertySchema=schema.patternProperties[pattern])}}if(!propertySchema&&schema.additionalProperties&&!0!==schema.additionalProperties&&(propertySchema=schema.additionalProperties),propertySchema||!1===schema.additionalProperties||(propertySchema={}),!propertySchema){TcHmi.Log.Controls.warn(this,TcHmiObjectBrowser.#tchmiFQN,`Schema does not match the given data. The property '${property}' does not exist in the schema${schema.id?` with the id '${schema.id}'`:""}.`),i===properties.length-1?resolve({data:transformedData,schema:transformedSchema}):outgoing--;break}this.__transformDataAndDataSchema(data[property],property,propertySchema,timedAsyncTask).then(result=>{if(incoming++,transformedData.children||(transformedData.children=[]),transformedData.children.push(result.data),transformedSchema.properties.children||(transformedSchema.properties.children={type:"array",items:[]}),Array.isArray(transformedSchema.properties.children.items)&&transformedSchema.properties.children.items.push(result.schema),incoming===outgoing){for(const[i,property]of properties.entries()){const currentIndex=transformedData.children.findIndex(x=>x.name===property);currentIndex!==i&&(transformedData.children.splice(i,0,...transformedData.children.splice(currentIndex,1)),Array.isArray(transformedSchema.properties?.children.items)&&transformedSchema.properties.children.items.splice(i,0,...transformedSchema.properties.children.items.splice(currentIndex,1)))}resolve({data:transformedData,schema:transformedSchema})}})}}else resolve({data:transformedData,schema:transformedSchema})}else if(transformedData.value=this.__createEditButton(`Array [${data.length}]`),transformedSchema.properties.value={type:"array"},data.length>0){let outgoing=0,incoming=0;transformedData.children=[];for(let i=0;i<data.length;i++)if(outgoing++,Array.isArray(schema.items)){let item=schema.items[i];if(!item&&schema.additionalItems&&!0!==schema.additionalItems&&(item=schema.additionalItems),item||!1===schema.additionalItems||(item={}),!item){TcHmi.Log.Controls.warn(this,TcHmiObjectBrowser.#tchmiFQN,`Schema does not match the given data. The Item with the index '${i}' does not match the schema${schema.id?` with the id '${schema.id}'`:""}.`),i===data.length-1?resolve({data:transformedData,schema:transformedSchema}):outgoing--;break}this.__transformDataAndDataSchema(data[i],"["+i+"]",item,timedAsyncTask).then(result=>{if(incoming++,transformedData.children||(transformedData.children=[]),transformedData.children.push(result.data),transformedSchema.properties.children||(transformedSchema.properties.children={type:"array",items:[]}),Array.isArray(transformedSchema.properties.children.items)&&transformedSchema.properties.children.items.push(result.schema),incoming===outgoing){for(let i=0;i<data.length;i++){const name="["+i+"]",currentIndex=transformedData.children.findIndex(x=>x.name===name);currentIndex!==i&&(transformedData.children.splice(i,0,...transformedData.children.splice(currentIndex,1)),Array.isArray(transformedSchema.properties?.children.items)&&transformedSchema.properties.children.items.splice(i,0,...transformedSchema.properties.children.items.splice(currentIndex,1)))}resolve({data:transformedData,schema:transformedSchema})}})}else{let item=schema.items;if(!item&&schema.additionalItems&&!0!==schema.additionalItems&&(item=schema.additionalItems),item||!1===schema.additionalItems||(item={}),!item){TcHmi.Log.Controls.warn(this,TcHmiObjectBrowser.#tchmiFQN,`Schema does not match the given data. The Item with the index '${i}' does not match the schema${schema.id?` with the id '${schema.id}'`:""}.`),i===data.length-1?resolve({data:transformedData,schema:transformedSchema}):outgoing--;break}this.__transformDataAndDataSchema(data[i],"["+i+"]",item,timedAsyncTask).then(result=>{if(incoming++,transformedData.children||(transformedData.children=[]),transformedData.children.push(result.data),transformedSchema.properties.children||(transformedSchema.properties.children={type:"array",items:[]}),Array.isArray(transformedSchema.properties.children.items)&&transformedSchema.properties.children.items.push(result.schema),incoming===outgoing){for(let i=0;i<data.length;i++){const name="["+i+"]",currentIndex=transformedData.children.findIndex(x=>x.name===name);currentIndex!==i&&(transformedData.children.splice(i,0,...transformedData.children.splice(currentIndex,1)),Array.isArray(transformedSchema.properties?.children.items)&&transformedSchema.properties.children.items.splice(i,0,...transformedSchema.properties.children.items.splice(currentIndex,1)))}resolve({data:transformedData,schema:transformedSchema})}})}}else resolve({data:transformedData,schema:transformedSchema})})})}__createEditButton(description){let base=document.createElement("div");base.classList.add("TcHmi_Controls_Beckhoff_TcHmiObjectBrowser-editor-template");let button=document.createElement("button");return button.classList.add("TcHmi_Controls_Beckhoff_TcHmiObjectBrowser-editor-button"),button.textContent="...",base.append(description,button),base}__onButtonMouseDown(event){if(!this.__data)return;let buttonElement=event.target;buttonElement?.classList.contains("TcHmi_Controls_Beckhoff_TcHmiObjectBrowser-editor-button")&&(this.__selectedEditButton=buttonElement,buttonElement.classList.add("down"),this.__mouseUpDestroyer?.(),this.__mouseUpDestroyer=TcHmi.EventProvider.registerDomEvent(document,"mouseup",this.__onButtonMouseUp,{once:!0}),this.__mouseLeaveDestroyer?.(),this.__mouseLeaveDestroyer=TcHmi.EventProvider.registerDomEvent(buttonElement,"mouseleave",this.__onButtonMouseLeave,{once:!0}))}__onButtonMouseLeave(event){if(!this.__data)return;let buttonElement=event.target;buttonElement?.classList.contains("TcHmi_Controls_Beckhoff_TcHmiObjectBrowser-editor-button")&&buttonElement?.classList.contains("down")&&buttonElement===this.__selectedEditButton&&(this.__selectedEditButton.classList.remove("down"),this.__mouseEnterDestroyer?.(),this.__mouseEnterDestroyer=TcHmi.EventProvider.registerDomEvent(this.__selectedEditButton,"mouseenter",this.__onButtonMouseEnter,{once:!0}),this.__mouseLeaveDestroyer=null)}__onButtonMouseEnter(event){if(!this.__data)return;let buttonElement=event.target;buttonElement?.classList.contains("TcHmi_Controls_Beckhoff_TcHmiObjectBrowser-editor-button")&&buttonElement===this.__selectedEditButton&&(this.__selectedEditButton.classList.add("down"),this.__mouseLeaveDestroyer?.(),this.__mouseLeaveDestroyer=TcHmi.EventProvider.registerDomEvent(buttonElement,"mouseleave",this.__onButtonMouseLeave,{once:!0}),this.__mouseEnterDestroyer=null)}__onButtonMouseUp(event){if(!this.__data||!this.__dataSchema)return;let latestSelection=this.__selectedEditButton;this.__selectedEditButton=null;let buttonElement=event.target;if(!buttonElement?.classList.contains("TcHmi_Controls_Beckhoff_TcHmiObjectBrowser-editor-button")||!buttonElement?.classList.contains("down")||buttonElement!==latestSelection)return void latestSelection?.classList.remove("down");latestSelection.classList.remove("down");let cellElement=buttonElement.closest("td");if(!cellElement)return;cellElement.closest("tr")&&(this.__mouseUpDestroyer=null,this.__mouseLeaveDestroyer?.(),this.__mouseLeaveDestroyer=null,this.__mouseEnterDestroyer?.(),this.__mouseEnterDestroyer=null,window.setTimeout(()=>{if(!this.__dataSchema||!this.__data)return;let index=this.__treeView.getSelectedRowIndex();if(index)if(this.__ignoreFirstLevel&&index.unshift(0),this.__dataSymbol&&null!==this.__subscriptionInfo.subscriptionId){if(!this.__dataSymbolExpression)return void TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol.getExpression().toString()},TcHmi.Log.buildMessage({code:TcHmi.Errors.E_INVALID,message:TcHmi.Errors[TcHmi.Errors.E_INVALID],reason:"Invalid data symbol expression.",domain:TcHmiObjectBrowser.#tchmiFQN}));let symbolName=(this.__dataSymbolExpression.getName()??"")+this.__originalIndexToSubSymbolName(this.__data,index),command={commandOptions:["SendErrorMessage","SendWriteValue"],symbol:symbolName};TcHmi.Server.request({requestType:"ReadWrite",commands:[command]},data=>{data.error!==TcHmi.Errors.NONE?TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:`%s%${symbolName}%/s%`},TcHmi.Log.buildMessage(data.details)):data.response?data.response.error?TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:`%s%${symbolName}%/s%`},TcHmi.Log.buildMessage(data.response.error)):data.response.commands&&0!==data.response.commands.length?data.response.commands[0].error&&TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:`%s%${symbolName}%/s%`},TcHmi.Log.buildMessage(data.response.commands[0].error)):TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:`%s%${symbolName}%/s%`},TcHmi.Log.buildMessage({code:TcHmi.Errors.E_SERVER_COMMANDS_MISSING,message:TcHmi.Errors[TcHmi.Errors.E_SERVER_COMMANDS_MISSING],reason:"Missing commands in response from server with id: '"+data.response.id+"'.",domain:this.__type})):TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:`%s%${symbolName}%/s%`},TcHmi.Log.buildMessage({code:TcHmi.Errors.E_SERVER_RESPONSE_MISSING,message:TcHmi.Errors[TcHmi.Errors.E_SERVER_RESPONSE_MISSING],reason:"Missing response from server.",domain:this.__type}));const initialValue=data.response?.commands[0].readValue;if(!this.__dataSchema)return;const schema=this.__originalIndexToDataSchema(this.__dataSchema,index),editorInfo=SchemaParser.parse(schema,symbolName),editor=this.__editorFactory.fromEditorInfo(editorInfo,document.createElement("div"));editor.setValue(initialValue);const destroyOnConfirm=editor.onConfirm.add((_editor,state)=>{destroyOnConfirm(),state.value!==initialValue&&(this.__modifyData(state.value,index),TcHmi.EventProvider.raise(this.__id+".onDataChanged",{path:symbolName}),editor.destroy())});editor.startEditing?.()})}else{let symbolName=(this.__dataSymbolExpression?.getName()??this.__firstLevelName??"")+this.__originalIndexToSubSymbolName(this.__data,index);const initialValue=this.__originalIndexToData(this.__data,index);if(!this.__dataSchema)return;const schema=this.__originalIndexToDataSchema(this.__dataSchema,index),editorInfo=SchemaParser.parse(schema,symbolName),editor=this.__editorFactory.fromEditorInfo(editorInfo,document.createElement("div"));editor.setValue(initialValue);const destroyOnConfirm=editor.onConfirm.add((_editor,state)=>{destroyOnConfirm(),state.value!==initialValue&&(this.__modifyData(state.value,index),TcHmi.EventProvider.raise(this.__id+".onDataChanged",{path:symbolName}),editor.destroy())});editor.startEditing?.()}}))}__convertFromBase64BySchemaId(data,id){if(!data)return null;let br=new TcHmi.Base64BinaryReader(data);switch(id){case"tchmi:general#/definitions/UINT64":case"tchmi:general#/definitions/ULINT":case"tchmi:general#/definitions/LWORD":return br.readUInt64();case"tchmi:general#/definitions/INT64STRING":case"tchmi:general#/definitions/INT64BINARY":case"tchmi:general#/definitions/LINT":case"tchmi:general#/definitions/INT64":return br.readInt64();case"tchmi:general#/definitions/BINARY":return atob(data)}return null}__convertToBase64BySchemaId(data,id){let bw=new TcHmi.Base64BinaryWriter;switch(id){case"tchmi:general#/definitions/UINT64":case"tchmi:general#/definitions/ULINT":case"tchmi:general#/definitions/LWORD":bw.writeUInt64(BigInt(data));break;case"tchmi:general#/definitions/INT64STRING":case"tchmi:general#/definitions/INT64BINARY":case"tchmi:general#/definitions/LINT":case"tchmi:general#/definitions/INT64":bw.writeInt64(BigInt(data));break;case"tchmi:general#/definitions/BINARY":return btoa(data);default:return null}return bw.getEncodedString()}__originalIndexToDataSchema(schema,index){const indexCopy=[...index];indexCopy.shift();const subIndex=indexCopy[0];if(void 0===subIndex)return schema;let type=schema.type;switch(type||(schema.properties&&!schema.items?type="object":schema.items&&!schema.properties&&(type="array")),type){case"array":if(!schema.items)break;if(Array.isArray(schema.items)){let subSchema=schema.items[subIndex];if(!subSchema){schema=this.__originalIndexToDataSchema(subSchema,indexCopy);break}if(schema.additionalItems){let subSchema=schema.additionalItems;if(!0===subSchema){schema=this.__originalIndexToDataSchema({},indexCopy);break}subSchema&&(schema=this.__originalIndexToDataSchema(subSchema,indexCopy))}}else(void 0===schema.maxItems||schema.maxItems>subIndex)&&(schema=this.__originalIndexToDataSchema(schema.items,indexCopy));break;case"object":if(!schema.properties)break;let propertyName=Object.keys(schema.properties)[subIndex];if(propertyName){let property=schema.properties[propertyName];property&&(schema=this.__originalIndexToDataSchema(property,indexCopy))}}return schema}__originalIndexToData(data,index){let dataElement;const indexCopy=[...index];indexCopy.shift();const subIndex=indexCopy[0];if(void 0===subIndex)return data;if(Array.isArray(data))dataElement=indexCopy.length>1?this.__originalIndexToData(data[subIndex],indexCopy):data[subIndex];else if("object"==typeof data&&null!==data){const property=Object.keys(data)[subIndex];dataElement=indexCopy.length>1?this.__originalIndexToData(data[property],indexCopy):data[property]}return dataElement}__writeDataByHierarchicalIndex(data,index,valueNew){let currentData=data;for(const[i,currentIndex]of index.entries())if(0!==i)if(Array.isArray(currentData))i===index.length-1?currentData[currentIndex]=valueNew:currentData=currentData[currentIndex];else{if(null===currentData||"object"!=typeof currentData)return;{const property=Object.keys(currentData)[currentIndex];i===index.length-1?currentData[property]=valueNew:currentData=currentData[property]}}}__modifyData(valueNew,index){let valueOld,refreshTreeview=!1;valueOld=index.length>1?this.__originalIndexToData(this.__data,index):this.__data;let schema,convertedValue=valueNew;if(this.__dataSchema&&(schema=this.__originalIndexToDataSchema(this.__dataSchema,index)),schema){let resolvedSchema=SchemaParser.resolveReferences(schema);if("base64"===resolvedSchema.format)valueNew=this.__convertToBase64BySchemaId(valueNew,resolvedSchema.id);else if(resolvedSchema.allOf)for(let entry of resolvedSchema.allOf)if("base64"===entry.format){valueNew=this.__convertToBase64BySchemaId(valueNew,entry.id);break}}if(null!=valueOld)switch(typeof valueOld){case"string":convertedValue=TcHmi.ValueConverter.toString(valueNew);break;case"number":convertedValue=TcHmi.ValueConverter.toNumber(valueNew);break;case"boolean":convertedValue=TcHmi.ValueConverter.toBoolean(valueNew);break;case"object":refreshTreeview=!0,convertedValue=TcHmi.ValueConverter.toObject(valueNew)}if(null===convertedValue&&(convertedValue=valueNew),!tchmi_equal(valueOld,convertedValue)){if(index.length>1?this.__writeDataByHierarchicalIndex(this.__data,index,convertedValue):1===index.length&&(this.__data=convertedValue),this.__data){let resolver=this.__objectResolvers.get("data");resolver&&resolver.resolver.write(this.__data)}if(this.__dataSymbol&&this.__dataSymbolExpression)if(this.__dataSymbol.getExpression().getType()!==TcHmi.SymbolType.Server)this.__dataSymbol.write(this.__data,data=>{data.error!==TcHmi.Errors.NONE&&TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,`Failed to write dataSymbol. ${TcHmi.Log.buildMessage(data.details)}`)});else{let symbolName=this.__dataSymbolExpression.getName()??"";symbolName+=this.__originalIndexToSubSymbolName(this.__data,index);let command={commandOptions:["SendErrorMessage","SendWriteValue"],symbol:symbolName,writeValue:convertedValue};Array.isArray(convertedValue)&&command.commandOptions.push("Replace"),TcHmi.Server.request({requestType:"ReadWrite",commands:[command]},data=>{data.error!==TcHmi.Errors.NONE?TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:`%s%${symbolName}%/s%`},TcHmi.Log.buildMessage(data.details)):data.response?data.response.error?TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:`%s%${symbolName}%/s%`},TcHmi.Log.buildMessage(data.response.error)):data.response.commands&&0!==data.response.commands.length?data.response.commands[0].error&&TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:`%s%${symbolName}%/s%`},TcHmi.Log.buildMessage(data.response.commands[0].error)):TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:`%s%${symbolName}%/s%`},TcHmi.Log.buildMessage({code:TcHmi.Errors.E_SERVER_COMMANDS_MISSING,message:TcHmi.Errors[TcHmi.Errors.E_SERVER_COMMANDS_MISSING],reason:"Missing commands in response from server with id: '"+data.response.id+"'.",domain:this.__type})):TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:`%s%${symbolName}%/s%`},TcHmi.Log.buildMessage({code:TcHmi.Errors.E_SERVER_RESPONSE_MISSING,message:TcHmi.Errors[TcHmi.Errors.E_SERVER_RESPONSE_MISSING],reason:"Missing response from server.",domain:this.__type}))})}else;refreshTreeview&&this.__processData(),this.__dataHasChanged||(this.__dataHasChanged=!0,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"DataHasChanged"}))}}__originalIndexToSubSymbolName(data,index){data=tchmi_clone_object(data);let symbolName="";const indexCopy=[...index];indexCopy.shift();const subIndex=indexCopy[0];if(void 0===subIndex);else if(Array.isArray(data))symbolName=`[${subIndex}]`,indexCopy.length>1&&(symbolName+=this.__originalIndexToSubSymbolName(data[subIndex],indexCopy));else if("object"==typeof data&&null!==data){const property=Object.keys(data)[subIndex];symbolName=`::${property}`,indexCopy.length>1&&(symbolName+=this.__originalIndexToSubSymbolName(data[property],indexCopy))}return symbolName}__symbolNameToOriginalIndex(data,symbolName){const path=new TcHmi.ObjectPath(symbolName);let index=[0];path.shift();for(let symbolPart of path)if(Array.isArray(data))index.push(+symbolPart),data=data[symbolPart];else if("object"==typeof data&&null!==data){let propertyIndex=Object.keys(data).findIndex(x=>x===symbolPart);if(-1===propertyIndex)return null;index.push(propertyIndex),data=data[symbolPart]}return index}selectParentRow(){this.__treeView.selectParentRow()}collapseAll(){this.__treeView.collapseAll()}expandElement(path,expandParents){this.__treeView.expandElement(this.__symbolNameToOriginalIndex(this.__data,path)??[-1],expandParents)}collapseElement(path){this.__treeView.collapseElement(this.__symbolNameToOriginalIndex(this.__data,path)??[-1])}scrollTo(path,expandParents){this.__treeView.scrollTo(this.__symbolNameToOriginalIndex(this.__data,path)??[-1],expandParents)}writePreparedValues(writeResponseCallback){this.__treeView.writePreparedValues(writeResponseCallback)}resetPreparedValues(){this.__treeView.resetPreparedValues()}__onEdit(_event,args){if("value"!==args.property||!Array.isArray(args.index)||void 0===args.value)return;this.__ignoreFirstLevel&&args.index.unshift(0),this.__modifyData(args.value,args.index);let symbolName=(this.__dataSymbolExpression?.getName()??this.__firstLevelName??"")+this.__originalIndexToSubSymbolName(this.__data,args.index);TcHmi.EventProvider.raise(this.__id+".onDataChanged",{path:symbolName})}__onElementExpanded(_event,args){if(!Array.isArray(args.index)&&args.index.length>1)return;this.__ignoreFirstLevel&&"object"==typeof this.__data&&args.index.unshift(0);let symbolName=(this.__dataSymbolExpression?.getName()??this.__firstLevelName??"")+this.__originalIndexToSubSymbolName(this.__data,args.index);this.__expandedElements.includes(symbolName)||this.__expandedElements.push(symbolName),TcHmi.EventProvider.raise(this.__id+".onElementExpanded",{path:symbolName}),this.__updateSubscription(!0)}__onElementCollapsed(_event,args){if(!Array.isArray(args.index)&&args.index.length>1)return;this.__ignoreFirstLevel&&"object"==typeof this.__data&&args.index.unshift(0);let symbolName=(this.__dataSymbolExpression?.getName()??this.__firstLevelName??"")+this.__originalIndexToSubSymbolName(this.__data,args.index);this.__expandedElements.includes(symbolName)&&(this.__expandedElements=this.__expandedElements.filter(element=>element!==symbolName)),TcHmi.EventProvider.raise(this.__id+".onElementCollapsed",{path:symbolName}),this.__updateSubscription(!0)}__onTreeViewPropertyChanged(_event,data,...args){let adjustedName=new Map([["SelectedRowIndex","SelectedPath"],["SelectedColumnIndex","SelectedColumn"]]);["CellContentPadding","Filter","GridFontFamily","GridFontSize","GridFontSizeUnit","GridFontStyle","GridFontWeight","HeaderBackgroundColor","HeaderCellPadding","HeaderHeight","HeaderHeightUnit","HeaderFontFamily","HeaderFontSize","HeaderFontSizeUnit","HeaderFontStyle","HeaderFontWeight","HeaderTextColor","IndirectWrite","RowClassesProvider","RowHeight","RowNumbersBackgroundColor","RowNumbersCellPadding","RowNumbersFontFamily","RowNumbersFontSize","RowNumbersFontSizeUnit","RowNumbersFontStyle","RowNumbersFontWeight","RowNumbersHorizontalAlignment","RowNumbersResizable","RowNumbersStartNumber","RowNumbersTextColor","RowNumbersVerticalAlignment","RowNumbersWidth","RowNumbersWidthUnit","SelectedCellValue","SelectedColumnIndex","SelectedRowIndex","SelectedRowValue","ShowHeader","ShowRowNumbers","Sorting","TableBorderColor","TableBorderStyle","TableBorderWidth"].includes(data.propertyName)&&TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{...data,propertyName:adjustedName.get(data.propertyName)??data.propertyName},...args)}setData(valueNew){this.__dataSymbol?this.__overriddenData=valueNew:this.__setData(valueNew)}__setData(valueNew){null===valueNew&&(valueNew=this.getAttributeDefaultValueInternal("Data"));let resolverInfo=this.__objectResolvers.get("data");resolverInfo&&(resolverInfo.watchDestroyer&&resolverInfo.watchDestroyer(),resolverInfo.resolver.destroy());let resolver=new TcHmi.Symbol.ObjectResolver(valueNew,this);this.__objectResolvers.set("data",{resolver,watchCallback:this.__onResolverForDataWatchCallback,watchDestroyer:resolver.watch(this.__onResolverForDataWatchCallback)})}__onResolverForDataWatchCallback(data){this.__isAttached||this.__suspendObjectResolver("data"),data.error===TcHmi.Errors.NONE?(this.__dataHasChanged&&(this.__dataHasChanged=!1,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"DataHasChanged"})),tchmi_equal(this.__data,data.value)||(this.__data||this.__startLoadingSpinner(),this.__data=data.value,this.__dataSymbol||TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"Data"}),this.__processData())):TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"Data"},`Resolving symbols from object failed with error:\n ${TcHmi.Log.buildMessage(data.details)}`)}getData(){return this.__dataSymbol?void 0:this.__data}__processData(){this.__oldData=this.__data,this.__isAttached?this.__processDataAndDataSchema():this.__elementLoadingSpinner.remove()}__startLoadingSpinner(){this.__element.append(this.__elementLoadingSpinner),this.__updateTreeviewDestroyFunction=TcHmi.EventProvider.register(this.__treeView.getId()+".onTableUpdated",()=>{this.__elementLoadingSpinner.remove(),this.__updateTreeviewDestroyFunction?.(),this.__updateTreeviewDestroyFunction=null})}setDataSchema(valueNew){this.__dataSymbol?this.__overriddenDataSchema=valueNew:this.__setDataSchema(valueNew)}__setDataSchema(valueNew){let convertedValue=TcHmi.ValueConverter.toObject(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("DataSchema"));let resolverInfo=this.__objectResolvers.get("dataSchema");resolverInfo&&(resolverInfo.watchDestroyer&&resolverInfo.watchDestroyer(),resolverInfo.resolver.destroy());let resolver=new TcHmi.Symbol.ObjectResolver(convertedValue,{parentControl:this,type:this.getAttributeDescription("DataSchema")?.type});this.__objectResolvers.set("dataSchema",{resolver,watchCallback:this.__onResolverForDataSchemaWatchCallback,watchDestroyer:resolver.watch(this.__onResolverForDataSchemaWatchCallback)})}__onResolverForDataSchemaWatchCallback(data){this.__isAttached||this.__suspendObjectResolver("dataSchema"),data.error===TcHmi.Errors.NONE?tchmi_equal(this.__dataSchema,data.value)||(this.__dataSchema=data.value,this.__dataSymbol||TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"DataSchema"}),this.__processDataSchema()):TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSchema"},`Resolving symbols from object failed with error:\n ${TcHmi.Log.buildMessage(data.details)}`)}getDataSchema(){return this.__dataSymbol?void 0:this.__dataSchema}__processDataSchema(){this.__isAttached&&this.__processDataAndDataSchema()}__processDataAndDataSchema(){this.__treeView.getElement()[0].classList.contains("hidden")&&this.__treeView.getElement()[0].classList.remove("hidden");const designerInfoElement=this.__element[0].querySelector(".tchmi-designer-control-message");if(designerInfoElement&&(designerInfoElement.remove(),this.__removeLocalizedElement(designerInfoElement)),!tchmi_equal(this.__promisedData,this.__data)||!tchmi_equal(this.__promisedDataSchema,this.__dataSchema))if(this.__promisedData=tchmi_clone_object(this.__data,{cloneMaps:{deepCloneKeys:!0,deepCloneValues:!1}}),this.__promisedDataSchema=tchmi_clone_object(this.__dataSchema,{cloneMaps:{deepCloneKeys:!0,deepCloneValues:!1}}),null!==this.__data&&void 0!==this.__data&&this.__dataSchema)0!==this.__updateDataAndSchemaTimoutId&&clearTimeout(this.__updateDataAndSchemaTimoutId),this.__updateDataAndSchemaTimoutId=setTimeout(()=>{this.__updateDataAndSchemaTimoutId=0,this.__transformDataAndDataSchema(this.__data,this.__dataSymbolExpression?.getName()??this.__firstLevelName??"Data Object",SchemaParser.resolveAllOf(SchemaParser.resolveReferences(this.__dataSchema??{})),new TcHmi.TimedAsyncTask(50)).then(result=>{let newData=[result.data],newSchema={type:"array",items:result.schema};this.__ignoreFirstLevel&&result.schema.properties?.children&&result.data.children&&(newData=result.data.children,newSchema=result.schema.properties.children),setTimeout(()=>{this.__treeView.setDataSchema(newSchema),this.__treeView.setData(newData)})})});else if(this.__treeView.setDataSchema(null),this.__treeView.setData(null),this.__elementLoadingSpinner.remove(),TCHMI_DESIGNER&&!this.__dataSymbol){this.__treeView.getElement()[0].classList.add("hidden");const designerMessage=this.__element.find(".tchmi-designer-control-message")[0]||document.createElement("div");designerMessage.classList.add("tchmi-designer-control-message"),this.__element[0].appendChild(designerMessage),this.__addLocalizedElement(designerMessage,"Define_Data_And_Schema")}}setDataSymbol(valueNew){let newSymbol=valueNew;if(null===newSymbol){let symbolExpression=this.getAttributeDefaultValueInternal("DataSymbol");symbolExpression&&(newSymbol=new TcHmi.Symbol(symbolExpression))}if(this.__dataSymbol===newSymbol)return;this.__destroyDataSymbolWatch&&(this.__destroyDataSymbolWatch(),this.__destroyDataSymbolWatch=null),this.__dataSymbol&&this.__dataSymbol.destroy(),this.__treeView.collapseAll(),this.__expandedElements=[],newSymbol instanceof TcHmi.Symbol?this.__dataSymbol=newSymbol:(this.__dataSymbol,this.__dataSymbol=null),TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"DataSymbol"});let bindingMode=TcHmi.Binding.resolveEx("DataSymbol",this)?.getOptions().BindingMode??"TwoWay";bindingMode!==this.__bindingMode&&(this.__bindingMode=bindingMode,this.__processColumns()),this.__processDataSymbol()}getDataSymbol(){return this.__dataSymbol}__processDataSymbol(unsubscribeOnly=!1){if(TCHMI_DESIGNER)this.__dataSymbol?(this.__overriddenData=this.__data??null,this.__overriddenDataSchema=this.__dataSchema,this.__dataSymbol.resolveSchema(data=>{if(data.error!==TcHmi.Errors.NONE||!data.schema)return void TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},TcHmi.Log.buildMessage(data.details));let srcData=TcHmi.Type.Schema.resolveDefault(data.schema);this.__setDataSchema(data.schema),this.__setData(srcData)})):(void 0!==this.__overriddenData&&(this.__setData(this.__overriddenData),this.__overriddenData=void 0),void 0!==this.__overriddenDataSchema&&(this.__setDataSchema(this.__overriddenDataSchema),this.__overriddenDataSchema=void 0));else if(null!==this.__subscriptionInfo.subscriptionId?(TcHmi.Server.unsubscribeEx(this.__subscriptionInfo.subscriptionId,null,data=>{data.error!==TcHmi.Errors.NONE&&TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},TcHmi.Log.buildMessage(data.details))}),this.__subscriptionInfo.subscriptionId=null):this.__destroyDataSymbolWatch&&(this.__destroyDataSymbolWatch(),this.__destroyDataSymbolWatch=null),this.__isAttached&&!unsubscribeOnly){if(!this.__dataSymbol)return void 0!==this.__overriddenData&&(this.__setData(this.__overriddenData),this.__overriddenData=void 0),void(void 0!==this.__overriddenDataSchema&&(this.__setDataSchema(this.__overriddenDataSchema),this.__overriddenDataSchema=void 0));this.__overriddenData=this.__data??null,this.__setData(null),this.__overriddenDataSchema=this.__dataSchema,this.__setDataSchema(null),this.__dataSymbolExpressionWatchDestroyer?.(),this.__dataSymbolExpressionWatchDestroyer=this.__dataSymbol.watchExpression(data=>{this.__dataSymbol&&(data.error===TcHmi.Errors.NONE&&data.expressionResolved?(this.__dataSymbolExpression=data.expressionResolved,this.__dataSymbol.getExpression().getType()===TcHmi.SymbolType.Server?this.__updateSubscription(!0):(this.__destroyDataSymbolWatch?.(),this.__destroyDataSymbolWatch=this.__dataSymbol.watch(this.__onDataSymbolWatch))):TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},"Failed to resolve expression."))})}}__updateSubscription(force=!1){if(!this.__dataSymbol||!this.__dataSymbolExpression||this.__dataSymbol?.getExpression().getType()!==TcHmi.SymbolType.Server)return;if(this.__dataSymbol.resolveSchema(data=>{if(data.error!==TcHmi.Errors.NONE||!data.schema)return TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},"Resolving schema failed: "+TcHmi.Log.buildMessage(data.details)),void this.__elementLoadingSpinner.remove();this.__dataSchema=data.schema}),!force&&null!==this.__subscriptionInfo.subscriptionId)return;let average=data=>data.length>0?data.reduce((accumulator,current)=>accumulator+current)/data.length:0,now=Date.now();if(this.__subscriptionInfo.timing.lastUpdateTime>0){let elapsed=now-this.__subscriptionInfo.timing.lastUpdateTime,updateAverage=average(this.__subscriptionInfo.timing.responseLatencies);(0===updateAverage||elapsed<3*updateAverage)&&(this.__subscriptionInfo.timing.updateTimings.push(elapsed),this.__subscriptionInfo.timing.updateTimings.length>5&&this.__subscriptionInfo.timing.updateTimings.shift())}if(this.__subscriptionInfo.timing.lastUpdateTime=now,null!==this.__subscriptionInfo.subscriptionId&&(TcHmi.Server.unsubscribeEx(this.__subscriptionInfo.subscriptionId,null,data=>{data.error!==TcHmi.Errors.NONE&&(TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},`Unsubscribe failed: ${TcHmi.Log.buildMessage(data.details)}`),this.__elementLoadingSpinner.remove())}),this.__subscriptionInfo.subscriptionId=null),this.__dataSchema?.function&&this.__dataSchema.writeValue)return TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},"DataSymbol is a function with parameters that cannot be displayed by the control."),void this.__elementLoadingSpinner.remove();if(this.__subscriptionInfo.timing.isScrolling&&average(this.__subscriptionInfo.timing.responseLatencies)>average(this.__subscriptionInfo.timing.updateTimings))return;const expressionOptions=this.__dataSymbolExpression.getOptions(),symbol=this.__dataSymbolExpression.getName()??"",requestOptions={timeout:expressionOptions.Timeout,parallel:expressionOptions.Parallel,groupId:expressionOptions.SubscriptionGroup},commandOptions=["SendErrorMessage"];"Poll"===expressionOptions.SubscriptionMode&&commandOptions.push("Poll"),expressionOptions.UniqueHash&&commandOptions.push("UniqueHash");let commands=[{commandOptions,symbol,version:expressionOptions.Version,maxSubSymbolDepth:1}];for(let subsymbol of this.__expandedElements){if(subsymbol===symbol)continue;let command={commandOptions,symbol:subsymbol,version:expressionOptions.Version,maxSubSymbolDepth:1};commands.push(command)}this.__lastReportedErrorDetail=void 0,this.__subscriptionInfo.subscriptionId=TcHmi.Server.subscribeEx(commands,expressionOptions.Interval??TcHmi.Config.get().tcHmiServer.websocketIntervalTime??500,requestOptions,this.__onDataSymbol),this.__subscriptionInfo.timing.lastRequestTime=now,this.__subscriptionInfo.timing.firstResponsePending=!0}__onDataSymbol(data){if(this.__subscriptionInfo.timing.firstResponsePending&&(this.__subscriptionInfo.timing.firstResponsePending=!1,this.__subscriptionInfo.timing.responseLatencies.push(Date.now()-this.__subscriptionInfo.timing.lastRequestTime),this.__subscriptionInfo.timing.responseLatencies.length>3&&this.__subscriptionInfo.timing.responseLatencies.shift()),data.error!==TcHmi.Errors.NONE)return TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},TcHmi.Log.buildMessage(data.details)),void this.__elementLoadingSpinner.remove();if(!data.response)return TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},TcHmi.Log.buildMessage({code:TcHmi.Errors.E_SERVER_RESPONSE_MISSING,message:TcHmi.Errors[TcHmi.Errors.E_SERVER_RESPONSE_MISSING],reason:"Missing response from server.",domain:this.__type})),void this.__elementLoadingSpinner.remove();if(data.response.error)return TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},TcHmi.Log.buildMessage(data.response.error)),void this.__elementLoadingSpinner.remove();if(!data.response.commands||0===data.response.commands.length)return TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},TcHmi.Log.buildMessage({code:TcHmi.Errors.E_SERVER_COMMANDS_MISSING,message:TcHmi.Errors[TcHmi.Errors.E_SERVER_COMMANDS_MISSING],reason:"Missing commands in response from server with id: '"+data.response.id+"'.",domain:this.__type})),void this.__elementLoadingSpinner.remove();for(const command of data.response.commands){if(command.error)return tchmi_equal(command.error,this.__lastReportedErrorDetail)||TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},TcHmi.Log.buildMessage(command.error)),this.__lastReportedErrorDetail=command.error,void this.__elementLoadingSpinner.remove();if(void 0===command.readValue)return TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},TcHmi.Log.buildMessage({code:TcHmi.Errors.E_SERVER_READVALUE_MISSING,message:TcHmi.Errors[TcHmi.Errors.E_SERVER_READVALUE_MISSING],reason:"Missing readValue in response from server with id: '"+data.response.id+"'.",domain:this.__type})),void this.__elementLoadingSpinner.remove();this.__subscriptionData.set(command.symbol,command.readValue)}let srcData=null,entriesToRemove=[];this.__subscriptionData.forEach((data,symbolName)=>{-1===this.__expandedElements.findIndex(x=>x===symbolName)&&symbolName!==this.__dataSymbolExpression?.getName()&&entriesToRemove.push(symbolName)});for(let key of entriesToRemove)this.__subscriptionData.delete(key);const keys=Array.from(this.__subscriptionData.keys()).sort((a,b)=>a.length>b.length?1:-1);let baseSymbolPath=new TcHmi.ObjectPath(keys[0]);for(let i=0;i<keys.length;i++){let subscriptionData=this.__subscriptionData.get(keys[i]);if(void 0!==subscriptionData)if(0===i)srcData=subscriptionData;else{new TcHmi.ObjectPath(keys[i]).slice(baseSymbolPath.length).writeTo(srcData,subscriptionData)}}this.__setData(srcData??null)}__onDataSymbolWatch(data){this.__dataSymbol&&(this.__dataSymbol.resolveSchema(data=>{data.error===TcHmi.Errors.NONE&&data.schema||TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},`Resolving schema failed: ${TcHmi.Log.buildMessage(data.details)}`),this.__dataSchema=data.schema}),data.error!==TcHmi.Errors.NONE&&TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"DataSymbol",Symbol:this.__dataSymbol?.getExpression().toString()},TcHmi.Log.buildMessage(data.details)),this.__setData(data.value??null))}setColumns(valueNew){let convertedValue=TcHmi.ValueConverter.toObject(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("Columns"));let resolverInfo=this.__objectResolvers.get("columns");resolverInfo&&(resolverInfo.watchDestroyer&&resolverInfo.watchDestroyer(),resolverInfo.resolver.destroy());let resolver=new TcHmi.Symbol.ObjectResolver(convertedValue,{parentControl:this,type:this.getAttributeDescription("Columns")?.type});this.__objectResolvers.set("columns",{resolver,watchCallback:this.__onResolverForColumnsWatchCallback,watchDestroyer:resolver.watch(this.__onResolverForColumnsWatchCallback)})}__onResolverForColumnsWatchCallback(data){this.__isAttached||this.__suspendObjectResolver("columns"),data.error===TcHmi.Errors.NONE?tchmi_equal(data.value,this.__columns)||(this.__columns=data.value,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"Columns"}),this.__processColumns()):TcHmi.Log.Controls.error(this,TcHmiObjectBrowser.#tchmiFQN,{Attribute:"Columns"},`Resolving symbols from object failed with error: ${TcHmi.Log.buildMessage(data.details)}`)}getColumns(){return this.__columns}__processColumns(){if(!this.__columns)return void this.__treeView.setColumns(null);const treeViewColumns=[];for(const column of this.__columns){let editable="Value"===column.columnData&&"TwoWay"===this.__bindingMode&&column.editable,labelValue=editable&&this.__treeView.getIndirectWrite()?"PreparedValue":"ValueDisplay"===column.columnData?"Value":column.columnData;treeViewColumns.push({name:"ValueDisplay"===column.columnData?"value":column.columnData.toLowerCase(),label:`%l%Control::TcHmi.Controls.Beckhoff.TcHmiObjectBrowser::ColumnData_${labelValue}%/l%`,control:"Value"===column.columnData?"AutoDetectControl":"TextBlock",width:column.width,widthUnit:column.widthUnit,resize:column.resize,sortable:column.sortable,minWidth:column.minWidth,minWidthUnit:column.minWidthUnit,editable,horizontalAlignment:column.horizontalAlignment,verticalAlignment:column.verticalAlignment,cellBackground:column.cellBackground,textColor:column.textColor,headerHorizontalAlignment:column.headerHorizontalAlignment,headerVerticalAlignment:column.verticalAlignment,format:column.format,ignoreEscapeSequences:column.ignoreEscapeSequences,autoFocusOut:column.autoFocusOut,autoSelectText:column.autoSelectText})}this.__treeView.setColumns(treeViewColumns)}setIgnoreFirstLevel(valueNew){let convertedValue=TcHmi.ValueConverter.toBoolean(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("IgnoreFirstLevel")),convertedValue!==this.__ignoreFirstLevel&&(this.__ignoreFirstLevel=convertedValue,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"IgnoreFirstLevel"}),this.__processIgnoreFirstLevel())}getIgnoreFirstLevel(){return this.__ignoreFirstLevel}__processIgnoreFirstLevel(){this.__isAttached&&(this.__treeView.collapseAll(),this.__expandedElements=[],this.__processDataAndDataSchema())}setFirstLevelName(valueNew){let convertedValue=TcHmi.ValueConverter.toString(valueNew);convertedValue||(convertedValue=this.getAttributeDefaultValueInternal("FirstLevelName")),convertedValue!==this.__firstLevelName&&(this.__firstLevelName=convertedValue,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"FirstLevelName"}),this.__processFirstLevelName())}getFirstLevelName(){return this.__firstLevelName}__processFirstLevelName(){this.__isAttached&&(this.__treeView.collapseAll(),this.__expandedElements=[],this.__processDataAndDataSchema())}getDataHasChanged(){return this.__dataHasChanged}setIndirectWrite(valueNew){this.__treeView.setIndirectWrite(valueNew),this.__initializedAttributes.includes("IndirectWrite")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"IndirectWrite"}),this.__initializedAttributes.push("IndirectWrite")),this.__processColumns()}getIndirectWrite(){return this.__initializedAttributes.includes("IndirectWrite")?this.__treeView.getIndirectWrite():void 0}setFilter(valueNew){this.__treeView.setFilter(valueNew),this.__initializedAttributes.includes("Filter")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"Filter"}),this.__initializedAttributes.push("Filter"))}getFilter(){return this.__initializedAttributes.includes("Filter")?this.__treeView.getFilter():void 0}setSorting(valueNew){this.__treeView.setSorting(valueNew),this.__initializedAttributes.includes("Sorting")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"Sorting"}),this.__initializedAttributes.push("Sorting"))}getSorting(){return this.__initializedAttributes.includes("Sorting")?this.__treeView.getSorting():void 0}setRowClassesProvider(valueNew){this.__treeView.setRowClassesProvider(valueNew),this.__initializedAttributes.includes("RowClassesProvider")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowClassesProvider"}),this.__initializedAttributes.push("RowClassesProvider"))}getRowClassesProvider(){return this.__initializedAttributes.includes("RowClassesProvider")?this.__treeView.getRowClassesProvider():void 0}setHeaderHeight(valueNew){this.__treeView.setHeaderHeight(valueNew),this.__initializedAttributes.includes("HeaderHeight")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"HeaderHeight"}),this.__initializedAttributes.push("HeaderHeight"))}getHeaderHeight(){return this.__initializedAttributes.includes("HeaderHeight")?this.__treeView.getHeaderHeight():void 0}setHeaderHeightUnit(valueNew){this.__treeView.setHeaderHeightUnit(valueNew),this.__initializedAttributes.includes("HeaderHeightUnit")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"HeaderHeightUnit"}),this.__initializedAttributes.push("HeaderHeightUnit"))}getHeaderHeightUnit(){return this.__initializedAttributes.includes("HeaderHeightUnit")?this.__treeView.getHeaderHeightUnit():void 0}setHeaderCellPadding(valueNew){this.__treeView.setHeaderCellPadding(valueNew),this.__initializedAttributes.includes("HeaderCellPadding")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"HeaderCellPadding"}),this.__initializedAttributes.push("HeaderCellPadding"))}getHeaderCellPadding(){return this.__initializedAttributes.includes("HeaderCellPadding")?this.__treeView.getHeaderCellPadding():void 0}setRowHeight(valueNew){this.__treeView.setRowHeight(valueNew),this.__initializedAttributes.includes("RowHeight")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowHeight"}),this.__initializedAttributes.push("RowHeight"))}getRowHeight(){return this.__initializedAttributes.includes("RowHeight")?this.__treeView.getRowHeight():void 0}setTableBorderColor(valueNew){this.__treeView.setTableBorderColor(valueNew),this.__initializedAttributes.includes("TableBorderColor")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"TableBorderColor"}),this.__initializedAttributes.push("TableBorderColor"))}getTableBorderColor(){return this.__initializedAttributes.includes("TableBorderColor")?this.__treeView.getTableBorderColor():void 0}setTableBorderWidth(valueNew){this.__treeView.setTableBorderWidth(valueNew),this.__initializedAttributes.includes("TableBorderWidth")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"TableBorderWidth"}),this.__initializedAttributes.push("TableBorderWidth"))}getTableBorderWidth(){return this.__initializedAttributes.includes("TableBorderWidth")?this.__treeView.getTableBorderWidth():void 0}setTableBorderStyle(valueNew){this.__treeView.setTableBorderStyle(valueNew),this.__initializedAttributes.includes("TableBorderStyle")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"TableBorderStyle"}),this.__initializedAttributes.push("TableBorderStyle"))}getTableBorderStyle(){return this.__initializedAttributes.includes("TableBorderStyle")?this.__treeView.getTableBorderStyle():void 0}setShowHeader(valueNew){this.__treeView.setShowHeader(valueNew),this.__initializedAttributes.includes("ShowHeader")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"ShowHeader"}),this.__initializedAttributes.push("ShowHeader"))}getShowHeader(){return this.__initializedAttributes.includes("ShowHeader")?this.__treeView.getShowHeader():void 0}setShowRowNumbers(valueNew){this.__treeView.setShowRowNumbers(valueNew),this.__initializedAttributes.includes("ShowRowNumbers")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"ShowRowNumbers"}),this.__initializedAttributes.push("ShowRowNumbers"))}getShowRowNumbers(){return this.__initializedAttributes.includes("ShowRowNumbers")?this.__treeView.getShowRowNumbers():void 0}setRowNumbersResizable(valueNew){this.__treeView.setRowNumbersResizable(valueNew),this.__initializedAttributes.includes("RowNumbersResizable")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowNumbersResizable"}),this.__initializedAttributes.push("RowNumbersResizable"))}getRowNumbersResizable(){return this.__initializedAttributes.includes("RowNumbersResizable")?this.__treeView.getRowNumbersResizable():void 0}setRowNumbersStartNumber(valueNew){this.__treeView.setRowNumbersStartNumber(valueNew),this.__initializedAttributes.includes("RowNumbersStartNumber")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowNumbersStartNumber"}),this.__initializedAttributes.push("RowNumbersStartNumber"))}getRowNumbersStartNumber(){return this.__initializedAttributes.includes("RowNumbersStartNumber")?this.__treeView.getRowNumbersStartNumber():void 0}setRowNumbersWidth(valueNew){this.__treeView.setRowNumbersWidth(valueNew),this.__initializedAttributes.includes("RowNumbersWidth")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowNumbersWidth"}),this.__initializedAttributes.push("RowNumbersWidth"))}getRowNumbersWidth(){return this.__initializedAttributes.includes("RowNumbersWidth")?this.__treeView.getRowNumbersWidth():void 0}setRowNumbersWidthUnit(valueNew){this.__treeView.setRowNumbersWidthUnit(valueNew),this.__initializedAttributes.includes("RowNumbersWidthUnit")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowNumbersWidthUnit"}),this.__initializedAttributes.push("RowNumbersWidthUnit"))}getRowNumbersWidthUnit(){return this.__initializedAttributes.includes("RowNumbersWidthUnit")?this.__treeView.getRowNumbersWidthUnit():void 0}setRowNumbersHorizontalAlignment(valueNew){this.__treeView.setRowNumbersHorizontalAlignment(valueNew),this.__initializedAttributes.includes("RowNumbersHorizontalAlignment")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowNumbersHorizontalAlignment"}),this.__initializedAttributes.push("RowNumbersHorizontalAlignment"))}getRowNumbersHorizontalAlignment(){return this.__initializedAttributes.includes("RowNumbersHorizontalAlignment")?this.__treeView.getRowNumbersHorizontalAlignment():void 0}setRowNumbersVerticalAlignment(valueNew){this.__treeView.setRowNumbersVerticalAlignment(valueNew),this.__initializedAttributes.includes("RowNumbersVerticalAlignment")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowNumbersVerticalAlignment"}),this.__initializedAttributes.push("RowNumbersVerticalAlignment"))}getRowNumbersVerticalAlignment(){return this.__initializedAttributes.includes("RowNumbersVerticalAlignment")?this.__treeView.getRowNumbersVerticalAlignment():void 0}setRowNumbersCellPadding(valueNew){this.__treeView.setRowNumbersCellPadding(valueNew),this.__initializedAttributes.includes("RowNumbersCellPadding")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowNumbersCellPadding"}),this.__initializedAttributes.push("RowNumbersCellPadding"))}getRowNumbersCellPadding(){return this.__initializedAttributes.includes("RowNumbersCellPadding")?this.__treeView.getRowNumbersCellPadding():void 0}setCellContentPadding(valueNew){this.__treeView.setCellContentPadding(valueNew),this.__initializedAttributes.includes("CellContentPadding")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"CellContentPadding"}),this.__initializedAttributes.push("CellContentPadding"))}getCellContentPadding(){return this.__initializedAttributes.includes("CellContentPadding")?this.__treeView.getCellContentPadding():void 0}setHeaderBackgroundColor(valueNew){this.__treeView.setHeaderBackgroundColor(valueNew),this.__initializedAttributes.includes("HeaderBackgroundColor")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"HeaderBackgroundColor"}),this.__initializedAttributes.push("HeaderBackgroundColor"))}getHeaderBackgroundColor(){return this.__initializedAttributes.includes("HeaderBackgroundColor")?this.__treeView.getHeaderBackgroundColor():void 0}setHeaderTextColor(valueNew){this.__treeView.setHeaderTextColor(valueNew),this.__initializedAttributes.includes("HeaderTextColor")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"HeaderTextColor"}),this.__initializedAttributes.push("HeaderTextColor"))}getHeaderTextColor(){return this.__initializedAttributes.includes("HeaderTextColor")?this.__treeView.getHeaderTextColor():void 0}setRowNumbersTextColor(valueNew){this.__treeView.setRowNumbersTextColor(valueNew),this.__initializedAttributes.includes("RowNumbersTextColor")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowNumbersTextColor"}),this.__initializedAttributes.push("RowNumbersTextColor"))}getRowNumbersTextColor(){return this.__initializedAttributes.includes("RowNumbersTextColor")?this.__treeView.getRowNumbersTextColor():void 0}setRowNumbersBackgroundColor(valueNew){this.__treeView.setRowNumbersBackgroundColor(valueNew),this.__initializedAttributes.includes("RowNumbersBackgroundColor")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowNumbersBackgroundColor"}),this.__initializedAttributes.push("RowNumbersBackgroundColor"))}getRowNumbersBackgroundColor(){return this.__initializedAttributes.includes("RowNumbersBackgroundColor")?this.__treeView.getRowNumbersBackgroundColor():void 0}setHeaderFontFamily(valueNew){this.__treeView.setHeaderFontFamily(valueNew),this.__initializedAttributes.includes("HeaderFontFamily")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"HeaderFontFamily"}),this.__initializedAttributes.push("HeaderFontFamily"))}getHeaderFontFamily(){return this.__initializedAttributes.includes("HeaderFontFamily")?this.__treeView.getHeaderFontFamily():void 0}setHeaderFontSize(valueNew){this.__treeView.setHeaderFontSize(valueNew),this.__initializedAttributes.includes("HeaderFontSize")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"HeaderFontSize"}),this.__initializedAttributes.push("HeaderFontSize"))}getHeaderFontSize(){return this.__initializedAttributes.includes("HeaderFontSize")?this.__treeView.getHeaderFontSize():void 0}setHeaderFontSizeUnit(valueNew){this.__treeView.setHeaderFontSizeUnit(valueNew),this.__initializedAttributes.includes("HeaderFontSizeUnit")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"HeaderFontSizeUnit"}),this.__initializedAttributes.push("HeaderFontSizeUnit"))}getHeaderFontSizeUnit(){return this.__initializedAttributes.includes("HeaderFontSizeUnit")?this.__treeView.getHeaderFontSizeUnit():void 0}setHeaderFontStyle(valueNew){this.__treeView.setHeaderFontStyle(valueNew),this.__initializedAttributes.includes("HeaderFontStyle")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"HeaderFontStyle"}),this.__initializedAttributes.push("HeaderFontStyle"))}getHeaderFontStyle(){return this.__initializedAttributes.includes("HeaderFontStyle")?this.__treeView.getHeaderFontStyle():void 0}setHeaderFontWeight(valueNew){this.__treeView.setHeaderFontWeight(valueNew),this.__initializedAttributes.includes("HeaderFontWeight")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"HeaderFontWeight"}),this.__initializedAttributes.push("HeaderFontWeight"))}getHeaderFontWeight(){return this.__initializedAttributes.includes("HeaderFontWeight")?this.__treeView.getHeaderFontWeight():void 0}setGridFontFamily(valueNew){this.__treeView.setGridFontFamily(valueNew),this.__initializedAttributes.includes("GridFontFamily")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"GridFontFamily"}),this.__initializedAttributes.push("GridFontFamily"))}getGridFontFamily(){return this.__initializedAttributes.includes("GridFontFamily")?this.__treeView.getGridFontFamily():void 0}setGridFontSize(valueNew){this.__treeView.setGridFontSize(valueNew),this.__initializedAttributes.includes("GridFontSize")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"GridFontSize"}),this.__initializedAttributes.push("GridFontSize"))}getGridFontSize(){return this.__initializedAttributes.includes("GridFontSize")?this.__treeView.getGridFontSize():void 0}setGridFontSizeUnit(valueNew){this.__treeView.setGridFontSizeUnit(valueNew),this.__initializedAttributes.includes("GridFontSizeUnit")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"GridFontSizeUnit"}),this.__initializedAttributes.push("GridFontSizeUnit"))}getGridFontSizeUnit(){return this.__initializedAttributes.includes("GridFontSizeUnit")?this.__treeView.getGridFontSizeUnit():void 0}setGridFontStyle(valueNew){this.__treeView.setGridFontStyle(valueNew),this.__initializedAttributes.includes("GridFontStyle")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"GridFontStyle"}),this.__initializedAttributes.push("GridFontStyle"))}getGridFontStyle(){return this.__initializedAttributes.includes("GridFontStyle")?this.__treeView.getGridFontStyle():void 0}setGridFontWeight(valueNew){this.__treeView.setGridFontWeight(valueNew),this.__initializedAttributes.includes("GridFontWeight")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"GridFontWeight"}),this.__initializedAttributes.push("GridFontWeight"))}getGridFontWeight(){return this.__initializedAttributes.includes("GridFontWeight")?this.__treeView.getGridFontWeight():void 0}setRowNumbersFontFamily(valueNew){this.__treeView.setRowNumbersFontFamily(valueNew),this.__initializedAttributes.includes("RowNumbersFontFamily")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowNumbersFontFamily"}),this.__initializedAttributes.push("RowNumbersFontFamily"))}getRowNumbersFontFamily(){return this.__initializedAttributes.includes("RowNumbersFontFamily")?this.__treeView.getRowNumbersFontFamily():void 0}setRowNumbersFontSize(valueNew){this.__treeView.setRowNumbersFontSize(valueNew),this.__initializedAttributes.includes("RowNumbersFontSize")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowNumbersFontSize"}),this.__initializedAttributes.push("RowNumbersFontSize"))}getRowNumbersFontSize(){return this.__initializedAttributes.includes("RowNumbersFontSize")?this.__treeView.getRowNumbersFontSize():void 0}setRowNumbersFontSizeUnit(valueNew){this.__treeView.setRowNumbersFontSizeUnit(valueNew),this.__initializedAttributes.includes("RowNumbersFontSizeUnit")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowNumbersFontSizeUnit"}),this.__initializedAttributes.push("RowNumbersFontSizeUnit"))}getRowNumbersFontSizeUnit(){return this.__initializedAttributes.includes("RowNumbersFontSizeUnit")?this.__treeView.getRowNumbersFontSizeUnit():void 0}setRowNumbersFontStyle(valueNew){this.__treeView.setRowNumbersFontStyle(valueNew),this.__initializedAttributes.includes("RowNumbersFontStyle")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowNumbersFontStyle"}),this.__initializedAttributes.push("RowNumbersFontStyle"))}getRowNumbersFontStyle(){return this.__initializedAttributes.includes("RowNumbersFontStyle")?this.__treeView.getRowNumbersFontStyle():void 0}setRowNumbersFontWeight(valueNew){this.__treeView.setRowNumbersFontWeight(valueNew),this.__initializedAttributes.includes("RowNumbersFontWeight")||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"RowNumbersFontWeight"}),this.__initializedAttributes.push("RowNumbersFontWeight"))}getRowNumbersFontWeight(){return this.__initializedAttributes.includes("RowNumbersFontWeight")?this.__treeView.getRowNumbersFontWeight():void 0}setSelectedPath(valueNew){if(null===valueNew)return void this.__treeView.setSelectedRowIndex(null);let index=this.__symbolNameToOriginalIndex(this.__data,valueNew);this.__ignoreFirstLevel&&index?.shift(),this.__treeView.setSelectedRowIndex(index)}getSelectedPath(){let index=this.__treeView.getSelectedRowIndex();if(!index)return null;index=[...index];let symbolName="";return this.__dataSymbol?symbolName=this.__dataSymbol.getExpression().getName()??"":this.__firstLevelName&&(symbolName=this.__firstLevelName),this.__ignoreFirstLevel&&index.unshift(0),symbolName+=this.__originalIndexToSubSymbolName(this.__data,index),symbolName}setSelectedColumn(valueNew){if(!valueNew)return void this.__treeView.setSelectedColumnIndex(valueNew);let index=this.__columns?.findIndex(x=>x.columnData===valueNew);this.__treeView.setSelectedColumnIndex(index??null)}getSelectedColumn(){let columnName=this.__columns?.[this.__treeView.getSelectedColumnIndex()??-1]?.columnData;return columnName??null}getSelectedCellValue(){return this.__treeView.getSelectedCellValue()}getSelectedRowValue(){return this.__treeView.getSelectedRowValue()}
|
|
/**
|
|
* Sets the isReadOnly attribute and calls the associated process function (processIsReadOnly).
|
|
* @preserve (Part of the public API)
|
|
*/setIsReadOnly(valueNew){let convertedValue=TcHmi.ValueConverter.toBoolean(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("IsReadOnly")),convertedValue!==this.__isReadOnly&&(this.__isReadOnly=convertedValue,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"IsReadOnly"}),this.__processIsReadOnly())}getIsReadOnly(){return this.__isReadOnly}__processIsReadOnly(){this.__element[0].classList.toggle("read-only",this.__isReadOnly??!1),this.__treeView.setIsReadOnly(this.__isReadOnly??!1)}}})();TcHmi.Controls.registerEx("TcHmiObjectBrowser","TcHmi.Controls.Beckhoff",TcHmiObjectBrowser,{injectInGlobalObject:!0});export{TcHmiObjectBrowser as Control}; |