Files
m.heisig 2d11c43579 Added minimal functionality for Robot teaching
- Added minimal HMI
- Added possibility to open and close all chamber doors
2026-01-17 09:20:39 +01:00

5 lines
35 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";let TcHmiTimespanPicker=(()=>{var _a,_b;let ___onMousedown_decorators,___onFocusOut_decorators,___onKeyPress_decorators,___onPressed_decorators,___onUserInteractionFinished_decorators,___onIsValidChanged_decorators,___onResolverForTimeUnitsWatchCallback_decorators,___onValueSymbolWatch_decorators,_classSuper=TcHmiControl.Control,_instanceExtraInitializers=[];return class TcHmiTimespanPicker extends _classSuper{static{const _metadata="function"==typeof Symbol&&Symbol.metadata?Object.create(_classSuper[Symbol.metadata]??null):void 0;___onMousedown_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onFocusOut_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onKeyPress_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onPressed_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onUserInteractionFinished_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onIsValidChanged_decorators=[TcHmi.EventHandler({checkIsEnabled:!0,checkAccess:"operate"})],___onResolverForTimeUnitsWatchCallback_decorators=[(_a=TcHmi).CallbackMethod.bind(_a)],___onValueSymbolWatch_decorators=[(_b=TcHmi).CallbackMethod.bind(_b)],__esDecorate(this,null,___onMousedown_decorators,{kind:"method",name:"__onMousedown",static:!1,private:!1,access:{has:obj=>"__onMousedown"in obj,get:obj=>obj.__onMousedown},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onFocusOut_decorators,{kind:"method",name:"__onFocusOut",static:!1,private:!1,access:{has:obj=>"__onFocusOut"in obj,get:obj=>obj.__onFocusOut},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onKeyPress_decorators,{kind:"method",name:"__onKeyPress",static:!1,private:!1,access:{has:obj=>"__onKeyPress"in obj,get:obj=>obj.__onKeyPress},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onPressed_decorators,{kind:"method",name:"__onPressed",static:!1,private:!1,access:{has:obj=>"__onPressed"in obj,get:obj=>obj.__onPressed},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onUserInteractionFinished_decorators,{kind:"method",name:"__onUserInteractionFinished",static:!1,private:!1,access:{has:obj=>"__onUserInteractionFinished"in obj,get:obj=>obj.__onUserInteractionFinished},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onIsValidChanged_decorators,{kind:"method",name:"__onIsValidChanged",static:!1,private:!1,access:{has:obj=>"__onIsValidChanged"in obj,get:obj=>obj.__onIsValidChanged},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onResolverForTimeUnitsWatchCallback_decorators,{kind:"method",name:"__onResolverForTimeUnitsWatchCallback",static:!1,private:!1,access:{has:obj=>"__onResolverForTimeUnitsWatchCallback"in obj,get:obj=>obj.__onResolverForTimeUnitsWatchCallback},metadata:_metadata},null,_instanceExtraInitializers),__esDecorate(this,null,___onValueSymbolWatch_decorators,{kind:"method",name:"__onValueSymbolWatch",static:!1,private:!1,access:{has:obj=>"__onValueSymbolWatch"in obj,get:obj=>obj.__onValueSymbolWatch},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)}__elementTemplateRoot=__runInitializers(this,_instanceExtraInitializers);__elementTSTemplate;__elementTSFirstBlockTemplate;__elementTSSecondBlockTemplate;__elementButtonTemplate;__templates;__value;__maxValue;__valueSymbol;__valueSymbolCurrentValue;__valueSymbolSchema;__maxValueSymbol;__directDisplay;__showConfirmationButtons;__timeUnits;__isReadOnly;__REGEX_ISO_8601=/^P(?=.{2,})(?:\d+Y|\d+[.,]\d+Y$)?(?:\d+M|\d+[.,]\d+M$)?(?:\d+W|\d+[.,]\d+W$)?(?:\d+D|\d+[.,]\d+D$)?(?:T(?:\d+H|\d+[.,]\d+H$)?(?:\d+M|\d+[.,]\d+M$)?(?:\d+S|\d+[.,]\d+S$)?)?$/;__baseControls={spinboxes:{}};__previnit(){if(this.__elementTemplateRoot=this.__element[0].getElementsByClassName("TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template")[0],!this.__elementTemplateRoot)throw new Error("Invalid Template.html");this.__elementTSTemplate=$('<div class="TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-overlay tchmi-timespan-picker-template-overlay tchmi-box"></div>'),this.__elementTSFirstBlockTemplate=$('<div class="TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-first-block tchmi-timespan-picker-template-first-block tchmi-box"></div>'),this.__elementTSSecondBlockTemplate=$('<div class="TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-second-block tchmi-timespan-picker-template-template-second-block tchmi-box"></div>');let yearTemplate=$('<div\n class="TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-year-template tchmi-timespan-picker-year-template TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-editable-area tchmi-timespan-picker-template-editable-area TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-spinbox tchmi-timespan-picker-template-spinbox"\n ></div>'),docFragmentYear=this.__addControls("Year",0,1);yearTemplate.append(docFragmentYear),this.__elementTSFirstBlockTemplate.append(yearTemplate);let monthTemplate=$('<div\n class="TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-month-template tchmi-timespan-picker-month-template TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-editable-area tchmi-timespan-picker-editable-area TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-spinbox tchmi-timespan-picker-template-spinbox"\n ></div>'),docFragmentMonth=this.__addControls("Month",0,1);monthTemplate.append(docFragmentMonth),this.__elementTSFirstBlockTemplate.append(monthTemplate);let dayTemplate=$('<div\n class="TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-day-template tchmi-timespan-picker-day-template TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-editable-area tchmi-timespan-picker-template-editable-area TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-spinbox tchmi-timespan-picker-template-spinbox"\n ></div>'),docFragmentDay=this.__addControls("Day",0,1);dayTemplate.append(docFragmentDay),this.__elementTSFirstBlockTemplate.append(dayTemplate);let hourTemplate=$('<div\n class="TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-hour-template tchmi-timespan-picker-hour-template TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-editable-area tchmi-timespan-template-editable-area TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-spinbox tchmi-timespan-picker-template-spinbox"\n ></div>'),docFragmentHour=this.__addControls("Hour",0,1);hourTemplate.append(docFragmentHour),this.__elementTSSecondBlockTemplate.append(hourTemplate);let minuteTemplate=$('<div\n class="TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-minute-template tchmi-timespan-picker-minute-template TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-editable-area tchmi-timespan-picker-template-editable-area TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-spinbox tchmi-timespan-picker-template-spinbox"\n ></div>'),docFragmentMinute=this.__addControls("Minute",0,1);minuteTemplate.append(docFragmentMinute),this.__elementTSSecondBlockTemplate.append(minuteTemplate);let secondTemplate=$('<div\n class="TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-second-template tchmi-timespan-picker-second-template TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-editable-area tchmi-timespan-picker-template-editable-area TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-spinbox tchmi-timespan-picker-template-spinbox"\n ></div>'),docFragmentSecond=this.__addControls("Second",0,1);secondTemplate.append(docFragmentSecond),this.__elementTSSecondBlockTemplate.append(secondTemplate);let millisecondTemplate=$('<div\n class="TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-millisecond-template tchmi-timespan-picker-millisecond-template TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-editable-area tchmi-timespan-picker-template-editable-area TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-spinbox tchmi-timespan-picker-template-spinbox"\n ></div>'),docFragmentMillisecond=this.__addControls("Millisecond",0,3,999);millisecondTemplate.append(docFragmentMillisecond),this.__elementTSTemplate[0].appendChild(this.__elementTSFirstBlockTemplate[0]),this.__elementTSTemplate[0].appendChild(this.__elementTSSecondBlockTemplate[0]),this.__elementTSTemplate[0].appendChild(millisecondTemplate[0]),this.__templates={year:yearTemplate,month:monthTemplate,day:dayTemplate,hour:hourTemplate,minute:minuteTemplate,second:secondTemplate,millisecond:millisecondTemplate};let cancelButton=TcHmi.ControlFactory.createEx("TcHmi.Controls.Beckhoff.TcHmiButton",this.__id+"_cancelButton",{"data-tchmi-text":"%l%Control::TcHmi.Controls.Beckhoff.TcHmiTimespanPicker::Button_Text_Cancel%/l%"},this);if(void 0===cancelButton)throw new Error("Needed Button could not be instantiated");cancelButton.getElement()[0].classList.add("TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-action-button","tchmi-timespan-picker-template-action-button"),this.__elementTSTemplate[0].appendChild(cancelButton.getElement()[0]),cancelButton.getElement()[0].style.clear="both",this.__baseControls.cancelButton=cancelButton;let okButton=TcHmi.ControlFactory.createEx("TcHmi.Controls.Beckhoff.TcHmiButton",this.__id+"_okButton",{"data-tchmi-text":"%l%Control::TcHmi.Controls.Beckhoff.TcHmiTimespanPicker::Button_Text_Ok%/l%"},this);if(void 0===okButton)throw new Error("Needed Button could not be instantiated");okButton.getElement()[0].classList.add("TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-action-button","tchmi-timespan-picker-template-action-button"),this.__elementTSTemplate[0].appendChild(okButton.getElement()[0]),this.__baseControls.okButton=okButton,super.__previnit()}__init(){super.__init();const passiveEventOptions={passive:!0,capture:!1};this.__destroyOnDestroy.push(TcHmi.EventProvider.registerDomEvent(this.__element[0],"mousedown",this.__onMousedown,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__element[0],"focusout",this.__onFocusOut,passiveEventOptions),TcHmi.EventProvider.registerDomEvent(this.__element[0],"keypress",this.__onKeyPress,passiveEventOptions))}__attach(){super.__attach(),!this.__destroyValueSymbolWatch&&this.__valueSymbol&&(this.__destroyValueSymbolWatch=this.__valueSymbol.watch(this.__onValueSymbolWatch)),this.__destroyOnDetach.push(TcHmi.EventProvider.register(this.__id+"_okButton.onPressed",this.__onPressed),TcHmi.EventProvider.register(this.__id+"_cancelButton.onPressed",this.__onPressed),TcHmi.EventProvider.register(this.__baseControls.spinboxes.year?.getId()+".onUserInteractionFinished",this.__onUserInteractionFinished),TcHmi.EventProvider.register(this.__baseControls.spinboxes.month?.getId()+".onUserInteractionFinished",this.__onUserInteractionFinished),TcHmi.EventProvider.register(this.__baseControls.spinboxes.day?.getId()+".onUserInteractionFinished",this.__onUserInteractionFinished),TcHmi.EventProvider.register(this.__baseControls.spinboxes.hour?.getId()+".onUserInteractionFinished",this.__onUserInteractionFinished),TcHmi.EventProvider.register(this.__baseControls.spinboxes.minute?.getId()+".onUserInteractionFinished",this.__onUserInteractionFinished),TcHmi.EventProvider.register(this.__baseControls.spinboxes.second?.getId()+".onUserInteractionFinished",this.__onUserInteractionFinished),TcHmi.EventProvider.register(this.__baseControls.spinboxes.millisecond?.getId()+".onUserInteractionFinished",this.__onUserInteractionFinished),TcHmi.EventProvider.register(this.__baseControls.spinboxes.year?.getId()+".onPropertyChanged<IsValid>",this.__onIsValidChanged),TcHmi.EventProvider.register(this.__baseControls.spinboxes.month?.getId()+".onPropertyChanged<IsValid>",this.__onIsValidChanged),TcHmi.EventProvider.register(this.__baseControls.spinboxes.day?.getId()+".onPropertyChanged<IsValid>",this.__onIsValidChanged),TcHmi.EventProvider.register(this.__baseControls.spinboxes.hour?.getId()+".onPropertyChanged<IsValid>",this.__onIsValidChanged),TcHmi.EventProvider.register(this.__baseControls.spinboxes.minute?.getId()+".onPropertyChanged<IsValid>",this.__onIsValidChanged),TcHmi.EventProvider.register(this.__baseControls.spinboxes.second?.getId()+".onPropertyChanged<IsValid>",this.__onIsValidChanged),TcHmi.EventProvider.register(this.__baseControls.spinboxes.millisecond?.getId()+".onPropertyChanged<IsValid>",this.__onIsValidChanged))}__detach(){super.__detach(),this.__destroyValueSymbolWatch&&(this.__destroyValueSymbolWatch(),this.__destroyValueSymbolWatch=null)}destroy(){this.__keepAlive||(this.__destroyValueSymbolWatch&&(this.__destroyValueSymbolWatch(),this.__destroyValueSymbolWatch=null),this.__valueSymbol&&this.__valueSymbol.destroy(),super.destroy())}__addControls(name,value,zeroPadding,maxValue=null){let spinbox,docFragment=document.createDocumentFragment(),labelTextblock=TcHmi.ControlFactory.createEx("TcHmi.Controls.Beckhoff.TcHmiTextblock",this.__id+"_"+name+"_Label",{"data-tchmi-text-horizontal-alignment":"Center","data-tchmi-text-vertical-alignment":"Center","data-tchmi-text":`%l%Control::TcHmi.Controls.Beckhoff.TcHmiTimespanPicker::Label_Text_${name}s%/l%`},this);if(void 0===labelTextblock)throw new Error("Needed Textblock could not be instantiated");if(labelTextblock.getElement()[0].classList.add("TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-template-label","tchmi-timespan-picker-template-label"),docFragment.appendChild(labelTextblock.getElement()[0]),void 0===TcHmi.Controls.get(this.__id+"_"+name)&&(spinbox=TcHmi.ControlFactory.createEx("TcHmi.Controls.Beckhoff.TcHmiSpinboxInput",this.__id+"_"+name,{"data-tchmi-value":value,"data-tchmi-value-horizontal-alignment":"Center","data-tchmi-auto-focus-out":!0,"data-tchmi-zero-padding":zeroPadding,"data-tchmi-button-position":"PlusTopAndMinusBottom","data-tchmi-min-value":0,"data-tchmi-max-value":maxValue,"data-tchmi-auto-step":!0},this)),!spinbox)throw new Error("Needed Spinbox could not be instantiated");return docFragment.appendChild(spinbox.getElement()[0]),this.__baseControls.spinboxes[name.toLowerCase()]=spinbox,docFragment}__timespanObjectToIso(timespanObject){if(0===timespanObject.years&&0===timespanObject.months&&0===timespanObject.days&&0===timespanObject.hours&&0===timespanObject.minutes&&0===timespanObject.seconds&&0===timespanObject.milliseconds)return"PT0S";let isoString="P";if(timespanObject.years>0&&(isoString+=timespanObject.years+"Y"),timespanObject.months>0&&(isoString+=timespanObject.months+"M"),timespanObject.days>0&&(isoString+=timespanObject.days+"D"),(timespanObject.hours>0||timespanObject.minutes>0||timespanObject.seconds>0||timespanObject.milliseconds>0)&&(isoString+="T"),timespanObject.hours>0&&(isoString+=timespanObject.hours+"H"),timespanObject.minutes>0&&(isoString+=timespanObject.minutes+"M"),timespanObject.seconds>0||timespanObject.milliseconds>0){isoString+=(timespanObject.seconds+timespanObject.milliseconds/1e3).toFixed(3).replace(/\.000$|0+$/,"")+"S"}return isoString}__updateValue(){if(this.__directDisplay&&!this.__showConfirmationButtons){let timespanObject=this.__getTimespanObject(),value=this.__timespanObjectToIso(timespanObject);this.__valueSymbol?this.__valueSymbol.write(value):this.__setValue(value,!1)}}isoToTimespanObject(timespan){let object={years:0,months:0,days:0,hours:0,minutes:0,seconds:0,milliseconds:0},seconds=0,minutes=0,hours=0,days=0,months=0,years=0,isTime=!1,current=timespan.split("");for(let i=0,ii=current.length;i<ii;i++){let num=0,sNum="";for(;current[i]>="0"&&current[i]<="9"||"."===current[i];)sNum+=current[i],i++,num=parseFloat(sNum);switch(current[i]){case"Y":years=num;break;case"D":days=num;break;case"T":isTime=!0;break;case"H":hours=num;break;case"M":isTime?minutes=num:months=num;break;case"S":seconds=num}}object.years=years,object.months=months,object.days=days,object.hours=hours,object.minutes=minutes;let splittedSeconds=seconds.toString().split(".");if(splittedSeconds.length>1){object.seconds=parseInt(splittedSeconds[0],10);let milliseconds=1e3*parseFloat("0."+splittedSeconds[1]);object.milliseconds=milliseconds}else object.seconds=parseInt(splittedSeconds[0],10),object.milliseconds=0;return object}convertToMilliseconds(obj){return 31536e6*obj.years+2592e6*obj.months+864e5*obj.days+36e5*obj.hours+6e4*obj.minutes+1e3*obj.seconds+obj.milliseconds}__onMousedown(event){this.openTimespanPicker()}__onFocusOut(_event){this.__directDisplay&&!this.__showConfirmationButtons&&setTimeout(()=>{let focusedElement=document.activeElement;for(;focusedElement&&focusedElement!==this.__element[0];)focusedElement=focusedElement.parentElement;null===focusedElement&&TcHmi.EventProvider.raise(this.__id+".onUserInteractionFinished")},0)}__onKeyPress(event){this.__directDisplay&&!this.__showConfirmationButtons&&13===event.keyCode&&document.activeElement?.blur()}openTimespanPicker(){if(!this.__directDisplay){if(!this.getIsAttached())return void TcHmi.Log.Controls.error(this,TcHmiTimespanPicker.#tchmiFQN,"Could not open picker overlay. The control needs to be attached to the dom.");TcHmi.TopMostLayer.add(this,this.__elementTSTemplate,{centerHorizontal:!0,centerVertical:!0,removeCb:data=>{data.canceled&&(TcHmi.EventProvider.raise(this.__id+".onCancel"),TcHmi.EventProvider.raise(this.__id+".onUserInteractionFinished"),this.__processValue())}})}}closeTimespanPicker(){this.__elementTSTemplate[0].classList.contains("tchmi-in-topmostlayer")&&TcHmi.TopMostLayer.remove(this,this.__elementTSTemplate),TcHmi.EventProvider.raise(this.__id+".onCancel"),TcHmi.EventProvider.raise(this.__id+".onUserInteractionFinished"),this.__valueSymbol?this.__processValueSymbolCurrentValue():this.__processValue(),this.__setIsEnabledOfOkButton()}__getTimespanObject(){let years=this.__baseControls.spinboxes.year?.getValue(),months=this.__baseControls.spinboxes.month?.getValue(),days=this.__baseControls.spinboxes.day?.getValue(),hours=this.__baseControls.spinboxes.hour?.getValue(),minutes=this.__baseControls.spinboxes.minute?.getValue(),seconds=this.__baseControls.spinboxes.second?.getValue(),milliseconds=this.__baseControls.spinboxes.millisecond?.getValue();return{years:years&&"bigint"!=typeof years?years:0,months:months&&"bigint"!=typeof months?months:0,days:days&&"bigint"!=typeof days?days:0,hours:hours&&"bigint"!=typeof hours?hours:0,minutes:minutes&&"bigint"!=typeof minutes?minutes:0,seconds:seconds&&"bigint"!=typeof seconds?seconds:0,milliseconds:milliseconds&&"bigint"!=typeof milliseconds?milliseconds:0}}__onPressed(event){if(event.name.includes("ok")){let timespanObject=this.__getTimespanObject(),value=this.__timespanObjectToIso(timespanObject);this.__valueSymbol?this.__valueSymbol.write(value):this.__setValue(value,!1),TcHmi.EventProvider.raise(this.__id+".onConfirmed"),TcHmi.EventProvider.raise(this.__id+".onUserInteractionFinished"),TcHmi.TopMostLayer.remove(this,this.__elementTSTemplate)}else event.name.includes("cancel")&&this.closeTimespanPicker()}__onUserInteractionFinished(){this.getShowConfirmationButtons()||this.__updateValue(),this.__setSpinboxesMax()}__onIsValidChanged(){this.__setIsEnabledOfOkButton()}__setIsEnabledOfOkButton(){const validYear=this.__baseControls.spinboxes.year?.getIsValid(),validMonth=this.__baseControls.spinboxes.month?.getIsValid(),validDay=this.__baseControls.spinboxes.day?.getIsValid(),validHour=this.__baseControls.spinboxes.hour?.getIsValid(),validMinute=this.__baseControls.spinboxes.minute?.getIsValid(),validSecond=this.__baseControls.spinboxes.second?.getIsValid(),validMillisecond=this.__baseControls.spinboxes.millisecond?.getIsValid();validYear&&validMonth&&validDay&&validHour&&validMinute&&validSecond&&validMillisecond?this.__baseControls.okButton?.setIsEnabled(!0):this.__baseControls.okButton?.setIsEnabled(!1)}setValue(valueNew){let convertedValue=TcHmi.ValueConverter.toString(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("Value")),this.__setValue(convertedValue)}__setValue(valueNew,process=!0){let convertedValue=TcHmi.ValueConverter.toString(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("Value"),this.__reuseValue()),convertedValue!==this.__value&&(this.__value=convertedValue,void 0!==this.__valueSymbol&&null!==this.__valueSymbol||(TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"Value"}),TcHmi.EventProvider.raise(this.__id+".onValueChanged",this.__value),process&&(this.__processValue(),this.__reuseValue()),this.__processMaxValue(),this.__setSpinboxesMax()))}getValue(){if(void 0!==this.__value)return this.__value?this.__value:"PT0S"}__processValue(){const timespanObject=null!==this.__value&&void 0!==this.__value?this.isoToTimespanObject(this.__value):{years:0,months:0,days:0,hours:0,minutes:0,seconds:0,milliseconds:0};this.__baseControls.spinboxes.year?.setValue(timespanObject.years),this.__baseControls.spinboxes.month?.setValue(timespanObject.months),this.__baseControls.spinboxes.day?.setValue(timespanObject.days),this.__baseControls.spinboxes.hour?.setValue(timespanObject.hours),this.__baseControls.spinboxes.minute?.setValue(timespanObject.minutes),this.__baseControls.spinboxes.second?.setValue(timespanObject.seconds),this.__baseControls.spinboxes.millisecond?.setValue(timespanObject.milliseconds),this.__processTimeUnits()}setDirectDisplay(valueNew){let convertedValue=TcHmi.ValueConverter.toBoolean(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("DirectDisplay")),convertedValue!==this.__directDisplay&&(this.__directDisplay=convertedValue,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"DirectDisplay"}),this.__processDirectDisplay())}getDirectDisplay(){return this.__directDisplay}__processDirectDisplay(){this.__directDisplay?(this.__elementTSTemplate[0].classList.contains("tchmi-in-topmostlayer")&&(TcHmi.TopMostLayer.remove(this,this.__elementTSTemplate),TcHmi.EventProvider.raise(this.__id+".onCancel"),TcHmi.EventProvider.raise(this.__id+".onUserInteractionFinished")),null===this.__elementTSTemplate[0].parentElement&&this.__elementTemplateRoot.append(this.__elementTSTemplate[0]),this.__element[0].classList.add("TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-direct-display"),this.__element[0].setAttribute("tabindex","0")):(this.__elementTSTemplate[0].parentElement===this.__elementTemplateRoot&&this.__elementTemplateRoot.removeChild(this.__elementTSTemplate[0]),this.__element[0].classList.remove("TcHmi_Controls_Beckhoff_TcHmiTimespanPicker-direct-display"),this.__element[0].removeAttribute("tabindex")),this.__processShowConfirmationButtons()}setShowConfirmationButtons(valueNew){let convertedValue=TcHmi.ValueConverter.toBoolean(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("ShowConfirmationButtons")),convertedValue!==this.__showConfirmationButtons&&(this.__showConfirmationButtons=convertedValue,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"ShowConfirmationButtons"}),this.__processShowConfirmationButtons())}getShowConfirmationButtons(){return this.__showConfirmationButtons}__processShowConfirmationButtons(){!1===this.__showConfirmationButtons&&this.__directDisplay?(this.__baseControls.cancelButton&&(this.__baseControls.cancelButton.getElement()[0].style.display="none"),this.__baseControls.okButton&&(this.__baseControls.okButton.getElement()[0].style.display="none")):(this.__baseControls.cancelButton&&(this.__baseControls.cancelButton.getElement()[0].style.display=""),this.__baseControls.okButton&&(this.__baseControls.okButton.getElement()[0].style.display=""))}__processIsEnabled(){super.__processIsEnabled(),this.getIsEnabled()||this.__elementTSTemplate[0].classList.contains("tchmi-in-topmostlayer")&&(TcHmi.TopMostLayer.remove(this,this.__elementTSTemplate),TcHmi.EventProvider.raise(this.__id+".onCancel"),TcHmi.EventProvider.raise(this.__id+".onUserInteractionFinished"))}
/**
* 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.__baseControls.okButton?.setIsEnabled(!this.__isReadOnly);for(const spinbox of Object.values(this.__baseControls.spinboxes))spinbox.setIsReadOnly(this.__isReadOnly??!1)}setMaxValue(valueNew){if(null===valueNew)this.__setMaxValue(valueNew);else if(!this.__REGEX_ISO_8601.test(valueNew))return;this.__setMaxValue(valueNew)}__setMaxValue(valueNew){let convertedValue=TcHmi.ValueConverter.toString(valueNew);null===convertedValue&&(convertedValue=this.getAttributeDefaultValueInternal("MaxValue")),convertedValue!==this.__maxValue&&(this.__maxValue=convertedValue,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"MaxValue"}),this.__processMaxValue())}getMaxValue(){if(void 0!==this.__maxValue)return this.__maxValue}__processMaxValue(){if(this.__setSpinboxesMax(),this.__isMaxReached()&&this.__maxValue)if(this.__valueSymbol){const maxFormat=this.isoToTimespanObject(this.__maxValue);this.__baseControls.spinboxes.year?.setValue(maxFormat.years),this.__baseControls.spinboxes.month?.setValue(maxFormat.months),this.__baseControls.spinboxes.day?.setValue(maxFormat.days),this.__baseControls.spinboxes.hour?.setValue(maxFormat.hours),this.__baseControls.spinboxes.minute?.setValue(maxFormat.minutes),this.__baseControls.spinboxes.second?.setValue(maxFormat.seconds),this.__baseControls.spinboxes.millisecond?.setValue(maxFormat.milliseconds),this.__valueSymbol.write(this.__maxValue,data=>{data.error!==TcHmi.Errors.NONE&&TcHmi.Log.Controls.error(this,TcHmiTimespanPicker.#tchmiFQN,{Attribute:"ValueSymbol",Symbol:this.__valueSymbol?.getExpression().toString()},`Write failed with error: ${TcHmi.Log.buildMessage(data.details)}`)})}else this.__value&&this.__setValue(this.__maxValue,!0)}setTimeUnits(valueNew){let convertedValue=TcHmi.ValueConverter.toObject(valueNew)??this.getAttributeDefaultValueInternal("TimeUnits"),resolverInfo=this.__objectResolvers.get("timeUnits");resolverInfo&&(resolverInfo.watchDestroyer&&resolverInfo.watchDestroyer(),resolverInfo.resolver.destroy());let resolver=new TcHmi.Symbol.ObjectResolver(convertedValue,{parentControl:this,type:this.getAttributeDescription("TimeUnits")?.type});this.__objectResolvers.set("timeUnits",{resolver,watchCallback:this.__onResolverForTimeUnitsWatchCallback,watchDestroyer:resolver.watch(this.__onResolverForTimeUnitsWatchCallback)})}__onResolverForTimeUnitsWatchCallback(data){this.__isAttached||this.__suspendObjectResolver("timeUnits"),data.error===TcHmi.Errors.NONE?tchmi_equal(data.value,this.__timeUnits)||(this.__timeUnits=data.value,TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"TimeUnits"}),this.__processTimeUnits()):TcHmi.Log.Controls.error(this,TcHmiTimespanPicker.#tchmiFQN,{Attribute:"TimeUnits"},`Resolving symbols from object failed with error: ${TcHmi.Log.buildMessage(data.details)}`)}getTimeUnits(){return this.__timeUnits}__processTimeUnits(){this.__templates.year.css("display",this.__timeUnits?.years||0!==this.__baseControls.spinboxes.year?.getValue()?"":"none"),this.__templates.month.css("display",this.__timeUnits?.months||0!==this.__baseControls.spinboxes.month?.getValue()?"":"none"),this.__templates.day.css("display",this.__timeUnits?.days||0!==this.__baseControls.spinboxes.day?.getValue()?"":"none"),this.__templates.hour.css("display",this.__timeUnits?.hours||0!==this.__baseControls.spinboxes.hour?.getValue()?"":"none"),this.__templates.minute.css("display",this.__timeUnits?.minutes||0!==this.__baseControls.spinboxes.minute?.getValue()?"":"none"),this.__templates.second.css("display",this.__timeUnits?.seconds||0!==this.__baseControls.spinboxes.second?.getValue()?"":"none"),this.__templates.millisecond.css("display",this.__timeUnits?.milliseconds||0!==this.__baseControls.spinboxes.millisecond?.getValue()?"":"none")}setValueSymbol(valueNew){let newSymbol=valueNew;if(null===newSymbol){let symbolExpression=this.getAttributeDefaultValueInternal("ValueSymbol");symbolExpression&&(newSymbol=new TcHmi.Symbol(symbolExpression))}this.__valueSymbol!==newSymbol&&(this.__destroyValueSymbolWatch&&(this.__destroyValueSymbolWatch(),this.__destroyValueSymbolWatch=null),this.__valueSymbol&&this.__valueSymbol.destroy(),newSymbol instanceof TcHmi.Symbol?(this.__valueSymbol=newSymbol,this.__isAttached&&(this.__destroyValueSymbolWatch=this.__valueSymbol.watch(this.__onValueSymbolWatch))):null===newSymbol&&(this.__valueSymbol=newSymbol,this.__valueSymbolCurrentValue=null,this.__valueSymbolSchema=null),TcHmi.EventProvider.raise(this.__id+".onPropertyChanged",{propertyName:"ValueSymbol"}),this.__processValueSymbol(),this.__reuseValue(),this.__processMaxValue())}getValueSymbol(){return this.__valueSymbol}getValueSymbolCurrentValue(){return this.__valueSymbolCurrentValue}__destroyValueSymbolWatch=null;__onValueSymbolWatch(data){data.error===TcHmi.Errors.NONE?(this.__valueSymbolCurrentValue!==data.value&&(this.__valueSymbolCurrentValue=data.value,TcHmi.EventProvider.raise(this.__id+".onValueSymbolChanged",this.__valueSymbolCurrentValue)),this.__processValueSymbol()):this.__valueSymbolCurrentValue=null}__processValueSymbol(){if(!this.__valueSymbol)return this.__maxValueSymbol=void 0,void this.__processValueSymbolCurrentValue();this.__valueSymbol.resolveSchema(data=>data.error!==TcHmi.Errors.NONE?void(this.__valueSymbolSchema=null):(this.__valueSymbolSchema=data.schema,void this.__processValueSymbolCurrentValue())),void 0!==this.__valueSymbolSchema&&null!==this.__valueSymbolSchema&&(this.__maxValueSymbol=this.__valueSymbolSchema.formatMaximum),this.__setSpinboxesMax()}__processValueSymbolCurrentValue(){const timespanObject=null!==this.__valueSymbolCurrentValue&&void 0!==this.__valueSymbolCurrentValue?this.isoToTimespanObject(this.__valueSymbolCurrentValue):{years:0,months:0,days:0,hours:0,minutes:0,seconds:0,milliseconds:0};this.__baseControls.spinboxes.year?.setValue(timespanObject.years),this.__baseControls.spinboxes.month?.setValue(timespanObject.months),this.__baseControls.spinboxes.day?.setValue(timespanObject.days),this.__baseControls.spinboxes.hour?.setValue(timespanObject.hours),this.__baseControls.spinboxes.minute?.setValue(timespanObject.minutes),this.__baseControls.spinboxes.second?.setValue(timespanObject.seconds),this.__baseControls.spinboxes.millisecond?.setValue(timespanObject.milliseconds),this.__processMaxValue()}__processMaxSymbolValue(){if(this.__isMaxReached()&&this.__maxValue){const maxFormat=this.isoToTimespanObject(this.__maxValue);this.__baseControls.spinboxes.year?.setValue(maxFormat.years),this.__baseControls.spinboxes.month?.setValue(maxFormat.months),this.__baseControls.spinboxes.day?.setValue(maxFormat.days),this.__baseControls.spinboxes.hour?.setValue(maxFormat.hours),this.__baseControls.spinboxes.minute?.setValue(maxFormat.minutes),this.__baseControls.spinboxes.second?.setValue(maxFormat.seconds),this.__baseControls.spinboxes.millisecond?.setValue(maxFormat.milliseconds)}}getMaxValueSymbol(){return this.__maxValueSymbol}__isMaxReached(){let maxValue;if(this.__maxValue)maxValue=this.__maxValue;else{if(!this.__maxValueSymbol)return!1;maxValue=this.__maxValueSymbol}const timespanObject=this.isoToTimespanObject(maxValue),maxMilliseconds=this.convertToMilliseconds(timespanObject),currentTimespanObject=this.__getTimespanObject();return maxMilliseconds-this.convertToMilliseconds(currentTimespanObject)<0}__reuseValue(){this.__valueSymbol?this.__processValueSymbol():this.__value&&this.__processValue(),this.__processMaxValue()}__setSpinboxesMax(){let maxValue;if(this.__maxValue)maxValue=this.__maxValue;else{if(!this.__maxValueSymbol)return this.__baseControls.spinboxes.year?.setMaxValue(null),this.__baseControls.spinboxes.month?.setMaxValue(null),this.__baseControls.spinboxes.day?.setMaxValue(null),this.__baseControls.spinboxes.hour?.setMaxValue(null),this.__baseControls.spinboxes.minute?.setMaxValue(null),this.__baseControls.spinboxes.second?.setMaxValue(null),void this.__baseControls.spinboxes.millisecond?.setMaxValue(null);maxValue=this.__maxValueSymbol}const maxTimespanObject=this.isoToTimespanObject(maxValue),maxMilliseconds=this.convertToMilliseconds(maxTimespanObject),currentTimespanObject=this.__getTimespanObject();let remaining=maxMilliseconds-this.convertToMilliseconds(currentTimespanObject);const maxYears=Math.floor(remaining/31536e6);this.__baseControls.spinboxes.year?.setMaxValue(currentTimespanObject.years+maxYears);const maxMonths=Math.floor(remaining/2592e6);this.__baseControls.spinboxes.month?.setMaxValue(currentTimespanObject.months+maxMonths);const maxDays=Math.floor(remaining/864e5);this.__baseControls.spinboxes.day?.setMaxValue(currentTimespanObject.days+maxDays);const maxHours=Math.floor(remaining/36e5);this.__baseControls.spinboxes.hour?.setMaxValue(currentTimespanObject.hours+maxHours);const maxMinutes=Math.floor(remaining/6e4);this.__baseControls.spinboxes.minute?.setMaxValue(currentTimespanObject.minutes+maxMinutes);const maxSeconds=Math.floor(remaining/1e3);this.__baseControls.spinboxes.second?.setMaxValue(currentTimespanObject.seconds+maxSeconds),this.__baseControls.spinboxes.millisecond?.setMaxValue(currentTimespanObject.milliseconds+remaining)}}})();TcHmi.Controls.registerEx("TcHmiTimespanPicker","TcHmi.Controls.Beckhoff",TcHmiTimespanPicker,{injectInGlobalObject:!0});export{TcHmiTimespanPicker as Control};