{"version":3,"sources":["webpack:///$_lazy_route_resource lazy namespace object","webpack:///src/app/admin-factors.service.ts","webpack:///src/app/admin-factors/admin-factors.component.ts","webpack:///src/app/admin-factors/admin-factors.component.html","webpack:///src/app/app-routing.module.ts","webpack:///src/app/app.component.ts","webpack:///src/app/app.component.html","webpack:///src/app/app.module.ts","webpack:///src/app/authService/auth.service.ts","webpack:///src/app/calculationModel/adminFactors.ts","webpack:///src/app/calculationModel/calculationEnums.ts","webpack:///src/app/calculationModel/calculator.ts","webpack:///src/app/calculationModel/country-data-store.ts","webpack:///src/app/calculationModel/earthPressure.ts","webpack:///src/app/calculationModel/fortracBlockCalculator.ts","webpack:///src/app/calculationModel/fortracGabionCalculator.ts","webpack:///src/app/calculationModel/fortracNaturePriceCalculator.ts","webpack:///src/app/calculationModel/fortracPanelCalculator.ts","webpack:///src/app/calculationModel/inputModelMapper.ts","webpack:///src/app/calculationModel/kreqTables.ts","webpack:///src/app/calculationModel/numpyJs.js","webpack:///src/app/calculationModel/priceCalculator.ts","webpack:///src/app/calculationModel/prices.ts","webpack:///src/app/calculationModel/productsTables.ts","webpack:///src/app/calculationModel/reductionFactorTables.ts","webpack:///src/app/calculationModel/subSystemMapper.ts","webpack:///src/app/calculationModel/unitSystem.ts","webpack:///src/app/configuration.service.ts","webpack:///src/app/fading-image/fading-image.component.ts","webpack:///src/app/fading-image/fading-image.component.html","webpack:///src/app/login/login.component.ts","webpack:///src/app/overview-chart/overview-chart.component.ts","webpack:///src/app/overview-chart/overview-chart.component.html","webpack:///src/app/panel-wrapper/panel-wrapper.component.ts","webpack:///src/app/prices.service.ts","webpack:///src/app/prices/prices.component.ts","webpack:///src/app/prices/prices.component.html","webpack:///src/app/product-result/product-result.component.ts","webpack:///src/app/product-result/product-result.component.html","webpack:///src/app/result-view/result-view.component.ts","webpack:///src/app/result-view/result-view.component.html","webpack:///src/app/sign-in/sign-in.component.ts","webpack:///src/app/sign-in/sign-in.component.html","webpack:///src/app/sign-in/sign-in.model.ts","webpack:///src/app/sub-system-selection/sub-system-selection.component.ts","webpack:///src/app/sub-system-selection/sub-system-selection.component.html","webpack:///src/app/system-to-image-path.pipe.ts","webpack:///src/app/tooltip-wrapper/tooltip-wrapper.component.ts","webpack:///src/app/tooltip-wrapper/tooltip-wrapper.component.html","webpack:///src/app/translate.extension.ts","webpack:///src/app/user-input/user-input.component.ts","webpack:///src/app/user-input/user-input.component.html","webpack:///src/app/user-roles.config.ts","webpack:///src/app/user.service.ts","webpack:///src/environments/environment.ts","webpack:///src/main.ts"],"names":["webpackEmptyAsyncContext","req","Promise","resolve","then","e","Error","code","keys","module","exports","id","AdminFactorsService","http","configurationsUrl","currentAdminFactors","refreshAdminFactors","queryUrl","get","pipe","res","subscribe","adminFactors","next","newAdminFactors","putUrl","put","providedIn","AdminFactorsComponent","adminFactorsService","options","adminFactorFields","key","type","modelOptions","updateOn","templateOptions","label","required","lowerOrEqual10","lowerOrEqual6","lowerOrEqual3","tempAdminFactors","isNaN","updateAdminFactors","onAdminFactorsChange","selector","templateUrl","styleUrls","routes","path","component","AppRoutingModule","forRoot","imports","AppComponent","HttpLoaderFactory","AppModule","provide","multi","useFactory","deps","wrappers","name","loader","defaultLanguage","withComponents","declarations","providers","bootstrap","AuthService","userService","initialSession","getUserSession","isLoggedIn","triggerRoleChange","username","password","post","response","status","userSession","userDetails","sessionStorage","setItem","JSON","stringify","exception","console","warn","error","removeItem","getUserSessionFromStorage","getItem","parse","role","defaultRole","changeRole","AdminFactors","NatureSystemModel","NatureSeedingMethod","GabionSystemModel","BlockOptions","PricePositionLabel","Product","GabionConstructionMethod","GabionSubsystem","Calculator","inputModel","prices","inputModelToCalculate","earthPressure","meanValues","kreqTables","reqReinforcementLengthAtTheBase","interpolatedY","effectiveHeight","maxRequiredStressAtTheBaseOfSlope_Q","noLabel","unitWeightDesign","designValues","requiredEarthPressure","minLengthOverallStabilityInclSafetyFactor","minLengthDirectSlicing","requiredReinforcementLenghtAtTheBase","normalizedRequiredStressPerLayer_Q","metricInputValues","height","verticalLayerDistance","maxRequiredStressAtTheBaseOfSlope","normalizedRequiredStressPerLayer","shouldAllLayersHaveSameLength","shouldAllGeoGridsHaveSameLength","layers","generateLayers","adjustLayers","adjustBlockResults","productsTable","setProductsResultLengthAndCoordinates","products","resultLayers","filter","x","lFinal","overburden","minOverburdenHeight","map","layer","firstLayer","length","lengthFactor","language","Foot","j","prevLayer","rreq_final","petPva","i","product","calculatedProducts","designStrength","productLine","resultLength","lFinalRounded","resultTotalLength","uniformVerticalSurcharge","val1","val2","Math","tan","slopeAngle","PI","coordinates","val_2","val3","val_1","val_3","lengthDerived","value","valueToCeil","abs","ceil","blockResult","meanValue","find","blockId","undefined","secondValue","meanValueStrength","blockLayers","secondMeanValue","reduce","prevValue","currentValue","forEach","currentLayer","layerIndex","rreq_g_q","rreq_g","rreqValue","influencingDepthOfVerticalSurcharge","rreq","round","ceilInExcelWay","numberOfGeogrids","blockResults","calculateMean","blockSum","push","firstLayerLength","lenghtReductionFactorFU","Array","lengthDerive","countries","code3","number","EarthPressure","cos_phi_alpha","cos","frictionAngleDesignRad","slopeAngleDegreeSecond","sin_phi_plus_delta_","sin","wallFrictionRad","frictionAngleCharacteristicRad","cos_alpha_beta","cos_alpha","sqrt","pow","FortracBlockCalculator","frontArea","geoGridsSummary","quantity","sum","current","frictionConnecPlus6Perc","price","frictionConnecTotal","returnValue","description","position","Geogrid","isHollowBlock","systemModelBlock","HollowBlockFacing","block","allanBlock","inorBloc","Block","trickleProtection","NonWovenFabric","ErosionProtection","isValid","errorMessage","SolidBlockFacing","details","getValidationResult","positions","geoGrid","getGeoGridLine","erosion","getErosionProtection","getBlockLine","sumPrice","FortracGabionCalculator","systemModelGabion","TieRodSystem","subsystemGabion","SteelElements","T1Dach","gabionAnchor","Type1Dach","Type2EMEEA","FullGabionFacing","GabionBasket","gabion","_200x100x100","constructionMethodGabion","WithoutIntegratedFormwork","isGalvanized","HalfGabionFacing","steelLattice","galvanized","steel05","steel06","Steel","wrapAroundPlus6Perc","wrapAroundTotal","geogrid","steel","getSteelLine","erosionProtection","gabionBasket","getGabionBasketLine","steelElements","getSteelElementsLine","Gabion","FortracNaturePriceCalculator","seedingMethod","NotNecessary","HydroSeeding","fortrac3D","_23142Gr","isSteelstab","systemModelNature","IntegratedCorrosinProtectedFormWork","steelstabPlus6Perc","steelStabTotal","WithoutIntegratedFormWork","priceToCalculate","getErosionProtectionLine","Nature","FortracPanelCalculator","Panel","panel","passive","ConcretePanels","InputModelMapper","masterConfigurationId","calculationCode","toReturn","systemModelFortracNature","getNatureSystemModelNumber","systemModelFortracGabion","getGabionSystemModelNumber","systemModelFortracBlock","getSystemModelBlockNumber","getSeedingMethodNumber","constructionMethodFortracGabion","getConstructionMethodGabionNumber","subSystemFortracGabion","getSubSystemGabionNumber","selectedSystem","getProductNumber","getVerticalLayerNumber","priceId","wallFriction","frictionAngle","unitWeight","trafficLoad","materialPartialSafetyFactor","designLife","frictionAngleCharacteristics","frictionAngleCharacteristic","unitWeightCharacteristic","grainSizeDistribution","phValueOfFillingSoil","widthOfUniformVerticalSurcharge","title","companyName","emailAddress","phoneNumber","moreInformationNeeded","contactName","contactLastName","userComment","chartDataJson","unitSystem","contactCountry","customer","isImp","pressureFactor","Pressure","weightFactor","Weight","frictionAngleDesign","productString","slopeAngleDegreeFirst","uniformVerticalSurchargeDesignValue","angleOfInclinationOfSlipSurfaces","angleOfInclinationOfSlipSurfacesRad","config","isDefault","getNatureSystemModelByNumber","getGabionSystemModelByNumber","getSystemModelBlockByNumber","getSeedingMethodByNumber","getConstrcutionMethodGabionByNumber","getSubSystemGabionByNumber","getProductByNumber","getVerticalLayerDistanceByNumber","languageCode","hueskerInternal","val","productSettingMapping","natureSystemModelMapping","lang","subSystemGabionMapping","constructionMethodGabionMapping","seedingMethodMapping","systemModelBlockMapping","gabionSystemModelMapping","Conventional","IntegratedLostFormwork","T2EEMEA","KreqTables","regression_helpvalues","index","x2","x3","x4","kreq_lines","beta","jd_25","jd_var","jd_30","jd_35","line","jd_325","fuckLR","globals","isUndefined","o","isNull","isNullOrUndefined","isValue","started","startCallbacks","onStartup","cb","setTimeout","startup","callbacks","l","document","addEventListener","readyState","window","attachEvent","ss","init","ready","n","withValue","d","enumerable","writable","configurable","Object","__typeName","__baseType","clearKeys","Object$clearKeys","keyExists","Object$keyExists","Object$keys","getKeyCount","Object$getKeyCount","count","Boolean","Boolean$parse","s","toLowerCase","Number","Number$parse","indexOf","endsWith","parseFloat","parseInt","prototype","format","Number$format","toString","_netFormat","localeFormat","toLocaleString","_commaFormat","Number$_commaFormat","groups","decimal","comma","decimalPart","decimalIndex","substr","negative","startsWith","groupIndex","groupSize","done","startIndex","part","Number$_netFormat","useLocale","nf","CultureInfo","CurrentCulture","numberFormat","InvariantCulture","precision","fs","charAt","padLeft","toUpperCase","toExponential","numberDecimalDigits","toFixed","numberDecimalSeparator","numberGroupSizes","numberGroupSeparator","currencyDecimalDigits","currencyDecimalSeparator","currencyGroupSizes","currencyGroupSeparator","String","currencyNegativePattern","currencyPositivePattern","percentDecimalDigits","percentDecimalSeparator","percentGroupSizes","percentGroupSeparator","percentNegativePattern","percentPositivePattern","Empty","compare","String$compare","s1","s2","ignoreCase","compareTo","String$compareTo","concat","String$concat","arguments","join","call","String$endsWith","suffix","equals","String$equals1","_format","String$_format","values","_formatRE","replace","str","m","formatSpec","formatIndex","substring","String$format","fromChar","String$fromChar","ch","htmlDecode","String$htmlDecode","div","createElement","innerHTML","textContent","innerText","htmlEncode","String$htmlEncode","appendChild","createTextNode","indexOfAny","String$indexOfAny","chars","endIndex","insert","String$insert","valueOf","isNullOrEmpty","String$isNullOrEmpty","isNullOrWhiteSpace","String$isNullOrWhiteSpace","trim","lastIndexOfAny","String$lastIndexOfAny","String$localeFormat","String$padLeft","totalWidth","padRight","String$padRight","remove","String$remove","replaceAll","String$replaceAll","oldValue","newValue","split","String$startsWith","prefix","String$trim","trimEnd","trimStart","String$trimEnd","String$trimStart","__interfaces","IEnumerable","defineProperty","Array$add","item","Array$addRange","items","apply","Array$aggregate","seed","callback","instance","Array$clear","Array$clone","Array$contains","Array$dequeue","shift","Array$enqueue","_queue","Array$peek","every","Array$every","Array$extract","slice","Array$filter","filtered","Array$forEach","Array$getEnumerator","ArrayEnumerator","Array$groupBy","add","Array$index","Array$indexOf","Array$insert","splice","Array$insertRange","unshift","Array$map","mapped","Array$parse","eval","Array$remove","Array$removeAt","Array$removeRange","some","Array$some","toArray","Array$toArray","obj","RegExp","RegExp$parse","endSlashIndex","lastIndexOf","expression","flags","Date","empty","get_now","Date$get_now","get_today","Date$get_today","getFullYear","getMonth","getDate","isEmpty","Date$isEmpty","Date$format","toDateString","toTimeString","Date$localeFormat","toLocaleDateString","toLocaleTimeString","Date$_netFormat","dt","dtf","dateFormat","longDatePattern","shortTimePattern","dateTimePattern","shortDatePattern","longTimePattern","gmtDateTimePattern","universalDateTimePattern","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","getUTCMilliseconds","sortableDateTimePattern","re","sb","StringBuilder","lastIndex","match","exec","append","dayNames","getDay","shortDayNames","monthNames","shortMonthNames","getHours","getMinutes","getSeconds","amDesignator","pmDesignator","getMilliseconds","getTimezoneOffset","floor","timeSeparator","parseDate","Date$parse","t","popStackFrame","Error$popStackFrame","stack","fileName","lineNumber","stackFrames","currentFrame","pattern","nextFrame","nextFrameParts","createError","Error$createError","message","errorInfo","innerException","v","Debug","writeln","Debug$writeln","text","debug","log","opera","postError","_fail","Debug$_fail","assert","Debug$assert","condition","confirm","fail","Debug$fail","Type","Function","__Namespace","__namespace","getName","registerNamespace","Type$registerNamespace","__namespaces","__rootNamespaces","ns","nameParts","nso","registerClass","Type$registerClass","baseType","interfaceType","constructor","__class","__basePrototypePending","registerInterface","Type$createInterface","__interface","registerEnum","Type$createEnum","field","__enum","__flags","setupBase","Type$setupBase","memberName","memberValue","resolveInheritance","initializeBase","Type$initializeBase","args","callBaseMethod","Type$callBaseMethod","baseMethod","get_baseType","Type$get_baseType","get_fullName","Type$get_fullName","get_name","Type$get_name","fullName","nsIndex","getInterfaces","Type$getInterfaces","isInstanceOfType","Type$isInstanceOfType","getInstanceType","isAssignableFrom","Type$isAssignableFrom","interfaces","contains","isClass","Type$isClass","isEnum","Type$isEnum","isFlags","Type$isFlags","isInterface","Type$isInterface","isNamespace","Type$isNamespace","object","canCast","Type$canCast","safeCast","Type$safeCast","Type$getInstanceType","ctor","ex","getType","Type$getType","typeName","__typeCache","Type$parse","Delegate","Delegate$","_contains","Delegate$_contains","targets","method","_create","Delegate$_create","delegate","clone","_targets","create","Delegate$create","combine","Delegate$combine","delegate1","delegate2","targets1","targets2","Delegate$remove","createExport","Delegate$createExport","multiUse","deleteExport","Delegate$deleteExport","clearExport","Delegate$clearExport","CultureInfo$","naNSymbol","negativeSign","positiveSign","negativeInfinityText","positiveInfinityText","percentSymbol","currencySymbol","dateSeparator","firstDayOfWeek","minimizedDayNames","IEnumerator","IEnumerator$","get_current","moveNext","reset","getEnumerator","ss_IEnumerator$getEnumerator","IEnumerable$","ArrayEnumerator$","array","_array","_index","ArrayEnumerator$moveNext","ArrayEnumerator$reset","IDisposable","IDisposable$","dispose","StringBuilder$","_parts","StringBuilder$append","appendLine","StringBuilder$appendLine","clear","StringBuilder$clear","StringBuilder$toString","EventArgs","EventArgs$","XMLHttpRequest","progIDs","xmlHttp","ActiveXObject","parseXml","markup","DOMParser","domParser","parseFromString","xmlDOM","async","loadXML","setProperty","CancelEventArgs","CancelEventArgs$","cancel","Tuple","first","second","third","Observable","_v","_observers","getValue","_captureObservers","setValue","observers","_invalidateObservers","_observerStack","_observerRegistration","pop","registerObserver","registeredObservers","observerCount","observer","len","invalidateObserver","ObservableCollection","_items","get_item","set_item","_updated","get_length","removeAt","Task","result","_continuations","get_completed","continueWith","continuation","self","doneCallback","failCallback","_update","continuations","c","_join","tasks","any","interval","joinTask","seen","timeout","all","delay","timerTask","Deferred","task","reject","IApplication","IContainer","IObjectFactory","IEventManager","IInitializable","numpy","linspace","numpy$linspace","start","stop","num","tmp","step","logspace","numpy$logspace","endpoint","numericBase","y","power","numpy$power","bases","exponents","basesType","exponentsType","basesArray","ret","baseArray","bbase","exponent","exponentsArray","exp","numpy$exp","inputarray","input","arange","numpy$arange","opt1","opt2","opt3","zeros","numpy$zeros","shape","shapeArray","shapeObjectArray","mult","retArray","_grouparray","_inversearray","ones","numpy$ones","polyfit","numpy$polyfit","deg","data","PolyRegression","Pair","polysolve","Matrix","coefs","computeCoefficients","left","right","temp","numpy$array","a","getShape","numpy$getShape","reshape","numpy$reshape","assign","objlist","_plainarray","plain","fixedshape","_isAligned","numpy$_isAligned","b","A_shape","B_shape","ravel","numpy$ravel","gettype","numpy$gettype","paramType","numpy$_inversearray","newarray","numpy$_plainarray","list","$enum1","numpy$_grouparray","group","size","newgroupcount","newgroup","getrandom","numpy$getrandom","random","singlesize","retsinglearray","sizeArray","dot","numpy$dot","b_ndim","b_rows","b_cols","br","bc","a_ndim","a_rows","a_cols","ar","ac","_dotMatrix","numpy$add","_addMatrix","_tupleCombination","numpy$_tupleCombination","cardinality","each","arrayValue","_getMatrixFromArray","numpy$_getMatrixFromArray","matrix","numElements","m_shape","Nx","Ny","plainarray","pos","numpy$_dotMatrix","nDimA","ndim","nDimB","matrixC","A_ar_ac","B_ac_ar","numpy$_addMatrix","r","B_br_bc","concatenate","numpy$concatenate","pparams","objArray","numpy$sin","numpy$cos","numpy$tan","arcsin","numpy$arcsin","asin","arccos","numpy$arccos","acos","arctan","numpy$arctan","atan","hypot","numpy$hypot","xtype","ytype","yshape","xshape","xdata","ydata","arctan2","numpy$arctan2","atan2","degrees","numpy$degrees","radians","numpy$radians","rad2deg","numpy$rad2deg","deg2rad","numpy$deg2rad","__$$tmP","thesize","dim","isArray","shp","acum","transpose","numpy$_resize","numpy$_transpose","_data","_dest","recipient","sh","reverse","dstStride","strides","generatelist","transport","numpy$_flatten","increment","dest","positionArray","np","pi","range","dtype","ndarray","PolyRegression_Matrix","_pairs","PolyRegression_Matrix$computeCoefficients","degree","rs","mm","mpc","pr","get_x","get_y","_echelonize","terms","mc","PolyRegression_Matrix$eval","PolyRegression_Matrix$_echelonize","A","k","swap","_divide","_eliminate","PolyRegression_Matrix$_divide","q","PolyRegression_Matrix$_eliminate","PolyRegression_Pair","_x","_y","PolyRegression_Pair$get_x","set_x","PolyRegression_Pair$set_x","PolyRegression_Pair$get_y","set_y","PolyRegression_Pair$set_y","PriceCalculator","keyGetter","Map","collection","set","layersWithResult","groupedByProduct","groupBy","pricesTable","prodGroup","noLayers","frictionConnec","total","wrapAround","steelStab","steelstab","calculateFrontArea","nature","naturePrice","calculate","gabionPrice","blockPrice","panelPrice","Prices","fortrac","MDT35","MDT55","MDT80","MDT110","MDT150","MDT200","T35","T55","T80","T110","T150","T200","ProductsTable","reductionFactorTables","shortTermStrength","A1","getAValue","A2","A3","A4","A5","color","calculateDesignStrengths","productId","aValueType","tableLines","A1_1year","A1_10year","A1_60year","A1_120year","A2_FineGrain","A2_MixGrain","A2_CoarseGrain","A4_Alkaline","A4_Acid","A4_Neutral","ReductionFactorTables","strength","SubSystemMapper","natureSubsystem","gabionSubsystem","subsystem","UnitSystem","UnitType","MetricToImpFactors","ImpToMetricFactors","ConfigurationService","pricesService","currentCalculation","currentGroups","currentInputModel","currentResultSet","currentCalculationCode","refreshGroups","newInputModel","calc","resArray","errorMsg","alert","cfg","postUrl","dto","newTitle","Meter","isInputDataValid","setInputMetricInputValuesToCalculate","enrichedInputModel","calculateHelpValues","calculator","getPriceById","calculatePricesAndSetResultSet","priceCalc","volumeAndLength","calculateVolumeAndLengths","productPriceDetails","volume","maxLength","averageLength","averageLenght","minLength","frontHeight","sortedHeightsAndLength","sort","isZeroOrNull","getAngleOfInclinationOfSlipSurfaces","angleOfInclinationOfSlipSurfacecesRad","callbackOnSuccess","currentEmbankmentvalues","priceIndication","currentPriceIndication","currentChartDataJson","FadingImageComponent","LoginComponent","OverviewChartComponent","configurationService","translate","initLang","onLangChange","configureChart","labelHeight","instant","labelChart","labelLength","layerLabel","labelLoad","labelHeightOfWall","labelInclinationWallFront","resultArray","factor","firstPoint","seriesType","totalLength","unit","labelLayer","secondPoint","newSerie","embankmentSeries","inclination","firstX","loadSeries","chart","legend","enabled","credits","tooltip","formatter","point","plotOptions","series","marker","yAxis","min","max","xAxis","getSeries","copyStr","copy","PanelWrapperComponent","template","read","PricesService","pricesUrl","refreshPrices","element","blockInorBlock","blockAllanBlock","trickleProtectionFortrac3D","trickleProtection23142Gr","trickleProtectionNonWovenFabric","steelLatticeSteel05","steelLatticeSteel06","steelLatticeSteelGalvanized","gabionAnchorType1DACH","gabionAnchorType2EMEEA","panelPassive","fortrac35MDT","fortrac55MDT","fortrac80MDT","fortrac110MDT","fortrac150MDT","fortrac200MDT","fortrac35T","fortrac55T","fortrac80T","fortrac110T","fortrac150T","fortrac200T","url","getPriceByLine","allPrices","body","getLineByPrice","PricesComponent","priceService","newCalculation","calcName","form","selectedCalculation","editPricesFrom","newCalculationName","selectedCalculationOrig","isAdmin","fortracProducts","expressionProperties","trickleAndSteelLattice","gabions","blockAndPanel","priceIdToSet","currentRole","setIsAdmin","availablePrices","priceToSet","onSelectedCalculationChanged","updatePrice","newName","isNewCalculationButtonBusy","isNameExisting","createRes","isExisting","selectedPrices","areEqual","hasCalculationValueChanged","admin","deleteSelectedCalculation","createNewCalculation","submit","onPriceChange","ProductResultComponent","productSelected","shouldPricesShown","onSelectionChanged","selectedProduct","pricePositions","emit","ResultViewComponent","showSubSystemSelectionRequested","userRoles","SignInComponent","modalService","authService","formOptions","loading","signInForm","signInModel","signInFields","getFieldConfigs","modalRef","show","signInTemplate","modalOnHideSubscription","unsubscribe","onHide","resetForm","hide","resetModel","event","preventDefault","signIn","SignInModel","attributes","autocomplete","validation","messages","SubSystemSelectionComponent","selectedSubSystemId","hollow","isSelected","bulletPoints","image","solid","entries","tieRod","halfGabion","fullGabion","integratedFramework","withoutIntegratedFramework","integratedLostFramework","$event","selectedSubId","selectedSubsystem","getGabionSubsystem","getGabionSubsystemId","getBlockSubsystems","getBlockSubsystemId","getNatureSubsystems","getNatureSubsystemId","SystemToImagePathPipe","system","subSystem","pure","TooltipWrapperComponent","TranslateExtension","to","_translated","stream","registerTranslateExtension","validationMessages","extensions","extension","subSystemModalRef","UserInputComponent","route","clipboardService","dataPrivacyAccepted","selectConfigForm","availableGroups","selectedGroup","newSubCalcName","contact","generalInput","systemConfig","inputSafety","inputSoilParameterForm","inputMainFieldsForm","contactOptions","formState","disabled","inputSoilParameter","validators","between20and45","control","between17and23","_fields","change","isAlkaline","valueToSet","patchValue","inputSafetyFactor","between1and125","between1and15","between1and14","fillingSoilFields","readonly","hidden","surchargeFields","between0and52","geometryFields","between1and10","between45and90","generalInputFields","isPET","optionField","formControl","systemConfigFields","valueProp","labelProp","hideExpression","model","inputMainFields","inputContactData","ip","test","phone","rows","subSystems","subSystemName","labelYes","labelNo","calcRelevantFields","isCreatingButtonProcessing","isCreateButtonVisible","selectedSystemAndSubSystem","langId","snapshot","queryParams","getDefaultInputModel","setLanguage","inputContactModelChange","initOptionLabelTranslation","codeLoaded","valueChanges","configGroup","calcTitleToSet","subCalculations","availableCalculations","newResult","productPrices","rowData","newCode","disable","enable","selectedConfig","refreshCalculationById","availableConfigGroups","newCalc","newModel","getInputModel","setNewInputModel","recalculate","columnDefs","headerName","resizable","modelChange","use","verticalLayerDistanceOptions","optionFielVerticalLayerDistance","phOptions","optionFieldphValueOfFillingSoil","designLifeOptions","designLifeOptionField","grainSizeDistributionOptions","grainSizeDistOptionField","systemModelOptions","systemModelOptionField","seedingMethodOptions","seedingMethodOptionField","systemModelGabionOptions","systemModelGabionOptionField","gabionConstructionOptions","gabionConstrcutionField","blockFacingoptions","blockFacingOptionField","roleOptions","roleOptionField","yesNoOptions","yesNoOptionField","setOptionsetLabels","refreshCalculationByCode","decimalSeperator","thousandSeperator","acc","row","alertString","getBlockSubsystem","getNatureSubsystem","checkAndSetSystemOrSubSystemChange","getSubsystemName","atLeastOneCalculationRelevantError","hasAtLeastOneCalcRelevantFieldsChanged","languageId","queryParamMap","params","isLoggedInSubscription","loggedInState","roleSubscription","canSaveConfig","controls","prev","ctrl","validationErrorsForCalcRelevantFields","errors","oldconfig","oldConfig","newConfig","oldCfg","newCfg","gridApi","api","setColumnDefs","selectedProductInTable","hasRoleChanged","partner","elementToRemove","isValidationErrorCalculationRelevant","atLeastOneRelevantFieldChanged","showSubsystemSelection","showSubsystemSelectionDialog","templateSubsystem","isUpdate","showModal","getConfig","sendEmail","updateConfiguration","createNewConfiguration","currentLang","masterId","createNewSubConfiguration","changeEvent","nextId","openLoginModal","signOut","signInComponent","ngbNav","select","onNavChange","Document","UserRoles","UserService","newRole","environment","production","bootstrapModule","err"],"mappings":"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","file":"main-es5.js","sourcesContent":["function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"./$$_lazy_route_resource lazy recursive\";","import { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { HttpClient } from \"@angular/common/http\";\r\nimport { tap, map } from 'rxjs/operators';\r\nimport { AdminFactors } from './calculationModel/adminFactors';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AdminFactorsService {\r\n //private configurationsUrl = \"api/AdminFactors\";\r\n private configurationsUrl = \"AdminFactors\";\r\n\r\n currentAdminFactors: BehaviorSubject;\r\n\r\n refreshAdminFactors():void{\r\n const queryUrl = `${this.configurationsUrl}`;\r\n\r\n this.http.get(queryUrl).pipe(tap(res =>{\r\n\r\n }),\r\n map(res =>{\r\n return res as AdminFactors;\r\n })).subscribe(adminFactors =>{\r\n this.currentAdminFactors.next(adminFactors);\r\n })\r\n }\r\n\r\n updateAdminFactors(newAdminFactors:AdminFactors):void{\r\n const putUrl = `${this.configurationsUrl}`;\r\n\r\n this.http.put(putUrl, newAdminFactors)\r\n .pipe(tap(res =>{\r\n }),\r\n map(res =>{\r\n return res as AdminFactors;\r\n }))\r\n .subscribe(res => {\r\n this.currentAdminFactors.next(res)\r\n });\r\n }\r\n\r\n constructor(private http:HttpClient) { \r\n this.currentAdminFactors = new BehaviorSubject(null);\r\n this.refreshAdminFactors();\r\n }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\nimport { FormlyFormOptions, FormlyFieldConfig } from '@ngx-formly/core';\nimport { AdminFactorsService } from '../admin-factors.service';\nimport { AdminFactors } from '../calculationModel/adminFactors';\n\n\n@Component({\n selector: 'app-admin-factors',\n templateUrl: './admin-factors.component.html',\n styleUrls: ['./admin-factors.component.css']\n})\nexport class AdminFactorsComponent implements OnInit {\n\n options: FormlyFormOptions = {};\n\n adminFactors:AdminFactors;\n\n adminFactorFields: FormlyFieldConfig[] = [\n {\n key: 'lowerOrEqual3',\n type: 'input',\n modelOptions: {\n updateOn: 'blur',\n },\n templateOptions: {\n label: '<= 3m',\n type: 'number',\n required: true,\n },\n },\n {\n key: 'lowerOrEqual6',\n type: 'input',\n modelOptions: {\n updateOn: 'blur',\n },\n templateOptions: {\n label: '<= 6m',\n type: 'number',\n required: true,\n },\n },\n {\n key: 'lowerOrEqual10',\n type: 'input',\n modelOptions: {\n updateOn: 'blur',\n },\n templateOptions: {\n label: '<= 10m',\n type: 'number',\n required: true,\n },\n },\n ];\n\n\n constructor(private adminFactorsService:AdminFactorsService) {\n this.adminFactors = new AdminFactors();\n\n this.adminFactorsService.currentAdminFactors.subscribe(adminFactors =>{\n\n this.adminFactors.lowerOrEqual10 = adminFactors.lowerOrEqual10;\n this.adminFactors.lowerOrEqual6 = adminFactors.lowerOrEqual6;\n this.adminFactors.lowerOrEqual3 = adminFactors.lowerOrEqual3;\n })\n }\n\n onAdminFactorsChange(): void {\n\n const tempAdminFactors = new AdminFactors();\n\n if (this.adminFactors.lowerOrEqual3) {\n tempAdminFactors.lowerOrEqual3 = this.adminFactors.lowerOrEqual3;\n }\n\n if (this.adminFactors.lowerOrEqual6) {\n tempAdminFactors.lowerOrEqual6 = this.adminFactors.lowerOrEqual6;\n }\n\n if (this.adminFactors.lowerOrEqual10) {\n tempAdminFactors.lowerOrEqual10 = this.adminFactors.lowerOrEqual10;\n }\n\n if(!isNaN(tempAdminFactors.lowerOrEqual10) && !isNaN(tempAdminFactors.lowerOrEqual6) && !isNaN(tempAdminFactors.lowerOrEqual3)){\n this.adminFactorsService.updateAdminFactors(tempAdminFactors)\n }\n }\n\n ngOnInit(): void {\n\n }\n\n}\n","
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n","import { NgModule } from '@angular/core';\r\nimport { Routes, RouterModule } from '@angular/router';\r\nimport { UserInputComponent } from './user-input/user-input.component';\r\n\r\n\r\nconst routes: Routes = [\r\n { path: '', component: UserInputComponent },\r\n //{ path: 'userInput/:langId', component: UserInputComponent },\r\n ];\r\n\r\n@NgModule({\r\n imports: [RouterModule.forRoot(routes)],\r\n exports: [RouterModule]\r\n})\r\nexport class AppRoutingModule {\r\n\r\n\r\n}\r\n","import { Component } from '@angular/core';\n\n\n@Component({\n selector: 'app-root',\n templateUrl: './app.component.html',\n styleUrls: ['./app.component.css']\n})\nexport class AppComponent {\n constructor() {\n \n }\n}\n","\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n","import { BrowserModule } from '@angular/platform-browser';\nimport { NgModule, LOCALE_ID } from '@angular/core';\nimport { registerLocaleData } from '@angular/common';\nimport localeDe from '@angular/common/locales/de';\n\nimport { AppRoutingModule } from './app-routing.module';\nimport { AppComponent } from './app.component';\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\nimport { FormlyModule, FORMLY_CONFIG } from '@ngx-formly/core';\nimport { FormlyBootstrapModule } from '@ngx-formly/bootstrap';\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\nimport { PanelWrapperComponent } from './panel-wrapper/panel-wrapper.component';\nimport { AgGridModule } from 'ag-grid-angular';\nimport { UserInputComponent } from './user-input/user-input.component';\nimport { ProductResultComponent } from './product-result/product-result.component';\nimport { HttpClientModule, HttpClient } from '@angular/common/http';\nimport { PricesComponent } from './prices/prices.component';\nimport { NgSelectModule } from '@ng-select/ng-select';\nimport { ChartModule } from 'angular-highcharts';\nimport { OverviewChartComponent } from './overview-chart/overview-chart.component';\nimport { TranslateModule, TranslateLoader, TranslateService } from '@ngx-translate/core';\nimport { TranslateHttpLoader } from '@ngx-translate/http-loader';\nimport { registerTranslateExtension } from './translate.extension';\nimport { ModalModule } from 'ngx-bootstrap/modal';\nimport { SystemToImagePathPipe } from './system-to-image-path.pipe';\nimport { FadingImageComponent } from './fading-image/fading-image.component';\nimport { SubSystemSelectionComponent } from './sub-system-selection/sub-system-selection.component';\nimport { ResultViewComponent } from './result-view/result-view.component';\nimport { AdminFactorsComponent } from './admin-factors/admin-factors.component';\nimport { TooltipWrapperComponent } from './tooltip-wrapper/tooltip-wrapper.component';\nimport { LoginComponent } from './login/login.component';\nimport { SignInComponent } from './sign-in/sign-in.component';\nimport { ClipboardModule } from 'ngx-clipboard';\n\nexport function HttpLoaderFactory(http: HttpClient) {\n return new TranslateHttpLoader(http, './assets/i18n/', '.json');\n //return new TranslateHttpLoader(http);\n}\n\nregisterLocaleData(localeDe);\n@NgModule({\n declarations: [\n AppComponent,\n PanelWrapperComponent,\n UserInputComponent,\n ProductResultComponent,\n PricesComponent,\n OverviewChartComponent,\n SystemToImagePathPipe,\n FadingImageComponent,\n SubSystemSelectionComponent,\n ResultViewComponent,\n AdminFactorsComponent,\n TooltipWrapperComponent,\n LoginComponent,\n SignInComponent\n ],\n imports: [\n BrowserModule,\n AppRoutingModule,\n ReactiveFormsModule,\n FormsModule,\n ClipboardModule,\n FormlyModule.forRoot({\n wrappers: [\n { name: 'panel', component: PanelWrapperComponent },\n { name: 'bootstrapLabel', component: TooltipWrapperComponent}\n ],\n\n //validationMessages: [\n // {name: \"required\", message: \"Bitte einen gültigen Wert eintragen\"}\n // ]\n }),\n TranslateModule.forRoot({\n loader: {\n provide: TranslateLoader,\n useFactory: HttpLoaderFactory,\n deps: [HttpClient]\n },\n defaultLanguage : 'en'\n }),\n ModalModule.forRoot(),\n FormlyBootstrapModule,\n NgbModule,\n HttpClientModule,\n NgSelectModule,\n ChartModule,\n AgGridModule.withComponents([])\n ],\n //providers: [{ provide: FORMLY_CONFIG, multi: true, useFactory: registerTranslateExtension, deps: [TranslateService] }, { provide: LOCALE_ID, useValue: 'de-DE' }],\n providers: [{ provide: FORMLY_CONFIG, multi: true, useFactory: registerTranslateExtension, deps: [TranslateService] }, ],\n bootstrap: [AppComponent]\n})\nexport class AppModule { }\n","import { HttpClient } from '@angular/common/http';\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject, Observable } from 'rxjs';\r\nimport { catchError, filter, first, map } from 'rxjs/operators';\r\nimport { UserService } from '../user.service';\r\nimport { IUser } from './models/IUser';\r\nimport { IUserSession } from './models/IUserSession';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AuthService {\r\n isLoggedIn: BehaviorSubject;\r\n private userSession: IUserSession;\r\n\r\n constructor(private http: HttpClient, private userService: UserService) {\r\n const initialSession = this.getUserSession();\r\n this.isLoggedIn = new BehaviorSubject(initialSession.isLoggedIn);\r\n this.triggerRoleChange();\r\n }\r\n\r\n signIn(username: string, password: string): Observable<{ status?: boolean, userSession?: IUserSession; code?: string }> {\r\n return this.http.post<{ status?: boolean, userDetails?: IUser; code?: string }>(\"login\", { username: username, password: password })\r\n //return this.http.post<{ status?: boolean, userDetails?: IUser; code?: string }>(\"/api/login\", { username: username, password: password })\r\n .pipe(map((response) => {\r\n if (response.status === true) {\r\n this.userSession = {\r\n isLoggedIn: true,\r\n userDetails: response.userDetails\r\n }\r\n sessionStorage.setItem(\"userSession\", JSON.stringify(this.userSession));\r\n return { userSession: this.userSession };\r\n } else {\r\n throw { status: false, code: \"INVALID_CREDENTIALS\" };\r\n }\r\n }),\r\n catchError(exception => {\r\n console.warn(exception);\r\n throw exception.error || { status: false, code: \"SYSTEM_ERROR\" };\r\n }));\r\n }\r\n\r\n signOut(): boolean {\r\n sessionStorage.removeItem(\"userSession\");\r\n this.userSession = {\r\n isLoggedIn: false\r\n }\r\n this.isLoggedIn.next(false);\r\n this.triggerRoleChange();\r\n return true;\r\n }\r\n\r\n getUserSession(): IUserSession {\r\n if (!this.userSession) {\r\n this.userSession = this.getUserSessionFromStorage();\r\n }\r\n return this.userSession;\r\n }\r\n\r\n getUserSessionFromStorage(): IUserSession {\r\n const userSession = sessionStorage.getItem(\"userSession\");\r\n if (userSession) {\r\n return JSON.parse(userSession);\r\n }\r\n return {\r\n isLoggedIn: false\r\n }\r\n }\r\n\r\n triggerRoleChange(): void {\r\n const role = this.userSession.isLoggedIn === true ? this.userSession.userDetails.role : this.userService.defaultRole; // Default role is set to customer\r\n this.userService.changeRole(role);\r\n }\r\n\r\n}\r\n","export class AdminFactors{\r\n lowerOrEqual10:number;\r\n lowerOrEqual6:number;\r\n lowerOrEqual3:number;\r\n}","export enum NatureSystemModel {\r\n IntegratedCorrosinProtectedFormWork = \"integrated corrosion-protected formwork\",\r\n IntegratedLostFormwork = \"integrated lost formwork\",\r\n WithoutIntegratedFormWork = \"without integrated formwork\"\r\n}\r\n\r\nexport enum NatureSeedingMethod {\r\n NotNecessary = \"Not necessary\",\r\n HydroSeeding = 'Hydroseeding',\r\n Conventional = 'Conventional'\r\n}\r\n\r\nexport enum GabionSystemModel {\r\n TieRodSystem = 'Tie rod system',\r\n HalfGabionFacing = 'Half-Gabion facing',\r\n FullGabionFacing = 'Full Gabion facing',\r\n}\r\n\r\nexport enum BlockOptions{\r\n HollowBlockFacing = 'Hollow block facing',\r\n SolidBlockFacing = 'Solid block facing'\r\n}\r\n\r\nexport enum PricePositionLabel {\r\n Geogrid = 'Geogrid',\r\n Steel = 'Steel',\r\n ErosionProtection = 'Erosion Protection',\r\n GabionBasket = 'Gabion Basket',\r\n SteelElements = 'Steel elements',\r\n Block = 'Block',\r\n ConcretePanels = 'Concrete Panels',\r\n}\r\n\r\nexport enum Product {\r\n Nature = 'Fortrac Nature',\r\n Gabion = 'Fortrac Gabion',\r\n Block = 'Fortrac Block',\r\n Panel = 'Fortrac Panel'\r\n}\r\n\r\nexport enum GabionConstructionMethod {\r\n IntegratedLostFormwork = 'integrated lost formwork',\r\n WithoutIntegratedFormwork = 'without integrated formwork'\r\n}\r\n\r\nexport enum GabionSubsystem {\r\n T1Dach = 'T1 DACH',\r\n T2EEMEA = 'T2 EEMEA'\r\n}\r\n","import { InputModel } from \"./inputModel\";\r\nimport { ResultLayer } from \"./resultLayer\";\r\nimport { KreqTables } from \"./kreqTables\";\r\nimport { DesignValues } from \"./designValues\";\r\nimport { EarthPressure } from \"./earthPressure\";\r\nimport { BlockResult } from \"./blockResult\";\r\nimport { MeanValue } from \"./meanValue\";\r\nimport { ProductsTable } from \"./productsTables\";\r\nimport { ResultCoordinates } from \"./resultCoordinates\";\r\nimport { Prices } from \"./prices\";\r\nimport { AdminFactorsService } from \"../admin-factors.service\";\r\nimport { ImpToMetricFactors, MetricToImpFactors } from \"./unitSystem\";\r\n\r\nexport class Calculator {\r\n //layers: Array;\r\n private kreqTables: KreqTables;\r\n //designValues: DesignValues;\r\n meanValues: Array;\r\n //productsTable: ProductsTable;\r\n //inputModel:InputModel;\r\n\r\n constructor(private inputModel: InputModel, private adminFactorsService: AdminFactorsService) {\r\n //this.inputModel = { ...inputModel };\r\n\r\n //if (inputModel.language === 'enimp') {\r\n // this.inputModel.height *= ImpToMetricFactors.Meter;\r\n // this.inputModel.unitWeightCharacteristic *= ImpToMetricFactors.Pressure;\r\n // this.inputModel.verticalLayerDistance *= ImpToMetricFactors.Meter;\r\n // this.inputModel.minOverburdenHeight *= ImpToMetricFactors.Meter;\r\n // this.inputModel.uniformVerticalSurcharge *= ImpToMetricFactors.Pressure;\r\n // this.inputModel.widthOfUniformVerticalSurcharge *= ImpToMetricFactors.Meter;\r\n //}\r\n\r\n }\r\n\r\n\r\n\r\n calculate(prices: Prices) : ResultLayer[] {\r\n\r\n const inputModelToCalculate = this.inputModel;\r\n\r\n //const lengthFactor = this.inputModel.language === \"enimp\" ? MetricToImpFactors.Foot : 1;\r\n\r\n const earthPressure = new EarthPressure(inputModelToCalculate);\r\n\r\n this.meanValues = [];\r\n this.kreqTables = new KreqTables(inputModelToCalculate);\r\n \r\n const reqReinforcementLengthAtTheBase = this.kreqTables.interpolatedY * 1.3 * inputModelToCalculate.effectiveHeight;\r\n const maxRequiredStressAtTheBaseOfSlope_Q =\r\n earthPressure.noLabel * inputModelToCalculate.unitWeightDesign * inputModelToCalculate.effectiveHeight;\r\n const designValues = {\r\n requiredEarthPressure: earthPressure.noLabel,\r\n minLengthOverallStabilityInclSafetyFactor: this.kreqTables.interpolatedY * 1.3,\r\n minLengthDirectSlicing: 0.46,\r\n requiredReinforcementLenghtAtTheBase: reqReinforcementLengthAtTheBase,\r\n maxRequiredStressAtTheBaseOfSlope_Q: maxRequiredStressAtTheBaseOfSlope_Q,\r\n normalizedRequiredStressPerLayer_Q: maxRequiredStressAtTheBaseOfSlope_Q / inputModelToCalculate.metricInputValues.height * inputModelToCalculate.metricInputValues.verticalLayerDistance,\r\n maxRequiredStressAtTheBaseOfSlope: earthPressure.noLabel * inputModelToCalculate.unitWeightDesign * inputModelToCalculate.metricInputValues.height,\r\n normalizedRequiredStressPerLayer: (earthPressure.noLabel * inputModelToCalculate.unitWeightDesign * inputModelToCalculate.metricInputValues.height) / inputModelToCalculate.metricInputValues.height * inputModelToCalculate.metricInputValues.verticalLayerDistance,\r\n shouldAllLayersHaveSameLength: inputModelToCalculate.shouldAllGeoGridsHaveSameLength == 1,\r\n\r\n } as DesignValues;\r\n\r\n const layers = this.generateLayers(designValues, inputModelToCalculate);\r\n this.adjustLayers(inputModelToCalculate, designValues, layers);\r\n this.adjustBlockResults(layers, inputModelToCalculate);\r\n\r\n const productsTable = new ProductsTable(inputModelToCalculate, prices);\r\n this.setProductsResultLengthAndCoordinates(inputModelToCalculate, layers, productsTable);\r\n\r\n return layers;\r\n }\r\n\r\n private setProductsResultLengthAndCoordinates(inputModel: InputModel, layers: ResultLayer[], products: ProductsTable) {\r\n const resultLayers = layers.filter(x => x.lFinal > 0 && x.overburden >= inputModel.metricInputValues.minOverburdenHeight).map(layer => layer);\r\n\r\n const firstLayer = resultLayers.length < 2 ? null : resultLayers[1];\r\n\r\n if (!firstLayer) {\r\n return;\r\n }\r\n\r\n const lengthFactor = inputModel.language === 'enimp' ? MetricToImpFactors.Foot : 1;\r\n \r\n for (let j = 0; j < resultLayers.length; j++) {\r\n const layer = resultLayers[j];\r\n const prevLayer = j > 0 ? resultLayers[j - 1] : null;\r\n\r\n //const isNeutralOrAcidAndNotPET = (inputModel.phValueOfFillingSoil === 1 || inputModel.phValueOfFillingSoil === 2) && inputModel.petPva === 1;\r\n //const isNeutralOrAcidAndNotPET = inputModel.petPva === 1;\r\n const rreq_final = layer.rreq_final;\r\n\r\n if (inputModel.petPva === 1) {\r\n for (let i = 5; i > -1; i--) {\r\n const product = products.calculatedProducts[i];\r\n if (product.designStrength >= rreq_final) {\r\n layer.productLine = product;\r\n break;\r\n }\r\n }\r\n } else {\r\n for (let i = 11; i > 5; i--) {\r\n const product = products.calculatedProducts[i];\r\n if (product && product.designStrength >= rreq_final) {\r\n layer.productLine = product;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n if (layer.productLine) {\r\n layer.resultLength = layer.lFinalRounded;\r\n layer.resultTotalLength = inputModel.metricInputValues.uniformVerticalSurcharge >= (33) ? layer.lFinalRounded + (0.5) : layer.lFinalRounded;\r\n\r\n const val1 = layer.height;\r\n //const val2 = !prevLayer ? 0 : firstLayer.height + prevLayer.coordinates.val_2;\r\n const val2 = !prevLayer ? 0 : firstLayer.height / Math.tan(inputModel.slopeAngle / 180 * Math.PI) + prevLayer.coordinates.val_2;\r\n const val3 = val2 + layer.resultTotalLength;\r\n\r\n layer.coordinates = {\r\n val_1: val1 * lengthFactor,\r\n val_2: val2 * lengthFactor,\r\n val_3: val3 * lengthFactor\r\n } as ResultCoordinates;\r\n\r\n layer.height *= lengthFactor;\r\n layer.effectiveHeight *= lengthFactor;\r\n layer.lFinal *= lengthFactor;\r\n layer.lFinalRounded *= lengthFactor;\r\n layer.length *= lengthFactor;\r\n layer.lengthDerived *= lengthFactor;\r\n layer.overburden *= lengthFactor;\r\n layer.resultTotalLength *= lengthFactor;\r\n }\r\n\r\n \r\n }\r\n\r\n }\r\n\r\n private ceilInExcelWay(value: number): number {\r\n const valueToCeil = Math.abs(value);\r\n\r\n if (value < 0) {\r\n return Math.ceil(valueToCeil) * -1;\r\n }\r\n return Math.ceil(valueToCeil);\r\n }\r\n\r\n private adjustBlockResults(layers:ResultLayer[], inputModel:InputModel) {\r\n for (let i = 0; i < layers.length; i++) {\r\n const prevLayer = i > 0 ? layers[i - 1] : null;\r\n\r\n const layer = layers[i];\r\n\r\n if (layer.blockResult.id === 5) {\r\n\r\n }\r\n\r\n const meanValue = this.meanValues.find(x => x.blockId === layer.blockResult.id);\r\n\r\n if (meanValue !== undefined) {\r\n layer.rreq_final = meanValue.meanValue;\r\n layer.blockResult.secondValue = layer.lengthDerived;\r\n layer.blockResult.meanValueStrength = meanValue.meanValue;\r\n }\r\n\r\n if (prevLayer && prevLayer.blockResult.id !== layer.blockResult.id) {\r\n const blockLayers =\r\n layers.filter(x => x.blockResult.id === prevLayer.blockResult.id && x.blockResult.value >= 0);\r\n\r\n const secondMeanValue = blockLayers.reduce((prevValue, currentValue) => prevValue + currentValue.blockResult.secondValue, 0) / blockLayers.length;\r\n const lFinalRounded = secondMeanValue <= 3 ? (inputModel.metricInputValues.uniformVerticalSurcharge >= 25 ? 3.5 : 3) : (Math.ceil(Math.abs(secondMeanValue) / 5 * 10) / 10) * 5;\r\n\r\n blockLayers.forEach(x => {\r\n x.blockResult.secondMeanValue = secondMeanValue;\r\n x.lFinal = secondMeanValue;\r\n x.lFinalRounded = lFinalRounded\r\n });\r\n }\r\n\r\n }\r\n }\r\n\r\n private adjustLayers(inputModel:InputModel, designValues: DesignValues, layers:ResultLayer[]) {\r\n for (let i = 0; i < layers.length; i++) {\r\n const currentLayer = layers[i];\r\n const prevLayer = i === 0 ? null : layers[i - 1];\r\n\r\n if (currentLayer.layerIndex === 19) {\r\n\r\n }\r\n\r\n if (prevLayer === null) {\r\n currentLayer.rreq_g_q = designValues.maxRequiredStressAtTheBaseOfSlope_Q;\r\n currentLayer.rreq_g = designValues.maxRequiredStressAtTheBaseOfSlope;\r\n } else {\r\n currentLayer.rreq_g_q = prevLayer.rreq_g_q - designValues.normalizedRequiredStressPerLayer_Q;\r\n currentLayer.rreq_g = prevLayer.rreq_g - designValues.normalizedRequiredStressPerLayer;\r\n }\r\n\r\n const rreqValue = currentLayer.overburden <= inputModel.influencingDepthOfVerticalSurcharge ? currentLayer.rreq_g_q : currentLayer.rreq_g;\r\n\r\n currentLayer.rreq = Math.round(rreqValue) === 0 ? 0 : this.ceilInExcelWay(rreqValue);\r\n\r\n const blockId = Math.ceil(currentLayer.layerIndex / inputModel.numberOfGeogrids);\r\n\r\n currentLayer.blockResult = {\r\n id: blockId,\r\n value:currentLayer.rreq\r\n } as BlockResult;\r\n\r\n if (prevLayer && currentLayer.blockResult.id !== prevLayer.blockResult.id) {\r\n const blockResults = layers.filter(x => x.blockResult && x.blockResult.id === prevLayer.blockResult.id && x.blockResult.value > 0)\r\n .map(x => x.blockResult);\r\n const meanValue = this.calculateMean(blockResults);\r\n\r\n }\r\n }\r\n }\r\n\r\n private calculateMean(blockLayers: Array) : MeanValue{\r\n if (blockLayers === null || blockLayers.length < 1) {\r\n return null;\r\n }\r\n\r\n const blockSum = blockLayers.reduce((prevValue, currentValue) => prevValue + currentValue.value, 0);\r\n const meanValue = {\r\n blockId: blockLayers[0].id,\r\n meanValue : blockSum / blockLayers.length\r\n } as MeanValue;\r\n\r\n this.meanValues.push(meanValue);\r\n\r\n return meanValue;\r\n }\r\n\r\n private generateLayers(designValues: DesignValues, inputModel:InputModel) : ResultLayer[]{\r\n let firstLayerLength = 0;\r\n \r\n const lenghtReductionFactorFU = inputModel.metricInputValues.height <= (3) ? this.adminFactorsService.currentAdminFactors.value.lowerOrEqual3 : inputModel.metricInputValues.height <= (6) ? this.adminFactorsService.currentAdminFactors.value.lowerOrEqual6 : this.adminFactorsService.currentAdminFactors.value.lowerOrEqual10;\r\n const layers = [...Array(39).keys()].map(x => {\r\n const layerIndex = x + 1;\r\n const effectiveHeight = inputModel.effectiveHeight - (x * inputModel.metricInputValues.verticalLayerDistance);\r\n\r\n let length = effectiveHeight * designValues.minLengthOverallStabilityInclSafetyFactor * lenghtReductionFactorFU;\r\n\r\n if (designValues.shouldAllLayersHaveSameLength) {\r\n if (x == 0) {\r\n firstLayerLength = length;\r\n } else {\r\n length = firstLayerLength;\r\n }\r\n }\r\n\r\n const height = inputModel.metricInputValues.verticalLayerDistance * x;\r\n let lengthDerive = (Math.ceil(Math.abs(length) / 5 * 10) / 10) * 5;\r\n\r\n if (length < 0) {\r\n lengthDerive = lengthDerive * -1;\r\n }\r\n\r\n return {\r\n layerIndex: layerIndex,\r\n overburden: inputModel.metricInputValues.height - (x * inputModel.metricInputValues.verticalLayerDistance),\r\n effectiveHeight: effectiveHeight,\r\n length: effectiveHeight * designValues.minLengthOverallStabilityInclSafetyFactor,\r\n lengthDerived: lengthDerive,\r\n height: height,\r\n } as ResultLayer;\r\n });\r\n\r\n return layers;\r\n }\r\n}\r\n\r\n","import { Country } from \"./country\";\r\n\r\nexport var countries: Country[] = [\r\n { code: \"AF\", code3: \"AFG\", name: \"Afghanistan\", number: \"004\" },\r\n { code: \"AL\", code3: \"ALB\", name: \"Albania\", number: \"008\" },\r\n { code: \"DZ\", code3: \"DZA\", name: \"Algeria\", number: \"012\" },\r\n { code: \"AS\", code3: \"ASM\", name: \"American Samoa\", number: \"016\" },\r\n { code: \"AD\", code3: \"AND\", name: \"Andorra\", number: \"020\" },\r\n { code: \"AO\", code3: \"AGO\", name: \"Angola\", number: \"024\" },\r\n { code: \"AI\", code3: \"AIA\", name: \"Anguilla\", number: \"660\" },\r\n { code: \"AQ\", code3: \"ATA\", name: \"Antarctica\", number: \"010\" },\r\n { code: \"AG\", code3: \"ATG\", name: \"Antigua and Barbuda\", number: \"028\" },\r\n { code: \"AR\", code3: \"ARG\", name: \"Argentina\", number: \"032\" },\r\n { code: \"AM\", code3: \"ARM\", name: \"Armenia\", number: \"051\" },\r\n { code: \"AW\", code3: \"ABW\", name: \"Aruba\", number: \"533\" },\r\n { code: \"AU\", code3: \"AUS\", name: \"Australia\", number: \"036\" },\r\n { code: \"AT\", code3: \"AUT\", name: \"Austria\", number: \"040\" },\r\n { code: \"AZ\", code3: \"AZE\", name: \"Azerbaijan\", number: \"031\" },\r\n { code: \"BS\", code3: \"BHS\", name: \"Bahamas (the)\", number: \"044\" },\r\n { code: \"BH\", code3: \"BHR\", name: \"Bahrain\", number: \"048\" },\r\n { code: \"BD\", code3: \"BGD\", name: \"Bangladesh\", number: \"050\" },\r\n { code: \"BB\", code3: \"BRB\", name: \"Barbados\", number: \"052\" },\r\n { code: \"BY\", code3: \"BLR\", name: \"Belarus\", number: \"112\" },\r\n { code: \"BE\", code3: \"BEL\", name: \"Belgium\", number: \"056\" },\r\n { code: \"BZ\", code3: \"BLZ\", name: \"Belize\", number: \"084\" },\r\n { code: \"BJ\", code3: \"BEN\", name: \"Benin\", number: \"204\" },\r\n { code: \"BM\", code3: \"BMU\", name: \"Bermuda\", number: \"060\" },\r\n { code: \"BT\", code3: \"BTN\", name: \"Bhutan\", number: \"064\" },\r\n { code: \"BO\", code3: \"BOL\", name: \"Bolivia (Plurinational State of)\", number: \"068\" },\r\n { code: \"BQ\", code3: \"BES\", name: \"Bonaire, Sint Eustatius and Saba\", number: \"535\" },\r\n { code: \"BA\", code3: \"BIH\", name: \"Bosnia and Herzegovina\", number: \"070\" },\r\n { code: \"BW\", code3: \"BWA\", name: \"Botswana\", number: \"072\" },\r\n { code: \"BV\", code3: \"BVT\", name: \"Bouvet Island\", number: \"074\" },\r\n { code: \"BR\", code3: \"BRA\", name: \"Brazil\", number: \"076\" },\r\n { code: \"IO\", code3: \"IOT\", name: \"British Indian Ocean Territory (the)\", number: \"086\" },\r\n { code: \"BN\", code3: \"BRN\", name: \"Brunei Darussalam\", number: \"096\" },\r\n { code: \"BG\", code3: \"BGR\", name: \"Bulgaria\", number: \"100\" },\r\n { code: \"BF\", code3: \"BFA\", name: \"Burkina Faso\", number: \"854\" },\r\n { code: \"BI\", code3: \"BDI\", name: \"Burundi\", number: \"108\" },\r\n { code: \"CV\", code3: \"CPV\", name: \"Cabo Verde\", number: \"132\" },\r\n { code: \"KH\", code3: \"KHM\", name: \"Cambodia\", number: \"116\" },\r\n { code: \"CM\", code3: \"CMR\", name: \"Cameroon\", number: \"120\" },\r\n { code: \"CA\", code3: \"CAN\", name: \"Canada\", number: \"124\" },\r\n { code: \"KY\", code3: \"CYM\", name: \"Cayman Islands (the)\", number: \"136\" },\r\n { code: \"CF\", code3: \"CAF\", name: \"Central African Republic (the)\", number: \"140\" },\r\n { code: \"TD\", code3: \"TCD\", name: \"Chad\", number: \"148\" },\r\n { code: \"CL\", code3: \"CHL\", name: \"Chile\", number: \"152\" },\r\n { code: \"CN\", code3: \"CHN\", name: \"China\", number: \"156\" },\r\n { code: \"CX\", code3: \"CXR\", name: \"Christmas Island\", number: \"162\" },\r\n { code: \"CC\", code3: \"CCK\", name: \"Cocos (Keeling) Islands (the)\", number: \"166\" },\r\n { code: \"CO\", code3: \"COL\", name: \"Colombia\", number: \"170\" },\r\n { code: \"KM\", code3: \"COM\", name: \"Comoros (the)\", number: \"174\" },\r\n { code: \"CD\", code3: \"COD\", name: \"Congo (the Democratic Republic of the)\", number: \"180\" },\r\n { code: \"CG\", code3: \"COG\", name: \"Congo (the)\", number: \"178\" },\r\n { code: \"CK\", code3: \"COK\", name: \"Cook Islands (the)\", number: \"184\" },\r\n { code: \"CR\", code3: \"CRI\", name: \"Costa Rica\", number: \"188\" },\r\n { code: \"HR\", code3: \"HRV\", name: \"Croatia\", number: \"191\" },\r\n { code: \"CU\", code3: \"CUB\", name: \"Cuba\", number: \"192\" },\r\n { code: \"CW\", code3: \"CUW\", name: \"Curaçao\", number: \"531\" },\r\n { code: \"CY\", code3: \"CYP\", name: \"Cyprus\", number: \"196\" },\r\n { code: \"CZ\", code3: \"CZE\", name: \"Czechia\", number: \"203\" },\r\n { code: \"CI\", code3: \"CIV\", name: \"Côte d'Ivoire\", number: \"384\" },\r\n { code: \"DK\", code3: \"DNK\", name: \"Denmark\", number: \"208\" },\r\n { code: \"DJ\", code3: \"DJI\", name: \"Djibouti\", number: \"262\" },\r\n { code: \"DM\", code3: \"DMA\", name: \"Dominica\", number: \"212\" },\r\n { code: \"DO\", code3: \"DOM\", name: \"Dominican Republic (the)\", number: \"214\" },\r\n { code: \"EC\", code3: \"ECU\", name: \"Ecuador\", number: \"218\" },\r\n { code: \"EG\", code3: \"EGY\", name: \"Egypt\", number: \"818\" },\r\n { code: \"SV\", code3: \"SLV\", name: \"El Salvador\", number: \"222\" },\r\n { code: \"GQ\", code3: \"GNQ\", name: \"Equatorial Guinea\", number: \"226\" },\r\n { code: \"ER\", code3: \"ERI\", name: \"Eritrea\", number: \"232\" },\r\n { code: \"EE\", code3: \"EST\", name: \"Estonia\", number: \"233\" },\r\n { code: \"SZ\", code3: \"SWZ\", name: \"Eswatini\", number: \"748\" },\r\n { code: \"ET\", code3: \"ETH\", name: \"Ethiopia\", number: \"231\" },\r\n { code: \"FK\", code3: \"FLK\", name: \"Falkland Islands (the) [Malvinas]\", number: \"238\" },\r\n { code: \"FO\", code3: \"FRO\", name: \"Faroe Islands (the)\", number: \"234\" },\r\n { code: \"FJ\", code3: \"FJI\", name: \"Fiji\", number: \"242\" },\r\n { code: \"FI\", code3: \"FIN\", name: \"Finland\", number: \"246\" },\r\n { code: \"FR\", code3: \"FRA\", name: \"France\", number: \"250\" },\r\n { code: \"GF\", code3: \"GUF\", name: \"French Guiana\", number: \"254\" },\r\n { code: \"PF\", code3: \"PYF\", name: \"French Polynesia\", number: \"258\" },\r\n { code: \"TF\", code3: \"ATF\", name: \"French Southern Territories (the)\", number: \"260\" },\r\n { code: \"GA\", code3: \"GAB\", name: \"Gabon\", number: \"266\" },\r\n { code: \"GM\", code3: \"GMB\", name: \"Gambia (the)\", number: \"270\" },\r\n { code: \"GE\", code3: \"GEO\", name: \"Georgia\", number: \"268\" },\r\n { code: \"DE\", code3: \"DEU\", name: \"Germany\", number: \"276\" },\r\n { code: \"GH\", code3: \"GHA\", name: \"Ghana\", number: \"288\" },\r\n { code: \"GI\", code3: \"GIB\", name: \"Gibraltar\", number: \"292\" },\r\n { code: \"GR\", code3: \"GRC\", name: \"Greece\", number: \"300\" },\r\n { code: \"GL\", code3: \"GRL\", name: \"Greenland\", number: \"304\" },\r\n { code: \"GD\", code3: \"GRD\", name: \"Grenada\", number: \"308\" },\r\n { code: \"GP\", code3: \"GLP\", name: \"Guadeloupe\", number: \"312\" },\r\n { code: \"GU\", code3: \"GUM\", name: \"Guam\", number: \"316\" },\r\n { code: \"GT\", code3: \"GTM\", name: \"Guatemala\", number: \"320\" },\r\n { code: \"GG\", code3: \"GGY\", name: \"Guernsey\", number: \"831\" },\r\n { code: \"GN\", code3: \"GIN\", name: \"Guinea\", number: \"324\" },\r\n { code: \"GW\", code3: \"GNB\", name: \"Guinea-Bissau\", number: \"624\" },\r\n { code: \"GY\", code3: \"GUY\", name: \"Guyana\", number: \"328\" },\r\n { code: \"HT\", code3: \"HTI\", name: \"Haiti\", number: \"332\" },\r\n { code: \"HM\", code3: \"HMD\", name: \"Heard Island and McDonald Islands\", number: \"334\" },\r\n { code: \"VA\", code3: \"VAT\", name: \"Holy See (the)\", number: \"336\" },\r\n { code: \"HN\", code3: \"HND\", name: \"Honduras\", number: \"340\" },\r\n { code: \"HK\", code3: \"HKG\", name: \"Hong Kong\", number: \"344\" },\r\n { code: \"HU\", code3: \"HUN\", name: \"Hungary\", number: \"348\" },\r\n { code: \"IS\", code3: \"ISL\", name: \"Iceland\", number: \"352\" },\r\n { code: \"IN\", code3: \"IND\", name: \"India\", number: \"356\" },\r\n { code: \"ID\", code3: \"IDN\", name: \"Indonesia\", number: \"360\" },\r\n { code: \"IR\", code3: \"IRN\", name: \"Iran (Islamic Republic of)\", number: \"364\" },\r\n { code: \"IQ\", code3: \"IRQ\", name: \"Iraq\", number: \"368\" },\r\n { code: \"IE\", code3: \"IRL\", name: \"Ireland\", number: \"372\" },\r\n { code: \"IM\", code3: \"IMN\", name: \"Isle of Man\", number: \"833\" },\r\n { code: \"IL\", code3: \"ISR\", name: \"Israel\", number: \"376\" },\r\n { code: \"IT\", code3: \"ITA\", name: \"Italy\", number: \"380\" },\r\n { code: \"JM\", code3: \"JAM\", name: \"Jamaica\", number: \"388\" },\r\n { code: \"JP\", code3: \"JPN\", name: \"Japan\", number: \"392\" },\r\n { code: \"JE\", code3: \"JEY\", name: \"Jersey\", number: \"832\" },\r\n { code: \"JO\", code3: \"JOR\", name: \"Jordan\", number: \"400\" },\r\n { code: \"KZ\", code3: \"KAZ\", name: \"Kazakhstan\", number: \"398\" },\r\n { code: \"KE\", code3: \"KEN\", name: \"Kenya\", number: \"404\" },\r\n { code: \"KI\", code3: \"KIR\", name: \"Kiribati\", number: \"296\" },\r\n { code: \"KP\", code3: \"PRK\", name: \"Korea (the Democratic People's Republic of)\", number: \"408\" },\r\n { code: \"KR\", code3: \"KOR\", name: \"Korea (the Republic of)\", number: \"410\" },\r\n { code: \"KW\", code3: \"KWT\", name: \"Kuwait\", number: \"414\" },\r\n { code: \"KG\", code3: \"KGZ\", name: \"Kyrgyzstan\", number: \"417\" },\r\n { code: \"LA\", code3: \"LAO\", name: \"Lao People's Democratic Republic (the)\", number: \"418\" },\r\n { code: \"LV\", code3: \"LVA\", name: \"Latvia\", number: \"428\" },\r\n { code: \"LB\", code3: \"LBN\", name: \"Lebanon\", number: \"422\" },\r\n { code: \"LS\", code3: \"LSO\", name: \"Lesotho\", number: \"426\" },\r\n { code: \"LR\", code3: \"LBR\", name: \"Liberia\", number: \"430\" },\r\n { code: \"LY\", code3: \"LBY\", name: \"Libya\", number: \"434\" },\r\n { code: \"LI\", code3: \"LIE\", name: \"Liechtenstein\", number: \"438\" },\r\n { code: \"LT\", code3: \"LTU\", name: \"Lithuania\", number: \"440\" },\r\n { code: \"LU\", code3: \"LUX\", name: \"Luxembourg\", number: \"442\" },\r\n { code: \"MO\", code3: \"MAC\", name: \"Macao\", number: \"446\" },\r\n { code: \"MG\", code3: \"MDG\", name: \"Madagascar\", number: \"450\" },\r\n { code: \"MW\", code3: \"MWI\", name: \"Malawi\", number: \"454\" },\r\n { code: \"MY\", code3: \"MYS\", name: \"Malaysia\", number: \"458\" },\r\n { code: \"MV\", code3: \"MDV\", name: \"Maldives\", number: \"462\" },\r\n { code: \"ML\", code3: \"MLI\", name: \"Mali\", number: \"466\" },\r\n { code: \"MT\", code3: \"MLT\", name: \"Malta\", number: \"470\" },\r\n { code: \"MH\", code3: \"MHL\", name: \"Marshall Islands (the)\", number: \"584\" },\r\n { code: \"MQ\", code3: \"MTQ\", name: \"Martinique\", number: \"474\" },\r\n { code: \"MR\", code3: \"MRT\", name: \"Mauritania\", number: \"478\" },\r\n { code: \"MU\", code3: \"MUS\", name: \"Mauritius\", number: \"480\" },\r\n { code: \"YT\", code3: \"MYT\", name: \"Mayotte\", number: \"175\" },\r\n { code: \"MX\", code3: \"MEX\", name: \"Mexico\", number: \"484\" },\r\n { code: \"FM\", code3: \"FSM\", name: \"Micronesia (Federated States of)\", number: \"583\" },\r\n { code: \"MD\", code3: \"MDA\", name: \"Moldova (the Republic of)\", number: \"498\" },\r\n { code: \"MC\", code3: \"MCO\", name: \"Monaco\", number: \"492\" },\r\n { code: \"MN\", code3: \"MNG\", name: \"Mongolia\", number: \"496\" },\r\n { code: \"ME\", code3: \"MNE\", name: \"Montenegro\", number: \"499\" },\r\n { code: \"MS\", code3: \"MSR\", name: \"Montserrat\", number: \"500\" },\r\n { code: \"MA\", code3: \"MAR\", name: \"Morocco\", number: \"504\" },\r\n { code: \"MZ\", code3: \"MOZ\", name: \"Mozambique\", number: \"508\" },\r\n { code: \"MM\", code3: \"MMR\", name: \"Myanmar\", number: \"104\" },\r\n { code: \"NA\", code3: \"NAM\", name: \"Namibia\", number: \"516\" },\r\n { code: \"NR\", code3: \"NRU\", name: \"Nauru\", number: \"520\" },\r\n { code: \"NP\", code3: \"NPL\", name: \"Nepal\", number: \"524\" },\r\n { code: \"NL\", code3: \"NLD\", name: \"Netherlands (the)\", number: \"528\" },\r\n { code: \"NC\", code3: \"NCL\", name: \"New Caledonia\", number: \"540\" },\r\n { code: \"NZ\", code3: \"NZL\", name: \"New Zealand\", number: \"554\" },\r\n { code: \"NI\", code3: \"NIC\", name: \"Nicaragua\", number: \"558\" },\r\n { code: \"NE\", code3: \"NER\", name: \"Niger (the)\", number: \"562\" },\r\n { code: \"NG\", code3: \"NGA\", name: \"Nigeria\", number: \"566\" },\r\n { code: \"NU\", code3: \"NIU\", name: \"Niue\", number: \"570\" },\r\n { code: \"NF\", code3: \"NFK\", name: \"Norfolk Island\", number: \"574\" },\r\n { code: \"MP\", code3: \"MNP\", name: \"Northern Mariana Islands (the)\", number: \"580\" },\r\n { code: \"NO\", code3: \"NOR\", name: \"Norway\", number: \"578\" },\r\n { code: \"OM\", code3: \"OMN\", name: \"Oman\", number: \"512\" },\r\n { code: \"PK\", code3: \"PAK\", name: \"Pakistan\", number: \"586\" },\r\n { code: \"PW\", code3: \"PLW\", name: \"Palau\", number: \"585\" },\r\n { code: \"PS\", code3: \"PSE\", name: \"Palestine, State of\", number: \"275\" },\r\n { code: \"PA\", code3: \"PAN\", name: \"Panama\", number: \"591\" },\r\n { code: \"PG\", code3: \"PNG\", name: \"Papua New Guinea\", number: \"598\" },\r\n { code: \"PY\", code3: \"PRY\", name: \"Paraguay\", number: \"600\" },\r\n { code: \"PE\", code3: \"PER\", name: \"Peru\", number: \"604\" },\r\n { code: \"PH\", code3: \"PHL\", name: \"Philippines (the)\", number: \"608\" },\r\n { code: \"PN\", code3: \"PCN\", name: \"Pitcairn\", number: \"612\" },\r\n { code: \"PL\", code3: \"POL\", name: \"Poland\", number: \"616\" },\r\n { code: \"PT\", code3: \"PRT\", name: \"Portugal\", number: \"620\" },\r\n { code: \"PR\", code3: \"PRI\", name: \"Puerto Rico\", number: \"630\" },\r\n { code: \"QA\", code3: \"QAT\", name: \"Qatar\", number: \"634\" },\r\n { code: \"MK\", code3: \"MKD\", name: \"Republic of North Macedonia\", number: \"807\" },\r\n { code: \"RO\", code3: \"ROU\", name: \"Romania\", number: \"642\" },\r\n { code: \"RU\", code3: \"RUS\", name: \"Russian Federation (the)\", number: \"643\" },\r\n { code: \"RW\", code3: \"RWA\", name: \"Rwanda\", number: \"646\" },\r\n { code: \"RE\", code3: \"REU\", name: \"Réunion\", number: \"638\" },\r\n { code: \"BL\", code3: \"BLM\", name: \"Saint Barthélemy\", number: \"652\" },\r\n { code: \"SH\", code3: \"SHN\", name: \"Saint Helena, Ascension and Tristan da Cunha\", number: \"654\" },\r\n { code: \"KN\", code3: \"KNA\", name: \"Saint Kitts and Nevis\", number: \"659\" },\r\n { code: \"LC\", code3: \"LCA\", name: \"Saint Lucia\", number: \"662\" },\r\n { code: \"MF\", code3: \"MAF\", name: \"Saint Martin (French part)\", number: \"663\" },\r\n { code: \"PM\", code3: \"SPM\", name: \"Saint Pierre and Miquelon\", number: \"666\" },\r\n { code: \"VC\", code3: \"VCT\", name: \"Saint Vincent and the Grenadines\", number: \"670\" },\r\n { code: \"WS\", code3: \"WSM\", name: \"Samoa\", number: \"882\" },\r\n { code: \"SM\", code3: \"SMR\", name: \"San Marino\", number: \"674\" },\r\n { code: \"ST\", code3: \"STP\", name: \"Sao Tome and Principe\", number: \"678\" },\r\n { code: \"SA\", code3: \"SAU\", name: \"Saudi Arabia\", number: \"682\" },\r\n { code: \"SN\", code3: \"SEN\", name: \"Senegal\", number: \"686\" },\r\n { code: \"RS\", code3: \"SRB\", name: \"Serbia\", number: \"688\" },\r\n { code: \"SC\", code3: \"SYC\", name: \"Seychelles\", number: \"690\" },\r\n { code: \"SL\", code3: \"SLE\", name: \"Sierra Leone\", number: \"694\" },\r\n { code: \"SG\", code3: \"SGP\", name: \"Singapore\", number: \"702\" },\r\n { code: \"SX\", code3: \"SXM\", name: \"Sint Maarten (Dutch part)\", number: \"534\" },\r\n { code: \"SK\", code3: \"SVK\", name: \"Slovakia\", number: \"703\" },\r\n { code: \"SI\", code3: \"SVN\", name: \"Slovenia\", number: \"705\" },\r\n { code: \"SB\", code3: \"SLB\", name: \"Solomon Islands\", number: \"090\" },\r\n { code: \"SO\", code3: \"SOM\", name: \"Somalia\", number: \"706\" },\r\n { code: \"ZA\", code3: \"ZAF\", name: \"South Africa\", number: \"710\" },\r\n { code: \"GS\", code3: \"SGS\", name: \"South Georgia and the South Sandwich Islands\", number: \"239\" },\r\n { code: \"SS\", code3: \"SSD\", name: \"South Sudan\", number: \"728\" },\r\n { code: \"ES\", code3: \"ESP\", name: \"Spain\", number: \"724\" },\r\n { code: \"LK\", code3: \"LKA\", name: \"Sri Lanka\", number: \"144\" },\r\n { code: \"SD\", code3: \"SDN\", name: \"Sudan (the)\", number: \"729\" },\r\n { code: \"SR\", code3: \"SUR\", name: \"Suriname\", number: \"740\" },\r\n { code: \"SJ\", code3: \"SJM\", name: \"Svalbard and Jan Mayen\", number: \"744\" },\r\n { code: \"SE\", code3: \"SWE\", name: \"Sweden\", number: \"752\" },\r\n { code: \"CH\", code3: \"CHE\", name: \"Switzerland\", number: \"756\" },\r\n { code: \"SY\", code3: \"SYR\", name: \"Syrian Arab Republic\", number: \"760\" },\r\n { code: \"TW\", code3: \"TWN\", name: \"Taiwan\", number: \"158\" },\r\n { code: \"TJ\", code3: \"TJK\", name: \"Tajikistan\", number: \"762\" },\r\n { code: \"TZ\", code3: \"TZA\", name: \"Tanzania, United Republic of\", number: \"834\" },\r\n { code: \"TH\", code3: \"THA\", name: \"Thailand\", number: \"764\" },\r\n { code: \"TL\", code3: \"TLS\", name: \"Timor-Leste\", number: \"626\" },\r\n { code: \"TG\", code3: \"TGO\", name: \"Togo\", number: \"768\" },\r\n { code: \"TK\", code3: \"TKL\", name: \"Tokelau\", number: \"772\" },\r\n { code: \"TO\", code3: \"TON\", name: \"Tonga\", number: \"776\" },\r\n { code: \"TT\", code3: \"TTO\", name: \"Trinidad and Tobago\", number: \"780\" },\r\n { code: \"TN\", code3: \"TUN\", name: \"Tunisia\", number: \"788\" },\r\n { code: \"TR\", code3: \"TUR\", name: \"Turkey\", number: \"792\" },\r\n { code: \"TM\", code3: \"TKM\", name: \"Turkmenistan\", number: \"795\" },\r\n { code: \"TC\", code3: \"TCA\", name: \"Turks and Caicos Islands (the)\", number: \"796\" },\r\n { code: \"TV\", code3: \"TUV\", name: \"Tuvalu\", number: \"798\" },\r\n { code: \"UG\", code3: \"UGA\", name: \"Uganda\", number: \"800\" },\r\n { code: \"UA\", code3: \"UKR\", name: \"Ukraine\", number: \"804\" },\r\n { code: \"AE\", code3: \"ARE\", name: \"United Arab Emirates (the)\", number: \"784\" },\r\n { code: \"GB\", code3: \"GBR\", name: \"United Kingdom of Great Britain and Northern Ireland (the)\", number: \"826\" },\r\n { code: \"UM\", code3: \"UMI\", name: \"United States Minor Outlying Islands (the)\", number: \"581\" },\r\n { code: \"US\", code3: \"USA\", name: \"United States of America (the)\", number: \"840\" },\r\n { code: \"UY\", code3: \"URY\", name: \"Uruguay\", number: \"858\" },\r\n { code: \"UZ\", code3: \"UZB\", name: \"Uzbekistan\", number: \"860\" },\r\n { code: \"VU\", code3: \"VUT\", name: \"Vanuatu\", number: \"548\" },\r\n { code: \"VE\", code3: \"VEN\", name: \"Venezuela (Bolivarian Republic of)\", number: \"862\" },\r\n { code: \"VN\", code3: \"VNM\", name: \"Viet Nam\", number: \"704\" },\r\n { code: \"VG\", code3: \"VGB\", name: \"Virgin Islands (British)\", number: \"092\" },\r\n { code: \"VI\", code3: \"VIR\", name: \"Virgin Islands (U.S.)\", number: \"850\" },\r\n { code: \"WF\", code3: \"WLF\", name: \"Wallis and Futuna\", number: \"876\" },\r\n { code: \"EH\", code3: \"ESH\", name: \"Western Sahara\", number: \"732\" },\r\n { code: \"YE\", code3: \"YEM\", name: \"Yemen\", number: \"887\" },\r\n { code: \"ZM\", code3: \"ZMB\", name: \"Zambia\", number: \"894\" },\r\n { code: \"ZW\", code3: \"ZWE\", name: \"Zimbabwe\", number: \"716\" },\r\n { code: \"AX\", code3: \"ALA\", name: \"Åland Islands\", number: \"248\" }\r\n];\r\n","import { InputModel } from \"./inputModel\";\r\n\r\nexport class EarthPressure {\r\n cos_phi_alpha: number;\r\n sin_phi_plus_delta_: number;\r\n cos_alpha_beta: number;\r\n cos_alpha: number;\r\n noLabel:number;\r\n\r\n constructor(private inputModel:InputModel) {\r\n this.cos_phi_alpha = Math.cos(this.inputModel.frictionAngleDesignRad - this.inputModel.slopeAngleDegreeSecond);\r\n this.sin_phi_plus_delta_ = Math.sin(this.inputModel.frictionAngleDesignRad + this.inputModel.wallFrictionRad) * Math.sin(this.inputModel.frictionAngleCharacteristicRad);\r\n this.cos_alpha_beta = Math.cos(this.inputModel.slopeAngleDegreeSecond) *\r\n Math.cos(this.inputModel.slopeAngleDegreeSecond + this.inputModel.wallFrictionRad);\r\n this.cos_alpha = Math.cos(this.inputModel.slopeAngleDegreeSecond) *\r\n (1 + Math.sqrt(this.sin_phi_plus_delta_ / this.cos_alpha_beta));\r\n this.noLabel = Math.pow(this.cos_phi_alpha / this.cos_alpha, 2);\r\n }\r\n\r\n}\r\n","import { InputModel } from \"./inputModel\";\r\nimport { IPriceTableLine } from \"./IPriceTableLine\";\r\nimport { Prices } from \"./prices\";\r\nimport { IProductPricedetails } from \"./IProductPricedetails\";\r\nimport { BlockOptions, PricePositionLabel, Product } from './calculationEnums';\r\nimport { IPricePosition } from \"./IPricePosition\";\r\n\r\nexport class FortracBlockCalculator {\r\n constructor(private frontArea, private inputModel: InputModel, private geoGridsSummary: Array, private prices: Prices) {\r\n\r\n }\r\n\r\n private getGeoGridLine(): IPricePosition {\r\n const quantity = this.geoGridsSummary.reduce((sum, current) => sum + current.frictionConnecPlus6Perc, 0);\r\n const price = this.geoGridsSummary.reduce((sum, current) => sum + current.frictionConnecTotal, 0);\r\n\r\n const returnValue = {\r\n quantity: quantity / this.frontArea,\r\n price: price / this.frontArea,\r\n description: \"Friction connec.\",\r\n position:PricePositionLabel.Geogrid\r\n } as IPricePosition;\r\n\r\n return returnValue;\r\n }\r\n\r\n private getBlockLine(): IPricePosition {\r\n const isHollowBlock = this.inputModel.systemModelBlock === BlockOptions.HollowBlockFacing;\r\n\r\n const returnValue = {\r\n quantity: 1,\r\n description: isHollowBlock ? \"h=0.2\" : \"h=0.125\",\r\n price: isHollowBlock ? this.prices.block.allanBlock : this.prices.block.inorBloc,\r\n position: PricePositionLabel.Block\r\n } as IPricePosition;\r\n\r\n return returnValue;\r\n }\r\n\r\n private getErosionProtection(): IPricePosition {\r\n const quantity = 0.4 + this.inputModel.metricInputValues.verticalLayerDistance;\r\n\r\n const returnValue = {\r\n price:quantity * this.prices.trickleProtection.NonWovenFabric,\r\n quantity: quantity,\r\n description: \"Non woven GRK5\",\r\n position: PricePositionLabel.ErosionProtection\r\n } as IPricePosition;\r\n\r\n return returnValue;\r\n }\r\n\r\n private getValidationResult(): [boolean, string] {\r\n return [true, \"\"];\r\n\r\n let isValid = false;\r\n let errorMessage = \"\";\r\n\r\n if (this.inputModel.metricInputValues.verticalLayerDistance === 0.6) {\r\n errorMessage = \"Please change vertical layer distance to 0.4 or 0.5 and select corresponding System model\";\r\n } else if (this.inputModel.metricInputValues.verticalLayerDistance === 0.4 && this.inputModel.systemModelBlock === BlockOptions.SolidBlockFacing){\r\n errorMessage = \"Please change vertical layer distance to 0.5 for 'Solid block facing'\";\r\n } else if (this.inputModel.metricInputValues.verticalLayerDistance === 0.5 && this.inputModel.systemModelBlock === BlockOptions.HollowBlockFacing){\r\n errorMessage = \"Please change vertical layer distance to 0.4 for 'Hollow block facing'\";\r\n }else{\r\n isValid = true;\r\n }\r\n \r\n return [isValid, errorMessage];\r\n }\r\n\r\n calculate(): IProductPricedetails {\r\n const details = {\r\n product: Product.Block,\r\n } as IProductPricedetails;\r\n\r\n const res = this.getValidationResult();\r\n\r\n if(!res[0]){\r\n details.errorMessage = res[1];\r\n details.isValid = false;\r\n details.positions = [];\r\n return details;\r\n }\r\n\r\n const geoGrid = this.getGeoGridLine();\r\n const erosion = this.getErosionProtection();\r\n const block = this.getBlockLine();\r\n\r\n const positions = [geoGrid, erosion, block];\r\n\r\n details.positions = positions;\r\n details.isValid = true;\r\n details.sumPrice = positions.reduce((sum, current) => sum + current.price, 0);\r\n\r\n\r\n return details;\r\n }\r\n}\r\n","import { Prices } from \"./prices\";\r\nimport { IPriceTableLine } from \"./IPriceTableLine\";\r\nimport { InputModel } from \"./inputModel\";\r\nimport { IProductPricedetails, IProductPricedetails as IProductPricedetails1 } from \"./IProductPricedetails\";\r\nimport { Product, PricePositionLabel, GabionSystemModel, GabionConstructionMethod, GabionSubsystem } from \"./calculationEnums\";\r\nimport { IPricePosition } from \"./IPricePosition\";\r\n\r\nexport class FortracGabionCalculator {\r\n constructor(private frontArea,\r\n private inputModel: InputModel,\r\n private geoGridsSummary: Array,\r\n private prices: Prices) {\r\n\r\n\r\n }\r\n\r\n getSteelElementsLine():IPricePosition {\r\n if(this.inputModel.systemModelGabion !== GabionSystemModel.TieRodSystem){\r\n return null;\r\n }\r\n\r\n const returnValue = {\r\n description: this.inputModel.subsystemGabion,\r\n position: PricePositionLabel.SteelElements,\r\n quantity: 1,\r\n price: this.inputModel.subsystemGabion === GabionSubsystem.T1Dach ? this.prices.gabionAnchor.Type1Dach : this.prices.gabionAnchor.Type2EMEEA\r\n } as IPricePosition;\r\n\r\n return returnValue;\r\n }\r\n\r\n getGabionBasketLine() : IPricePosition{\r\n if(this.inputModel.systemModelGabion !== GabionSystemModel.FullGabionFacing){\r\n return null;\r\n }\r\n\r\n const returnValue = {\r\n description: \"-\",\r\n position: PricePositionLabel.GabionBasket,\r\n quantity: 1,\r\n price: this.prices.gabion._200x100x100\r\n } as IPricePosition;\r\n\r\n return returnValue;\r\n };\r\n\r\n getErosionProtection():IPricePosition{\r\n const quantity = 0.4 + this.inputModel.metricInputValues.verticalLayerDistance;\r\n\r\n const returnValue = {\r\n description:\"Non woven GRK5\",\r\n position: PricePositionLabel.ErosionProtection,\r\n quantity: quantity,\r\n price: quantity * this.prices.trickleProtection.NonWovenFabric\r\n } as IPricePosition;\r\n\r\n return returnValue;\r\n }\r\n\r\n getSteelLine(): IPricePosition {\r\n if (this.inputModel.systemModelGabion === GabionSystemModel.FullGabionFacing){\r\n return null;\r\n }\r\n\r\n if(this.inputModel.systemModelGabion === GabionSystemModel.TieRodSystem && this.inputModel.constructionMethodGabion === GabionConstructionMethod.WithoutIntegratedFormwork){\r\n return null;\r\n }\r\n\r\n const isGalvanized = this.inputModel.systemModelGabion === GabionSystemModel.HalfGabionFacing;\r\n\r\n let price = 0;\r\n\r\n if(isGalvanized){\r\n price = this.prices.steelLattice.galvanized;\r\n }else{\r\n price = this.inputModel.metricInputValues.verticalLayerDistance === 0.5 ? this.prices.steelLattice.steel05 : this.prices.steelLattice.steel06;\r\n }\r\n\r\n const returnValue = {\r\n description: isGalvanized ? \"Galvanized\" : \"not galvanized\",\r\n quantity: 1,\r\n position: PricePositionLabel.Steel,\r\n price:price\r\n } as IPricePosition;\r\n\r\n return returnValue;\r\n }\r\n\r\n getGeoGridLine(): IPricePosition {\r\n const quantity = this.geoGridsSummary.reduce((sum, current) => sum + current.wrapAroundPlus6Perc, 0) /\r\n this.frontArea;\r\n\r\n const price = this.geoGridsSummary.reduce((sum, current) => sum + current.wrapAroundTotal, 0) / this.frontArea;\r\n\r\n const returnValue = {\r\n quantity: quantity,\r\n description: \"Wraparound\",\r\n price: price,\r\n position: PricePositionLabel.Geogrid\r\n } as IPricePosition;\r\n\r\n return returnValue;\r\n }\r\n\r\n calculate(): IProductPricedetails {\r\n const geogrid = this.getGeoGridLine();\r\n const steel = this.getSteelLine();\r\n const erosionProtection = this.getErosionProtection();\r\n const gabionBasket = this.getGabionBasketLine();\r\n const steelElements = this.getSteelElementsLine();\r\n\r\n const positions = [geogrid, steel, erosionProtection, gabionBasket, steelElements].filter(x => x !== null);\r\n\r\n const details = {\r\n product: Product.Gabion,\r\n isValid: true,\r\n positions: positions,\r\n sumPrice: positions.reduce((sum, current)=> sum + current.price, 0)\r\n } as IProductPricedetails1;\r\n\r\n return details;\r\n }\r\n\r\n}\r\n","import { InputModel } from \"./inputModel\";\r\nimport { IPriceTableLine } from \"./IPriceTableLine\";\r\nimport { IProductPricedetails } from \"./IProductPricedetails\";\r\nimport { IPricePosition } from \"./IPricePosition\";\r\nimport { NatureSystemModel, NatureSeedingMethod, Product, PricePositionLabel } from \"./calculationEnums\";\r\nimport { Prices } from \"./prices\";\r\nimport { PricesService } from \"../prices.service\";\r\n\r\nexport class FortracNaturePriceCalculator {\r\n constructor(private frontArea, private inputModel: InputModel, private geoGridsSummary: Array, private prices: Prices) {\r\n\r\n }\r\n\r\n getErosionProtectionLine(): IPricePosition {\r\n const seedingMethod = this.inputModel.seedingMethod;\r\n\r\n const description = seedingMethod === NatureSeedingMethod.NotNecessary\r\n ? \"Non woven GRK5\"\r\n : (seedingMethod === NatureSeedingMethod.HydroSeeding ? \"Fortrac 3D 20\" : \"23.142\");\r\n\r\n //const quantity = 1.25 / this.inputModel.verticalLayerDistance;\r\n const quantity = 0.4 + this.inputModel.verticalLayerDistance;\r\n\r\n let price = 0;\r\n\r\n if (seedingMethod === NatureSeedingMethod.NotNecessary) {\r\n price = quantity * this.prices.trickleProtection.NonWovenFabric;\r\n } else if (seedingMethod === NatureSeedingMethod.HydroSeeding) {\r\n price = quantity * this.prices.trickleProtection.fortrac3D;\r\n } else {\r\n price = quantity * this.prices.trickleProtection._23142Gr;\r\n }\r\n\r\n const returnValue = {\r\n description: description,\r\n price: price,\r\n quantity: quantity,\r\n position:PricePositionLabel.ErosionProtection\r\n } as IPricePosition;\r\n\r\n return returnValue;\r\n }\r\n\r\n private getGeoGridLine(): IPricePosition {\r\n const isSteelstab = this.inputModel.systemModelNature === NatureSystemModel.IntegratedCorrosinProtectedFormWork;\r\n\r\n const description = isSteelstab \r\n ? \"Steelstab\"\r\n : \"Wraparound\";\r\n\r\n const quantity = (isSteelstab\r\n ? this.geoGridsSummary.reduce((sum, current) => sum + current.steelstabPlus6Perc, 0)\r\n : this.geoGridsSummary.reduce((sum, current) => sum + current.wrapAroundPlus6Perc, 0)) /\r\n this.frontArea;\r\n\r\n const price = (isSteelstab\r\n ? this.geoGridsSummary.reduce((sum, current) => sum + current.steelStabTotal, 0)\r\n : this.geoGridsSummary.reduce((sum, current) => sum + current.wrapAroundTotal, 0)) /\r\n this.frontArea;\r\n\r\n const returnValue = {\r\n description: description,\r\n quantity: quantity,\r\n price: price,\r\n position: PricePositionLabel.Geogrid\r\n } as IPricePosition;\r\n \r\n return returnValue;\r\n }\r\n\r\n private getSteelLine(): IPricePosition {\r\n if (this.inputModel.systemModelNature === NatureSystemModel.WithoutIntegratedFormWork) {\r\n return null;\r\n }\r\n\r\n const description = this.inputModel.systemModelNature === NatureSystemModel.IntegratedCorrosinProtectedFormWork\r\n ? \"Galvanized\"\r\n : \"not galvanized\";\r\n\r\n let priceToCalculate = 0;\r\n\r\n if (this.inputModel.systemModelNature === NatureSystemModel.IntegratedCorrosinProtectedFormWork) {\r\n priceToCalculate = this.prices.steelLattice.galvanized;\r\n } else {\r\n if (this.inputModel.verticalLayerDistance === 0.5) {\r\n priceToCalculate = this.prices.steelLattice.steel05;\r\n } else {\r\n priceToCalculate = this.prices.steelLattice.steel06;\r\n }\r\n }\r\n\r\n const returnValue = {\r\n quantity: 1,\r\n description: description,\r\n price: priceToCalculate,\r\n position:PricePositionLabel.Steel\r\n } as IPricePosition;\r\n\r\n return returnValue;\r\n }\r\n\r\n calculate(): IProductPricedetails {\r\n //const frontarea = this.inputModel.height / Math.sin(Math.r)\r\n const geoGrid = this.getGeoGridLine();\r\n const steel = this.getSteelLine();\r\n const erosionProtection = this.getErosionProtectionLine();\r\n\r\n const positions = [geoGrid, steel, erosionProtection].filter(x => x !== null);\r\n\r\n const details = {\r\n product: Product.Nature,\r\n isValid: true,\r\n positions: positions,\r\n sumPrice: positions.reduce((sum, current) => sum + current.price, 0)\r\n } as IProductPricedetails;\r\n\r\n return details;\r\n }\r\n}\r\n","import { InputModel } from \"./inputModel\";\r\nimport { IPriceTableLine } from \"./IPriceTableLine\";\r\nimport { Prices } from \"./prices\";\r\nimport { IProductPricedetails } from \"./IProductPricedetails\";\r\nimport { Product, PricePositionLabel } from \"./calculationEnums\";\r\nimport { IPricePosition } from \"./IPricePosition\";\r\n\r\nexport class FortracPanelCalculator {\r\n constructor(private frontArea, private inputModel: InputModel, private geoGridsSummary: Array, private prices: Prices) {\r\n\r\n }\r\n\r\n private getGeoGridLine(): IPricePosition {\r\n const quantity = this.geoGridsSummary.reduce((sum, current) => sum + current.wrapAroundPlus6Perc, 0) /\r\n this.frontArea;\r\n const price = this.geoGridsSummary.reduce((sum, current) => sum + current.wrapAroundTotal, 0) /\r\n this.frontArea;\r\n\r\n const returnValue = {\r\n description: \"Wraparound\",\r\n quantity: quantity,\r\n price: price,\r\n position: PricePositionLabel.Geogrid\r\n } as IPricePosition;\r\n\r\n return returnValue;\r\n }\r\n\r\n private getErosionProtection(): IPricePosition {\r\n const quantity = 0.4 + this.inputModel.verticalLayerDistance;\r\n const price = quantity * this.prices.trickleProtection.NonWovenFabric;\r\n\r\n const returnValue = {\r\n quantity: quantity,\r\n price: price,\r\n description: \"Non woven GRK5\",\r\n position: PricePositionLabel.ErosionProtection\r\n } as IPricePosition;\r\n\r\n return returnValue;\r\n }\r\n\r\n calculate(): IProductPricedetails {\r\n const details = {\r\n product: Product.Panel,\r\n } as IProductPricedetails;\r\n\r\n //if (this.inputModel.verticalLayerDistance !== 0.4) {\r\n // details.errorMessage = \"Please change vertical distance to 0.4\";\r\n // details.isValid = false;\r\n // details.positions = [];\r\n\r\n // return details;\r\n //}\r\n\r\n const geogrid = this.getGeoGridLine();\r\n const erosionProtection = this.getErosionProtection();\r\n\r\n const panel = {\r\n quantity: 1,\r\n price: this.prices.panel.passive,\r\n description: \"Concrete panels\",\r\n position: PricePositionLabel.ConcretePanels\r\n } as IPricePosition;\r\n\r\n details.isValid = true;\r\n details.positions = [geogrid, erosionProtection, panel];\r\n details.sumPrice = details.positions.reduce((sum, current) => sum + current.price, 0);\r\n\r\n return details;\r\n }\r\n}\r\n","import { IConfiguration } from \"./configuration\";\r\nimport { InputModel } from \"./inputModel\";\r\nimport { GabionSystemModel, BlockOptions, NatureSeedingMethod, GabionConstructionMethod, GabionSubsystem, NatureSystemModel, Product\r\n} from \"./calculationEnums\";\r\nimport { UserRoles } from \"../user-roles.config\";\r\nimport { MetricToImpFactors, ImpToMetricFactors } from \"./unitSystem\";\r\n\r\nexport class InputModelMapper {\r\n static getConfig(inputModel: InputModel, id:string, masterConfigurationId:string, calculationCode:string): IConfiguration {\r\n const toReturn = {\r\n masterConfigurationId: masterConfigurationId,\r\n systemModelFortracNature: InputModelMapper.getNatureSystemModelNumber(inputModel.systemModelNature),\r\n systemModelFortracGabion: InputModelMapper.getGabionSystemModelNumber(inputModel.systemModelGabion),\r\n systemModelFortracBlock: InputModelMapper.getSystemModelBlockNumber(inputModel.systemModelBlock),\r\n seedingMethod: InputModelMapper.getSeedingMethodNumber(inputModel.seedingMethod),\r\n constructionMethodFortracGabion: InputModelMapper.getConstructionMethodGabionNumber(inputModel\r\n .constructionMethodGabion),\r\n subSystemFortracGabion: InputModelMapper.getSubSystemGabionNumber(inputModel.subsystemGabion),\r\n selectedSystem: InputModelMapper.getProductNumber(inputModel.selectedSystem),\r\n verticalLayerDistance: InputModelMapper.getVerticalLayerNumber(inputModel.verticalLayerDistance),\r\n slopeAngle: inputModel.slopeAngle,\r\n height: inputModel.height,\r\n priceId: inputModel.priceId,\r\n wallFriction: inputModel.wallFriction,\r\n frictionAngle: inputModel.frictionAngle,\r\n unitWeight: inputModel.unitWeight,\r\n trafficLoad: inputModel.trafficLoad,\r\n materialPartialSafetyFactor: inputModel.materialPartialSafetyFactor,\r\n designLife: inputModel.designLife,\r\n frictionAngleCharacteristics: inputModel.frictionAngleCharacteristic,\r\n unitWeightCharacteristic: inputModel.unitWeightCharacteristic,\r\n grainSizeDistribution: inputModel.grainSizeDistribution,\r\n phValueOfFillingSoil: inputModel.phValueOfFillingSoil,\r\n minOverburdenHeight: inputModel.minOverburdenHeight,\r\n uniformVerticalSurcharge: inputModel.uniformVerticalSurcharge,\r\n widthOfUniformVerticalSurcharge: inputModel.widthOfUniformVerticalSurcharge,\r\n numberOfGeogrids: inputModel.numberOfGeogrids,\r\n calculationCode: calculationCode,\r\n title: inputModel.title,\r\n companyName: inputModel.companyName,\r\n emailAddress: inputModel.emailAddress,\r\n phoneNumber: inputModel.phoneNumber,\r\n id: id,\r\n moreInformationNeeded: inputModel.moreInformationNeeded,\r\n contactName: inputModel.contactName,\r\n contactLastName: inputModel.contactLastName,\r\n userComment: inputModel.userComment,\r\n chartDataJson: inputModel.chartDataJson,\r\n shouldAllGeoGridsHaveSameLength: inputModel.shouldAllGeoGridsHaveSameLength,\r\n unitSystem: inputModel.unitSystem,\r\n contactCountry: inputModel.contactCountry\r\n } as IConfiguration;\r\n\r\n return toReturn;\r\n }\r\n\r\n static getDefaultInputModel(language: string = 'en', role: number = UserRoles.customer): InputModel {\r\n\r\n const isImp = language === 'enimp';\r\n const lengthFactor = isImp ? MetricToImpFactors.Foot : 1;\r\n const pressureFactor = isImp ? MetricToImpFactors.Pressure : 1;\r\n const weightFactor = isImp ? MetricToImpFactors.Weight : 1;\r\n\r\n const toReturn = {\r\n height: 10 * lengthFactor,\r\n slopeAngle: 90,\r\n title: '',\r\n language: language,\r\n role: role,\r\n shouldAllGeoGridsHaveSameLength: 0,\r\n \r\n systemModelNature: NatureSystemModel.WithoutIntegratedFormWork,\r\n seedingMethod: NatureSeedingMethod.NotNecessary,\r\n systemModelGabion: GabionSystemModel.FullGabionFacing,\r\n constructionMethodGabion: GabionConstructionMethod.WithoutIntegratedFormwork,\r\n subsystemGabion: GabionSubsystem.T1Dach,\r\n selectedSystem: Product.Nature,\r\n\r\n systemModelBlock: BlockOptions.HollowBlockFacing,\r\n priceId: 'a0d710b2-2bc0-4af0-8b31-08d8a20e37ce',\r\n frictionAngleCharacteristic: 32.5, //ToDo: In DB Default values setzten\r\n unitWeightCharacteristic: 20 * weightFactor,\r\n phValueOfFillingSoil: 2, //ToDO: DB\r\n designLife: 120,\r\n\r\n frictionAngle: 1.25,\r\n unitWeight: 1.00,\r\n trafficLoad: 1.30,\r\n materialPartialSafetyFactor: 1.40,\r\n\r\n //Other default values\r\n frictionAngleCharacteristicRad: null,\r\n frictionAngleDesign: null,\r\n frictionAngleDesignRad: null,\r\n unitWeightDesign: null,\r\n grainSizeDistribution: 3,\r\n productString: null,\r\n slopeAngleDegreeFirst: null,\r\n slopeAngleDegreeSecond: null,\r\n verticalLayerDistance: isImp ? 1.667 : 0.5,\r\n minOverburdenHeight: 0.3 * lengthFactor,\r\n wallFriction: 0,\r\n wallFrictionRad: null,\r\n numberOfGeogrids: 4,\r\n uniformVerticalSurcharge: 33 * pressureFactor,\r\n uniformVerticalSurchargeDesignValue: null,\r\n effectiveHeight: null,\r\n widthOfUniformVerticalSurcharge: 15 * lengthFactor,\r\n angleOfInclinationOfSlipSurfaces: null,\r\n angleOfInclinationOfSlipSurfacesRad: null,\r\n influencingDepthOfVerticalSurcharge: null,\r\n emailAddress: null,\r\n companyName: null,\r\n phoneNumber: null,\r\n moreInformationNeeded: true,\r\n unitSystem: isImp ? 2: 1,\r\n petPva: 1\r\n } as InputModel;\r\n\r\n return toReturn;\r\n }\r\n\r\n static getInputModel(config: IConfiguration): InputModel {\r\n const toReturn = {\r\n isDefault:!config.masterConfigurationId,\r\n systemModelNature: InputModelMapper.getNatureSystemModelByNumber(config.systemModelFortracNature),\r\n systemModelGabion: InputModelMapper.getGabionSystemModelByNumber(config.systemModelFortracGabion),\r\n systemModelBlock: InputModelMapper.getSystemModelBlockByNumber(config.systemModelFortracBlock),\r\n seedingMethod: InputModelMapper.getSeedingMethodByNumber(config.seedingMethod),\r\n constructionMethodGabion: InputModelMapper.getConstrcutionMethodGabionByNumber(config.constructionMethodFortracGabion),\r\n subsystemGabion: InputModelMapper.getSubSystemGabionByNumber(config.subSystemFortracGabion),\r\n selectedSystem: InputModelMapper.getProductByNumber(config.selectedSystem),\r\n priceId:config.priceId,\r\n slopeAngle: config.slopeAngle,\r\n height: config.height,\r\n frictionAngleCharacteristic: config.frictionAngleCharacteristics,\r\n unitWeightCharacteristic: config.unitWeightCharacteristic,\r\n phValueOfFillingSoil: config.phValueOfFillingSoil,\r\n designLife: config.designLife,\r\n frictionAngle: config.frictionAngle,\r\n unitWeight: config.unitWeight,\r\n trafficLoad: config.trafficLoad,\r\n materialPartialSafetyFactor: config.materialPartialSafetyFactor,\r\n grainSizeDistribution: config.grainSizeDistribution,\r\n verticalLayerDistance: InputModelMapper.getVerticalLayerDistanceByNumber(config.verticalLayerDistance, config.languageCode),\r\n minOverburdenHeight: config.minOverburdenHeight,\r\n wallFriction: config.wallFriction,\r\n numberOfGeogrids: config.numberOfGeogrids,\r\n uniformVerticalSurcharge: config.uniformVerticalSurcharge,\r\n widthOfUniformVerticalSurcharge: config.widthOfUniformVerticalSurcharge,\r\n title: config.title,\r\n id: config.id,\r\n role: UserRoles.hueskerInternal,\r\n companyName: config.companyName,\r\n emailAddress: config.emailAddress,\r\n phoneNumber: config.phoneNumber,\r\n moreInformationNeeded: config.moreInformationNeeded,\r\n contactName: config.contactName,\r\n userComment: config.userComment,\r\n chartDataJson: config.chartDataJson,\r\n shouldAllGeoGridsHaveSameLength: config.shouldAllGeoGridsHaveSameLength,\r\n unitSystem: config.unitSystem,\r\n petPva: config.petPva\r\n } as InputModel;\r\n\r\n return toReturn;\r\n }\r\n\r\n private static gabionSystemModelMapping = [\r\n { id: 1, value: GabionSystemModel.FullGabionFacing },\r\n { id: 2, value: GabionSystemModel.HalfGabionFacing },\r\n { id: 3, value: GabionSystemModel.TieRodSystem}\r\n ];\r\n\r\n private static seedingMethodMapping = [\r\n { id: 1, value: NatureSeedingMethod.NotNecessary},\r\n { id: 2, value: NatureSeedingMethod.Conventional},\r\n { id: 3, value: NatureSeedingMethod.HydroSeeding}\r\n ];\r\n\r\n private static systemModelBlockMapping = [\r\n { id: 1, value: BlockOptions.HollowBlockFacing },\r\n { id: 2, value: BlockOptions.SolidBlockFacing }\r\n ];\r\n\r\n private static constructionMethodGabionMapping = [\r\n { id: 1, value: GabionConstructionMethod.WithoutIntegratedFormwork},\r\n { id: 2, value: GabionConstructionMethod.IntegratedLostFormwork},\r\n ];\r\n\r\n private static subSystemGabionMapping = [\r\n { id: 1, value: GabionSubsystem.T1Dach},\r\n { id: 2, value: GabionSubsystem.T2EEMEA},\r\n ];\r\n\r\n private static natureSystemModelMapping = [\r\n { id: 1, value: NatureSystemModel.WithoutIntegratedFormWork},\r\n { id: 2, value: NatureSystemModel.IntegratedLostFormwork},\r\n { id: 3, value: NatureSystemModel.IntegratedCorrosinProtectedFormWork},\r\n ];\r\n\r\n private static productSettingMapping = [\r\n { id: 1, value: Product.Nature },\r\n { id: 2, value: Product.Gabion },\r\n { id: 3, value: Product.Block },\r\n { id: 4, value: Product.Panel },\r\n\r\n ];\r\n\r\n private static getProductByNumber(val: number): Product {\r\n if (!val) {\r\n return null;\r\n }\r\n\r\n return this.productSettingMapping.find(x => x.id === val).value;\r\n }\r\n\r\n private static getVerticalLayerNumber(val: number): number {\r\n if (val === 1.333 || val === 0.4) {\r\n return 1;\r\n }\r\n\r\n if (val === 1.667 || val === 0.5) {\r\n return 2;\r\n }\r\n\r\n if (val === 2 || val === 0.6) {\r\n return 3;\r\n }\r\n }\r\n\r\n private static getProductNumber(val: Product): number {\r\n if (!val) {\r\n return null;\r\n }\r\n\r\n return this.productSettingMapping.find(x => x.value == val).id;\r\n }\r\n\r\n private static getNatureSystemModelByNumber(val: number): NatureSystemModel {\r\n if (!val) {\r\n return null;\r\n }\r\n\r\n return this.natureSystemModelMapping.find(x => x.id === val).value;\r\n }\r\n\r\n private static getVerticalLayerDistanceByNumber(val: number, lang: string): number {\r\n const isImp = lang === 'enimp';\r\n\r\n switch (val) {\r\n case 1:\r\n return isImp ? 1.333 : 0.4;\r\n case 2:\r\n return isImp ? 1.667 : 0.5;\r\n case 3:\r\n return isImp ? 2 : 0.6;\r\n }\r\n }\r\n\r\n private static getNatureSystemModelNumber(val: NatureSystemModel): number {\r\n if (!val) {\r\n return null;\r\n }\r\n\r\n return this.natureSystemModelMapping.find(x => x.value == val).id;\r\n }\r\n\r\n private static getSubSystemGabionByNumber(val: number): GabionSubsystem {\r\n if (!val) {\r\n return null;\r\n }\r\n\r\n return this.subSystemGabionMapping.find(x => x.id === val).value;\r\n }\r\n\r\n private static getSubSystemGabionNumber(val: GabionSubsystem): number {\r\n if (!val) {\r\n return null;\r\n }\r\n\r\n return this.subSystemGabionMapping.find(x => x.value === val).id;\r\n }\r\n\r\n private static getConstructionMethodGabionNumber(value: GabionConstructionMethod): number {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n return this.constructionMethodGabionMapping.find(x => x.value === value).id;\r\n }\r\n\r\n private static getConstrcutionMethodGabionByNumber(value: number): GabionConstructionMethod {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n return this.constructionMethodGabionMapping.find(x => x.id === value).value;\r\n }\r\n\r\n private static getSeedingMethodNumber(value: NatureSeedingMethod): number {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n return this.seedingMethodMapping.find(x => x.value === value).id;\r\n }\r\n\r\n private static getSeedingMethodByNumber(val: number): NatureSeedingMethod {\r\n if (!val) {\r\n return null;\r\n }\r\n\r\n return this.seedingMethodMapping.find(x => x.id === val).value;\r\n }\r\n\r\n private static getSystemModelBlockNumber(value: BlockOptions): number {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n return this.systemModelBlockMapping.find(x => x.value === value).id;\r\n }\r\n\r\n private static getSystemModelBlockByNumber(val: number): BlockOptions {\r\n if (!val) {\r\n return null;\r\n }\r\n\r\n return this.systemModelBlockMapping.find(x => x.id === val).value;\r\n }\r\n\r\n private static getGabionSystemModelNumber(value: GabionSystemModel): number {\r\n if (!value) {\r\n return null;\r\n }\r\n\r\n return this.gabionSystemModelMapping.find(x => x.value === value).id;\r\n }\r\n\r\n private static getGabionSystemModelByNumber(val: number): GabionSystemModel {\r\n if (!val) {\r\n return null;\r\n }\r\n\r\n return this.gabionSystemModelMapping.find(x => x.id === val).value;\r\n }\r\n}\r\n","// tslint:disable-block\r\n\r\nimport { KreqTableLine } from \"./kreqTableLine\";\r\nimport \"./numpyJs\";\r\nimport { RegressionHelpValueLine } from \"./regressionHelpValueLine\";\r\nimport { InputModel } from \"./inputModel\";\r\n\r\nexport class KreqTables {\r\n kreq_lines: Array;\r\n lr_lines: Array;\r\n regression_helpvalues: Array;\r\n regression_poly25:Array;\r\n regression_poly35: Array;\r\n interpolatedY:number;\r\n\r\n constructor(private inputModel:InputModel) {\r\n this.regression_helpvalues = [...Array(13).keys()].map(index => {\r\n const x = 30 + index * 5;\r\n return {\r\n x: x,\r\n x2 : Math.pow(x, 2),\r\n x3 : Math.pow(x, 3),\r\n x4 : Math.pow(x, 4),\r\n } as RegressionHelpValueLine;\r\n });\r\n\r\n this.kreq_lines = [\r\n { beta: 30, jd_25: 0.04, jd_var: null, jd_30: 0.000, jd_35: 0.000 } as KreqTableLine,\r\n { beta: 35, jd_25: 0.07, jd_var: null, jd_30: 0.023, jd_35: -0.001 } as KreqTableLine,\r\n { beta: 40, jd_25: 0.10, jd_var: null, jd_30: 0.050, jd_35: 0.020 } as KreqTableLine,\r\n { beta: 45, jd_25: 0.13, jd_var: null, jd_30: 0.077, jd_35: 0.040 } as KreqTableLine,\r\n { beta: 50, jd_25: 0.155, jd_var: null, jd_30: 0.100, jd_35: 0.062 } as KreqTableLine,\r\n { beta: 55, jd_25: 0.180, jd_var: null, jd_30: 0.125, jd_35: 0.080 } as KreqTableLine,\r\n { beta: 60, jd_25: 0.205, jd_var: null, jd_30: 0.145, jd_35: 0.100 } as KreqTableLine,\r\n { beta: 65, jd_25: 0.230, jd_var: null, jd_30: 0.170, jd_35: 0.125 } as KreqTableLine,\r\n { beta: 70, jd_25: 0.255, jd_var: null, jd_30: 0.195, jd_35: 0.147 } as KreqTableLine,\r\n { beta: 75, jd_25: 0.285, jd_var: null, jd_30: 0.225, jd_35: 0.170 } as KreqTableLine,\r\n { beta: 80, jd_25: 0.315, jd_var: null, jd_30: 0.255, jd_35: 0.195 } as KreqTableLine,\r\n { beta: 85, jd_25: 0.350, jd_var: null, jd_30: 0.290, jd_35: 0.230 } as KreqTableLine,\r\n { beta: 90, jd_25: 0.405, jd_var: null, jd_30: 0.330, jd_35: 0.280 } as KreqTableLine\r\n ];\r\n\r\n this.kreq_lines.forEach(line => {\r\n line.jd_var = (this.inputModel.frictionAngleCharacteristic - 30) / (25 - 30) * (line.jd_25 - line.jd_30) + line.jd_30;\r\n line.jd_325 = (line.jd_30 + line.jd_35) / 2;\r\n });\r\n\r\n //this.lr_lines = [\r\n // { beta: 30, jd_25: 0.850, jd_var: null, jd_30: 0.000, jd_35: 0.000 } as KreqTableLine,\r\n // { beta: 35, jd_25: 0.860, jd_var: null, jd_30: 0.400, jd_35: 0.000 } as KreqTableLine,\r\n // { beta: 40, jd_25: 0.850, jd_var: null, jd_30: 0.490, jd_35: 0.270 } as KreqTableLine,\r\n // { beta: 45, jd_25: 0.820, jd_var: null, jd_30: 0.520, jd_35: 0.350 } as KreqTableLine,\r\n // { beta: 50, jd_25: 0.760, jd_var: null, jd_30: 0.505, jd_35: 0.380 } as KreqTableLine,\r\n // { beta: 55, jd_25: 0.720, jd_var: null, jd_30: 0.505, jd_35: 0.400 } as KreqTableLine,\r\n // { beta: 60, jd_25: 0.680, jd_var: null, jd_30: 0.505, jd_35: 0.410 } as KreqTableLine,\r\n // { beta: 65, jd_25: 0.640, jd_var: null, jd_30: 0.505, jd_35: 0.415 } as KreqTableLine,\r\n // { beta: 70, jd_25: 0.640, jd_var: null, jd_30: 0.515, jd_35: 0.425 } as KreqTableLine,\r\n // { beta: 75, jd_25: 0.650, jd_var: null, jd_30: 0.530, jd_35: 0.440 } as KreqTableLine,\r\n // { beta: 80, jd_25: 0.670, jd_var: null, jd_30: 0.560, jd_35: 0.460 } as KreqTableLine,\r\n // { beta: 85, jd_25: 0.690, jd_var: null, jd_30: 0.580, jd_35: 0.480 } as KreqTableLine,\r\n // { beta: 90, jd_25: 0.690, jd_var: null, jd_30: 0.590, jd_35: 0.500 } as KreqTableLine,\r\n //];\r\n\r\n //this.lr_lines.forEach(line => {\r\n // line.jd_var = (this.inputModel.frictionAngleDesign - 25) / (35 - 25) * (line.jd_35 - line.jd_25) + line.jd_25;\r\n // line.jd_325 = (line.jd_30 + line.jd_35) / 2;\r\n //});\r\n\r\n let fuckLR = 0;\r\n\r\n if (this.inputModel.frictionAngleCharacteristic < 30) {\r\n fuckLR = 0.7 - 0.032 * (this.inputModel.frictionAngleCharacteristic - 25);\r\n } else if (this.inputModel.frictionAngleCharacteristic < 35) {\r\n fuckLR = 0.54 - 0.024 * (this.inputModel.frictionAngleCharacteristic - 30);\r\n } else {\r\n fuckLR = 0.42 - 0.005 * (this.inputModel.frictionAngleCharacteristic - 35);\r\n }\r\n\r\n //const x = this.lr_lines.map(x => x.beta);\r\n //const y = this.lr_lines.map(x => x.jd_25);\r\n //this.regression_poly25 = (window).numpy.polyfit(x, y, 4);\r\n\r\n //const y25 = this.regression_poly25[0] * Math.pow(this.inputModel.slopeAngle, 4) +\r\n // this.regression_poly25[1] * Math.pow(this.inputModel.slopeAngle, 3) +\r\n // this.regression_poly25[2] * Math.pow(this.inputModel.slopeAngle, 2) +\r\n // this.regression_poly25[3] * this.inputModel.slopeAngle +\r\n // this.regression_poly25[4];\r\n\r\n //const y35Vals = this.lr_lines.map(x => x.jd_35);\r\n\r\n //this.regression_poly35 = (window).numpy.polyfit(x, y35Vals, 4);\r\n\r\n //const y35 = this.regression_poly35[0] * Math.pow(this.inputModel.slopeAngle, 4) +\r\n // this.regression_poly35[1] * Math.pow(this.inputModel.slopeAngle, 3) +\r\n // this.regression_poly35[2] * Math.pow(this.inputModel.slopeAngle, 2) +\r\n // this.regression_poly35[3] * this.inputModel.slopeAngle +\r\n // this.regression_poly35[4];\r\n\r\n //const trendpol = (window).numpy.polyfit([25,35], [y25, y35], 1);\r\n this.interpolatedY = fuckLR;\r\n //this.interpolatedY = trendpol[0] * this.inputModel.frictionAngleDesign + trendpol[1];\r\n }\r\n}\r\n","(function () {\r\n var globals = {\r\n isUndefined: function (o) {\r\n return (o === undefined);\r\n },\r\n\r\n isNull: function (o) {\r\n return (o === null);\r\n },\r\n\r\n isNullOrUndefined: function (o) {\r\n return (o === null) || (o === undefined);\r\n },\r\n\r\n isValue: function (o) {\r\n return (o !== null) && (o !== undefined);\r\n }\r\n };\r\n\r\n var started = false;\r\n var startCallbacks = [];\r\n\r\n function onStartup(cb) {\r\n startCallbacks ? startCallbacks.push(cb) : setTimeout(cb, 0);\r\n }\r\n function startup() {\r\n if (startCallbacks) {\r\n var callbacks = startCallbacks;\r\n startCallbacks = null;\r\n for (var i = 0, l = callbacks.length; i < l; i++) {\r\n callbacks[i]();\r\n }\r\n }\r\n }\r\n if (document.addEventListener) {\r\n document.readyState == 'complete' ? startup() : document.addEventListener('DOMContentLoaded', startup, false);\r\n }\r\n else if (window.attachEvent) {\r\n window.attachEvent('onload', function () {\r\n startup();\r\n });\r\n }\r\n\r\n var ss = window.ss;\r\n if (!ss) {\r\n window.ss = ss = {\r\n init: onStartup,\r\n ready: onStartup\r\n };\r\n }\r\n for (var n in globals) {\r\n ss[n] = globals[n];\r\n }\r\n})();\r\n\r\n/**\r\n * Helper function for adding properties with Object.defineProperty\r\n * Copied from example on: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty\r\n */\r\nfunction withValue(value) {\r\n var d = withValue.d || (\r\n withValue.d = {\r\n enumerable: false,\r\n writable: false,\r\n configurable: false,\r\n value: null\r\n }\r\n );\r\n d.value = value;\r\n return d;\r\n}\r\n\r\nObject.__typeName = 'Object';\r\nObject.__baseType = null;\r\n\r\nObject.clearKeys = function Object$clearKeys(d) {\r\n for (var n in d) {\r\n delete d[n];\r\n }\r\n}\r\n\r\nObject.keyExists = function Object$keyExists(d, key) {\r\n return d[key] !== undefined;\r\n}\r\n\r\nif (!Object.keys) {\r\n Object.keys = function Object$keys(d) {\r\n var keys = [];\r\n for (var n in d) {\r\n keys.push(n);\r\n }\r\n return keys;\r\n }\r\n\r\n Object.getKeyCount = function Object$getKeyCount(d) {\r\n var count = 0;\r\n for (var n in d) {\r\n count++;\r\n }\r\n return count;\r\n }\r\n}\r\nelse {\r\n Object.getKeyCount = function Object$getKeyCount(d) {\r\n return Object.keys(d).length;\r\n }\r\n}\r\n\r\nBoolean.__typeName = 'Boolean';\r\n\r\nBoolean.parse = function Boolean$parse(s) {\r\n return (s.toLowerCase() == 'true');\r\n}\r\n\r\nNumber.__typeName = 'Number';\r\n\r\nNumber.parse = function Number$parse(s) {\r\n if (!s || !s.length) {\r\n return 0;\r\n }\r\n if ((s.indexOf('.') >= 0) || (s.indexOf('e') >= 0) ||\r\n s.endsWith('f') || s.endsWith('F')) {\r\n return parseFloat(s);\r\n }\r\n return parseInt(s, 10);\r\n}\r\n\r\nNumber.prototype.format = function Number$format(format) {\r\n if (ss.isNullOrUndefined(format) || (format.length == 0) || (format == 'i')) {\r\n return this.toString();\r\n }\r\n return this._netFormat(format, false);\r\n}\r\n\r\nNumber.prototype.localeFormat = function Number$format(format) {\r\n if (ss.isNullOrUndefined(format) || (format.length == 0) || (format == 'i')) {\r\n return this.toLocaleString();\r\n }\r\n return this._netFormat(format, true);\r\n}\r\n\r\nNumber._commaFormat = function Number$_commaFormat(number, groups, decimal, comma) {\r\n var decimalPart = null;\r\n var decimalIndex = number.indexOf(decimal);\r\n if (decimalIndex > 0) {\r\n decimalPart = number.substr(decimalIndex);\r\n number = number.substr(0, decimalIndex);\r\n }\r\n\r\n var negative = number.startsWith('-');\r\n if (negative) {\r\n number = number.substr(1);\r\n }\r\n\r\n var groupIndex = 0;\r\n var groupSize = groups[groupIndex];\r\n if (number.length < groupSize) {\r\n return decimalPart ? number + decimalPart : number;\r\n }\r\n\r\n var index = number.length;\r\n var s = '';\r\n var done = false;\r\n while (!done) {\r\n var length = groupSize;\r\n var startIndex = index - length;\r\n if (startIndex < 0) {\r\n groupSize += startIndex;\r\n length += startIndex;\r\n startIndex = 0;\r\n done = true;\r\n }\r\n if (!length) {\r\n break;\r\n }\r\n\r\n var part = number.substr(startIndex, length);\r\n if (s.length) {\r\n s = part + comma + s;\r\n }\r\n else {\r\n s = part;\r\n }\r\n index -= length;\r\n\r\n if (groupIndex < groups.length - 1) {\r\n groupIndex++;\r\n groupSize = groups[groupIndex];\r\n }\r\n }\r\n\r\n if (negative) {\r\n s = '-' + s;\r\n }\r\n return decimalPart ? s + decimalPart : s;\r\n}\r\n\r\nNumber.prototype._netFormat = function Number$_netFormat(format, useLocale) {\r\n var nf = useLocale ? ss.CultureInfo.CurrentCulture.numberFormat : ss.CultureInfo.InvariantCulture.numberFormat;\r\n\r\n var s = '';\r\n var precision = -1;\r\n\r\n if (format.length > 1) {\r\n precision = parseInt(format.substr(1));\r\n }\r\n\r\n var fs = format.charAt(0);\r\n switch (fs) {\r\n case 'd': case 'D':\r\n s = parseInt(Math.abs(this)).toString();\r\n if (precision != -1) {\r\n s = s.padLeft(precision, '0');\r\n }\r\n if (this < 0) {\r\n s = '-' + s;\r\n }\r\n break;\r\n case 'x': case 'X':\r\n s = parseInt(Math.abs(this)).toString(16);\r\n if (fs == 'X') {\r\n s = s.toUpperCase();\r\n }\r\n if (precision != -1) {\r\n s = s.padLeft(precision, '0');\r\n }\r\n break;\r\n case 'e': case 'E':\r\n if (precision == -1) {\r\n s = this.toExponential();\r\n }\r\n else {\r\n s = this.toExponential(precision);\r\n }\r\n if (fs == 'E') {\r\n s = s.toUpperCase();\r\n }\r\n break;\r\n case 'f': case 'F':\r\n case 'n': case 'N':\r\n if (precision == -1) {\r\n precision = nf.numberDecimalDigits;\r\n }\r\n s = this.toFixed(precision).toString();\r\n if (precision && (nf.numberDecimalSeparator != '.')) {\r\n var index = s.indexOf('.');\r\n s = s.substr(0, index) + nf.numberDecimalSeparator + s.substr(index + 1);\r\n }\r\n if ((fs == 'n') || (fs == 'N')) {\r\n s = Number._commaFormat(s, nf.numberGroupSizes, nf.numberDecimalSeparator, nf.numberGroupSeparator);\r\n }\r\n break;\r\n case 'c': case 'C':\r\n if (precision == -1) {\r\n precision = nf.currencyDecimalDigits;\r\n }\r\n s = Math.abs(this).toFixed(precision).toString();\r\n if (precision && (nf.currencyDecimalSeparator != '.')) {\r\n var index = s.indexOf('.');\r\n s = s.substr(0, index) + nf.currencyDecimalSeparator + s.substr(index + 1);\r\n }\r\n s = Number._commaFormat(s, nf.currencyGroupSizes, nf.currencyDecimalSeparator, nf.currencyGroupSeparator);\r\n if (this < 0) {\r\n s = String.format(nf.currencyNegativePattern, s);\r\n }\r\n else {\r\n s = String.format(nf.currencyPositivePattern, s);\r\n }\r\n break;\r\n case 'p': case 'P':\r\n if (precision == -1) {\r\n precision = nf.percentDecimalDigits;\r\n }\r\n s = (Math.abs(this) * 100.0).toFixed(precision).toString();\r\n if (precision && (nf.percentDecimalSeparator != '.')) {\r\n var index = s.indexOf('.');\r\n s = s.substr(0, index) + nf.percentDecimalSeparator + s.substr(index + 1);\r\n }\r\n s = Number._commaFormat(s, nf.percentGroupSizes, nf.percentDecimalSeparator, nf.percentGroupSeparator);\r\n if (this < 0) {\r\n s = String.format(nf.percentNegativePattern, s);\r\n }\r\n else {\r\n s = String.format(nf.percentPositivePattern, s);\r\n }\r\n break;\r\n }\r\n\r\n return s;\r\n}\r\n\r\nString.__typeName = 'String';\r\nString.Empty = '';\r\n\r\nString.compare = function String$compare(s1, s2, ignoreCase) {\r\n if (ignoreCase) {\r\n if (s1) {\r\n s1 = s1.toUpperCase();\r\n }\r\n if (s2) {\r\n s2 = s2.toUpperCase();\r\n }\r\n }\r\n s1 = s1 || '';\r\n s2 = s2 || '';\r\n\r\n if (s1 == s2) {\r\n return 0;\r\n }\r\n if (s1 < s2) {\r\n return -1;\r\n }\r\n return 1;\r\n}\r\n\r\nString.prototype.compareTo = function String$compareTo(s, ignoreCase) {\r\n return String.compare(this, s, ignoreCase);\r\n}\r\n\r\nString.concat = function String$concat() {\r\n if (arguments.length === 2) {\r\n return arguments[0] + arguments[1];\r\n }\r\n return Array.prototype.join.call(arguments, '');\r\n}\r\n\r\nString.prototype.endsWith = function String$endsWith(suffix) {\r\n if (!suffix.length) {\r\n return true;\r\n }\r\n if (suffix.length > this.length) {\r\n return false;\r\n }\r\n return (this.substr(this.length - suffix.length) == suffix);\r\n}\r\n\r\nString.equals = function String$equals1(s1, s2, ignoreCase) {\r\n return String.compare(s1, s2, ignoreCase) == 0;\r\n}\r\n\r\nString._format = function String$_format(format, values, useLocale) {\r\n if (!String._formatRE) {\r\n String._formatRE = /(\\{[^\\}^\\{]+\\})/g;\r\n }\r\n\r\n return format.replace(String._formatRE,\r\n function (str, m) {\r\n var index = parseInt(m.substr(1));\r\n var value = values[index + 1];\r\n if (ss.isNullOrUndefined(value)) {\r\n return '';\r\n }\r\n if (value.format) {\r\n var formatSpec = null;\r\n var formatIndex = m.indexOf(':');\r\n if (formatIndex > 0) {\r\n formatSpec = m.substring(formatIndex + 1, m.length - 1);\r\n }\r\n return useLocale ? value.localeFormat(formatSpec) : value.format(formatSpec);\r\n }\r\n else {\r\n return useLocale ? value.toLocaleString() : value.toString();\r\n }\r\n });\r\n}\r\n\r\nString.format = function String$format(format) {\r\n return String._format(format, arguments, /* useLocale */ false);\r\n}\r\n\r\nString.fromChar = function String$fromChar(ch, count) {\r\n var s = ch;\r\n for (var i = 1; i < count; i++) {\r\n s += ch;\r\n }\r\n return s;\r\n}\r\n\r\nString.prototype.htmlDecode = function String$htmlDecode() {\r\n var div = document.createElement('div');\r\n div.innerHTML = this;\r\n return div.textContent || div.innerText;\r\n}\r\n\r\nString.prototype.htmlEncode = function String$htmlEncode() {\r\n var div = document.createElement('div');\r\n div.appendChild(document.createTextNode(this));\r\n return div.innerHTML.replace(/\\\"/g, '"');\r\n}\r\n\r\nString.prototype.indexOfAny = function String$indexOfAny(chars, startIndex, count) {\r\n var length = this.length;\r\n if (!length) {\r\n return -1;\r\n }\r\n\r\n startIndex = startIndex || 0;\r\n count = count || length;\r\n\r\n var endIndex = startIndex + count - 1;\r\n if (endIndex >= length) {\r\n endIndex = length - 1;\r\n }\r\n\r\n for (var i = startIndex; i <= endIndex; i++) {\r\n if (chars.indexOf(this.charAt(i)) >= 0) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n\r\nString.prototype.insert = function String$insert(index, value) {\r\n if (!value) {\r\n return this.valueOf();\r\n }\r\n if (!index) {\r\n return value + this;\r\n }\r\n var s1 = this.substr(0, index);\r\n var s2 = this.substr(index);\r\n return s1 + value + s2;\r\n}\r\n\r\nString.isNullOrEmpty = function String$isNullOrEmpty(s) {\r\n return !s || !s.length;\r\n}\r\n\r\nString.isNullOrWhiteSpace = function String$isNullOrWhiteSpace(s) {\r\n return String.isNullOrEmpty(s) || s.trim() === \"\";\r\n}\r\n\r\nString.prototype.lastIndexOfAny = function String$lastIndexOfAny(chars, startIndex, count) {\r\n var length = this.length;\r\n if (!length) {\r\n return -1;\r\n }\r\n\r\n startIndex = startIndex || length - 1;\r\n count = count || length;\r\n\r\n var endIndex = startIndex - count + 1;\r\n if (endIndex < 0) {\r\n endIndex = 0;\r\n }\r\n\r\n for (var i = startIndex; i >= endIndex; i--) {\r\n if (chars.indexOf(this.charAt(i)) >= 0) {\r\n return i;\r\n }\r\n }\r\n return -1;\r\n}\r\n\r\nString.localeFormat = function String$localeFormat(format) {\r\n return String._format(format, arguments, /* useLocale */ true);\r\n}\r\n\r\nString.prototype.padLeft = function String$padLeft(totalWidth, ch) {\r\n if (this.length < totalWidth) {\r\n ch = ch || ' ';\r\n return String.fromChar(ch, totalWidth - this.length) + this;\r\n }\r\n return this.valueOf();\r\n}\r\n\r\nString.prototype.padRight = function String$padRight(totalWidth, ch) {\r\n if (this.length < totalWidth) {\r\n ch = ch || ' ';\r\n return this + String.fromChar(ch, totalWidth - this.length);\r\n }\r\n return this.valueOf();\r\n}\r\n\r\nString.prototype.remove = function String$remove(index, count) {\r\n if (!count || ((index + count) > this.length)) {\r\n return this.substr(0, index);\r\n }\r\n return this.substr(0, index) + this.substr(index + count);\r\n}\r\n\r\nString.prototype.replaceAll = function String$replaceAll(oldValue, newValue) {\r\n newValue = newValue || '';\r\n return this.split(oldValue).join(newValue);\r\n}\r\n\r\nString.prototype.startsWith = function String$startsWith(prefix) {\r\n if (!prefix.length) {\r\n return true;\r\n }\r\n if (prefix.length > this.length) {\r\n return false;\r\n }\r\n return (this.substr(0, prefix.length) == prefix);\r\n}\r\n\r\nif (!String.prototype.trim) {\r\n String.prototype.trim = function String$trim() {\r\n return this.trimEnd().trimStart();\r\n }\r\n}\r\n\r\nString.prototype.trimEnd = function String$trimEnd() {\r\n return this.replace(/\\s*$/, '');\r\n}\r\n\r\nString.prototype.trimStart = function String$trimStart() {\r\n return this.replace(/^\\s*/, '');\r\n}\r\n\r\nArray.__typeName = 'Array';\r\nArray.__interfaces = [ss.IEnumerable];\r\n\r\nObject.defineProperty(Array.prototype, 'add', withValue(function Array$add(item) {\r\n this[this.length] = item;\r\n}));\r\n\r\nObject.defineProperty(Array.prototype, 'addRange', withValue(function Array$addRange(items) {\r\n this.push.apply(this, items);\r\n}));\r\n\r\nObject.defineProperty(Array.prototype, 'aggregate', withValue(function Array$aggregate(seed, callback, instance) {\r\n var length = this.length;\r\n for (var i = 0; i < length; i++) {\r\n if (i in this) {\r\n seed = callback.call(instance, seed, this[i], i, this);\r\n }\r\n }\r\n return seed;\r\n}));\r\n\r\nObject.defineProperty(Array.prototype, 'clear', withValue(function Array$clear() {\r\n this.length = 0;\r\n}));\r\n\r\nObject.defineProperty(Array.prototype, 'clone', withValue(function Array$clone() {\r\n if (this.length === 1) {\r\n return [this[0]];\r\n }\r\n else {\r\n return Array.apply(null, this);\r\n }\r\n}));\r\n\r\nObject.defineProperty(Array.prototype, 'contains', withValue(function Array$contains(item) {\r\n var index = this.indexOf(item);\r\n return (index >= 0);\r\n}));\r\n\r\nObject.defineProperty(Array.prototype, 'dequeue', withValue(function Array$dequeue() {\r\n return this.shift();\r\n}));\r\n\r\nObject.defineProperty(Array.prototype, 'enqueue', withValue(function Array$enqueue(item) {\r\n this._queue = true;\r\n this.push(item);\r\n}));\r\n\r\nObject.defineProperty(Array.prototype, 'peek', withValue(function Array$peek() {\r\n if (this.length) {\r\n var index = this._queue ? 0 : this.length - 1;\r\n return this[index];\r\n }\r\n return null;\r\n}));\r\n\r\nif (!Array.prototype.every) {\r\n Object.defineProperty(Array.prototype, 'every', withValue(function Array$every(callback, instance) {\r\n var length = this.length;\r\n for (var i = 0; i < length; i++) {\r\n if (i in this && !callback.call(instance, this[i], i, this)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }));\r\n}\r\n\r\nObject.defineProperty(Array.prototype, 'extract', withValue(function Array$extract(index, count) {\r\n if (!count) {\r\n return this.slice(index);\r\n }\r\n return this.slice(index, index + count);\r\n}));\r\n\r\nif (!Array.prototype.filter) {\r\n Object.defineProperty(Array.prototype, 'filter', withValue(function Array$filter(callback, instance) {\r\n var length = this.length;\r\n var filtered = [];\r\n for (var i = 0; i < length; i++) {\r\n if (i in this) {\r\n var val = this[i];\r\n if (callback.call(instance, val, i, this)) {\r\n filtered.push(val);\r\n }\r\n }\r\n }\r\n return filtered;\r\n }));\r\n}\r\n\r\nif (!Array.prototype.forEach) {\r\n Object.defineProperty(Array.prototype, 'forEach', withValue(function Array$forEach(callback, instance) {\r\n var length = this.length;\r\n for (var i = 0; i < length; i++) {\r\n if (i in this) {\r\n callback.call(instance, this[i], i, this);\r\n }\r\n }\r\n }));\r\n}\r\n\r\nObject.defineProperty(Array.prototype, 'getEnumerator', withValue(function Array$getEnumerator() {\r\n return new ss.ArrayEnumerator(this);\r\n}));\r\n\r\nObject.defineProperty(Array.prototype, 'groupBy', withValue(function Array$groupBy(callback, instance) {\r\n var length = this.length;\r\n var groups = [];\r\n var keys = {};\r\n for (var i = 0; i < length; i++) {\r\n if (i in this) {\r\n var key = callback.call(instance, this[i], i);\r\n if (String.isNullOrEmpty(key)) {\r\n continue;\r\n }\r\n var items = keys[key];\r\n if (!items) {\r\n items = [];\r\n items.key = key;\r\n\r\n keys[key] = items;\r\n groups.add(items);\r\n }\r\n items.add(this[i]);\r\n }\r\n }\r\n return groups;\r\n}));\r\n\r\nObject.defineProperty(Array.prototype, 'index', withValue(function Array$index(callback, instance) {\r\n var length = this.length;\r\n var items = {};\r\n for (var i = 0; i < length; i++) {\r\n if (i in this) {\r\n var key = callback.call(instance, this[i], i);\r\n if (String.isNullOrEmpty(key)) {\r\n continue;\r\n }\r\n items[key] = this[i];\r\n }\r\n }\r\n return items;\r\n}));\r\n\r\nif (!Array.prototype.indexOf) {\r\n Object.defineProperty(Array.prototype, 'indexOf', withValue(function Array$indexOf(item, startIndex) {\r\n startIndex = startIndex || 0;\r\n var length = this.length;\r\n if (length) {\r\n for (var index = startIndex; index < length; index++) {\r\n if (this[index] === item) {\r\n return index;\r\n }\r\n }\r\n }\r\n return -1;\r\n }));\r\n}\r\n\r\nObject.defineProperty(Array.prototype, 'insert', withValue(function Array$insert(index, item) {\r\n this.splice(index, 0, item);\r\n}));\r\n\r\nObject.defineProperty(Array.prototype, 'insertRange', withValue(function Array$insertRange(index, items) {\r\n if (index === 0) {\r\n this.unshift.apply(this, items);\r\n }\r\n else {\r\n for (var i = 0; i < items.length; i++) {\r\n this.splice(index + i, 0, items[i]);\r\n }\r\n }\r\n}));\r\n\r\nif (!Array.prototype.map) {\r\n Object.defineProperty(Array.prototype, 'map', withValue(function Array$map(callback, instance) {\r\n var length = this.length;\r\n var mapped = new Array(length);\r\n for (var i = 0; i < length; i++) {\r\n if (i in this) {\r\n mapped[i] = callback.call(instance, this[i], i, this);\r\n }\r\n }\r\n return mapped;\r\n }));\r\n}\r\n\r\nArray.parse = function Array$parse(s) {\r\n return eval('(' + s + ')');\r\n}\r\n\r\nObject.defineProperty(Array.prototype, 'remove', withValue(function Array$remove(item) {\r\n var index = this.indexOf(item);\r\n if (index >= 0) {\r\n this.splice(index, 1);\r\n return true;\r\n }\r\n return false;\r\n}));\r\n\r\nObject.defineProperty(Array.prototype, 'removeAt', withValue(function Array$removeAt(index) {\r\n this.splice(index, 1);\r\n}));\r\n\r\nObject.defineProperty(Array.prototype, 'removeRange', withValue(function Array$removeRange(index, count) {\r\n return this.splice(index, count);\r\n}));\r\n\r\nif (!Array.prototype.some) {\r\n Object.defineProperty(Array.prototype, 'some', withValue(function Array$some(callback, instance) {\r\n var length = this.length;\r\n for (var i = 0; i < length; i++) {\r\n if (i in this && callback.call(instance, this[i], i, this)) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n }));\r\n}\r\n\r\nArray.toArray = function Array$toArray(obj) {\r\n return Array.prototype.slice.call(obj);\r\n}\r\n\r\nRegExp.__typeName = 'RegExp';\r\n\r\nRegExp.parse = function RegExp$parse(s) {\r\n if (s.startsWith('/')) {\r\n var endSlashIndex = s.lastIndexOf('/');\r\n if (endSlashIndex > 1) {\r\n var expression = s.substring(1, endSlashIndex);\r\n var flags = s.substr(endSlashIndex + 1);\r\n return new RegExp(expression, flags);\r\n }\r\n }\r\n\r\n return null;\r\n}\r\n\r\nDate.__typeName = 'Date';\r\n\r\nDate.empty = null;\r\n\r\nDate.get_now = function Date$get_now() {\r\n return new Date();\r\n}\r\n\r\nDate.get_today = function Date$get_today() {\r\n var d = new Date();\r\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\r\n}\r\n\r\nDate.isEmpty = function Date$isEmpty(d) {\r\n return (d === null) || (d.valueOf() === 0);\r\n}\r\n\r\nDate.prototype.format = function Date$format(format) {\r\n if (ss.isNullOrUndefined(format) || (format.length == 0) || (format == 'i')) {\r\n return this.toString();\r\n }\r\n if (format == 'id') {\r\n return this.toDateString();\r\n }\r\n if (format == 'it') {\r\n return this.toTimeString();\r\n }\r\n\r\n return this._netFormat(format, false);\r\n}\r\n\r\nDate.prototype.localeFormat = function Date$localeFormat(format) {\r\n if (ss.isNullOrUndefined(format) || (format.length == 0) || (format == 'i')) {\r\n return this.toLocaleString();\r\n }\r\n if (format == 'id') {\r\n return this.toLocaleDateString();\r\n }\r\n if (format == 'it') {\r\n return this.toLocaleTimeString();\r\n }\r\n\r\n return this._netFormat(format, true);\r\n}\r\n\r\nDate.prototype._netFormat = function Date$_netFormat(format, useLocale) {\r\n var dt = this;\r\n var dtf = useLocale ? ss.CultureInfo.CurrentCulture.dateFormat : ss.CultureInfo.InvariantCulture.dateFormat;\r\n\r\n if (format.length == 1) {\r\n switch (format) {\r\n case 'f': format = dtf.longDatePattern + ' ' + dtf.shortTimePattern; break;\r\n case 'F': format = dtf.dateTimePattern; break;\r\n\r\n case 'd': format = dtf.shortDatePattern; break;\r\n case 'D': format = dtf.longDatePattern; break;\r\n\r\n case 't': format = dtf.shortTimePattern; break;\r\n case 'T': format = dtf.longTimePattern; break;\r\n\r\n case 'g': format = dtf.shortDatePattern + ' ' + dtf.shortTimePattern; break;\r\n case 'G': format = dtf.shortDatePattern + ' ' + dtf.longTimePattern; break;\r\n\r\n case 'R': case 'r':\r\n dtf = ss.CultureInfo.InvariantCulture.dateFormat;\r\n format = dtf.gmtDateTimePattern;\r\n break;\r\n case 'u': format = dtf.universalDateTimePattern; break;\r\n case 'U':\r\n format = dtf.dateTimePattern;\r\n dt = new Date(dt.getUTCFullYear(), dt.getUTCMonth(), dt.getUTCDate(),\r\n dt.getUTCHours(), dt.getUTCMinutes(), dt.getUTCSeconds(), dt.getUTCMilliseconds());\r\n break;\r\n\r\n case 's': format = dtf.sortableDateTimePattern; break;\r\n }\r\n }\r\n\r\n if (format.charAt(0) == '%') {\r\n format = format.substr(1);\r\n }\r\n\r\n if (!Date._formatRE) {\r\n Date._formatRE = /'.*?[^\\\\]'|dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yy|y|hh|h|HH|H|mm|m|ss|s|tt|t|fff|ff|f|zzz|zz|z/g;\r\n }\r\n\r\n var re = Date._formatRE;\r\n var sb = new ss.StringBuilder();\r\n\r\n re.lastIndex = 0;\r\n while (true) {\r\n var index = re.lastIndex;\r\n var match = re.exec(format);\r\n\r\n sb.append(format.slice(index, match ? match.index : format.length));\r\n if (!match) {\r\n break;\r\n }\r\n\r\n var fs = match[0];\r\n var part = fs;\r\n switch (fs) {\r\n case 'dddd':\r\n part = dtf.dayNames[dt.getDay()];\r\n break;\r\n case 'ddd':\r\n part = dtf.shortDayNames[dt.getDay()];\r\n break;\r\n case 'dd':\r\n part = dt.getDate().toString().padLeft(2, '0');\r\n break;\r\n case 'd':\r\n part = dt.getDate();\r\n break;\r\n case 'MMMM':\r\n part = dtf.monthNames[dt.getMonth()];\r\n break;\r\n case 'MMM':\r\n part = dtf.shortMonthNames[dt.getMonth()];\r\n break;\r\n case 'MM':\r\n part = (dt.getMonth() + 1).toString().padLeft(2, '0');\r\n break;\r\n case 'M':\r\n part = (dt.getMonth() + 1);\r\n break;\r\n case 'yyyy':\r\n part = dt.getFullYear();\r\n break;\r\n case 'yy':\r\n part = (dt.getFullYear() % 100).toString().padLeft(2, '0');\r\n break;\r\n case 'y':\r\n part = (dt.getFullYear() % 100);\r\n break;\r\n case 'h': case 'hh':\r\n part = dt.getHours() % 12;\r\n if (!part) {\r\n part = '12';\r\n }\r\n else if (fs == 'hh') {\r\n part = part.toString().padLeft(2, '0');\r\n }\r\n break;\r\n case 'HH':\r\n part = dt.getHours().toString().padLeft(2, '0');\r\n break;\r\n case 'H':\r\n part = dt.getHours();\r\n break;\r\n case 'mm':\r\n part = dt.getMinutes().toString().padLeft(2, '0');\r\n break;\r\n case 'm':\r\n part = dt.getMinutes();\r\n break;\r\n case 'ss':\r\n part = dt.getSeconds().toString().padLeft(2, '0');\r\n break;\r\n case 's':\r\n part = dt.getSeconds();\r\n break;\r\n case 't': case 'tt':\r\n part = (dt.getHours() < 12) ? dtf.amDesignator : dtf.pmDesignator;\r\n if (fs == 't') {\r\n part = part.charAt(0);\r\n }\r\n break;\r\n case 'fff':\r\n part = dt.getMilliseconds().toString().padLeft(3, '0');\r\n break;\r\n case 'ff':\r\n part = dt.getMilliseconds().toString().padLeft(3).substr(0, 2);\r\n break;\r\n case 'f':\r\n part = dt.getMilliseconds().toString().padLeft(3).charAt(0);\r\n break;\r\n case 'z':\r\n part = dt.getTimezoneOffset() / 60;\r\n part = ((part >= 0) ? '-' : '+') + Math.floor(Math.abs(part));\r\n break;\r\n case 'zz': case 'zzz':\r\n part = dt.getTimezoneOffset() / 60;\r\n part = ((part >= 0) ? '-' : '+') + Math.floor(Math.abs(part)).toString().padLeft(2, '0');\r\n if (fs == 'zzz') {\r\n part += dtf.timeSeparator + Math.abs(dt.getTimezoneOffset() % 60).toString().padLeft(2, '0');\r\n }\r\n break;\r\n default:\r\n if (part.charAt(0) == '\\'') {\r\n part = part.substr(1, part.length - 2).replace(/\\\\'/g, '\\'');\r\n }\r\n break;\r\n }\r\n sb.append(part);\r\n }\r\n\r\n return sb.toString();\r\n}\r\n\r\nDate.parseDate = function Date$parse(s) {\r\n var t = Date.parse(s);\r\n return isNaN(t) ? t : new Date(t);\r\n}\r\n\r\nError.__typeName = 'Error';\r\n\r\nError.prototype.popStackFrame = function Error$popStackFrame() {\r\n if (ss.isNullOrUndefined(this.stack) ||\r\n ss.isNullOrUndefined(this.fileName) ||\r\n ss.isNullOrUndefined(this.lineNumber)) {\r\n return;\r\n }\r\n\r\n var stackFrames = this.stack.split('\\n');\r\n var currentFrame = stackFrames[0];\r\n var pattern = this.fileName + ':' + this.lineNumber;\r\n while (!ss.isNullOrUndefined(currentFrame) &&\r\n currentFrame.indexOf(pattern) === -1) {\r\n stackFrames.shift();\r\n currentFrame = stackFrames[0];\r\n }\r\n\r\n var nextFrame = stackFrames[1];\r\n if (isNullOrUndefined(nextFrame)) {\r\n return;\r\n }\r\n\r\n var nextFrameParts = nextFrame.match(/@(.*):(\\d+)$/);\r\n if (ss.isNullOrUndefined(nextFrameParts)) {\r\n return;\r\n }\r\n\r\n stackFrames.shift();\r\n this.stack = stackFrames.join(\"\\n\");\r\n this.fileName = nextFrameParts[1];\r\n this.lineNumber = parseInt(nextFrameParts[2]);\r\n}\r\n\r\nError.createError = function Error$createError(message, errorInfo, innerException) {\r\n var e = new Error(message);\r\n if (errorInfo) {\r\n for (var v in errorInfo) {\r\n e[v] = errorInfo[v];\r\n }\r\n }\r\n if (innerException) {\r\n e.innerException = innerException;\r\n }\r\n\r\n e.popStackFrame();\r\n return e;\r\n}\r\n\r\nss.Debug = window.Debug || function () { };\r\nss.Debug.__typeName = 'Debug';\r\n\r\nif (!ss.Debug.writeln) {\r\n ss.Debug.writeln = function Debug$writeln(text) {\r\n if (window.console) {\r\n if (window.console.debug) {\r\n window.console.debug(text);\r\n return;\r\n }\r\n else if (window.console.log) {\r\n window.console.log(text);\r\n return;\r\n }\r\n }\r\n else if (window.opera &&\r\n window.opera.postError) {\r\n window.opera.postError(text);\r\n return;\r\n }\r\n }\r\n}\r\n\r\nss.Debug._fail = function Debug$_fail(message) {\r\n ss.Debug.writeln(message);\r\n eval('debugger;');\r\n}\r\n\r\nss.Debug.assert = function Debug$assert(condition, message) {\r\n if (!condition) {\r\n message = 'Assert failed: ' + message;\r\n if (confirm(message + '\\r\\n\\r\\nBreak into debugger?')) {\r\n ss.Debug._fail(message);\r\n }\r\n }\r\n}\r\n\r\nss.Debug.fail = function Debug$fail(message) {\r\n ss.Debug._fail(message);\r\n}\r\n\r\nwindow.Type = Function;\r\nType.__typeName = 'Type';\r\n\r\nwindow.__Namespace = function (name) {\r\n this.__typeName = name;\r\n}\r\n__Namespace.prototype = {\r\n __namespace: true,\r\n getName: function () {\r\n return this.__typeName;\r\n }\r\n}\r\n\r\nType.registerNamespace = function Type$registerNamespace(name) {\r\n if (!window.__namespaces) {\r\n window.__namespaces = {};\r\n }\r\n if (!window.__rootNamespaces) {\r\n window.__rootNamespaces = [];\r\n }\r\n\r\n if (window.__namespaces[name]) {\r\n return;\r\n }\r\n\r\n var ns = window;\r\n var nameParts = name.split('.');\r\n\r\n for (var i = 0; i < nameParts.length; i++) {\r\n var part = nameParts[i];\r\n var nso = ns[part];\r\n if (!nso) {\r\n ns[part] = nso = new __Namespace(nameParts.slice(0, i + 1).join('.'));\r\n if (i == 0) {\r\n window.__rootNamespaces.add(nso);\r\n }\r\n }\r\n ns = nso;\r\n }\r\n\r\n window.__namespaces[name] = ns;\r\n}\r\n\r\nType.prototype.registerClass = function Type$registerClass(name, baseType, interfaceType) {\r\n this.prototype.constructor = this;\r\n this.__typeName = name;\r\n this.__class = true;\r\n this.__baseType = baseType || Object;\r\n if (baseType) {\r\n this.__basePrototypePending = true;\r\n }\r\n\r\n if (interfaceType) {\r\n this.__interfaces = [];\r\n for (var i = 2; i < arguments.length; i++) {\r\n interfaceType = arguments[i];\r\n this.__interfaces.add(interfaceType);\r\n }\r\n }\r\n}\r\n\r\nType.prototype.registerInterface = function Type$createInterface(name) {\r\n this.__typeName = name;\r\n this.__interface = true;\r\n}\r\n\r\nType.prototype.registerEnum = function Type$createEnum(name, flags) {\r\n for (var field in this.prototype) {\r\n this[field] = this.prototype[field];\r\n }\r\n\r\n this.__typeName = name;\r\n this.__enum = true;\r\n if (flags) {\r\n this.__flags = true;\r\n }\r\n}\r\n\r\nType.prototype.setupBase = function Type$setupBase() {\r\n if (this.__basePrototypePending) {\r\n var baseType = this.__baseType;\r\n if (baseType.__basePrototypePending) {\r\n baseType.setupBase();\r\n }\r\n\r\n for (var memberName in baseType.prototype) {\r\n var memberValue = baseType.prototype[memberName];\r\n if (!this.prototype[memberName]) {\r\n this.prototype[memberName] = memberValue;\r\n }\r\n }\r\n\r\n delete this.__basePrototypePending;\r\n }\r\n}\r\n\r\nif (!Type.prototype.resolveInheritance) {\r\n Type.prototype.resolveInheritance = Type.prototype.setupBase;\r\n}\r\n\r\nType.prototype.initializeBase = function Type$initializeBase(instance, args) {\r\n if (this.__basePrototypePending) {\r\n this.setupBase();\r\n }\r\n\r\n if (!args) {\r\n this.__baseType.apply(instance);\r\n }\r\n else {\r\n this.__baseType.apply(instance, args);\r\n }\r\n}\r\n\r\nType.prototype.callBaseMethod = function Type$callBaseMethod(instance, name, args) {\r\n var baseMethod = this.__baseType.prototype[name];\r\n if (!args) {\r\n return baseMethod.apply(instance);\r\n }\r\n else {\r\n return baseMethod.apply(instance, args);\r\n }\r\n}\r\n\r\nType.prototype.get_baseType = function Type$get_baseType() {\r\n return this.__baseType || null;\r\n}\r\n\r\nType.prototype.get_fullName = function Type$get_fullName() {\r\n return this.__typeName;\r\n}\r\n\r\nType.prototype.get_name = function Type$get_name() {\r\n var fullName = this.__typeName;\r\n var nsIndex = fullName.lastIndexOf('.');\r\n if (nsIndex > 0) {\r\n return fullName.substr(nsIndex + 1);\r\n }\r\n return fullName;\r\n}\r\n\r\nType.prototype.getInterfaces = function Type$getInterfaces() {\r\n return this.__interfaces;\r\n}\r\n\r\nType.prototype.isInstanceOfType = function Type$isInstanceOfType(instance) {\r\n if (ss.isNullOrUndefined(instance)) {\r\n return false;\r\n }\r\n if ((this == Object) || (instance instanceof this)) {\r\n return true;\r\n }\r\n\r\n var type = Type.getInstanceType(instance);\r\n return this.isAssignableFrom(type);\r\n}\r\n\r\nType.prototype.isAssignableFrom = function Type$isAssignableFrom(type) {\r\n if ((this == Object) || (this == type)) {\r\n return true;\r\n }\r\n if (this.__class) {\r\n var baseType = type.__baseType;\r\n while (baseType) {\r\n if (this == baseType) {\r\n return true;\r\n }\r\n baseType = baseType.__baseType;\r\n }\r\n }\r\n else if (this.__interface) {\r\n var interfaces = type.__interfaces;\r\n if (interfaces && interfaces.contains(this)) {\r\n return true;\r\n }\r\n\r\n var baseType = type.__baseType;\r\n while (baseType) {\r\n interfaces = baseType.__interfaces;\r\n if (interfaces && interfaces.contains(this)) {\r\n return true;\r\n }\r\n baseType = baseType.__baseType;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nType.isClass = function Type$isClass(type) {\r\n return (type.__class == true);\r\n}\r\n\r\nType.isEnum = function Type$isEnum(type) {\r\n return (type.__enum == true);\r\n}\r\n\r\nType.isFlags = function Type$isFlags(type) {\r\n return ((type.__enum == true) && (type.__flags == true));\r\n}\r\n\r\nType.isInterface = function Type$isInterface(type) {\r\n return (type.__interface == true);\r\n}\r\n\r\nType.isNamespace = function Type$isNamespace(object) {\r\n return (object.__namespace == true);\r\n}\r\n\r\nType.canCast = function Type$canCast(instance, type) {\r\n return type.isInstanceOfType(instance);\r\n}\r\n\r\nType.safeCast = function Type$safeCast(instance, type) {\r\n if (type.isInstanceOfType(instance)) {\r\n return instance;\r\n }\r\n return null;\r\n}\r\n\r\nType.getInstanceType = function Type$getInstanceType(instance) {\r\n var ctor = null;\r\n try {\r\n ctor = instance.constructor;\r\n }\r\n catch (ex) {\r\n }\r\n if (!ctor || !ctor.__typeName) {\r\n ctor = Object;\r\n }\r\n return ctor;\r\n}\r\n\r\nType.getType = function Type$getType(typeName) {\r\n if (!typeName) {\r\n return null;\r\n }\r\n\r\n if (!Type.__typeCache) {\r\n Type.__typeCache = {};\r\n }\r\n\r\n var type = Type.__typeCache[typeName];\r\n if (!type) {\r\n type = eval(typeName);\r\n Type.__typeCache[typeName] = type;\r\n }\r\n return type;\r\n}\r\n\r\nType.parse = function Type$parse(typeName) {\r\n return Type.getType(typeName);\r\n}\r\n\r\nss.Delegate = function Delegate$() {\r\n}\r\nss.Delegate.registerClass('Delegate');\r\n\r\nss.Delegate.empty = function () { }\r\n\r\nss.Delegate._contains = function Delegate$_contains(targets, object, method) {\r\n for (var i = 0; i < targets.length; i += 2) {\r\n if (targets[i] === object && targets[i + 1] === method) {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\n\r\nss.Delegate._create = function Delegate$_create(targets) {\r\n var delegate = function () {\r\n if (targets.length == 2) {\r\n return targets[1].apply(targets[0], arguments);\r\n }\r\n else {\r\n var clone = targets.clone();\r\n for (var i = 0; i < clone.length; i += 2) {\r\n if (ss.Delegate._contains(targets, clone[i], clone[i + 1])) {\r\n clone[i + 1].apply(clone[i], arguments);\r\n }\r\n }\r\n return null;\r\n }\r\n };\r\n delegate._targets = targets;\r\n\r\n return delegate;\r\n}\r\n\r\nss.Delegate.create = function Delegate$create(object, method) {\r\n if (!object) {\r\n return method;\r\n }\r\n return ss.Delegate._create([object, method]);\r\n}\r\n\r\nss.Delegate.combine = function Delegate$combine(delegate1, delegate2) {\r\n if (!delegate1) {\r\n if (!delegate2._targets) {\r\n return ss.Delegate.create(null, delegate2);\r\n }\r\n return delegate2;\r\n }\r\n if (!delegate2) {\r\n if (!delegate1._targets) {\r\n return ss.Delegate.create(null, delegate1);\r\n }\r\n return delegate1;\r\n }\r\n\r\n var targets1 = delegate1._targets ? delegate1._targets : [null, delegate1];\r\n var targets2 = delegate2._targets ? delegate2._targets : [null, delegate2];\r\n\r\n return ss.Delegate._create(targets1.concat(targets2));\r\n}\r\n\r\nss.Delegate.remove = function Delegate$remove(delegate1, delegate2) {\r\n if (!delegate1 || (delegate1 === delegate2)) {\r\n return null;\r\n }\r\n if (!delegate2) {\r\n return delegate1;\r\n }\r\n\r\n var targets = delegate1._targets;\r\n var object = null;\r\n var method;\r\n if (delegate2._targets) {\r\n object = delegate2._targets[0];\r\n method = delegate2._targets[1];\r\n }\r\n else {\r\n method = delegate2;\r\n }\r\n\r\n for (var i = 0; i < targets.length; i += 2) {\r\n if ((targets[i] === object) && (targets[i + 1] === method)) {\r\n if (targets.length == 2) {\r\n return null;\r\n }\r\n targets.splice(i, 2);\r\n return ss.Delegate._create(targets);\r\n }\r\n }\r\n\r\n return delegate1;\r\n}\r\n\r\nss.Delegate.createExport = function Delegate$createExport(delegate, multiUse, name) {\r\n name = name || '__' + (new Date()).valueOf();\r\n\r\n window[name] = multiUse ? delegate : function () {\r\n try { delete window[name]; } catch (e) { window[name] = undefined; }\r\n delegate.apply(null, arguments);\r\n };\r\n\r\n return name;\r\n}\r\n\r\nss.Delegate.deleteExport = function Delegate$deleteExport(name) {\r\n delete window[name];\r\n}\r\n\r\nss.Delegate.clearExport = function Delegate$clearExport(name) {\r\n window[name] = ss.Delegate.empty;\r\n}\r\n\r\nss.CultureInfo = function CultureInfo$(name, numberFormat, dateFormat) {\r\n this.name = name;\r\n this.numberFormat = numberFormat;\r\n this.dateFormat = dateFormat;\r\n}\r\nss.CultureInfo.registerClass('CultureInfo');\r\n\r\nss.CultureInfo.InvariantCulture = new ss.CultureInfo('en-US',\r\n {\r\n naNSymbol: 'NaN',\r\n negativeSign: '-',\r\n positiveSign: '+',\r\n negativeInfinityText: '-Infinity',\r\n positiveInfinityText: 'Infinity',\r\n\r\n percentSymbol: '%',\r\n percentGroupSizes: [3],\r\n percentDecimalDigits: 2,\r\n percentDecimalSeparator: '.',\r\n percentGroupSeparator: ',',\r\n percentPositivePattern: '{0} %',\r\n percentNegativePattern: '-{0} %',\r\n\r\n currencySymbol: '$',\r\n currencyGroupSizes: [3],\r\n currencyDecimalDigits: 2,\r\n currencyDecimalSeparator: '.',\r\n currencyGroupSeparator: ',',\r\n currencyNegativePattern: '(${0})',\r\n currencyPositivePattern: '${0}',\r\n\r\n numberGroupSizes: [3],\r\n numberDecimalDigits: 2,\r\n numberDecimalSeparator: '.',\r\n numberGroupSeparator: ','\r\n },\r\n {\r\n amDesignator: 'AM',\r\n pmDesignator: 'PM',\r\n\r\n dateSeparator: '/',\r\n timeSeparator: ':',\r\n\r\n gmtDateTimePattern: 'ddd, dd MMM yyyy HH:mm:ss \\'GMT\\'',\r\n universalDateTimePattern: 'yyyy-MM-dd HH:mm:ssZ',\r\n sortableDateTimePattern: 'yyyy-MM-ddTHH:mm:ss',\r\n dateTimePattern: 'dddd, MMMM dd, yyyy h:mm:ss tt',\r\n\r\n longDatePattern: 'dddd, MMMM dd, yyyy',\r\n shortDatePattern: 'M/d/yyyy',\r\n\r\n longTimePattern: 'h:mm:ss tt',\r\n shortTimePattern: 'h:mm tt',\r\n\r\n firstDayOfWeek: 0,\r\n dayNames: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],\r\n shortDayNames: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\r\n minimizedDayNames: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\r\n\r\n monthNames: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December', ''],\r\n shortMonthNames: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec', '']\r\n });\r\nss.CultureInfo.CurrentCulture = ss.CultureInfo.InvariantCulture;\r\n\r\nss.IEnumerator = function IEnumerator$() { };\r\nss.IEnumerator.prototype = {\r\n get_current: null,\r\n moveNext: null,\r\n reset: null\r\n}\r\n\r\nss.IEnumerator.getEnumerator = function ss_IEnumerator$getEnumerator(enumerable) {\r\n if (enumerable) {\r\n return enumerable.getEnumerator ? enumerable.getEnumerator() : new ss.ArrayEnumerator(enumerable);\r\n }\r\n return null;\r\n}\r\n\r\nss.IEnumerator.registerInterface('IEnumerator');\r\n\r\nss.IEnumerable = function IEnumerable$() { };\r\nss.IEnumerable.prototype = {\r\n getEnumerator: null\r\n}\r\nss.IEnumerable.registerInterface('IEnumerable');\r\n\r\nss.ArrayEnumerator = function ArrayEnumerator$(array) {\r\n this._array = array;\r\n this._index = -1;\r\n this.current = null;\r\n}\r\nss.ArrayEnumerator.prototype = {\r\n moveNext: function ArrayEnumerator$moveNext() {\r\n this._index++;\r\n this.current = this._array[this._index];\r\n return (this._index < this._array.length);\r\n },\r\n reset: function ArrayEnumerator$reset() {\r\n this._index = -1;\r\n this.current = null;\r\n }\r\n}\r\n\r\nss.ArrayEnumerator.registerClass('ArrayEnumerator', null, ss.IEnumerator);\r\n\r\nss.IDisposable = function IDisposable$() { };\r\nss.IDisposable.prototype = {\r\n dispose: null\r\n}\r\nss.IDisposable.registerInterface('IDisposable');\r\n\r\nss.StringBuilder = function StringBuilder$(s) {\r\n this._parts = ss.isNullOrUndefined(s) || s === '' ? [] : [s];\r\n this.isEmpty = this._parts.length == 0;\r\n}\r\nss.StringBuilder.prototype = {\r\n append: function StringBuilder$append(s) {\r\n if (!ss.isNullOrUndefined(s) && s !== '') {\r\n this._parts.add(s);\r\n this.isEmpty = false;\r\n }\r\n return this;\r\n },\r\n\r\n appendLine: function StringBuilder$appendLine(s) {\r\n this.append(s);\r\n this.append('\\r\\n');\r\n this.isEmpty = false;\r\n return this;\r\n },\r\n\r\n clear: function StringBuilder$clear() {\r\n this._parts = [];\r\n this.isEmpty = true;\r\n },\r\n\r\n toString: function StringBuilder$toString(s) {\r\n return this._parts.join(s || '');\r\n }\r\n};\r\n\r\nss.StringBuilder.registerClass('StringBuilder');\r\n\r\nss.EventArgs = function EventArgs$() {\r\n}\r\nss.EventArgs.registerClass('EventArgs');\r\n\r\nss.EventArgs.Empty = new ss.EventArgs();\r\n\r\nif (!window.XMLHttpRequest) {\r\n window.XMLHttpRequest = function () {\r\n var progIDs = ['Msxml2.XMLHTTP', 'Microsoft.XMLHTTP'];\r\n\r\n for (var i = 0; i < progIDs.length; i++) {\r\n try {\r\n var xmlHttp = new ActiveXObject(progIDs[i]);\r\n return xmlHttp;\r\n }\r\n catch (ex) {\r\n }\r\n }\r\n\r\n return null;\r\n }\r\n}\r\n\r\nss.parseXml = function (markup) {\r\n try {\r\n if (DOMParser) {\r\n var domParser = new DOMParser();\r\n return domParser.parseFromString(markup, 'text/xml');\r\n }\r\n else {\r\n var progIDs = ['Msxml2.DOMDocument.3.0', 'Msxml2.DOMDocument'];\r\n\r\n for (var i = 0; i < progIDs.length; i++) {\r\n var xmlDOM = new ActiveXObject(progIDs[i]);\r\n xmlDOM.async = false;\r\n xmlDOM.loadXML(markup);\r\n xmlDOM.setProperty('SelectionLanguage', 'XPath');\r\n\r\n return xmlDOM;\r\n }\r\n }\r\n }\r\n catch (ex) {\r\n }\r\n\r\n return null;\r\n}\r\n\r\nss.CancelEventArgs = function CancelEventArgs$() {\r\n ss.CancelEventArgs.initializeBase(this);\r\n this.cancel = false;\r\n}\r\nss.CancelEventArgs.registerClass('CancelEventArgs', ss.EventArgs);\r\n\r\nss.Tuple = function (first, second, third) {\r\n this.first = first;\r\n this.second = second;\r\n if (arguments.length == 3) {\r\n this.third = third;\r\n }\r\n}\r\nss.Tuple.registerClass('Tuple');\r\n\r\nss.Observable = function (v) {\r\n this._v = v;\r\n this._observers = null;\r\n}\r\nss.Observable.prototype = {\r\n\r\n getValue: function () {\r\n this._observers = ss.Observable._captureObservers(this._observers);\r\n return this._v;\r\n },\r\n setValue: function (v) {\r\n if (this._v !== v) {\r\n this._v = v;\r\n\r\n var observers = this._observers;\r\n if (observers) {\r\n this._observers = null;\r\n ss.Observable._invalidateObservers(observers);\r\n }\r\n }\r\n }\r\n};\r\n\r\nss.Observable._observerStack = [];\r\nss.Observable._observerRegistration = {\r\n dispose: function () {\r\n ss.Observable._observerStack.pop();\r\n }\r\n}\r\nss.Observable.registerObserver = function (o) {\r\n ss.Observable._observerStack.push(o);\r\n return ss.Observable._observerRegistration;\r\n}\r\nss.Observable._captureObservers = function (observers) {\r\n var registeredObservers = ss.Observable._observerStack;\r\n var observerCount = registeredObservers.length;\r\n\r\n if (observerCount) {\r\n observers = observers || [];\r\n for (var i = 0; i < observerCount; i++) {\r\n var observer = registeredObservers[i];\r\n if (!observers.contains(observer)) {\r\n observers.push(observer);\r\n }\r\n }\r\n return observers;\r\n }\r\n return null;\r\n}\r\nss.Observable._invalidateObservers = function (observers) {\r\n for (var i = 0, len = observers.length; i < len; i++) {\r\n observers[i].invalidateObserver();\r\n }\r\n}\r\n\r\nss.Observable.registerClass('Observable');\r\n\r\n\r\nss.ObservableCollection = function (items) {\r\n this._items = items || [];\r\n this._observers = null;\r\n}\r\nss.ObservableCollection.prototype = {\r\n\r\n get_item: function (index) {\r\n this._observers = ss.Observable._captureObservers(this._observers);\r\n return this._items[index];\r\n },\r\n set_item: function (index, item) {\r\n this._items[index] = item;\r\n this._updated();\r\n },\r\n get_length: function () {\r\n this._observers = ss.Observable._captureObservers(this._observers);\r\n return this._items.length;\r\n },\r\n add: function (item) {\r\n this._items.push(item);\r\n this._updated();\r\n },\r\n clear: function () {\r\n this._items.clear();\r\n this._updated();\r\n },\r\n contains: function (item) {\r\n return this._items.contains(item);\r\n },\r\n getEnumerator: function () {\r\n this._observers = ss.Observable._captureObservers(this._observers);\r\n return this._items.getEnumerator();\r\n },\r\n indexOf: function (item) {\r\n return this._items.indexOf(item);\r\n },\r\n insert: function (index, item) {\r\n this._items.insert(index, item);\r\n this._updated();\r\n },\r\n remove: function (item) {\r\n if (this._items.remove(item)) {\r\n this._updated();\r\n return true;\r\n }\r\n return false;\r\n },\r\n removeAt: function (index) {\r\n this._items.removeAt(index);\r\n this._updated();\r\n },\r\n toArray: function () {\r\n return this._items;\r\n },\r\n _updated: function () {\r\n var observers = this._observers;\r\n if (observers) {\r\n this._observers = null;\r\n ss.Observable._invalidateObservers(observers);\r\n }\r\n }\r\n}\r\nss.ObservableCollection.registerClass('ObservableCollection', null, ss.IEnumerable);\r\n\r\nss.Task = function (result) {\r\n this._continuations = ss.isValue(result) ?\r\n (this.status = 'done', null) :\r\n (this.status = 'pending', []);\r\n this.result = result;\r\n this.error = null;\r\n}\r\nss.Task.prototype = {\r\n get_completed: function () {\r\n return this.status != 'pending';\r\n },\r\n continueWith: function (continuation) {\r\n if (this._continuations) {\r\n this._continuations.push(continuation);\r\n }\r\n else {\r\n var self = this;\r\n setTimeout(function () { continuation(self); }, 0);\r\n }\r\n return this;\r\n },\r\n done: function (callback) {\r\n return this.continueWith(function (t) {\r\n if (t.status == 'done') {\r\n callback(t.result);\r\n }\r\n });\r\n },\r\n fail: function (callback) {\r\n return this.continueWith(function (t) {\r\n if (t.status == 'failed') {\r\n callback(t.error);\r\n }\r\n });\r\n },\r\n then: function (doneCallback, failCallback) {\r\n return this.continueWith(function (t) {\r\n t.status == 'done' ? doneCallback(t.result) : failCallback(t.error);\r\n });\r\n },\r\n _update: function (result, error) {\r\n if (this.status == 'pending') {\r\n if (error) {\r\n this.error = error;\r\n this.status = 'failed';\r\n }\r\n else {\r\n this.result = result;\r\n this.status = 'done';\r\n }\r\n\r\n var continuations = this._continuations;\r\n this._continuations = null;\r\n\r\n for (var i = 0, c = continuations.length; i < c; i++) {\r\n continuations[i](this);\r\n }\r\n }\r\n }\r\n};\r\nss.Task._join = function (tasks, any) {\r\n tasks = Array.toArray(tasks);\r\n ss.Debug.assert(tasks.length > 1);\r\n\r\n var count = tasks.length;\r\n\r\n var interval = 0;\r\n if ((count > 1) && (typeof tasks[0] == 'number')) {\r\n interval = tasks[0];\r\n tasks = tasks.slice(1);\r\n count--;\r\n }\r\n\r\n var joinTask = new ss.Task();\r\n var seen = 0;\r\n\r\n function continuation(t) {\r\n if (joinTask.status == 'pending') {\r\n seen++;\r\n if (any) {\r\n joinTask._update(t);\r\n }\r\n else if (seen == count) {\r\n joinTask._update(true);\r\n }\r\n }\r\n }\r\n\r\n function timeout() {\r\n if (joinTask.status == 'pending') {\r\n if (any) {\r\n joinTask._update(null);\r\n }\r\n else {\r\n joinTask._update(false);\r\n }\r\n }\r\n }\r\n\r\n if (interval != 0) {\r\n setTimeout(timeout, interval);\r\n }\r\n\r\n for (var i = 0; i < count; i++) {\r\n tasks[i].continueWith(continuation);\r\n }\r\n\r\n return joinTask;\r\n}\r\nss.Task.all = function () {\r\n return ss.Task._join(arguments, false);\r\n}\r\nss.Task.any = function () {\r\n return ss.Task._join(arguments, true);\r\n}\r\nss.Task.delay = function (timeout) {\r\n var timerTask = new ss.Task();\r\n\r\n setTimeout(function () {\r\n timerTask._update(true);\r\n }, timeout);\r\n\r\n return timerTask;\r\n}\r\n\r\n\r\nss.Deferred = function (result) {\r\n this.task = new ss.Task(result);\r\n}\r\nss.Deferred.prototype = {\r\n resolve: function (result) {\r\n this.task._update(result);\r\n },\r\n reject: function (error) {\r\n this.task._update(null, error || new Error());\r\n }\r\n};\r\n\r\nss.Deferred.registerClass('Deferred');\r\nss.Task.registerClass('Task');\r\n\r\nss.IApplication = function () { };\r\nss.IApplication.registerInterface('IApplication');\r\n\r\nss.IContainer = function () { };\r\nss.IContainer.registerInterface('IContainer');\r\n\r\nss.IObjectFactory = function () { };\r\nss.IObjectFactory.registerInterface('IObjectFactory');\r\n\r\nss.IEventManager = function () { };\r\nss.IEventManager.registerInterface('IEventManager');\r\n\r\nss.IInitializable = function () { };\r\nss.IInitializable.registerInterface('IInitializable');\r\n\r\n\r\n// numpy javascript equivalent\r\n// https://github.com/fernandezajp/PyExtJS\r\n\r\n(function () {\r\n\r\n /**\r\n * Helper function for adding properties with Object.defineProperty\r\n * Copied from example on: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty\r\n */\r\n function withValue(value) {\r\n var d = withValue.d || (\r\n withValue.d = {\r\n enumerable: false,\r\n writable: true,\r\n configurable: false,\r\n value: null\r\n }\r\n );\r\n d.value = value;\r\n return d;\r\n }\r\n\r\n window.numpy = function numpy() {\r\n }\r\n numpy.linspace = function numpy$linspace(start, stop, num) {\r\n if (num == null) {\r\n num = 50;\r\n }\r\n var tmp = [];\r\n var step = (stop - start) / (num - 1);\r\n var i = start;\r\n for (var c = 0; c < num - 1; c++) {\r\n tmp.add(i);\r\n i = i + step;\r\n }\r\n tmp.add(stop);\r\n var array = new Array(tmp.length);\r\n for (var c = 0; c < tmp.length; c++) {\r\n array[c] = tmp[c];\r\n }\r\n return array;\r\n }\r\n numpy.logspace = function numpy$logspace(start, stop, num, endpoint, numericBase) {\r\n if (endpoint == null) {\r\n endpoint = true;\r\n }\r\n if (numericBase == null) {\r\n numericBase = 10;\r\n }\r\n var y = numpy.linspace(start, stop, num);\r\n return numpy.power(numericBase, y);\r\n }\r\n numpy.power = function numpy$power(bases, exponents) {\r\n var basesType = Type.getInstanceType(bases).get_name();\r\n var exponentsType = Type.getInstanceType(exponents).get_name();\r\n if (basesType === 'Array' && exponentsType === 'Array') {\r\n var basesArray = bases;\r\n var ret = new Array(basesArray.length);\r\n var baseArray = exponents;\r\n for (var i = 0; i < basesArray.length; i++) {\r\n ret[i] = Math.pow(basesArray[i], baseArray[i]);\r\n }\r\n return ret;\r\n }\r\n if (basesType === 'Array' && exponentsType === 'Number') {\r\n var basesArray = bases;\r\n var ret = new Array(basesArray.length);\r\n var bbase = exponents;\r\n for (var i = 0; i < basesArray.length; i++) {\r\n ret[i] = Math.pow(basesArray[i], bbase);\r\n }\r\n return ret;\r\n }\r\n if (basesType === 'Number' && exponentsType === 'Number') {\r\n var bbase = bases;\r\n var exponent = exponents;\r\n return Math.pow(bbase, exponent);\r\n }\r\n if (basesType === 'Number' && exponentsType === 'Array') {\r\n var bbase = bases;\r\n var exponentsArray = exponents;\r\n var ret = new Array(exponentsArray.length);\r\n for (var i = 0; i < exponentsArray.length; i++) {\r\n ret[i] = Math.pow(bbase, exponentsArray[i]);\r\n }\r\n return ret;\r\n }\r\n return 0;\r\n }\r\n numpy.exp = function numpy$exp(x) {\r\n var type = Type.getInstanceType(x).get_name();\r\n switch (type) {\r\n case 'Array':\r\n var inputarray = x;\r\n var response = new Array(inputarray.length);\r\n for (var i = 0; i < inputarray.length; i++) {\r\n response[i] = Math.exp(inputarray[i]);\r\n }\r\n return response;\r\n default:\r\n var input = x;\r\n return Math.exp(input);\r\n }\r\n }\r\n numpy.arange = function numpy$arange(start, stop, step) {\r\n var tmp = [];\r\n if (stop == null && step == null) {\r\n for (var i = 0; i < start; i++) {\r\n tmp.add(i);\r\n }\r\n var opt1 = new Array(tmp.length);\r\n for (var i = 0; i < tmp.length; i++) {\r\n opt1[i] = tmp[i];\r\n }\r\n return opt1;\r\n }\r\n if (step == null) {\r\n for (var i = start; i < stop; i++) {\r\n tmp.add(i);\r\n }\r\n var opt2 = new Array(tmp.length);\r\n for (var i = 0; i < tmp.length; i++) {\r\n opt2[i] = tmp[i];\r\n }\r\n return opt2;\r\n }\r\n for (var i = start; i < stop; i = i + step) {\r\n tmp.add(i);\r\n }\r\n var opt3 = new Array(tmp.length);\r\n for (var i = 0; i < tmp.length; i++) {\r\n opt3[i] = tmp[i];\r\n }\r\n return opt3;\r\n }\r\n numpy.zeros = function numpy$zeros(shape) {\r\n var type = Type.getInstanceType(shape).get_name();\r\n switch (type) {\r\n case 'Array':\r\n var shapeArray = shape;\r\n var shapeObjectArray = shape;\r\n var mult = 1;\r\n for (var i = 0; i < shapeArray.length; i++) {\r\n mult *= shapeArray[i];\r\n }\r\n var retArray = new Array(mult);\r\n for (var i = 0; i < mult; i++) {\r\n retArray[i] = 0;\r\n }\r\n return numpy._grouparray(numpy._inversearray(shapeObjectArray), retArray);\r\n default:\r\n var input = shape;\r\n var ret = new Array(input);\r\n for (var i = 0; i < input; i++) {\r\n ret[i] = 0;\r\n }\r\n return ret;\r\n }\r\n }\r\n numpy.ones = function numpy$ones(shape) {\r\n var type = Type.getInstanceType(shape).get_name();\r\n switch (type) {\r\n case 'Array':\r\n var shapeArray = shape;\r\n var shapeObjectArray = shape;\r\n var mult = 1;\r\n for (var i = 0; i < shapeArray.length; i++) {\r\n mult *= shapeArray[i];\r\n }\r\n var retArray = new Array(mult);\r\n for (var i = 0; i < mult; i++) {\r\n retArray[i] = 1;\r\n }\r\n return numpy._grouparray(numpy._inversearray(shapeObjectArray), retArray);\r\n default:\r\n var input = shape;\r\n var ret = new Array(input);\r\n for (var i = 0; i < input; i++) {\r\n ret[i] = 1;\r\n }\r\n return ret;\r\n }\r\n }\r\n numpy.polyfit = function numpy$polyfit(x, y, deg) {\r\n var data = new Array(x.length);\r\n for (var i = 0; i < x.length; i++) {\r\n data[i] = new PolyRegression.Pair(x[i], y[i]);\r\n }\r\n var polysolve = new PolyRegression.Matrix();\r\n var coefs = polysolve.computeCoefficients(data, deg);\r\n var left = 0;\r\n var right = coefs.length - 1;\r\n while (left < right) {\r\n var temp = coefs[left];\r\n coefs[left] = coefs[right];\r\n coefs[right] = temp;\r\n left++;\r\n right--;\r\n }\r\n return coefs;\r\n }\r\n numpy.array = function numpy$array(a) {\r\n return a;\r\n }\r\n numpy.getShape = function numpy$getShape(a) {\r\n /// \r\n /// \r\n /// \r\n var obj = a.shape;\r\n return Array.toArray(obj);\r\n }\r\n numpy.reshape = function numpy$reshape(a, shape) {\r\n var assign = true;\r\n if (this.constructor.name !== 'Function') {\r\n if (Type.getInstanceType(a).get_name() === 'Array') {\r\n shape = Array.toArray(a);\r\n }\r\n else {\r\n if (arguments.length > 0) {\r\n shape = Array.toArray(arguments);\r\n }\r\n }\r\n a = this;\r\n assign = false;\r\n }\r\n var array = Array.toArray(a);\r\n var objlist = [];\r\n numpy._plainarray(objlist, array);\r\n var plain = new Array(objlist.length);\r\n for (var i = 0; i < objlist.length; i++) {\r\n plain[i] = objlist[i];\r\n }\r\n var fixedshape = numpy._inversearray(Array.toArray(shape));\r\n var response = numpy._grouparray(Array.toArray(fixedshape), plain);\r\n if (assign) {\r\n a.clear();\r\n for (var i = 0; i < response.length; i++) {\r\n a.push(response[i]);\r\n }\r\n }\r\n return response;\r\n }\r\n numpy._isAligned = function numpy$_isAligned(a, b) {\r\n /// \r\n /// \r\n /// \r\n /// \r\n /// \r\n var A_shape = numpy.getShape(a);\r\n var B_shape = numpy.getShape(b);\r\n if (A_shape.length !== B_shape.length) {\r\n return false;\r\n }\r\n for (var i = A_shape.length - 1; i > 0; i = i - 2) {\r\n if (!i) {\r\n if (A_shape[i] !== B_shape[i]) {\r\n return false;\r\n }\r\n }\r\n if (A_shape[i] !== B_shape[i - 1]) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n }\r\n numpy.ravel = function numpy$ravel(a) {\r\n var array = null;\r\n if (a == null) {\r\n array = this;\r\n }\r\n else {\r\n array = a;\r\n }\r\n var objlist = [];\r\n numpy._plainarray(objlist, array);\r\n var plain = new Array(objlist.length);\r\n for (var i = 0; i < objlist.length; i++) {\r\n plain[i] = objlist[i];\r\n }\r\n return plain;\r\n }\r\n numpy.gettype = function numpy$gettype(obj) {\r\n var paramType = Type.getInstanceType(obj).get_name();\r\n switch (paramType) {\r\n case 'Number':\r\n return paramType;\r\n case 'Array':\r\n var array = obj;\r\n var objlist = [];\r\n numpy._plainarray(objlist, array);\r\n return Type.getInstanceType(objlist[0]).get_name();\r\n default:\r\n return 'undefined';\r\n }\r\n }\r\n numpy._inversearray = function numpy$_inversearray(array) {\r\n var newarray = new Array(array.length);\r\n var j = array.length - 1;\r\n for (var i = 0; i < array.length; i++) {\r\n newarray[i] = array[j--];\r\n }\r\n return newarray;\r\n }\r\n numpy._plainarray = function numpy$_plainarray(list, a) {\r\n var $enum1 = ss.IEnumerator.getEnumerator(a);\r\n while ($enum1.moveNext()) {\r\n var item = $enum1.current;\r\n if (Type.getInstanceType(item).get_name() === 'Array') {\r\n numpy._plainarray(list, item);\r\n }\r\n else {\r\n list.add(item);\r\n }\r\n }\r\n }\r\n numpy._grouparray = function numpy$_grouparray(group, array) {\r\n if (group.length > 1) {\r\n var objlist = [];\r\n var size = group[0];\r\n for (var i = 0; i < array.length;) {\r\n var tmp = new Array(size);\r\n for (var j = 0; j < size; j++) {\r\n tmp[j] = array[i++];\r\n }\r\n objlist.add(tmp);\r\n }\r\n var newgroupcount = new Array(group.length - 1);\r\n for (var i = 1; i < group.length; i++) {\r\n newgroupcount[i - 1] = group[i];\r\n }\r\n var newgroup = new Array(objlist.length);\r\n for (var i = 0; i < newgroup.length; i++) {\r\n newgroup[i] = objlist[i];\r\n }\r\n return numpy._grouparray(newgroupcount, newgroup);\r\n }\r\n else {\r\n var size = group[0];\r\n var newgroup = new Array(size);\r\n for (var i = 0; i < size; i++) {\r\n newgroup[i] = array[i];\r\n }\r\n return newgroup;\r\n }\r\n }\r\n numpy.getrandom = function numpy$getrandom(size) {\r\n if (size == null) {\r\n return Math.random();\r\n }\r\n var paramType = Type.getInstanceType(size).get_name();\r\n switch (paramType) {\r\n case 'Number':\r\n var singlesize = size;\r\n var retsinglearray = new Array(singlesize);\r\n for (var i = 0; i < singlesize; i++) {\r\n retsinglearray[i] = Math.random();\r\n }\r\n return retsinglearray;\r\n break;\r\n case 'Array':\r\n var sizeArray = size;\r\n var mult = 1;\r\n for (var i = 0; i < sizeArray.length; i++) {\r\n mult *= sizeArray[i];\r\n }\r\n var ret = new Array(mult);\r\n for (var i = 0; i < mult; i++) {\r\n ret[i] = Math.random();\r\n }\r\n return numpy._grouparray(sizeArray, ret);\r\n break;\r\n }\r\n return 0;\r\n }\r\n numpy.dot = function numpy$dot(a, b) {\r\n if (b == null) {\r\n b = a;\r\n a = this;\r\n }\r\n if (Type.getInstanceType(a).get_name() === 'Number' && Type.getInstanceType(b).get_name() === 'Array') {\r\n var b_ndim = numpy.getShape(b).length;\r\n if (b_ndim === 2) {\r\n var b_rows = numpy.getShape(b)[0];\r\n var b_cols = numpy.getShape(b)[1];\r\n var result = numpy.ones([b_rows, b_cols]);\r\n for (var br = 0; br < b_rows; br++) {\r\n for (var bc = 0; bc < b_cols; bc++) {\r\n result[br][bc] = ((Array.toArray((b)[br]))[bc]) * a;\r\n }\r\n }\r\n return result;\r\n }\r\n }\r\n if (Type.getInstanceType(a).get_name() === 'Array' && Type.getInstanceType(b).get_name() === 'Number') {\r\n var a_ndim = numpy.getShape(a).length;\r\n if (a_ndim === 2) {\r\n var a_rows = numpy.getShape(a)[0];\r\n var a_cols = numpy.getShape(a)[1];\r\n var result = numpy.ones([a_rows, a_cols]);\r\n for (var ar = 0; ar < a_rows; ar++) {\r\n for (var ac = 0; ac < a_cols; ac++) {\r\n result[ar][ac] = ((Array.toArray((a)[ar]))[ac]) * b;\r\n }\r\n }\r\n return result;\r\n }\r\n }\r\n if (Type.getInstanceType(a).get_name() === 'Array' && Type.getInstanceType(b).get_name() === 'Array') {\r\n var a_ndim = numpy.getShape(a).length;\r\n var b_ndim = numpy.getShape(b).length;\r\n if ((a_ndim === 2) && (b_ndim === 2)) {\r\n return numpy._dotMatrix(a, b);\r\n }\r\n else {\r\n return null;\r\n }\r\n }\r\n return null;\r\n }\r\n numpy.add = function numpy$add(a, b) {\r\n if (b == null) {\r\n b = a;\r\n a = this;\r\n }\r\n if (Type.getInstanceType(a).get_name() === 'Array' && Type.getInstanceType(b).get_name() === 'Array') {\r\n var a_ndim = numpy.getShape(a).length;\r\n var b_ndim = numpy.getShape(b).length;\r\n if ((a_ndim === 2) && (b_ndim === 2)) {\r\n return numpy._addMatrix(a, b);\r\n }\r\n }\r\n return null;\r\n }\r\n numpy._tupleCombination = function numpy$_tupleCombination(array) {\r\n var cardinality = 1;\r\n for (var i = 0; i < array.length; i++) {\r\n cardinality *= array[i];\r\n }\r\n var result = new Array(cardinality);\r\n for (var i = 0; i < result.length; i++) {\r\n result[i] = new Array(array.length);\r\n }\r\n for (var j = array.length - 1; j >= 0; j--) {\r\n var each = 1;\r\n for (var e = j + 1; e < array.length; e++) {\r\n each *= array[e];\r\n }\r\n var step = 0;\r\n var val = 0;\r\n for (var i = 0; i < cardinality; i++) {\r\n step++;\r\n var arrayValue = (Type.safeCast(result[i], Object));\r\n arrayValue[j] = val;\r\n if (step === each) {\r\n val = (val + 1) % array[j];\r\n step = 0;\r\n }\r\n }\r\n }\r\n return result;\r\n }\r\n numpy._getMatrixFromArray = function numpy$_getMatrixFromArray(matrix, positions, shape, numElements) {\r\n var m_shape = numpy.getShape(matrix);\r\n var Nx = m_shape[0];\r\n var Ny = m_shape[1];\r\n var plainarray = matrix.ravel();\r\n var response = numpy.zeros(numElements);\r\n var value = 0;\r\n for (var i = 0; i < positions.length; i++) {\r\n var tmp = 1;\r\n for (var j = i + 1; j < shape.length; j++) {\r\n tmp *= shape[j];\r\n }\r\n tmp *= numElements * positions[i];\r\n value += tmp;\r\n }\r\n var pos = 0;\r\n for (var i = value; i < numElements + value; i++) {\r\n response[pos++] = plainarray[i];\r\n }\r\n return response;\r\n }\r\n numpy._dotMatrix = function numpy$_dotMatrix(a, b) {\r\n if (numpy._isAligned(a, b)) {\r\n var nDimA = a.ndim;\r\n var nDimB = b.ndim;\r\n var a_rows = numpy.getShape(a)[0];\r\n var a_cols = numpy.getShape(a)[1];\r\n var b_rows = numpy.getShape(b)[0];\r\n var b_cols = numpy.getShape(b)[1];\r\n var c = numpy.zeros([a_rows, b_cols + 1]);\r\n var matrixC = numpy.reshape(c, [a_rows, b_cols]);\r\n for (var ar = 0; ar < a_rows; ar++) {\r\n for (var bc = 0; bc < b_cols; bc++) {\r\n var value = 0;\r\n for (var ac = 0; ac < a_cols; ac++) {\r\n var A_ar_ac = (Array.toArray(a[ar]))[ac];\r\n var B_ac_ar = (Array.toArray(b[ac]))[bc];\r\n value += A_ar_ac * B_ac_ar;\r\n }\r\n matrixC[ar][bc] = value;\r\n }\r\n }\r\n return matrixC;\r\n }\r\n return null;\r\n }\r\n numpy._addMatrix = function numpy$_addMatrix(a, b) {\r\n if (numpy._isAligned(a, b)) {\r\n var nDimA = a.ndim;\r\n var nDimB = b.ndim;\r\n var a_rows = numpy.getShape(a)[0];\r\n var a_cols = numpy.getShape(a)[1];\r\n var b_rows = numpy.getShape(b)[0];\r\n var b_cols = numpy.getShape(b)[1];\r\n var zeros = numpy.zeros([a_rows, b_cols + 1]);\r\n var matrixC = numpy.reshape(zeros, [a_rows, b_cols]);\r\n for (var r = 0; r < a_rows; r++) {\r\n for (var c = 0; c < b_cols; c++) {\r\n var A_ar_ac = (Array.toArray(a[r]))[c];\r\n var B_br_bc = (Array.toArray(b[r]))[c];\r\n matrixC[r][c] = A_ar_ac + B_br_bc;\r\n }\r\n }\r\n return matrixC;\r\n }\r\n return null;\r\n }\r\n numpy.concatenate = function numpy$concatenate(pparams) {\r\n if (arguments.length > 1) {\r\n var join = [];\r\n for (var i = 0; i < arguments.length; i++) {\r\n var obj = arguments[i];\r\n switch (Type.getInstanceType(obj).get_name()) {\r\n case 'Array':\r\n var objArray = obj;\r\n for (var j = 0; j < objArray.length; j++) {\r\n join.add(objArray[j]);\r\n }\r\n break;\r\n default:\r\n join.add(obj);\r\n break;\r\n }\r\n }\r\n return join;\r\n }\r\n return pparams;\r\n }\r\n numpy.sin = function numpy$sin(value) {\r\n var type = Type.getInstanceType(value).get_name();\r\n switch (type) {\r\n case 'Array':\r\n var shape = numpy.getShape(value);\r\n var data = value.ravel();\r\n for (var i = 0; i < data.length; i++) {\r\n data[i] = Math.sin(data[i]);\r\n }\r\n return numpy.reshape(data, shape);\r\n default:\r\n return Math.sin(value);\r\n }\r\n }\r\n numpy.cos = function numpy$cos(value) {\r\n var type = Type.getInstanceType(value).get_name();\r\n switch (type) {\r\n case 'Array':\r\n var shape = numpy.getShape(value);\r\n var data = value.ravel();\r\n for (var i = 0; i < data.length; i++) {\r\n data[i] = Math.cos(data[i]);\r\n }\r\n return numpy.reshape(data, shape);\r\n default:\r\n return Math.cos(value);\r\n }\r\n }\r\n numpy.tan = function numpy$tan(value) {\r\n var type = Type.getInstanceType(value).get_name();\r\n switch (type) {\r\n case 'Array':\r\n var shape = numpy.getShape(value);\r\n var data = value.ravel();\r\n for (var i = 0; i < data.length; i++) {\r\n data[i] = Math.tan(data[i]);\r\n }\r\n return numpy.reshape(data, shape);\r\n default:\r\n return Math.tan(value);\r\n }\r\n }\r\n numpy.arcsin = function numpy$arcsin(value) {\r\n var type = Type.getInstanceType(value).get_name();\r\n switch (type) {\r\n case 'Array':\r\n var shape = numpy.getShape(value);\r\n var data = value.ravel();\r\n for (var i = 0; i < data.length; i++) {\r\n data[i] = Math.asin(data[i]);\r\n }\r\n return numpy.reshape(data, shape);\r\n default:\r\n return Math.asin(value);\r\n }\r\n }\r\n numpy.arccos = function numpy$arccos(value) {\r\n var type = Type.getInstanceType(value).get_name();\r\n switch (type) {\r\n case 'Array':\r\n var shape = numpy.getShape(value);\r\n var data = value.ravel();\r\n for (var i = 0; i < data.length; i++) {\r\n data[i] = Math.acos(data[i]);\r\n }\r\n return numpy.reshape(data, shape);\r\n default:\r\n return Math.acos(value);\r\n }\r\n }\r\n numpy.arctan = function numpy$arctan(value) {\r\n var type = Type.getInstanceType(value).get_name();\r\n switch (type) {\r\n case 'Array':\r\n var shape = numpy.getShape(value);\r\n var data = value.ravel();\r\n for (var i = 0; i < data.length; i++) {\r\n data[i] = Math.atan(data[i]);\r\n }\r\n return numpy.reshape(data, shape);\r\n default:\r\n return Math.atan(value);\r\n }\r\n }\r\n numpy.hypot = function numpy$hypot(x, y) {\r\n var xtype = Type.getInstanceType(x).get_name();\r\n var ytype = Type.getInstanceType(y).get_name();\r\n if ((xtype === 'Number') && (ytype === 'Number')) {\r\n return Math.sqrt((x) * (x) + (y) * (y));\r\n }\r\n if ((xtype === 'Number') && (ytype === 'Array')) {\r\n var yshape = numpy.getShape(y);\r\n var data = y.ravel();\r\n for (var i = 0; i < data.length; i++) {\r\n data[i] = Math.sqrt((x) * (x) + (data[i]) * (data[i]));\r\n }\r\n return numpy.reshape(data, yshape);\r\n }\r\n if ((xtype === 'Array') && (ytype === 'Number')) {\r\n var xshape = numpy.getShape(x);\r\n var data = x.ravel();\r\n for (var i = 0; i < data.length; i++) {\r\n data[i] = Math.sqrt((data[i]) * (data[i]) + (y) * (y));\r\n }\r\n return numpy.reshape(data, xshape);\r\n }\r\n if ((xtype === 'Array') && (ytype === 'Array')) {\r\n var xshape = numpy.getShape(x);\r\n var xdata = x.ravel();\r\n var yshape = numpy.getShape(y);\r\n var ydata = y.ravel();\r\n var data = numpy.arange(xdata.length);\r\n for (var i = 0; i < xdata.length; i++) {\r\n data[i] = Math.sqrt((xdata[i]) * (xdata[i]) + (ydata[i]) * (ydata[i]));\r\n }\r\n return numpy.reshape(Array.toArray(data), xshape);\r\n }\r\n return null;\r\n }\r\n numpy.arctan2 = function numpy$arctan2(x, y) {\r\n var xtype = Type.getInstanceType(x).get_name();\r\n var ytype = Type.getInstanceType(y).get_name();\r\n if ((xtype === 'Number') && (ytype === 'Number')) {\r\n return Math.atan2(x, y);\r\n }\r\n if ((xtype === 'Number') && (ytype === 'Array')) {\r\n var yshape = numpy.getShape(y);\r\n var data = y.ravel();\r\n for (var i = 0; i < data.length; i++) {\r\n data[i] = Math.atan2(x, data[i]);\r\n }\r\n return numpy.reshape(data, yshape);\r\n }\r\n if ((xtype === 'Array') && (ytype === 'Number')) {\r\n var xshape = numpy.getShape(x);\r\n var data = x.ravel();\r\n for (var i = 0; i < data.length; i++) {\r\n data[i] = Math.atan2(data[i], y);\r\n }\r\n return numpy.reshape(data, xshape);\r\n }\r\n if ((xtype === 'Array') && (ytype === 'Array')) {\r\n var xshape = numpy.getShape(x);\r\n var xdata = x.ravel();\r\n var yshape = numpy.getShape(y);\r\n var ydata = y.ravel();\r\n var data = numpy.arange(xdata.length);\r\n for (var i = 0; i < xdata.length; i++) {\r\n data[i] = Math.atan2(xdata[i], ydata[i]);\r\n }\r\n return numpy.reshape(Array.toArray(data), xshape);\r\n }\r\n return null;\r\n }\r\n numpy.degrees = function numpy$degrees(value) {\r\n var type = Type.getInstanceType(value).get_name();\r\n switch (type) {\r\n case 'Array':\r\n var shape = numpy.getShape(value);\r\n var data = value.ravel();\r\n for (var i = 0; i < data.length; i++) {\r\n data[i] = (data[i]) * (180 / Math.PI);\r\n }\r\n return numpy.reshape(data, shape);\r\n default:\r\n return (value) * (180 / Math.PI);\r\n }\r\n }\r\n numpy.radians = function numpy$radians(value) {\r\n var type = Type.getInstanceType(value).get_name();\r\n switch (type) {\r\n case 'Array':\r\n var shape = numpy.getShape(value);\r\n var data = value.ravel();\r\n for (var i = 0; i < data.length; i++) {\r\n data[i] = Math.PI * (data[i]) / 180;\r\n }\r\n return numpy.reshape(data, shape);\r\n default:\r\n return (value) * (180 / Math.PI);\r\n }\r\n }\r\n numpy.rad2deg = function numpy$rad2deg(value) {\r\n var type = Type.getInstanceType(value).get_name();\r\n switch (type) {\r\n case 'Array':\r\n var shape = numpy.getShape(value);\r\n var data = value.ravel();\r\n for (var i = 0; i < data.length; i++) {\r\n data[i] = (data[i]) * (180 / Math.PI);\r\n }\r\n return numpy.reshape(data, shape);\r\n default:\r\n return (value) * (180 / Math.PI);\r\n }\r\n }\r\n numpy.deg2rad = function numpy$deg2rad(value) {\r\n var type = Type.getInstanceType(value).get_name();\r\n switch (type) {\r\n case 'Array':\r\n var shape = numpy.getShape(value);\r\n var data = value.ravel();\r\n for (var i = 0; i < data.length; i++) {\r\n data[i] = Math.PI * (data[i]) / 180;\r\n }\r\n return numpy.reshape(data, shape);\r\n default:\r\n return (value) * (180 / Math.PI);\r\n }\r\n }\r\n\r\n numpy.registerClass('numpy');\r\n Object.defineProperty(Array.prototype, \"size\", {\r\n get: function () {\r\n __$$tmP = this.shape;\r\n\r\n var thesize = 1;\r\n for (var i = 0; i < __$$tmP.length; i++)\r\n thesize *= __$$tmP[i];\r\n return thesize;\r\n }\r\n });\r\n Object.defineProperty(Array.prototype, \"shape\", {\r\n get: function () {\r\n __$$tmP = this;\r\n var dim = [];\r\n for (; ;) {\r\n dim.push(__$$tmP.length);\r\n\r\n if (Array.isArray(__$$tmP[0])) {\r\n __$$tmP = __$$tmP[0];\r\n } else {\r\n break;\r\n }\r\n }\r\n return dim;\r\n }\r\n });\r\n Object.defineProperty(Array.prototype, \"strides\", {\r\n get: function () {\r\n var shp = this.shape;\r\n var dim = [];\r\n for (var i = 1; i < shp.length; i++) {\r\n var acum = 1;\r\n for (var j = i; j < shp.length; j++) {\r\n acum *= shp[j];\r\n }\r\n dim.push(acum);\r\n }\r\n dim.push(1);\r\n return dim;\r\n }\r\n });\r\n Object.defineProperty(Array.prototype, \"ndim\", {\r\n get: function () {\r\n __$$tmP = this;\r\n return __$$tmP.shape.length;\r\n }\r\n });\r\n Object.defineProperty(Array.prototype, \"T\", {\r\n get: function () {\r\n return this.transpose();\r\n }\r\n });\r\n Object.defineProperty(Array.prototype, 'resize', withValue(function numpy$_resize(shape) {\r\n a = this;\r\n a = numpy.reshape(a, shape);\r\n this.clear();\r\n for (var i = 0; i < a.length; i++)\r\n this.push(a[i]);\r\n return a;\r\n }));\r\n Object.defineProperty(Array.prototype, 'transpose', withValue(function numpy$_transpose() {\r\n var _data = this.ravel();\r\n var _dest = _data.clone();\r\n\r\n var recipient = new Array(this.size);\r\n var sh = this.shape.reverse();\r\n var dstStride = this.strides.reverse();\r\n\r\n generatelist(recipient, sh);\r\n transport(_data, _dest, recipient, dstStride);\r\n\r\n _dest = _dest.reshape(sh);\r\n return _dest;\r\n }));\r\n Object.defineProperty(Array.prototype, 'flatten', withValue(function numpy$_flatten() {\r\n return this.ravel();\r\n }));\r\n function generatelist(recipient, sh) {\r\n var start = new Array(sh.length);\r\n var size = sh.length;\r\n\r\n for (var i = 0; i < sh.length; i++) {\r\n start[i] = 0;\r\n }\r\n\r\n for (var i = 0; i < recipient.length; i++) {\r\n recipient[i] = new Array(sh.length);\r\n for (var j = 0; j < sh.length; j++)\r\n recipient[i][j] = start[j];\r\n\r\n increment(start, sh);\r\n }\r\n };\r\n function increment(start, sh) {\r\n for (var i = sh.length - 1; i >= 0; i--) {\r\n if (start[i] < sh[i] - 1) {\r\n start[i]++;\r\n return;\r\n }\r\n start[i] = 0;\r\n }\r\n };\r\n function transport(data, dest, recipient, dstStride) {\r\n for (var i = 0; i < recipient.length; i++) {\r\n var position;\r\n var positionArray = recipient[i];\r\n for (var j = 0; j < dstStride.length; j++)\r\n positionArray[j] = recipient[i][j] * dstStride[j];\r\n var position = positionArray.reduce(function (a, b) { return a + b; }, 0);\r\n dest[i] = data[position];\r\n }\r\n };\r\n window.np = numpy;\r\n numpy.pi = Math.PI;\r\n numpy.range = numpy.arange;\r\n Object.defineProperty(Array.prototype, 'exp', withValue(numpy.exp));\r\n Object.defineProperty(Array.prototype, 'reshape', withValue(numpy.reshape));\r\n Object.defineProperty(Array.prototype, 'ravel', withValue(numpy.ravel));\r\n Object.defineProperty(Array.prototype, 'dtype', withValue(numpy.dtype));\r\n Number.prototype.dtype = numpy.dtype;\r\n Object.defineProperty(Array.prototype, 'dot', withValue(numpy.dot));\r\n numpy.random = numpy.getrandom;\r\n numpy.random.random = numpy.getrandom;\r\n window.ndarray = Array;\r\n})();\r\n\r\n// javascript utility\r\n// https://github.com/fernandezajp/PyExtJS\r\n\r\n(function () {\r\n\r\n Type.registerNamespace('PolyRegression');\r\n\r\n PolyRegression.Matrix = function PolyRegression_Matrix() {\r\n }\r\n PolyRegression.Matrix.prototype = {\r\n _pairs: null,\r\n\r\n computeCoefficients: function PolyRegression_Matrix$computeCoefficients(data, degree) {\r\n degree += 1;\r\n var n = data.length;\r\n var r, c;\r\n var rs = 2 * degree - 1;\r\n var m = new Array(degree);\r\n for (var i = 0; i < degree; i++) {\r\n var mm = new Array(degree + 1);\r\n for (var j = 0; j <= degree; j++) {\r\n mm[j] = 0;\r\n }\r\n m[i] = mm;\r\n }\r\n var mpc = new Array(rs);\r\n for (var i = 0; i < rs; i++) {\r\n mpc[i] = 0;\r\n }\r\n mpc[0] = n;\r\n for (var i = 0; i < data.length; i++) {\r\n var pr = data[i];\r\n for (r = 1; r < rs; r++) {\r\n mpc[r] += Math.pow(pr.get_x(), r);\r\n }\r\n m[0][degree] += pr.get_y();\r\n for (r = 1; r < degree; r++) {\r\n m[r][degree] += Math.pow(pr.get_x(), r) * pr.get_y();\r\n }\r\n }\r\n for (r = 0; r < degree; r++) {\r\n for (c = 0; c < degree; c++) {\r\n m[r][c] = mpc[r + c];\r\n }\r\n }\r\n this._echelonize(m);\r\n var terms = new Array(degree);\r\n for (var i = 0; i < m.length; i++) {\r\n var mc = m[i];\r\n terms[i] = mc[degree];\r\n }\r\n this._pairs = terms;\r\n return terms;\r\n },\r\n\r\n eval: function PolyRegression_Matrix$eval(x) {\r\n var y = 0;\r\n var power = 0;\r\n for (var i = 0; i < this._pairs.length; i++) {\r\n y += this._pairs[i] * Math.pow(x, power++);\r\n }\r\n return y;\r\n },\r\n\r\n _echelonize: function PolyRegression_Matrix$_echelonize(A) {\r\n var n = A.length;\r\n var m = A[0].length;\r\n var i = 0;\r\n var j = 0;\r\n var k;\r\n var swap;\r\n while (i < n && j < m) {\r\n k = i;\r\n while (k < n && !A[k][j]) {\r\n k++;\r\n }\r\n if (k < n) {\r\n if (k !== i) {\r\n swap = A[i];\r\n A[i] = A[k];\r\n A[k] = swap;\r\n }\r\n if (A[i][j] !== 1) {\r\n this._divide(A, i, j, m);\r\n }\r\n this._eliminate(A, i, j, n, m);\r\n i++;\r\n }\r\n j++;\r\n }\r\n },\r\n\r\n _divide: function PolyRegression_Matrix$_divide(A, i, j, m) {\r\n for (var q = j + 1; q < m; q++) {\r\n A[i][q] /= A[i][j];\r\n }\r\n A[i][j] = 1;\r\n },\r\n\r\n _eliminate: function PolyRegression_Matrix$_eliminate(A, i, j, n, m) {\r\n for (var k = 0; k < n; k++) {\r\n if (k !== i && !!A[k][j]) {\r\n for (var q = j + 1; q < m; q++) {\r\n A[k][q] -= A[k][j] * A[i][q];\r\n }\r\n A[k][j] = 0;\r\n }\r\n }\r\n }\r\n }\r\n\r\n PolyRegression.Pair = function PolyRegression_Pair(x, y) {\r\n this._x = x;\r\n this._y = y;\r\n }\r\n PolyRegression.Pair.prototype = {\r\n _x: 0,\r\n\r\n get_x: function PolyRegression_Pair$get_x() {\r\n return this._x;\r\n },\r\n set_x: function PolyRegression_Pair$set_x(value) {\r\n this._x = value;\r\n return value;\r\n },\r\n\r\n _y: 0,\r\n\r\n get_y: function PolyRegression_Pair$get_y() {\r\n return this._y;\r\n },\r\n set_y: function PolyRegression_Pair$set_y(value) {\r\n this._y = value;\r\n return value;\r\n }\r\n }\r\n\r\n\r\n PolyRegression.Matrix.registerClass('PolyRegression.Matrix');\r\n PolyRegression.Pair.registerClass('PolyRegression.Pair');\r\n})();\r\n","import { IPriceTableLine } from \"./IPriceTableLine\";\r\nimport { ResultLayer } from \"./resultLayer\";\r\nimport { InputModel } from \"./inputModel\";\r\nimport { IProductPricedetails } from \"./IProductPricedetails\";\r\nimport { IPricePosition } from \"./IPricePosition\";\r\nimport { FortracNaturePriceCalculator } from \"./fortracNaturePriceCalculator\";\r\nimport { Prices } from \"./prices\";\r\nimport { FortracGabionCalculator } from \"./fortracGabionCalculator\";\r\nimport { FortracBlockCalculator } from \"./fortracBlockCalculator\";\r\nimport { FortracPanelCalculator } from \"./fortracPanelCalculator\";\r\n\r\nexport class PriceCalculator {\r\n resultTable: Array;\r\n frontArea:number;\r\n\r\n groupBy(list: Array, keyGetter:any) {\r\n const map = new Map();\r\n list.forEach((item) => {\r\n const key = keyGetter(item);\r\n const collection = map.get(key);\r\n if (!collection) {\r\n map.set(key, [item]);\r\n } else {\r\n collection.push(item);\r\n }\r\n });\r\n return map;\r\n };\r\n\r\n constructor(private inputModel: InputModel, private resultLayers: Array, private prices:Prices) {\r\n\r\n }\r\n\r\n private calculateFrontArea() {\r\n //const radians = this.inputModel.slopeAngle * (Math.PI / 180);\r\n this.frontArea = this.inputModel.height; // Math.sin(radians);\r\n }\r\n\r\n calculate(prices: Prices): IProductPricedetails[] {\r\n console.log(\"Calculate prices\");\r\n\r\n const layersWithResult = this.resultLayers.filter(x => !!x.productLine);\r\n const groupedByProduct = this.groupBy(layersWithResult, layer => layer.productLine.label);\r\n let pricesTable = [] as IPriceTableLine[];\r\n\r\n \r\n\r\n groupedByProduct.forEach(prodGroup => {\r\n const noLayers = prodGroup.length;\r\n const frictionConnec = prodGroup.reduce((total, current) => total + current.resultTotalLength, 0);\r\n const wrapAround = (this.inputModel.verticalLayerDistance + 1.5) * noLayers + frictionConnec;\r\n const steelStab = noLayers + frictionConnec;\r\n const price = prodGroup[0].productLine.price;\r\n\r\n const line = {\r\n noLayers: noLayers,\r\n frictionConnec: frictionConnec,\r\n wrapAround: wrapAround,\r\n steelstab: steelStab,\r\n\r\n frictionConnecPlus6Perc: frictionConnec * 1.06,\r\n wrapAroundPlus6Perc: wrapAround * 1.06,\r\n steelstabPlus6Perc: steelStab * 1.06,\r\n\r\n frictionConnecTotal: frictionConnec * 1.06 * price,\r\n wrapAroundTotal: wrapAround * 1.06 * price,\r\n steelStabTotal: steelStab * 1.06 * price\r\n\r\n } as IPriceTableLine;\r\n\r\n pricesTable.push(line);\r\n });\r\n\r\n this.calculateFrontArea();\r\n\r\n //const priceList = this.inputModel.priceId\r\n\r\n\r\n const nature = new FortracNaturePriceCalculator(this.frontArea, this.inputModel, pricesTable, prices);\r\n const naturePrice = nature.calculate();\r\n\r\n const gabion = new FortracGabionCalculator(this.frontArea, this.inputModel, pricesTable, prices);\r\n const gabionPrice = gabion.calculate();\r\n\r\n const block = new FortracBlockCalculator(this.frontArea, this.inputModel, pricesTable, prices);\r\n const blockPrice = block.calculate();\r\n\r\n const panel = new FortracPanelCalculator(this.frontArea, this.inputModel, pricesTable, prices);\r\n const panelPrice = panel.calculate();\r\n\r\n return [naturePrice, gabionPrice, blockPrice, panelPrice];\r\n }\r\n}\r\n","export class Prices {\r\n id: string;\r\n isDefault: boolean;\r\n name: string;\r\n isAdmin:boolean;\r\n\r\n fortrac = {\r\n MDT35: 0,\r\n MDT55: 0,\r\n MDT80: 0,\r\n MDT110: 0,\r\n MDT150: 0,\r\n MDT200: 0,\r\n\r\n T35: 0,\r\n T55: 0,\r\n T80: 0,\r\n T110: 0,\r\n T150: 0,\r\n T200: 0,\r\n };\r\n\r\n trickleProtection = {\r\n fortrac3D: 2.2,\r\n _23142Gr: 1.8,\r\n NonWovenFabric: 0.96\r\n };\r\n\r\n steelLattice = {\r\n steel06: 11.5,\r\n steel05: 13.8,\r\n galvanized: 30\r\n };\r\n\r\n gabion = {\r\n _200x100x100: 65\r\n };\r\n\r\n gabionAnchor = {\r\n Type1Dach: 70,\r\n Type2EMEEA: 50\r\n };\r\n\r\n block = {\r\n inorBloc: 95,\r\n allanBlock: 100\r\n };\r\n\r\n panel = {\r\n passive: 120\r\n }\r\n}\r\n","import { ProductsTableLine } from \"./productsTableLine\";\r\nimport { InputModel } from \"./inputModel\";\r\nimport { ReductionFactorTables } from \"./reductionFactorTables\";\r\nimport { Prices } from \"./prices\";\r\nimport { MetricToImpFactors } from \"./unitSystem\";\r\n\r\nexport class ProductsTable {\r\n calculatedProducts: Array;\r\n private reductionFactorTables:ReductionFactorTables;\r\n\r\n constructor(private inputModel: InputModel, prices: Prices) {\r\n this.reductionFactorTables = new ReductionFactorTables();\r\n\r\n this.calculatedProducts = [\r\n //{ label: \"Fortrac® 300 T\", shortTermStrength: 300, A1: this.getAValue(1, \"A1\"), A2: this.getAValue(1, \"A2\"), A3: this.getAValue(1, \"A3\"), A4 : this.getAValue(1, \"A4\"), A5: this.getAValue(1, \"A5\"), price: 6 } as ProductsTableLine,\r\n { label: \"Fortrac® 200 T\", shortTermStrength: 200, A1: this.getAValue(2, \"A1\"), A2: this.getAValue(2, \"A2\"), A3: this.getAValue(2, \"A3\"), A4: this.getAValue(2, \"A4\"), A5: this.getAValue(2, \"A5\"), price: prices.fortrac.T200, color: '#004225' } as ProductsTableLine,\r\n { label: \"Fortrac® 150 T\", shortTermStrength: 150, A1: this.getAValue(3, \"A1\"), A2: this.getAValue(3, \"A2\"), A3: this.getAValue(3, \"A3\"), A4: this.getAValue(3, \"A4\"), A5: this.getAValue(3, \"A5\"), price: prices.fortrac.T150, color: '#00563f' } as ProductsTableLine,\r\n { label: \"Fortrac® 110 T\", shortTermStrength: 110, A1: this.getAValue(4, \"A1\"), A2: this.getAValue(4, \"A2\"), A3: this.getAValue(4, \"A3\"), A4: this.getAValue(4, \"A4\"), A5: this.getAValue(4, \"A5\"), price: prices.fortrac.T110, color: '#006600' } as ProductsTableLine,\r\n { label: \"Fortrac® 80 T\", shortTermStrength: 80, A1: this.getAValue(5, \"A1\"), A2: this.getAValue(5, \"A2\"), A3: this.getAValue(5, \"A3\"), A4: this.getAValue(5, \"A4\"), A5: this.getAValue(5, \"A5\"), price: prices.fortrac.T80, color: '#087830' } as ProductsTableLine,\r\n { label: \"Fortrac® 55 T\", shortTermStrength: 55, A1: this.getAValue(6, \"A1\"), A2: this.getAValue(6, \"A2\"), A3: this.getAValue(6, \"A3\"), A4: this.getAValue(6, \"A4\"), A5: this.getAValue(6, \"A5\"), price: prices.fortrac.T55, color: '#2a8000' } as ProductsTableLine,\r\n { label: \"Fortrac® 35 T\", shortTermStrength: 35, A1: this.getAValue(7, \"A1\"), A2: this.getAValue(7, \"A2\"), A3: this.getAValue(7, \"A3\"), A4: this.getAValue(7, \"A4\"), A5: this.getAValue(7, \"A5\"), price: prices.fortrac.T35, color: '#568203' } as ProductsTableLine,\r\n\r\n //{ label: \"Fortrac® R 300/30-30 MPT\", shortTermStrength: 300, A1: this.getAValue(8, \"A1\"), A2: this.getAValue(8, \"A2\"), A3: this.getAValue(8, \"A3\"), A4: this.getAValue(8, \"A4\"), A5: this.getAValue(8, \"A5\"), price: 3.5 } as ProductsTableLine,\r\n { label: \"Fortrac® 200 MDT\", shortTermStrength: 200, A1: this.getAValue(9, \"A1\"), A2: this.getAValue(9, \"A2\"), A3: this.getAValue(9, \"A3\"), A4: this.getAValue(9, \"A4\"), A5: this.getAValue(9, \"A5\"), price: prices.fortrac.MDT200, color: '#004225' } as ProductsTableLine,\r\n { label: \"Fortrac® 150 MDT\", shortTermStrength: 150, A1: this.getAValue(10, \"A1\"), A2: this.getAValue(10, \"A2\"), A3: this.getAValue(10, \"A3\"), A4: this.getAValue(10, \"A4\"), A5: this.getAValue(10, \"A5\"), price: prices.fortrac.MDT150, color: '#00563f' } as ProductsTableLine,\r\n { label: \"Fortrac® 110 MDT\", shortTermStrength: 110, A1: this.getAValue(11, \"A1\"), A2: this.getAValue(11, \"A2\"), A3: this.getAValue(11, \"A3\"), A4: this.getAValue(11, \"A4\"), A5: this.getAValue(11, \"A5\"), price: prices.fortrac.MDT110, color: '#006600' } as ProductsTableLine,\r\n { label: \"Fortrac® 80 MDT\", shortTermStrength: 80, A1: this.getAValue(12, \"A1\"), A2: this.getAValue(12, \"A2\"), A3: this.getAValue(12, \"A3\"), A4: this.getAValue(12, \"A4\"), A5: this.getAValue(12, \"A5\"), price: prices.fortrac.MDT80, color: '#087830' } as ProductsTableLine,\r\n { label: \"Fortrac® 55 MDT\", shortTermStrength: 55, A1: this.getAValue(13, \"A1\"), A2: this.getAValue(13, \"A2\"), A3: this.getAValue(13, \"A3\"), A4: this.getAValue(13, \"A4\"), A5: this.getAValue(13, \"A5\"), price: prices.fortrac.MDT55, color: '#2a8000' } as ProductsTableLine,\r\n { label: \"Fortrac® 35 MDT\", shortTermStrength: 35, A1: this.getAValue(14, \"A1\"), A2: this.getAValue(14, \"A2\"), A3: this.getAValue(14, \"A3\"), A4: this.getAValue(14, \"A4\"), A5: this.getAValue(14, \"A5\"), price: prices.fortrac.MDT35, color: '#568203' } as ProductsTableLine,\r\n ];\r\n\r\n this.calculateDesignStrengths();\r\n }\r\n \r\n private calculateDesignStrengths() {\r\n this.calculatedProducts.forEach(x => {\r\n if (x.A1 !== 0) {\r\n x.designStrength = x.shortTermStrength /\r\n (x.A1 * x.A2 * x.A3 * x.A4 * x.A5 * this.inputModel.materialPartialSafetyFactor);\r\n }\r\n });\r\n }\r\n\r\n private getAValue(productId: number, aValueType:string) :number {\r\n const line = this.reductionFactorTables.tableLines.find(x => x.id === productId);\r\n\r\n switch (aValueType) {\r\n case 'A1':\r\n switch (this.inputModel.designLife) {\r\n case 1:\r\n return line.A1_1year;\r\n case 10:\r\n return line.A1_10year;\r\n case 60:\r\n return line.A1_60year;\r\n case 120:\r\n return line.A1_120year;\r\n }\r\n break;\r\n case 'A2':\r\n switch (this.inputModel.grainSizeDistribution) {\r\n case 1:\r\n return line.A2_FineGrain;\r\n case 2:\r\n return line.A2_MixGrain;\r\n case 3:\r\n return line.A2_CoarseGrain;\r\n }\r\n break;\r\n case 'A3':\r\n return 1;\r\n case 'A4':\r\n if (this.inputModel.petPva === 2) {\r\n return line.A4_Alkaline;\r\n }\r\n\r\n switch (this.inputModel.phValueOfFillingSoil) {\r\n case 1:\r\n return line.A4_Acid;\r\n case 2:\r\n return line.A4_Neutral;\r\n case 3:\r\n return line.A4_Alkaline;\r\n }\r\n break;\r\n case 'A5':\r\n return 1;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n //private getA2Value(productId: number): number {\r\n // return 0;\r\n //}\r\n\r\n //private getA3Value(productId: number): number {\r\n // return 0;\r\n //}\r\n\r\n //private getA4Value(productId: number): number {\r\n // return 0;\r\n //}\r\n\r\n //private getA5Value(productId: number): number {\r\n // return 0;\r\n //}\r\n}\r\n","import { ReductionFactorTableLine } from \"./reductionFactorTableLine\";\r\n\r\nexport class ReductionFactorTables {\r\n tableLines: Array;\r\n\r\n constructor() {\r\n this.tableLines = [\r\n { id: 1, label:\"R 300/50-30 T\", strength: 300, A1_1year:1.39, A1_10year: 1.45, A1_60year: 1.5, A1_120year: 1.52, A2_FineGrain: 1.01, A2_MixGrain:1.02, A2_CoarseGrain: 1.07, A3: 1, A4_Acid: 1.15, A4_Neutral:1.03, A4_Alkaline:1.1, A5: 1 } as ReductionFactorTableLine,\r\n { id: 2, label:\"Fortrac® 200 T\", strength: 200, A1_1year:1.39, A1_10year: 1.45, A1_60year: 1.5, A1_120year: 1.52, A2_FineGrain: 1.01, A2_MixGrain:1.02, A2_CoarseGrain: 1.07, A3: 1, A4_Acid: 1.15, A4_Neutral:1.03, A4_Alkaline:1.1, A5: 1 } as ReductionFactorTableLine,\r\n { id: 3, label:\"Fortrac® 150 T\", strength: 150, A1_1year:1.39, A1_10year: 1.45, A1_60year: 1.5, A1_120year: 1.52, A2_FineGrain: 1.01, A2_MixGrain:1.02, A2_CoarseGrain: 1.07, A3: 1, A4_Acid: 1.15, A4_Neutral:1.03, A4_Alkaline:1.1, A5: 1 } as ReductionFactorTableLine,\r\n { id: 4, label:\"Fortrac® 110 T\", strength: 110, A1_1year:1.39, A1_10year: 1.45, A1_60year: 1.5, A1_120year: 1.52, A2_FineGrain: 1.01, A2_MixGrain:1.02, A2_CoarseGrain: 1.07, A3: 1, A4_Acid: 1.15, A4_Neutral:1.03, A4_Alkaline:1.1, A5: 1 } as ReductionFactorTableLine,\r\n { id: 5, label:\"Fortrac® 80 T\", strength: 80, A1_1year:1.39, A1_10year: 1.45, A1_60year: 1.5, A1_120year: 1.52, A2_FineGrain: 1.01, A2_MixGrain:1.02, A2_CoarseGrain: 1.07, A3: 1, A4_Acid: 1.15, A4_Neutral:1.03, A4_Alkaline:1.1, A5: 1 } as ReductionFactorTableLine,\r\n { id: 6, label:\"Fortrac® 55 T\", strength: 55, A1_1year:1.39, A1_10year: 1.45, A1_60year: 1.5, A1_120year: 1.52, A2_FineGrain: 1.09, A2_MixGrain:1.11, A2_CoarseGrain: 1.14, A3: 1, A4_Acid: 1.15, A4_Neutral:1.03, A4_Alkaline:1.1, A5: 1 } as ReductionFactorTableLine,\r\n { id: 7, label: \"Fortrac® 35 T\", strength: 35, A1_1year: 1.39, A1_10year: 1.45, A1_60year: 1.5, A1_120year: 1.52, A2_FineGrain: 1.10, A2_MixGrain: 1.12, A2_CoarseGrain: 1.20, A3: 1, A4_Acid: 1.15, A4_Neutral: 1.03, A4_Alkaline: 1.1, A5: 1 } as ReductionFactorTableLine,\r\n\r\n\r\n { id: 8, label: \"R 300/30-30 MPT\", strength: 300, A1_1year: 1.32, A1_10year: 1.36, A1_60year: 1.39, A1_120year: 1.4, A2_FineGrain: 1.06, A2_MixGrain: 1.06, A2_CoarseGrain: 1.08, A3: 1, A4_Acid: 1.05, A4_Neutral: 1.00, A4_Alkaline: 1.05, A5: 1 } as ReductionFactorTableLine,\r\n { id: 9, label: \"R 200/30-30 MPT\", strength: 200, A1_1year: 1.32, A1_10year: 1.36, A1_60year: 1.39, A1_120year: 1.4, A2_FineGrain: 1.06, A2_MixGrain: 1.06, A2_CoarseGrain: 1.11, A3: 1, A4_Acid: 1.05, A4_Neutral: 1.00, A4_Alkaline: 1.05, A5: 1 } as ReductionFactorTableLine,\r\n { id: 10, label: \"R 150/30-30 MPT\", strength: 150, A1_1year: 1.32, A1_10year: 1.36, A1_60year: 1.39, A1_120year: 1.4, A2_FineGrain: 1.06, A2_MixGrain: 1.06, A2_CoarseGrain: 1.13, A3: 1, A4_Acid: 1.05, A4_Neutral: 1.00, A4_Alkaline: 1.05, A5: 1 } as ReductionFactorTableLine,\r\n { id: 11, label: \"R 110/25-20/30 MPT\", strength: 110, A1_1year: 1.32, A1_10year: 1.36, A1_60year: 1.39, A1_120year: 1.4, A2_FineGrain: 1.06, A2_MixGrain: 1.06, A2_CoarseGrain: 1.15, A3: 1, A4_Acid: 1.05, A4_Neutral: 1.00, A4_Alkaline: 1.05, A5: 1 } as ReductionFactorTableLine,\r\n { id: 12, label: \"R 80/25-20/30 MPT\", strength: 80, A1_1year: 1.32, A1_10year: 1.36, A1_60year: 1.39, A1_120year: 1.4, A2_FineGrain: 1.16, A2_MixGrain: 1.18, A2_CoarseGrain: 1.25, A3: 1, A4_Acid: 1.05, A4_Neutral: 1.00, A4_Alkaline: 1.05, A5: 1 } as ReductionFactorTableLine,\r\n { id: 13, label: \"55/25-20/30 MPT\", strength: 55, A1_1year: 1.32, A1_10year: 1.36, A1_60year: 1.39, A1_120year: 1.4, A2_FineGrain: 1.18, A2_MixGrain: 1.21, A2_CoarseGrain: 1.31, A3: 1, A4_Acid: 1.05, A4_Neutral: 1.00, A4_Alkaline: 1.05, A5: 1 } as ReductionFactorTableLine,\r\n { id: 14, label: \"35/25-20/30 MPT\", strength: 35, A1_1year: 1.32, A1_10year: 1.36, A1_60year: 1.39, A1_120year: 1.4, A2_FineGrain: 1.20, A2_MixGrain: 1.25, A2_CoarseGrain: 1.35, A3: 1, A4_Acid: 1.05, A4_Neutral: 1.00, A4_Alkaline: 1.05, A5: 1 } as ReductionFactorTableLine\r\n ];\r\n }\r\n\r\n}\r\n","import { NatureSystemModel, GabionSystemModel, BlockOptions } from \"./calculationEnums\";\r\n\r\nexport class SubSystemMapper {\r\n static getNatureSubsystemId(natureSubsystem: NatureSystemModel): number {\r\n if (natureSubsystem === NatureSystemModel.IntegratedCorrosinProtectedFormWork) {\r\n return 1;\r\n } else if (natureSubsystem === NatureSystemModel.WithoutIntegratedFormWork) {\r\n return 2;\r\n }\r\n else if (natureSubsystem === NatureSystemModel.IntegratedLostFormwork) {\r\n return 3;\r\n }\r\n return null;\r\n }\r\n\r\n static getNatureSubsystem(id: number): NatureSystemModel {\r\n if (id === 1) {\r\n return NatureSystemModel.IntegratedCorrosinProtectedFormWork\r\n } else if (id === 2) {\r\n return NatureSystemModel.WithoutIntegratedFormWork;\r\n } else if (id === 3) {\r\n return NatureSystemModel.IntegratedLostFormwork;\r\n }\r\n return null;\r\n }\r\n\r\n static getGabionSubsystemId(gabionSubsystem: GabionSystemModel) :number {\r\n if (gabionSubsystem === GabionSystemModel.TieRodSystem) {\r\n return 4;\r\n } else if (gabionSubsystem === GabionSystemModel.HalfGabionFacing) {\r\n return 5;\r\n } else if (gabionSubsystem === GabionSystemModel.FullGabionFacing) {\r\n return 6;\r\n }\r\n return null;\r\n }\r\n\r\n static getGabionSubsystem(id: number): GabionSystemModel {\r\n if (id === 4) {\r\n return GabionSystemModel.TieRodSystem;\r\n } else if (id === 5) {\r\n return GabionSystemModel.HalfGabionFacing;\r\n } else if (id === 6) {\r\n return GabionSystemModel.FullGabionFacing;\r\n }\r\n }\r\n\r\n static getBlockSubsystemId(subsystem: BlockOptions): number {\r\n if (subsystem === BlockOptions.HollowBlockFacing) {\r\n return 7;\r\n } else if (subsystem === BlockOptions.SolidBlockFacing) {\r\n return 8;\r\n }\r\n return null;\r\n }\r\n\r\n static getBlockSubsystem(id: number): BlockOptions {\r\n if (id === 7) {\r\n return BlockOptions.HollowBlockFacing;\r\n } else if (id === 8) {\r\n return BlockOptions.SolidBlockFacing;\r\n }\r\n return null;\r\n }\r\n}\r\n","export enum UnitSystem {\r\n Metric = 1,\r\n Imperial = 2\r\n}\r\n\r\nexport enum UnitType {\r\n Length = 1,\r\n Area = 2,\r\n Volume = 3,\r\n Pressure = 4\r\n}\r\n\r\nexport enum MetricToImpFactors {\r\n Foot = 3.2843,\r\n SquareFoot = 10.7643,\r\n CubicFoot = 35.3147,\r\n Pressure = 0.1451,\r\n Weight = 6.366\r\n}\r\n\r\nexport enum ImpToMetricFactors {\r\n Meter = 0.3045,\r\n SquareMeter = 0.0929,\r\n CubicMeter = 0.0283,\r\n Pressure = 6.8940,\r\n Weight = 0.15709\r\n}\r\n","import { HttpClient } from \"@angular/common/http\";\r\nimport { Injectable } from '@angular/core';\r\nimport { BehaviorSubject } from 'rxjs';\r\nimport { map, tap } from 'rxjs/operators';\r\nimport { AdminFactorsService } from './admin-factors.service';\r\nimport { Calculator } from \"./calculationModel/calculator\";\r\nimport { IConfiguration } from \"./calculationModel/configuration\";\r\nimport { IConfigurationGroup } from \"./calculationModel/configurationGroup\";\r\nimport { CompleteResultSet, CompleteResultSet as ICompleteResultSet } from \"./calculationModel/ICompleteResultSet\";\r\nimport { InputModel as IInputModel, InputModel } from \"./calculationModel/inputModel\";\r\nimport { PriceCalculator } from \"./calculationModel/priceCalculator\";\r\nimport { Prices } from \"./calculationModel/prices\";\r\nimport { ResultLayer } from \"./calculationModel/resultLayer\";\r\nimport { MetricToImpFactors, ImpToMetricFactors } from \"./calculationModel/unitSystem\";\r\nimport { PricesService } from \"./prices.service\";\r\n\r\ninterface volumeAndLengthResult {\r\n volume: number;\r\n minLength: number;\r\n maxLength: number;\r\n averageLenght: number;\r\n}\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class ConfigurationService {\r\n //private configurationsUrl = 'api/Configurations';\r\n private configurationsUrl = 'Configurations';\r\n\r\n currentChartDataJson: any;\r\n currentEmbankmentvalues: any;\r\n currentPriceIndication:number;\r\n\r\n currentCalculation: BehaviorSubject;\r\n currentGroups: BehaviorSubject;\r\n\r\n currentInputModel: BehaviorSubject;\r\n currentResultSet: BehaviorSubject;\r\n\r\n currentCalculationCode: BehaviorSubject<[string,string]>;\r\n\r\n setNewInputModel(newInputModel:InputModel): void {\r\n this.currentInputModel.next(newInputModel);\r\n }\r\n\r\n refreshCalculationById(id: string): void {\r\n debugger;\r\n if (!id) {\r\n this.currentCalculation.next(null);\r\n } else {\r\n const queryUrl = `${this.configurationsUrl}/${id}`;\r\n\r\n this.http.get(queryUrl).pipe(tap(res => {\r\n\r\n }),\r\n map(res => {\r\n const calc = JSON.parse(JSON.stringify(res)) as IConfiguration;\r\n\r\n return calc;\r\n })).subscribe(calc => {\r\n this.currentCalculation.next(calc);\r\n this.currentCalculationCode.next([calc.id, calc.calculationCode]);\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n refreshGroups(): void {\r\n const queryUrl = `${this.configurationsUrl}/getGroups`;\r\n //const queryUrl = `${this.configurationsUrl}/getGroups`;\r\n\r\n this.http.get(queryUrl).pipe(tap(res => {\r\n\r\n }),\r\n map(res => {\r\n const resArray = res as any[];\r\n if (!resArray) {\r\n return [];\r\n }\r\n\r\n const groups = JSON.parse(JSON.stringify(res)) as IConfigurationGroup[];\r\n\r\n return groups;\r\n })).subscribe(groups => {\r\n this.currentGroups.next(groups);\r\n });\r\n }\r\n\r\n refreshCalculationByCode(code:string): void {\r\n debugger;\r\n const queryUrl = `${this.configurationsUrl}/byCode/${code}`;\r\n\r\n this.http.get(queryUrl).pipe(tap(res => {\r\n \r\n }),\r\n map(res => {\r\n if (!res) {\r\n const errorMsg = `Keine Config mit Code ${code} gefunden`;\r\n alert(errorMsg);\r\n return null;\r\n }\r\n\r\n const config = JSON.parse(JSON.stringify(res)) as IConfiguration;\r\n return config;\r\n })).subscribe(cfg => {\r\n this.currentCalculation.next(cfg);\r\n this.currentCalculationCode.next([cfg.id, cfg.calculationCode]);\r\n });\r\n }\r\n\r\n createNewSubConfiguration(id: string, title: string): void {\r\n const postUrl = this.configurationsUrl + '/createNewSubCalculation';\r\n\r\n const dto = {\r\n masterConfigurationId: id,\r\n newTitle: title\r\n };\r\n this.http.post(postUrl, dto).subscribe(res => {\r\n alert(\"Calculation created\");\r\n });\r\n\r\n }\r\n\r\n setInputMetricInputValuesToCalculate(input: InputModel): void {\r\n if (!input) {\r\n return null;\r\n }\r\n\r\n if (input.language !== \"enimp\") {\r\n input.metricInputValues = {\r\n height: input.height,\r\n unitWeightCharacteristic: input.unitWeightCharacteristic,\r\n verticalLayerDistance: input.verticalLayerDistance,\r\n minOverburdenHeight: input.minOverburdenHeight,\r\n uniformVerticalSurcharge: input.uniformVerticalSurcharge,\r\n widthOfUniformVerticalSurcharge: input.widthOfUniformVerticalSurcharge,\r\n\r\n }\r\n } else {\r\n input.metricInputValues = {\r\n height: input.height * ImpToMetricFactors.Meter,\r\n unitWeightCharacteristic: input.unitWeightCharacteristic * ImpToMetricFactors.Weight,\r\n verticalLayerDistance: input.verticalLayerDistance * ImpToMetricFactors.Meter,\r\n minOverburdenHeight: input.minOverburdenHeight * ImpToMetricFactors.Meter,\r\n uniformVerticalSurcharge: input.uniformVerticalSurcharge * ImpToMetricFactors.Pressure,\r\n widthOfUniformVerticalSurcharge: input.widthOfUniformVerticalSurcharge * ImpToMetricFactors.Meter,\r\n\r\n }\r\n }\r\n\r\n\r\n //input.height * ImpToMetricFactors.Meter;\r\n //input.unitWeightCharacteristic * ImpToMetricFactors.Pressure;\r\n //input.verticalLayerDistance * ImpToMetricFactors.Meter;\r\n //input.minOverburdenHeight * ImpToMetricFactors.Meter;\r\n //input.uniformVerticalSurcharge * ImpToMetricFactors.Pressure;\r\n //input.widthOfUniformVerticalSurcharge * ImpToMetricFactors.Meter;\r\n\r\n //return input;\r\n }\r\n\r\n\r\n\r\n recalculate(isInputDataValid:boolean): void {\r\n //if (!isInputDataValid) {\r\n // this.currentResultSet.next(null);\r\n // return;\r\n //}\r\n console.log(\"Recalc\");\r\n\r\n const inputModel = this.currentInputModel.getValue();\r\n this.setInputMetricInputValuesToCalculate(inputModel);\r\n\r\n\r\n\r\n if (inputModel) {\r\n const enrichedInputModel = this.calculateHelpValues(inputModel);\r\n const calculator = new Calculator(enrichedInputModel, this.adminFactorsService);\r\n \r\n this.pricesService.getPriceById(enrichedInputModel.priceId).subscribe(prices => {\r\n const layers = calculator.calculate(prices).filter(x => x.productLine);\r\n\r\n this.calculatePricesAndSetResultSet(enrichedInputModel, layers, prices);\r\n });\r\n\r\n } else {\r\n this.currentResultSet.next(null);\r\n }\r\n }\r\n\r\n private calculatePricesAndSetResultSet(inputModel: IInputModel, layers: ResultLayer[], prices: Prices): void {\r\n const priceCalc = new PriceCalculator(inputModel, layers, prices);\r\n\r\n this.pricesService.getPriceById(inputModel.priceId).subscribe(x => {\r\n\r\n const pricesTable = priceCalc.calculate(x);\r\n\r\n const volumeAndLength = this.calculateVolumeAndLengths(inputModel.metricInputValues.height, layers);\r\n\r\n const result = {\r\n productPriceDetails: pricesTable,\r\n resultLayers: layers,\r\n inputModel: inputModel,\r\n volume: volumeAndLength.volume,\r\n maxLength: volumeAndLength.maxLength,\r\n averageLength: volumeAndLength.averageLenght,\r\n minLength: volumeAndLength.minLength\r\n } as ICompleteResultSet;\r\n\r\n this.currentResultSet.next(result);\r\n });\r\n\r\n\r\n }\r\n\r\n //private getMaxLength(layers: ResultLayer[]): number {\r\n\r\n //}\r\n\r\n private calculateVolumeAndLengths(frontHeight:number, layers:ResultLayer[]) : volumeAndLengthResult {\r\n if (!layers || layers.length === 0) {\r\n return {\r\n averageLenght: 0,\r\n maxLength: 0,\r\n volume: 0,\r\n minLength : 0\r\n } as volumeAndLengthResult;\r\n }\r\n\r\n const sortedHeightsAndLength = layers.map(x => {\r\n return {\r\n height: x.height,\r\n length: x.resultTotalLength\r\n }\r\n }).sort((x, y) => y.length - x.length);\r\n\r\n //const volume = sortedHeightsAndLength.reduce((a, currentValue, index) => {\r\n // if (index === 0) {\r\n // return a + (currentValue.length * frontHeight);\r\n // } else {\r\n // return a + (currentValue.height) * (currentValue.height - sortedHeightsAndLength[index - 1].height);\r\n // }\r\n //}, 0);\r\n\r\n\r\n const maxLength = sortedHeightsAndLength[0].length;\r\n\r\n const averageLength = sortedHeightsAndLength.reduce((a, currentValue) => {\r\n return a + currentValue.length;\r\n },\r\n 0) /\r\n sortedHeightsAndLength.length;\r\n\r\n return {\r\n minLength: sortedHeightsAndLength[sortedHeightsAndLength.length - 1].length,\r\n maxLength : maxLength,\r\n averageLenght : averageLength,\r\n volume: averageLength * frontHeight,\r\n } as volumeAndLengthResult;\r\n }\r\n\r\n private isZeroOrNull(value: number) {\r\n if (value === null || value === undefined || isNaN(value) || value === 0) {\r\n return true;\r\n }\r\n\r\n return false;\r\n }\r\n\r\n private calculateHelpValues(inputModel: InputModel): InputModel {\r\n\r\n if (!inputModel) {\r\n return null;\r\n }\r\n\r\n const frictionAngleCharacteristicRad = inputModel.frictionAngleCharacteristic * Math.PI / 180;\r\n const frictionAngleDesignRad = this.isZeroOrNull(inputModel.frictionAngle) ? 0 : Math.tan(frictionAngleCharacteristicRad) / inputModel.frictionAngle;\r\n const frictionAngleDesign = Math.atan(frictionAngleDesignRad) * 180 / Math.PI;\r\n const unitWeightDesign = inputModel.metricInputValues.unitWeightCharacteristic * inputModel.unitWeight;\r\n \r\n const slopeAngleDegreeFirst = -(90 - inputModel.slopeAngle);\r\n const slopeAngleDegreeSecond = slopeAngleDegreeFirst * Math.PI / 180;\r\n const wallFrictionRad = this.isZeroOrNull(inputModel.wallFriction) ? 0 : inputModel.frictionAngleCharacteristic * Math.PI / 180 * inputModel.wallFriction;\r\n\r\n const uniformVerticalSurchargeDesignValue = inputModel.metricInputValues.uniformVerticalSurcharge * inputModel.trafficLoad;\r\n const effectiveHeight = this.isZeroOrNull(inputModel.metricInputValues.unitWeightCharacteristic) ? 0 : inputModel.metricInputValues.height + uniformVerticalSurchargeDesignValue / inputModel.metricInputValues.unitWeightCharacteristic;\r\n\r\n const angleOfInclinationOfSlipSurfaces =\r\n this.getAngleOfInclinationOfSlipSurfaces(frictionAngleCharacteristicRad, slopeAngleDegreeSecond, wallFrictionRad, inputModel);\r\n\r\n const angleOfInclinationOfSlipSurfacecesRad = angleOfInclinationOfSlipSurfaces * Math.PI / 180;\r\n const influencingDepthOfVerticalSurcharge =\r\n inputModel.metricInputValues.widthOfUniformVerticalSurcharge * Math.tan(angleOfInclinationOfSlipSurfacecesRad);\r\n\r\n const productString = inputModel.petPva === 2 ? \"Fortrac® MPT made from PVA\" : (inputModel.phValueOfFillingSoil === 2 ? \"Fortrac® T made from PET\" : \"Fortrac® MPT made from PVA\");\r\n\r\n inputModel = {\r\n ...inputModel,\r\n frictionAngleCharacteristicRad: frictionAngleCharacteristicRad,\r\n frictionAngleDesignRad: frictionAngleDesignRad,\r\n frictionAngleDesign: frictionAngleDesign,\r\n unitWeightDesign: unitWeightDesign,\r\n slopeAngleDegreeFirst: slopeAngleDegreeFirst,\r\n slopeAngleDegreeSecond: slopeAngleDegreeSecond,\r\n wallFrictionRad: wallFrictionRad,\r\n uniformVerticalSurchargeDesignValue: uniformVerticalSurchargeDesignValue,\r\n effectiveHeight: effectiveHeight,\r\n angleOfInclinationOfSlipSurfaces: angleOfInclinationOfSlipSurfaces,\r\n angleOfInclinationOfSlipSurfacesRad: angleOfInclinationOfSlipSurfacecesRad,\r\n influencingDepthOfVerticalSurcharge: influencingDepthOfVerticalSurcharge,\r\n productString: productString,\r\n numberOfGeogrids: inputModel.metricInputValues.height < (5) ? (3) : (4),\r\n }\r\n return inputModel;\r\n }\r\n\r\n private getAngleOfInclinationOfSlipSurfaces(frictionAngleCharacteristicRad: number, slopeAngleDegreeSecond: number, wallFrictionRad: number, inputModel:InputModel) {\r\n const result =\r\n ((Math.cos(frictionAngleCharacteristicRad - slopeAngleDegreeSecond)) /\r\n (Math.sin(frictionAngleCharacteristicRad - slopeAngleDegreeSecond) +\r\n Math.sqrt(\r\n (Math.sin(frictionAngleCharacteristicRad + wallFrictionRad) * (Math.cos(frictionAngleCharacteristicRad)) /\r\n (Math.sin(frictionAngleCharacteristicRad) + Math.cos(slopeAngleDegreeSecond + wallFrictionRad))))));\r\n\r\n const frictionAngleCharacteristics = inputModel.frictionAngleCharacteristic * 1;\r\n\r\n return result + frictionAngleCharacteristics;\r\n }\r\n\r\n\r\n\r\n createNewConfiguration(cfg: IConfiguration, callbackOnSuccess: Function): void {\r\n cfg.maxLength = this.currentEmbankmentvalues.maxLength;\r\n cfg.minLength = this.currentEmbankmentvalues.minLength;\r\n cfg.averageLength = this.currentEmbankmentvalues.averageLength;\r\n cfg.volume = this.currentEmbankmentvalues.volume;\r\n cfg.priceIndication = this.currentPriceIndication;\r\n\r\n cfg.chartDataJson = this.currentChartDataJson;\r\n const postUrl = this.configurationsUrl;\r\n cfg.id = undefined;\r\n this.http.post(postUrl, cfg).pipe(map(res => {\r\n return {\r\n code: (res).calculationCode,\r\n id: (res).id\r\n };\r\n })).subscribe(res => {\r\n //alert(\"Calculation created with Code \" + res);\r\n this.currentCalculationCode.next([res.id, res.code]);\r\n this.refreshGroups();\r\n\r\n if (callbackOnSuccess) {\r\n callbackOnSuccess(res.code);\r\n }\r\n\r\n });\r\n }\r\n\r\n updateConfiguration(cfg: IConfiguration, callbackOnSuccess: Function): void {\r\n cfg.maxLength = this.currentEmbankmentvalues.maxLength;\r\n cfg.minLength = this.currentEmbankmentvalues.minLength;\r\n cfg.averageLength = this.currentEmbankmentvalues.averageLength;\r\n cfg.volume = this.currentEmbankmentvalues.volume;\r\n cfg.priceIndication = this.currentPriceIndication;\r\n\r\n cfg.chartDataJson = this.currentChartDataJson;\r\n const postUrl = `${this.configurationsUrl}/${cfg.id}`;\r\n\r\n this.http.put(postUrl, cfg)\r\n .pipe()\r\n .subscribe(res => {\r\n \r\n });\r\n\r\n if (callbackOnSuccess) {\r\n callbackOnSuccess();\r\n }\r\n }\r\n\r\n constructor(private http: HttpClient, private pricesService:PricesService, private adminFactorsService:AdminFactorsService) {\r\n this.currentCalculation = new BehaviorSubject(null);\r\n this.currentGroups = new BehaviorSubject([]);\r\n this.currentInputModel = new BehaviorSubject(null);\r\n this.currentResultSet = new BehaviorSubject(null);\r\n this.currentCalculationCode = new BehaviorSubject(null);\r\n\r\n this.refreshGroups();\r\n }\r\n\r\n\r\n}\r\n","import { Component, OnInit, Input } from '@angular/core';\n\n@Component({\n selector: 'app-fading-image',\n templateUrl: './fading-image.component.html',\n styleUrls: ['./fading-image.component.css']\n})\nexport class FadingImageComponent implements OnInit {\n\n @Input() src: string;\n @Input() width:number;\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","\n","import { Component, OnInit } from '@angular/core';\n\n@Component({\n selector: 'app-login',\n templateUrl: './login.component.html',\n styleUrls: ['./login.component.css']\n})\nexport class LoginComponent implements OnInit {\n\n constructor() { }\n\n ngOnInit(): void {\n }\n\n}\n","import { Component, OnInit } from '@angular/core';\nimport { Chart } from 'angular-highcharts';\nimport { ConfigurationService } from \"../configuration.service\";\nimport { CompleteResultSet } from \"../calculationModel/ICompleteResultSet\";\nimport { ResultLayer } from \"../calculationModel/resultLayer\";\nimport { TranslateService } from \"@ngx-translate/core\";\nimport { MetricToImpFactors } from \"../calculationModel/unitSystem\";\n\n@Component({\n selector: 'app-overview-chart',\n templateUrl: './overview-chart.component.html',\n styleUrls: ['./overview-chart.component.css']\n})\nexport class OverviewChartComponent implements OnInit {\n chart: Chart;\n currentSeriesIndexes: number[];\n private layerLabel: string;\n private labelHeight: string;\n private labelLength: string;\n private labelChart: string;\n private labelLoad: string;\n private labelHeightOfWall: string;\n private labelInclinationWallFront: string;\n\n\n maxLength: number;\n minLength:number;\n averageLength: number;\n volume: number;\n priceINdication:number;\n\n private initLang(rs: CompleteResultSet) {\n this.translate.get('input.chartLayerLabel').subscribe((res => {\n this.labelHeight = this.translate.instant('input.chartHeightLabel');\n this.labelChart = this.translate.instant('input.chartLabel');\n this.labelHeight = this.translate.instant('input.chartHeightLabel');\n this.labelLength = this.translate.instant('input.chartLengthLabel');\n this.layerLabel = res;\n this.labelLoad = this.translate.instant('load');\n this.labelHeightOfWall = this.translate.instant('input.heightOfWallFieldLabelSecond');\n this.labelInclinationWallFront = this.translate.instant('input.slopeAngleFieldLabelSecond');\n this.configureChart(rs);\n }));\n }\n\n constructor(private configurationService: ConfigurationService, public translate: TranslateService) {\n //this.configureChart(null);\n this.initLang(null);\n\n this.translate.onLangChange.subscribe(x => {\n this.initLang(this.configurationService.currentResultSet.getValue());\n });\n\n this.configurationService.currentResultSet.subscribe(x => {\n this.configureChart(x);\n });\n }\n\n private getSeries(rs: CompleteResultSet): any[] {\n\n if (!rs) {\n return [];\n }\n \n const resultArray = [];\n\n const isImp = rs.inputModel.language === 'enimp';\n\n rs.resultLayers.forEach(item => {\n const layer = item as ResultLayer;\n\n const factor = layer.height / Math.tan(rs.inputModel.slopeAngle * Math.PI / 180);\n\n const firstPoint = {\n x: 0 + factor,\n y: layer.coordinates.val_1,\n layerIndex: layer.layerIndex,\n height: layer.height,\n seriesType: 'layer',\n totalLength: layer.resultTotalLength,\n unit: isImp ? 'ft' : 'm',\n labelHeight: this.labelHeight,\n labelLength: this.labelLength,\n labelLayer: this.layerLabel,\n labelLoad: this.labelLoad,\n labelHeightOfWall: this.labelHeightOfWall,\n labelInclinationWallFront: this.labelInclinationWallFront\n }\n \n const secondPoint = {\n x: layer.coordinates.val_3,\n y: layer.coordinates.val_1,\n layerIndex: layer.layerIndex,\n height: layer.height,\n seriesType: 'layer',\n totalLength: layer.resultTotalLength,\n unit: isImp ? 'ft' : 'm',\n labelHeight: this.labelHeight,\n labelLength: this.labelLength,\n labelLayer: this.layerLabel,\n labelLoad: this.labelLoad,\n labelHeightOfWall: this.labelHeightOfWall,\n labelInclinationWallFront: this.labelInclinationWallFront\n };\n\n const newSerie = {\n //name: \"Layer\",\n name: this.layerLabel,\n data: [firstPoint, secondPoint],\n color: layer.productLine.color,\n };\n\n resultArray.push(newSerie);\n\n });\n\n const embankmentSeries = {\n name: 'Embankment',\n color: '#000000',\n type: 'line',\n data: [\n {\n x: -2,\n y: 0,\n height: rs.inputModel.height,\n inclination: rs.inputModel.slopeAngle,\n seriesType: 'embankment',\n unit: isImp ? 'ft' : 'm',\n labelHeight: this.labelHeight,\n labelLength: this.labelLength,\n labelLayer: this.layerLabel,\n labelLoad: this.labelLoad,\n labelHeightOfWall: this.labelHeightOfWall,\n labelInclinationWallFront: this.labelInclinationWallFront\n },\n {\n x: 0,\n y: 0,\n height: rs.inputModel.height,\n inclination: rs.inputModel.slopeAngle,\n seriesType: 'embankment',\n unit: isImp ? 'ft' : 'm',\n labelHeight: this.labelHeight,\n labelLength: this.labelLength,\n labelLayer: this.layerLabel,\n labelLoad: this.labelLoad,\n labelHeightOfWall: this.labelHeightOfWall,\n labelInclinationWallFront: this.labelInclinationWallFront\n }, {\n x: rs.inputModel.height / Math.tan(rs.inputModel.slopeAngle * Math.PI / 180),\n y: rs.inputModel.height,\n height: rs.inputModel.height,\n inclination: rs.inputModel.slopeAngle,\n seriesType: 'embankment',\n unit: isImp ? 'ft' : 'm',\n labelHeight: this.labelHeight,\n labelLength: this.labelLength,\n labelLayer: this.layerLabel,\n labelLoad: this.labelLoad,\n labelHeightOfWall: this.labelHeightOfWall,\n labelInclinationWallFront: this.labelInclinationWallFront\n }, {\n x: isImp ? 100 : 30,\n y: rs.inputModel.height,\n height: rs.inputModel.height,\n inclination: rs.inputModel.slopeAngle,\n seriesType: 'embankment',\n unit: isImp ? 'ft' : 'm',\n labelHeight: this.labelHeight,\n labelLength: this.labelLength,\n labelLayer: this.layerLabel,\n labelLoad: this.labelLoad,\n labelHeightOfWall: this.labelHeightOfWall,\n labelInclinationWallFront: this.labelInclinationWallFront\n }]\n };\n\n const firstX = 0.5\n + rs.inputModel.height / Math.tan(rs.inputModel.slopeAngle * Math.PI / 180);\n\n const loadSeries = {\n name: 'Load',\n color: '#6495ED',\n type: 'line',\n data: [{\n x: firstX,\n y: rs.inputModel.height,\n trafficLoad: rs.inputModel.uniformVerticalSurcharge,\n seriesType: 'load',\n unit: isImp ? 'psi' : 'kN/m²',\n labelHeight: this.labelHeight,\n labelLength: this.labelLength,\n labelLayer: this.layerLabel,\n labelLoad: this.labelLoad,\n labelHeightOfWall: this.labelHeightOfWall,\n labelInclinationWallFront: this.labelInclinationWallFront\n }, {\n x: 0.5 + rs.inputModel.height / Math.tan(rs.inputModel.slopeAngle * Math.PI / 180),\n y: rs.inputModel.height,\n trafficLoad: rs.inputModel.uniformVerticalSurcharge,\n seriesType: 'load',\n unit: isImp ? 'psi' : 'kN/m²',\n labelHeight: this.labelHeight,\n labelLength: this.labelLength,\n labelLayer: this.layerLabel,\n labelLoad: this.labelLoad,\n labelHeightOfWall: this.labelHeightOfWall,\n labelInclinationWallFront: this.labelInclinationWallFront\n }, {\n x: rs.inputModel.widthOfUniformVerticalSurcharge + rs.inputModel.unitWeight + firstX,\n y: rs.inputModel.height,\n trafficLoad: rs.inputModel.uniformVerticalSurcharge,\n seriesType: 'load',\n unit: isImp ? 'psi' : 'kN/m²',\n labelHeight: this.labelHeight,\n labelLength: this.labelLength,\n labelLayer: this.layerLabel,\n labelLoad: this.labelLoad,\n labelHeightOfWall: this.labelHeightOfWall,\n labelInclinationWallFront: this.labelInclinationWallFront\n }, {\n x: rs.inputModel.widthOfUniformVerticalSurcharge + rs.inputModel.unitWeight + firstX,\n y: rs.inputModel.height,\n trafficLoad: rs.inputModel.uniformVerticalSurcharge,\n seriesType: 'load',\n unit: isImp ? 'psi' : 'kN/m²',\n labelHeight: this.labelHeight,\n labelLength: this.labelLength,\n labelLayer: this.layerLabel,\n labelLoad: this.labelLoad,\n labelHeightOfWall: this.labelHeightOfWall,\n labelInclinationWallFront: this.labelInclinationWallFront\n }]\n }\n\n resultArray.push(loadSeries);\n resultArray.push(embankmentSeries);\n\n return resultArray;\n }\n\n private configureChart(rs: CompleteResultSet): void {\n\n\n const chart = new Chart({\n chart: {\n //height: 90 + '%',\n //width: 700,\n type: 'line'\n },\n legend: {\n enabled: false\n },\n title: {\n text: this.labelChart\n },\n credits: {\n enabled: false\n },\n tooltip: {\n formatter: function () {\n\n const labelHeight = (this).point.labelHeight;\n //const typeOfSeries =\n const type = (this).point.seriesType;\n\n if (type === 'layer') {\n return `${(this).point.labelLayer}: ${(this).point.layerIndex}
${(this).point.labelLength}: ${(this).point.totalLength.toFixed(2)} ${(this).point.unit}
${labelHeight}: ${(this).point.height.toFixed(2)} ${(this).point.unit}`;\n }\n \n if (type === 'load') {\n return `${(this).point.labelLoad}: ${(this).point.trafficLoad.toFixed(0)} ${(this).point.unit}`;\n }\n\n if (type === 'embankment') {\n return `${(this).point.labelHeightOfWall}: ${(this).point.height.toFixed(0)} ${(this).point.unit}
${(this).point.labelInclinationWallFront}: ${(this).point.inclination.toFixed(0)} °`;\n }\n\n return `${type}`;\n }\n },\n plotOptions: {\n series: {\n marker: {\n enabled: false\n },\n }\n },\n yAxis: {\n title: {\n text: this.labelHeight\n },\n type: 'linear',\n min: 0,\n max: rs?.inputModel?.language === 'enimp' ? 40 : 12\n },\n xAxis: {\n title: {\n text: this.labelLength\n },\n type: 'linear',\n min: -2,\n max: rs?.inputModel?.language === 'enimp' ? 40 : 12\n },\n series: this.getSeries(rs)\n });\n\n //(chart).options.yAxis.max = (!!rs?.inputModel?.height) ? rs.inputModel.height + 2 : 15;\n\n this.chart = chart;\n this.maxLength = rs ? rs.maxLength : 0;\n this.minLength = rs ? rs.minLength : 0;\n this.averageLength = rs ? rs.averageLength : 0;\n this.volume = rs ? rs.volume : 0;\n\n const copyStr = JSON.stringify((this.chart).options);\n \n const copy = JSON.parse(copyStr);\n (copy).title.text = null;\n\n this.configurationService.currentChartDataJson = JSON.stringify((copy));\n this.configurationService.currentEmbankmentvalues = {\n maxLength: this.maxLength,\n minLength: this.minLength,\n averageLength: this.averageLength,\n volume: this.volume,\n }\n\n if (rs && rs.productPriceDetails) {\n const priceIndication = rs.productPriceDetails.find(x => x.product === rs.inputModel.selectedSystem).sumPrice;\n \n this.configurationService.currentPriceIndication = priceIndication;\n } else {\n this.configurationService.currentPriceIndication = null;\n }\n\n\n\n //console.log(JSON.stringify(this.chart.options));\n }\n\n ngOnInit(): void {\n }\n\n}\n","
\n
{{'input.chartLabelMinLength' | translate}}: {{minLength | number: '1.1-1'}}
\n
{{'input.chartLabelMaxLength' | translate}}: {{maxLength | number: '1.1-1'}}
\n
{{'input.chartLabelMeanLength' | translate}}: {{averageLength | number: '1.1-1'}}
\n
{{'input.chartLabelCrossSectionAreaLabel' | translate}}: {{volume | number: '1.1-1'}}
\n
{{'input.chartLabelHint' | translate}}
\n","import { Component, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FieldWrapper } from '@ngx-formly/core';\n\n@Component({\n selector: 'formly-wrapper-panel',\n template: `\n
\n

{{ to.label }}

\n
\n \n
\n
\n `,\n})\nexport class PanelWrapperComponent extends FieldWrapper {\n @ViewChild('fieldComponent', { read: ViewContainerRef }) fieldComponent: ViewContainerRef;\n}\n","import { Injectable } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport { Prices } from \"./calculationModel/prices\";\r\nimport { Observable, BehaviorSubject } from 'rxjs';\r\nimport { tap, map } from 'rxjs/operators';\r\n\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class PricesService {\r\n prices: BehaviorSubject;\r\n\r\n\r\n //private pricesUrl = 'api/prices';\r\n private pricesUrl = 'prices';\r\n\r\n private getLineByPrice(prices: Prices): any {\r\n const element = {\r\n id: prices.id,\r\n name: prices.name,\r\n isDefault: prices.isDefault,\r\n blockInorBlock: prices.block.inorBloc,\r\n blockAllanBlock: prices.block.allanBlock,\r\n trickleProtectionFortrac3D: prices.trickleProtection.fortrac3D,\r\n trickleProtection23142Gr: prices.trickleProtection._23142Gr,\r\n trickleProtectionNonWovenFabric: prices.trickleProtection.NonWovenFabric,\r\n steelLatticeSteel05: prices.steelLattice.steel05,\r\n steelLatticeSteel06: prices.steelLattice.steel06,\r\n steelLatticeSteelGalvanized: prices.steelLattice.galvanized,\r\n gabion: prices.gabion._200x100x100,\r\n gabionAnchorType1DACH: prices.gabionAnchor.Type1Dach,\r\n gabionAnchorType2EMEEA: prices.gabionAnchor.Type2EMEEA,\r\n panelPassive: prices.panel.passive,\r\n\r\n fortrac35MDT: prices.fortrac.MDT35,\r\n fortrac55MDT: prices.fortrac.MDT55,\r\n fortrac80MDT: prices.fortrac.MDT80,\r\n fortrac110MDT: prices.fortrac.MDT110,\r\n fortrac150MDT: prices.fortrac.MDT150,\r\n fortrac200MDT: prices.fortrac.MDT200,\r\n fortrac35T: prices.fortrac.T35,\r\n fortrac55T: prices.fortrac.T55,\r\n fortrac80T: prices.fortrac.T80,\r\n fortrac110T: prices.fortrac.T110,\r\n fortrac150T: prices.fortrac.T150,\r\n fortrac200T: prices.fortrac.T200,\r\n }\r\n\r\n return element;\r\n }\r\n\r\n private getPriceByLine(element: any): Prices {\r\n const prices = new Prices();\r\n prices.id = element.id;\r\n prices.name = element.name;\r\n prices.isDefault = element.isDefault;\r\n prices.block.inorBloc = element.blockInorBlock;\r\n prices.block.allanBlock = element.blockAllanBlock;\r\n prices.trickleProtection.fortrac3D = element.trickleProtectionFortrac3D;\r\n prices.trickleProtection._23142Gr = element.trickleProtection23142Gr;\r\n prices.trickleProtection.NonWovenFabric = element.trickleProtectionNonWovenFabric;\r\n prices.steelLattice.steel05 = element.steelLatticeSteel05;\r\n prices.steelLattice.steel06 = element.steelLatticeSteel06;\r\n prices.steelLattice.galvanized = element.steelLatticeSteelGalvanized;\r\n prices.gabion._200x100x100 = element.gabion;\r\n prices.gabionAnchor.Type1Dach = element.gabionAnchorType1DACH;\r\n prices.gabionAnchor.Type2EMEEA = element.gabionAnchorType2EMEEA;\r\n prices.panel.passive = element.panelPassive;\r\n\r\n prices.fortrac.MDT35 = element.fortrac35MDT;\r\n prices.fortrac.MDT55 = element.fortrac55MDT;\r\n prices.fortrac.MDT80 = element.fortrac80MDT;\r\n prices.fortrac.MDT110 = element.fortrac110MDT;\r\n prices.fortrac.MDT150 = element.fortrac150MDT;\r\n prices.fortrac.MDT200 = element.fortrac200MDT;\r\n\r\n prices.fortrac.T35 = element.fortrac35T;\r\n prices.fortrac.T55 = element.fortrac55T;\r\n prices.fortrac.T80 = element.fortrac80T;\r\n prices.fortrac.T110 = element.fortrac110T;\r\n prices.fortrac.T150 = element.fortrac150T;\r\n prices.fortrac.T200 = element.fortrac200T;\r\n\r\n return prices;\r\n }\r\n\r\n //getPrices(): Observable {\r\n getPriceById(id: any): Observable {\r\n\r\n const url = this.pricesUrl + \"/\" + id;\r\n\r\n return this.http.get(url).pipe(tap(res => {\r\n\r\n }),\r\n map(res => {\r\n if (!res) {\r\n return null;\r\n }\r\n const price = this.getPriceByLine(res);\r\n\r\n return price;\r\n }));\r\n }\r\n\r\n isNameExisting(name: string): Observable {\r\n return this.http.get(this.pricesUrl + \"/createNewCalc/\" + name).pipe(map(res => {\r\n return res;\r\n }));\r\n }\r\n\r\n refreshPrices(): void {\r\n this.http.get(this.pricesUrl).pipe(tap(res => {\r\n\r\n }),\r\n map(res => {\r\n if (!res) {\r\n return [];\r\n }\r\n\r\n const resultArray = (res);\r\n const allPrices = resultArray.map(element => {\r\n return this.getPriceByLine(element);\r\n });\r\n\r\n return allPrices;\r\n })).subscribe(prices => {\r\n this.prices.next(prices);\r\n });\r\n }\r\n\r\n updatePrice(prices: Prices, callbackOnSuccess: Function): void {\r\n const putUrl = `${this.pricesUrl}/${prices.id}`;\r\n\r\n const body = this.getLineByPrice(prices);\r\n\r\n this.http.put(putUrl, body)\r\n .pipe()\r\n .subscribe(res => {\r\n this.refreshPrices();\r\n\r\n if (callbackOnSuccess) {\r\n callbackOnSuccess();\r\n }\r\n });\r\n\r\n }\r\n\r\n constructor(\r\n private http: HttpClient) {\r\n\r\n this.prices = new BehaviorSubject([]);\r\n this.refreshPrices();\r\n }\r\n}\r\n","import { Component, OnInit, AfterViewInit } from '@angular/core';\nimport { PricesService } from \"../prices.service\";\nimport { FormGroup, FormControl } from '@angular/forms';\nimport { FormlyFormOptions, FormlyFieldConfig } from '@ngx-formly/core';\nimport { Prices } from \"../calculationModel/prices\";\nimport { UserService } from \"../user.service\";\nimport { UserRoles } from '../user-roles.config';\n\n@Component({\n selector: 'app-prices',\n templateUrl: './prices.component.html',\n styleUrls: ['./prices.component.css']\n})\n\nexport class PricesComponent implements OnInit, AfterViewInit {\n newCalculation = new FormGroup({\n calcName: new FormControl(),\n });\n\n isNewCalculationButtonBusy:boolean;\n\n form = new FormGroup({\n selectedCalculation:new FormControl(),\n });\n editPricesFrom = new FormGroup({});\n\n options: FormlyFormOptions = {};\n\n availablePrices: Prices[];\n\n selectedCalculation: Prices = null;\n\n newCalculationName: string = null;\n\n private selectedCalculationOrig: Prices = null;\n\n isAdmin = false;\n\n fortracProducts: FormlyFieldConfig[] = [\n {\n key: 'fortrac.MDT35',\n type: 'input',\n templateOptions: {\n label: 'MDT 35',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'fortrac.MDT55',\n type: 'input',\n templateOptions: {\n label: 'MDT 55',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'fortrac.MDT80',\n type: 'input',\n templateOptions: {\n label: 'MDT 80',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'fortrac.MDT110',\n type: 'input',\n templateOptions: {\n label: 'MDT 110',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'fortrac.MDT150',\n type: 'input',\n templateOptions: {\n label: 'MDT 150',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'fortrac.MDT200',\n type: 'input',\n templateOptions: {\n label: 'MDT 200',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n\n {\n key: 'fortrac.T35',\n type: 'input',\n templateOptions: {\n label: 'T 35',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'fortrac.T55',\n type: 'input',\n templateOptions: {\n label: 'T 55',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n }, {\n key: 'fortrac.T80',\n type: 'input',\n templateOptions: {\n label: 'T 80',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'fortrac.T110',\n type: 'input',\n templateOptions: {\n label: 'T 110',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'fortrac.T150',\n type: 'input',\n templateOptions: {\n label: 'T 150',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'fortrac.T200',\n type: 'input',\n templateOptions: {\n label: 'T 200',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n ];\n\n trickleAndSteelLattice: FormlyFieldConfig[] = [\n {\n key: 'trickleProtection.fortrac3D',\n type: 'input',\n templateOptions: {\n label: 'Fortrac 3D [€/m²]',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'trickleProtection._23142Gr',\n type: 'input',\n templateOptions: {\n label: '23142Gr [€/m²]',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'trickleProtection.NonWovenFabric',\n type: 'input',\n templateOptions: {\n translate: true,\n label: 'input.priceListNonWovenLabel',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'steelLattice.steel05',\n type: 'input',\n templateOptions: {\n translate: true,\n label: 'input.priceListSteel05Label',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'steelLattice.steel06',\n type: 'input',\n templateOptions: {\n translate: true,\n label: 'input.priceListSteel06Label',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n }, {\n key: 'steelLattice.galvanized',\n type: 'input',\n templateOptions: {\n translate: true,\n label: 'input.priceListGalvanizedLabel',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n\n\n ];\n\n gabions: FormlyFieldConfig[] = [\n {\n key: 'gabion._200x100x100',\n type: 'input',\n templateOptions: {\n label: 'Gabion [€/m²]',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'gabionAnchor.Type1Dach',\n type: 'input',\n templateOptions: {\n label: 'Gabion anchor Type 1 (DACH) [€/m²]',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'gabionAnchor.Type2EMEEA',\n type: 'input',\n templateOptions: {\n label: 'Gabion anchor Type 2 (EMEA) [€/m²]',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n ];\n\n blockAndPanel: FormlyFieldConfig[] = [\n {\n key: 'block.inorBloc',\n type: 'input',\n templateOptions: {\n label: 'InorBlock [€/m²]',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'block.allanBlock',\n type: 'input',\n templateOptions: {\n label: 'AllanBlock [€/m²]',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n },\n {\n key: 'panel.passive',\n type: 'input',\n templateOptions: {\n label: 'Panel passive [€/m²]',\n type: 'number',\n required: true,\n },\n expressionProperties: {\n 'templateOptions.disabled': 'model.isDefault && !model.isAdmin',\n },\n }\n ];\n\n submit(): void {\n this.priceService.updatePrice(this.selectedCalculation, null);\n }\n\n createNewCalculation() {\n\n const newName = this.newCalculation.get('calcName').value as string;\n\n if (!newName || newName.length < 5) {\n alert(\"Name of new calculation has to be at least 5 characters.\");\n } else {\n this.isNewCalculationButtonBusy = true;\n this.priceService.isNameExisting(newName).subscribe(createRes => {\n if (createRes.isExisting) {\n alert(\"A price calculation with the same name is already existing. Choose another name.\");\n } else {\n this.newCalculation.get('calcName').setValue(null);\n this.priceIdToSet = createRes.id;\n this.priceService.refreshPrices();\n }\n });\n }\n }\n\n private priceIdToSet:string = null;\n\n hasCalculationValueChanged:boolean;\n\n onSelectedCalculationChanged(selectedPrices: Prices) {\n if (!selectedPrices) {\n this.selectedCalculationOrig = null;\n this.selectedCalculation = null;\n return;\n }\n\n this.selectedCalculation = selectedPrices;\n\n if (this.selectedCalculation) {\n this.selectedCalculation.isAdmin = this.isAdmin;\n }\n\n this.selectedCalculationOrig = (JSON.parse(JSON.stringify(selectedPrices)));;\n }\n\n onPriceChange(): void {\n const areEqual = JSON.stringify(this.selectedCalculationOrig) === JSON.stringify(this.selectedCalculation);\n\n this.hasCalculationValueChanged = !areEqual;\n }\n \n private setIsAdmin(role:number): void {\n this.isAdmin = role === UserRoles.admin;\n\n if (this.selectedCalculation) {\n this.selectedCalculation.isAdmin = this.isAdmin;\n }\n }\n\n\n constructor(public priceService: PricesService, userService:UserService) {\n userService.currentRole.subscribe(role => {\n this.setIsAdmin(role);\n });\n\n this.setIsAdmin(userService.currentRole.value);\n\n priceService.prices.subscribe(prices => {\n this.availablePrices = prices;\n\n const priceToSet = this.priceIdToSet\n ? this.availablePrices.find(x => x.id === this.priceIdToSet)\n : this.availablePrices.find(x => x.isDefault);\n\n this.form.get('selectedCalculation').setValue(priceToSet);\n this.onSelectedCalculationChanged(priceToSet);\n this.priceIdToSet = null;\n });\n\n }\n\n deleteSelectedCalculation() {\n\n }\n\n ngOnInit(): void {\n }\n\n ngAfterViewInit(): void {\n \n }\n}\n","\n\n
\n\n
\n
\n \n\n \n \n\n
\n\n
\n
\n \n \n
\n
\n\n
\n
\n \n
\n
\n
\n\n
\n\n
\n
\n

{{ 'input.pricelistFortracPricesLabel' | translate }}

\n
\n \n
\n
\n
\n\n
\n
\n

{{ 'input.pricelistTrickleProtectionLabel' | translate }}

\n
\n \n
\n
\n
\n\n
\n
\n

Gabions

\n
\n \n
\n
\n
\n\n
\n
\n

Block & Panel

\n
\n \n
\n
\n
\n\n
\n\n\n\n \n\n
\n","import { Component, OnInit, Output, Input, EventEmitter } from '@angular/core';\nimport { IPricePosition } from \"../calculationModel/IPricePosition\";\nimport { IProductPricedetails } from \"../calculationModel/IProductPricedetails\";\nimport { Product } from \"../calculationModel/calculationEnums\";\n\n@Component({\n selector: 'app-product-result',\n templateUrl: './product-result.component.html',\n styleUrls: ['./product-result.component.css']\n})\n\n\n\nexport class ProductResultComponent implements OnInit {\n @Input()\n set productPrices(val: IProductPricedetails[]) {\n if (!val) {\n this.nature = null;\n this.gabion = null;\n this.block = null;\n this.panel = null;\n } else {\n this.nature = val.find(x => x.product === Product.Nature);\n this.block = val.find(x => x.product === Product.Block);\n this.gabion = val.find(x => x.product === Product.Gabion);\n this.panel = val.find(x => x.product === Product.Panel);\n }\n this.onSelectionChanged(this.selectedProduct);\n }\n\n @Input()\n set showPrices(val: boolean) {\n this.shouldPricesShown = val;\n }\n\n @Input()\n set productToSelect(val: string) {\n this.onSelectionChanged(val);\n }\n\n @Output()\n productSelected = new EventEmitter();\n\n shouldPricesShown:boolean;\n pricePositions: IPricePosition[];\n nature: IProductPricedetails;\n gabion: IProductPricedetails;\n block: IProductPricedetails;\n panel: IProductPricedetails;\n selectedProduct:string;\n\n constructor() {\n console.log(this.shouldPricesShown);\n }\n onSelectionChanged(val) {\n if (val === 'nature') {\n this.pricePositions = this.nature.positions;\n } else if (val === 'gabion') {\n this.pricePositions = this.gabion.positions;\n } else if (val === 'block') {\n this.pricePositions = this.block.positions;\n } else if (val === 'panel') {\n this.pricePositions = this.panel.positions;\n } else {\n this.pricePositions = [];\n }\n\n this.productSelected.emit(val);\n \n }\n\n getPriceLabel(details: IProductPricedetails): string {\n if (!details) {\n return \"\";\n }\n\n if (!details.isValid) {\n return details.errorMessage;\n }\n\n return details.sumPrice.toString();\n }\n\n ngOnInit(): void {\n\n }\n\n}\n","
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{'systemLabel' | translate}}{{'indicativePrice' | translate}}
Fortrac Nature{{getPriceLabel(nature)| number: '1.2-2'}} €
Fortrac Gabion{{getPriceLabel(gabion)| number: '1.2-2'}} €
Fortrac Block{{getPriceLabel(block)| number: '1.2-2'}} €
Fortrac Panel{{getPriceLabel(panel)| number: '1.2-2'}} €
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
{{ 'Position' | translate }}{{ 'Description' | translate }}{{ 'QuantityPerM2' | translate }}{{ 'PriceEuro' | translate }}
{{pos.position | translate}}{{pos.description | translate}}{{pos.quantity | number: '1.2-2'}}{{pos.price | number: '1.2-2'}} {{ 'posPriceUnit' | translate }}
\n
\n\n","import { Component, OnInit, Input, Output, EventEmitter} from '@angular/core';\nimport { InputModel } from \"../calculationModel/inputModel\";\nimport { Product } from \"../calculationModel/calculationEnums\";\nimport { IProductPricedetails } from \"../calculationModel/IProductPricedetails\";\nimport { UserRoles } from '../user-roles.config';\n\n@Component({\n selector: 'app-result-view',\n templateUrl: './result-view.component.html',\n styleUrls: ['./result-view.component.css']\n})\nexport class ResultViewComponent implements OnInit {\n\n constructor() { }\n\n @Input() inputModel: InputModel;\n @Input() productPrices: IProductPricedetails[];\n @Output() showSubSystemSelectionRequested = new EventEmitter();\n\n userRoles = UserRoles;\n\n getSubsystemName(): string {\n switch (this.inputModel.selectedSystem) {\n case Product.Block:\n return this.inputModel.systemModelBlock.toString();\n case Product.Gabion:\n return this.inputModel.systemModelGabion.toString();\n case Product.Nature:\n return this.inputModel.systemModelNature.toString();\n }\n return null;\n }\n\n ngOnInit(): void {\n }\n\n}\n","
\n
\n
\n \n
\n \n
\n
\n\n \n
\n\n
\n

Produkt

\n \n
\n
\n","import { Component, OnDestroy, OnInit, TemplateRef, ViewChild } from '@angular/core';\r\nimport { FormGroup, FormGroupDirective } from '@angular/forms';\r\nimport { FormlyFieldConfig, FormlyFormOptions } from '@ngx-formly/core';\r\nimport { BsModalRef, BsModalService } from 'ngx-bootstrap/modal';\r\nimport { AuthService } from '../authService/auth.service';\r\nimport { SignInModel } from './sign-in.model';\r\nimport { Subscription } from 'rxjs';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\n@Component({\r\n selector: 'app-sign-in',\r\n templateUrl: './sign-in.component.html',\r\n styleUrls: ['./sign-in.component.css']\r\n})\r\nexport class SignInComponent {\r\n @ViewChild(\"signInTemplate\", { read: TemplateRef }) signInTemplate: TemplateRef;\r\n modalRef: BsModalRef;\r\n\r\n signInForm: FormGroup;\r\n signInModel: SignInModel;\r\n signInFields: FormlyFieldConfig[];\r\n formOptions: FormlyFormOptions = {};\r\n\r\n modalOnHideSubscription: Subscription;\r\n errorMsg: string;\r\n loading: boolean = false;\r\n\r\n constructor(private modalService: BsModalService, private authService: AuthService, private translate: TranslateService) {\r\n this.signInForm = new FormGroup({});\r\n this.signInModel = new SignInModel();\r\n this.signInFields = this.signInModel.getFieldConfigs(translate);\r\n }\r\n\r\n show(): void {\r\n this.modalRef = this.modalService.show(this.signInTemplate, { class: 'modal-lg' });\r\n // Unsubscribe previous subscription (if any)\r\n if (this.modalOnHideSubscription) {\r\n this.modalOnHideSubscription.unsubscribe();\r\n }\r\n this.modalOnHideSubscription = this.modalRef.onHide.subscribe(result => {\r\n this.errorMsg = \"\";\r\n this.resetForm();\r\n })\r\n }\r\n\r\n hide(): void {\r\n this.modalRef.hide();\r\n }\r\n\r\n resetForm(): void {\r\n this.formOptions.resetModel();\r\n }\r\n\r\n signInHandler(event: Event): void {\r\n event && event.preventDefault;\r\n this.errorMsg = \"\";\r\n this.loading = true;\r\n this.authService.signIn(this.signInModel.username, this.signInModel.password)\r\n .subscribe(response => {\r\n this.loading = false;\r\n this.authService.isLoggedIn.next(true);\r\n this.authService.triggerRoleChange();\r\n this.modalRef.hide();\r\n }, error => {\r\n this.loading = false;\r\n this.errorMsg = this.translate.instant('messages.' + error.code);\r\n });\r\n }\r\n}\r\n","\r\n
\r\n

{{'signIn.title' | translate}}

\r\n \r\n
\r\n
\r\n
{{errorMsg}}
\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n","import { FormlyFieldConfig } from \"@ngx-formly/core\";\r\nimport { TranslateService } from \"@ngx-translate/core\";\r\n\r\nexport class SignInModel {\r\n username: string;\r\n password: string;\r\n constructor() {\r\n\r\n }\r\n\r\n getFieldConfigs(translate: TranslateService): FormlyFieldConfig[] {\r\n return [\r\n {\r\n key: 'username',\r\n type: 'input',\r\n templateOptions: {\r\n translate: true,\r\n type: 'text',\r\n label: 'signIn.input.label.username',\r\n //placeholder: \"signIn.input.placeholder.username\",\r\n required: true,\r\n attributes: {\r\n autocomplete: 'off',\r\n }\r\n },\r\n validation: {\r\n messages: {\r\n required: (error, field: FormlyFieldConfig) => translate.get('signIn.messages.required.username')\r\n }\r\n }\r\n },\r\n {\r\n key: 'password',\r\n type: 'input',\r\n templateOptions: {\r\n translate: true,\r\n type: 'password',\r\n label: 'signIn.input.label.password',\r\n //placeholder: \"signIn.input.placeholder.password\",\r\n required: true,\r\n attributes: {\r\n autocomplete: 'off',\r\n }\r\n },\r\n validation: {\r\n messages: {\r\n required: (error, field: FormlyFieldConfig) => translate.get('signIn.messages.required.password')\r\n }\r\n }\r\n }\r\n ]\r\n }\r\n}\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\nimport { ISubSystemSelectionModel } from \"../calculationModel/ISubSystemSelectionModel\";\nimport { ISubSystemSelectionModelEntry } from \"../calculationModel/ISubSystemSelectionModelEntry\";\nimport { Product } from \"../calculationModel/calculationEnums\";\nimport { InputModel } from \"../calculationModel/inputModel\";\nimport { SubSystemMapper } from \"../calculationModel/subSystemMapper\";\n\n@Component({\n selector: 'app-sub-system-selection',\n templateUrl: './sub-system-selection.component.html',\n styleUrls: ['./sub-system-selection.component.css']\n})\nexport class SubSystemSelectionComponent implements OnInit {\n\n selectedSubsystem: any;\n\n private getBlockSubsystems() {\n const hollow = {\n id: 7,\n isSelected: false,\n bulletPoints: [\n \"systemModels.FortracBlock.1\",\n \"systemModels.FortracBlock.2\",\n \"systemModels.FortracBlock.3\",\n \"systemModels.FortracBlock.4\",\n \"systemModels.FortracBlock.5\",\n ],\n name: \"systemModels.FortracBlock.hollowBlockFacing\",\n image: \"HUE_System_Block_Hochkammerstein.png\"\n } as ISubSystemSelectionModelEntry;\n\n const solid = {\n id: 8,\n isSelected: false,\n bulletPoints: [\n \"systemModels.FortracBlock.6\",\n \"systemModels.FortracBlock.7\",\n \"systemModels.FortracBlock.8\"\n ],\n name: \"systemModels.FortracBlock.solidBlockFacing\",\n image: \"HUE_System_Block_Vollsteinen.png\"\n \n } as ISubSystemSelectionModelEntry;\n\n return {\n name: \"Fortrac Block\",\n entries: [hollow, solid]\n }\n }\n\n private getGabionSubsystem() {\n const tieRod = {\n id: 4,\n isSelected: false,\n bulletPoints: [\n \"systemModels.FortracGabion.1\",\n \"systemModels.FortracGabion.2\",\n \"systemModels.FortracGabion.3\",\n \"systemModels.FortracGabion.4\"\n ],\n name: \"systemModels.FortracGabion.tierodSystem\",\n image: \"HUE_System_Gabion_Ankerstabsystem.png\"\n } as ISubSystemSelectionModelEntry;\n\n const halfGabion = {\n id: 5,\n isSelected: false,\n bulletPoints: [\n \"systemModels.FortracGabion.5\",\n \"systemModels.FortracGabion.6\",\n \"systemModels.FortracGabion.7\"\n ],\n name: \"systemModels.FortracGabion.halfGabionFacing\",\n image: \"HUE_System_Gabion_Halb.png\",\n } as ISubSystemSelectionModelEntry;\n\n const fullGabion = {\n id: 6,\n isSelected: false,\n bulletPoints: [\n \"systemModels.FortracGabion.8\",\n \"systemModels.FortracGabion.9\",\n \"systemModels.FortracGabion.10\",\n \"systemModels.FortracGabion.11\"\n ],\n name: \"systemModels.FortracGabion.fullgabionFacing\",\n image: \"HUE_System_Gabion_Voll.png\"\n } as ISubSystemSelectionModelEntry;\n return {\n name: \"Fortrac Gabion\",\n entries: [tieRod, halfGabion, fullGabion]\n }\n }\n\n private getNatureSubsystems() {\n const integratedFramework = {\n id: 1,\n isSelected: false,\n bulletPoints: [\n \"systemModels.FortracNature.1\",\n \"systemModels.FortracNature.2\",\n \"systemModels.FortracNature.3\"\n ],\n name: \"systemModels.FortracNature.withIntegratedCorrosionProtectedFormwork\",\n image: \"HUE_System_Nature_integrierte_Schalung.png\"\n } as ISubSystemSelectionModelEntry;\n\n const withoutIntegratedFramework = {\n id: 2,\n isSelected: false,\n bulletPoints: [\n \"systemModels.FortracNature.7\",\n \"systemModels.FortracNature.8\",\n \"systemModels.FortracNature.9\"\n ],\n name: \"systemModels.FortracNature.withoutIntegratedFormWork\",\n image: \"HUE_System_Nature_ohne_Schalung.png\"\n } as ISubSystemSelectionModelEntry;\n\n const integratedLostFramework = {\n id: 3,\n isSelected: false,\n bulletPoints: [\n \"systemModels.FortracNature.4\",\n \"systemModels.FortracNature.5\",\n \"systemModels.FortracNature.6\"\n ],\n name: \"systemModels.FortracNature.withIntegratedLosFormwork\",\n image: \"HUE_System_Nature_verlorene_Schalung.png\"\n } as ISubSystemSelectionModelEntry;\n\n return {\n name: \"Fortrac Nature\",\n entries:[integratedFramework, integratedLostFramework, withoutIntegratedFramework]\n }\n }\n\n constructor() {\n \n }\n\n selectSubsystem($event): void {\n console.log($event);\n this.selectedSubSystemId.emit($event);\n this.selectedSubId = $event;\n \n }\n\n selectedSubId: number;\n\n //@Input() system: Product;\n @Input() inputModel: InputModel;\n @Output() selectedSubSystemId = new EventEmitter();\n\n ngOnInit(): void {\n if (this.inputModel.selectedSystem === Product.Gabion) {\n this.selectedSubsystem = this.getGabionSubsystem();\n this.selectedSubId = SubSystemMapper.getGabionSubsystemId(this.inputModel.systemModelGabion);\n } else if (this.inputModel.selectedSystem === Product.Block) {\n this.selectedSubsystem = this.getBlockSubsystems();\n this.selectedSubId = SubSystemMapper.getBlockSubsystemId(this.inputModel.systemModelBlock);\n } else if (this.inputModel.selectedSystem === Product.Nature) {\n this.selectedSubsystem = this.getNatureSubsystems();\n this.selectedSubId = SubSystemMapper.getNatureSubsystemId(this.inputModel.systemModelNature);\n }\n this.selectedSubSystemId.emit(this.selectedSubId);\n }\n\n\n}\n","
\n \n
\n \n
\n
\n

{{ item.name | translate}}

\n
    \n
  • {{itm | translate}}
  • \n
\n
\n
\n \n
\n
\n\n \n","import { Pipe, PipeTransform } from '@angular/core';\nimport { Product, NatureSystemModel, GabionSystemModel, BlockOptions } from \"./calculationModel/calculationEnums\";\nimport IntegratedCorrosinProtectedFormWork = NatureSystemModel.IntegratedCorrosinProtectedFormWork;\n\n@Pipe({\n name: 'systemToImagePath',\n pure: true\n})\nexport class SystemToImagePathPipe implements PipeTransform {\n\n transform(value: any): string {\n console.log(value);\n if (!value || !value.system) {\n return \"\";\n }\n \n \n const prefix = \"./assets/\";\n\n switch (value.system) {\n case Product.Nature.toString():\n if (!value.subSystem) {\n return prefix + \"Fortrac Natur.png\";\n }\n\n switch (value.subSystem) {\n case NatureSystemModel.IntegratedCorrosinProtectedFormWork.toString():\n return prefix + \"Fortrac Natur Integrated Corrosion-protected formwork.png\";\n case NatureSystemModel.IntegratedLostFormwork.toString():\n return prefix + \"Fortrac Natur with integrated lost formwork.png\";\n case NatureSystemModel.WithoutIntegratedFormWork.toString():\n return prefix + \"Fortrac Natur without integrated formwork.png\";\n }\n \n break;\n case Product.Block.toString():\n if(!value.subSystem){\n return prefix + \"Fortrac Block.png\";\n }\n\n switch(value.subSystem){\n case BlockOptions.HollowBlockFacing.toString():\n return prefix + \"Fortrac Block_Hochkammerstein.png\";\n case BlockOptions.SolidBlockFacing.toString():\n return prefix + \"Fortrac Block_Vollstein.png\";\n }\n\n break;\n case Product.Gabion.toString():\n if(!value.subSystem){\n return prefix + \"Fortrac Gabion.png\";\n }\n\n switch(value.subSystem){\n case GabionSystemModel.FullGabionFacing.toString():\n return prefix + \"Fortrac Gabion_Voll.png\";\n case GabionSystemModel.HalfGabionFacing.toString():\n return prefix + \"Fortrac Gabion_Halb.png\";\n case GabionSystemModel.TieRodSystem.toString():\n return prefix + \"Fortrac Gabion_Ankerstab.png\";\n }\n case Product.Panel.toString():\n return prefix + \"Fortrac Panel passive 6.png\";\n //return prefix + \"Fortrac Panel.png\";\n }\n\n return \"\";\n }\n\n}\n","import { Component, ViewChild, ViewContainerRef } from '@angular/core';\nimport { FieldWrapper } from '@ngx-formly/core';\n\n@Component({\n selector: 'formly-tooltip-wrapper',\n templateUrl: './tooltip-wrapper.component.html',\n \n})\nexport class TooltipWrapperComponent extends FieldWrapper {\n \n @ViewChild('fieldComponent', { read: ViewContainerRef }) fieldComponent: ViewContainerRef;\n}\n","
\n \n \n
\n","import { FormlyFieldConfig } from '@ngx-formly/core';\r\nimport { TranslateService } from '@ngx-translate/core';\r\n\r\nexport class TranslateExtension {\r\n constructor(private translate: TranslateService) { }\r\n prePopulate(field: FormlyFieldConfig) {\r\n const to = field.templateOptions || {};\r\n if (!to.translate || to._translated) {\r\n return;\r\n }\r\n\r\n to._translated = true;\r\n field.expressionProperties = {\r\n ...(field.expressionProperties || {}),\r\n 'templateOptions.label': this.translate.stream(to.label),\r\n };\r\n }\r\n}\r\n\r\nexport function registerTranslateExtension(translate: TranslateService) {\r\n return {\r\n validationMessages: [\r\n {\r\n name: 'required',\r\n message() {\r\n return translate.stream('FORM.VALIDATION.REQUIRED');\r\n },\r\n },\r\n ],\r\n extensions: [{\r\n name: 'translate',\r\n extension: new TranslateExtension(translate),\r\n }],\r\n };\r\n}\r\n","import { Input, Output, Component, OnInit, Inject, ViewChild, TemplateRef } from '@angular/core';\r\nimport { FormGroup, FormControl, FormArray } from '@angular/forms';\r\nimport { FormlyFieldConfig, FormlyFormOptions } from '@ngx-formly/core';\r\nimport { NatureSystemModel, NatureSeedingMethod, GabionSystemModel, BlockOptions, GabionConstructionMethod,\r\n GabionSubsystem, Product\r\n} from \"../calculationModel/calculationEnums\";\r\nimport { InputModel } from \"../calculationModel/inputModel\";\r\nimport { IProductPricedetails } from \"../calculationModel/IProductPricedetails\";\r\nimport { PricesService } from \"../prices.service\";\r\nimport { IConfigurationGroup } from \"../calculationModel/configurationGroup\";\r\nimport { ConfigurationService } from \"../configuration.service\";\r\nimport { IConfigurationTitle } from \"../calculationModel/configurationTitle\";\r\nimport { InputModelMapper } from \"../calculationModel/inputModelMapper\";\r\nimport { TranslateService } from '@ngx-translate/core';\r\nimport { BsModalService, BsModalRef } from 'ngx-bootstrap/modal';\r\nimport { Router, ActivatedRoute, UrlSerializer } from '@angular/router';\r\nimport { NgbNav, NgbNavChangeEvent } from '@ng-bootstrap/ng-bootstrap';\r\n//import { UnitSystem, UnitType } from '../calculationModel/unitSystem';\r\n\r\nimport { DOCUMENT } from '@angular/common';\r\nimport { SubSystemMapper } from \"../calculationModel/subSystemMapper\";\r\nimport { UserService } from \"../user.service\";\r\nimport { SignInComponent } from '../sign-in/sign-in.component';\r\nimport { Subscription } from 'rxjs';\r\nimport { AuthService } from '../authService/auth.service';\r\nimport { UserRoles } from '../user-roles.config';\r\nimport { ClipboardService } from 'ngx-clipboard'\r\nimport { countries } from \"../calculationModel/country-data-store\";\r\n\r\n\r\n\r\n@Component({\r\n selector: 'app-user-input',\r\n templateUrl: './user-input.component.html',\r\n styleUrls: ['./user-input.component.css'],\r\n //changeDetection: ChangeDetectionStrategy.OnPush, \r\n})\r\nexport class UserInputComponent implements OnInit {\r\n\r\n @ViewChild('nav', { static: true }) ngbNav: NgbNav;\r\n @ViewChild(SignInComponent, { static: true }) signInComponent: SignInComponent;\r\n isLoggedIn: boolean;\r\n isLoggedInSubscription: Subscription;\r\n roleSubscription: Subscription;\r\n\r\n userRoles = UserRoles;\r\n\r\n availableConfigGroups: IConfigurationGroup[];\r\n availableCalculations: IConfigurationTitle[];\r\n //currentCalculationCode: string;\r\n codeLoaded:boolean;\r\n currentCalculationCode: FormControl;\r\n canSaveConfig: boolean;\r\n dataPrivacyAccepted: boolean = false;\r\n\r\n public countries: any = countries;\r\n\r\n selectConfigForm = new FormGroup({\r\n availableGroups: new FormControl(),\r\n selectedGroup: new FormControl(),\r\n selectedCalculation: new FormControl(),\r\n newSubCalcName: new FormControl()\r\n });\r\n\r\n columnDefs: any;\r\n rowData: any;\r\n calcResult: any;\r\n productPrices: IProductPricedetails[];\r\n\r\n contact = new FormGroup({});\r\n generalInput = new FormGroup({});\r\n systemConfig = new FormGroup({});\r\n inputSafety = new FormGroup({});\r\n inputSoilParameterForm = new FormGroup({});\r\n inputMainFieldsForm = new FormGroup({});\r\n\r\n form = new FormArray([this.contact, this.generalInput, this.systemConfig, this.inputSafety, this.inputSoilParameterForm, this.inputMainFieldsForm]);\r\n\r\n //form = new FormGroup({\r\n // contact: this.contact,\r\n // generalInput: this.generalInput,\r\n // systemConfig: this.systemConfig,\r\n // inputSafety: this.inputSafety,\r\n // inputSoilParameterForm: this.inputSoilParameterForm,\r\n // inputMainFieldsForm: this.inputMainFieldsForm\r\n //});\r\n inputModel: InputModel;\r\n modalRef: BsModalRef;\r\n\r\n subSystemModalRef: BsModalRef;\r\n\r\n contactOptions: FormlyFormOptions = {\r\n formState: {\r\n disabled: true\r\n },\r\n };\r\n\r\n inputSoilParameter: FormlyFieldConfig[] = [\r\n {\r\n key: 'frictionAngleCharacteristic',\r\n type: 'input',\r\n templateOptions: {\r\n translate: true,\r\n type: 'number',\r\n label: 'input.frictionAngle',\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n validators: {\r\n between20and45: {\r\n expression: (control) => control.value !== null && control.value !== undefined && control.value >= 25 && control.value <= 45,\r\n message: (error, field: FormlyFieldConfig) => this.translate.get('input.validationBetween20and45')\r\n },\r\n }\r\n },\r\n {\r\n key: 'unitWeightCharacteristic',\r\n type: 'input',\r\n templateOptions: {\r\n translate: true,\r\n type: 'number',\r\n label: 'input.unitWeightCharacteristic',\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n validators: {\r\n between17and23: {\r\n expression: (control) => {\r\n const isImp = control._fields[0].templateOptions.label.endsWith('[lb/ft³]');\r\n return control.value !== null &&\r\n control.value !== undefined &&\r\n control.value >= (isImp ? 108 : 17) &&\r\n control.value <= (isImp ? 147 : 23);\r\n },\r\n message: (error, field: FormlyFieldConfig) => this.translate.get('input.validationBetween17and23')\r\n },\r\n }\r\n },\r\n {\r\n key: 'phValueOfFillingSoil',\r\n type: 'select',\r\n templateOptions: {\r\n translate: true,\r\n label: 'input.phOptionFieldLabel',\r\n options: [],\r\n change: () => {\r\n setTimeout(() => {\r\n const isAlkaline = this.inputModel.phValueOfFillingSoil === 3;\r\n const valueToSet = isAlkaline ? 2 : 1;\r\n this.inputModel.petPva = valueToSet;\r\n // const optionField = this.generalInputFields.find(x => x.key === 'petPva');\r\n // optionField.formControl.setValue(valueToSet);\r\n this.generalInput.get('petPva')?.patchValue(this.inputModel.petPva);\r\n //this.generalInput.updateValueAndValidity();\r\n });\r\n \r\n }\r\n },\r\n },\r\n\r\n {\r\n key: 'designLife',\r\n type: 'select',\r\n templateOptions: {\r\n translate: true,\r\n label: 'input.designLifeFieldLabel',\r\n options: [],\r\n //required: true,\r\n }\r\n }\r\n ];\r\n\r\n inputSafetyFactor: FormlyFieldConfig[] = [\r\n {\r\n key: 'frictionAngle',\r\n type: 'input',\r\n templateOptions: {\r\n translate: true,\r\n type: 'number',\r\n label: 'input.frictionAngleFieldLabel',\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n validators: {\r\n between1and125: {\r\n expression: (control) => control.value !== null && control.value !== undefined && control.value >= 1 && control.value <= 1.25,\r\n message: (error, field: FormlyFieldConfig) => this.translate.get('input.validationBetween1and125')\r\n },\r\n }\r\n },\r\n {\r\n key: 'unitWeight',\r\n type: 'input',\r\n templateOptions: {\r\n translate: true,\r\n type: 'number',\r\n label: 'input.unitWeightFieldLabelPartialSafetyFactor',\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n\r\n validators: {\r\n between1and15: {\r\n expression: (control) => control.value !== null && control.value !== undefined && control.value >= 1 && control.value <= 1.5,\r\n message: (error, field: FormlyFieldConfig) => this.translate.get('input.validationBetween1and15')\r\n },\r\n }\r\n },\r\n {\r\n key: 'trafficLoad',\r\n type: 'input',\r\n templateOptions: {\r\n translate: true,\r\n type: 'number',\r\n label: 'input.trafficLoadFieldLabelPartialSafety',\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n validators: {\r\n between1and15: {\r\n expression: (control) => control.value !== null && control.value !== undefined && control.value >= 0 && control.value <= 52,\r\n message: (error, field: FormlyFieldConfig) => this.translate.get('input.validationBetween0and52kn')\r\n },\r\n }\r\n },\r\n {\r\n key: 'materialPartialSafetyFactor',\r\n type: 'input',\r\n templateOptions: {\r\n translate: true,\r\n type: 'number',\r\n label: 'input.materialPartialSafetyFactorFieldLabel',\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n validators: {\r\n between1and14: {\r\n expression: (control) => control.value !== null && control.value !== undefined && control.value >= 1 && control.value <= 1.4,\r\n message: (error, field: FormlyFieldConfig) => this.translate.get('input.validationBetween1and14')\r\n },\r\n }\r\n }\r\n\r\n ];\r\n\r\n fillingSoilFields: FormlyFieldConfig[] = [\r\n {\r\n key: 'frictionAngleCharacteristic',\r\n type: 'input',\r\n templateOptions: {\r\n translate: true,\r\n type: 'number',\r\n label: 'input.frictionAngleCharacteristicFieldLabel',\r\n //placeholder: 'Enter email',\r\n //required: true,\r\n //change: this.calculateInput.bind(this)\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n validators: {\r\n between20and45: {\r\n expression: (control) => control.value !== null && control.value !== undefined && control.value >= 20 && control.value <= 45,\r\n message: (error, field: FormlyFieldConfig) => this.translate.get('input.validationBetween20and45')\r\n },\r\n }\r\n },\r\n {\r\n key: 'frictionAngleCharacteristicRad',\r\n type: 'input',\r\n templateOptions: {\r\n label: '[rad]',\r\n type: 'number',\r\n //placeholder: 'Enter email',\r\n required: true,\r\n readonly: true,\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n //expressionProperties: {\r\n // 'templateOptions.disabled': 'true',\r\n //},\r\n },\r\n {\r\n key: 'frictionAngleDesign',\r\n type: 'input',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'friction angle, design',\r\n //placeholder: 'Enter email',\r\n required: true,\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n //expressionProperties: {\r\n // 'templateOptions.disabled': 'true',\r\n //},\r\n },\r\n {\r\n key: 'frictionAngleDesignRad',\r\n type: 'input',\r\n templateOptions: {\r\n label: '[rad]',\r\n type: 'number',\r\n //placeholder: 'Enter email',\r\n required: true,\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n //expressionProperties: {\r\n // 'templateOptions.disabled': 'true',\r\n //},\r\n },\r\n {\r\n key: 'unitWeightCharacteristic',\r\n type: 'input',\r\n templateOptions: {\r\n hidden: true,\r\n translate: true,\r\n type: 'number',\r\n label: 'input.unitWeightCharacteristicFieldLabel',\r\n //placeholder: 'Enter email',\r\n //required: true,\r\n //change: this.calculateInput.bind(this)\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n validators: {\r\n between17and23: {\r\n expression: (control) => control.value !== null && control.value !== undefined && control.value >= 17 && control.value <= 23,\r\n message: (error, field: FormlyFieldConfig) => this.translate.get('input.validationBetween17and23')\r\n },\r\n }\r\n },\r\n {\r\n key: 'unitWeightDesign',\r\n type: 'input',\r\n templateOptions: {\r\n translate: true,\r\n type: 'number',\r\n label: 'input.unitWeightDesignFieldLabel',\r\n //placeholder: 'Enter email',\r\n required: true,\r\n hidden: true\r\n },\r\n expressionProperties: {\r\n 'templateOptions.disabled': 'true',\r\n },\r\n },\r\n {\r\n key: 'phValueOfFillingSoil',\r\n type: 'select',\r\n templateOptions: {\r\n hidden: true,\r\n label: 'input.phValueFillingSoilFieldLabel',\r\n translate: true,\r\n options: [\r\n ],\r\n //modelOptions: {\r\n // updateOn: 'debounce',\r\n //},\r\n //required: true,\r\n //change: this.phChanged.bind(this)\r\n },\r\n modelOptions: {\r\n //updateOn: 'blur',\r\n },\r\n\r\n },\r\n {\r\n key: 'productString',\r\n type: 'input',\r\n templateOptions: {\r\n hidden: true,\r\n label: 'Product',\r\n required: true,\r\n readonly: true,\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n }\r\n ];\r\n surchargeFields: FormlyFieldConfig[] = [\r\n {\r\n key: 'uniformVerticalSurcharge',\r\n type: 'input',\r\n templateOptions: {\r\n label: 'input.uniformverticalsurchargeFieldLabel',\r\n translate: true,\r\n //required: true,\r\n //change: this.calculateInput.bind(this)\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n validators: {\r\n between0and52: {\r\n expression: (control) => control.value !== null && control.value !== undefined && control.value >= 0 && control.value <= 52,\r\n message: (error, field: FormlyFieldConfig) => this.translate.get('input.validationBetween0and52kn')\r\n },\r\n }\r\n },\r\n {\r\n key: 'uniformVerticalSurchargeDesignValue',\r\n type: 'input',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'uniform vertical surcharge, design value',\r\n required: true,\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n expressionProperties: {\r\n 'templateOptions.disabled': 'true',\r\n },\r\n },\r\n {\r\n key: 'effectiveHeight',\r\n type: 'input',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'effective height',\r\n required: true,\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n expressionProperties: {\r\n 'templateOptions.disabled': 'true',\r\n },\r\n },\r\n {\r\n key: 'widthOfUniformVerticalSurcharge',\r\n type: 'input',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'input.widthofuniformverticalsurchargeFieldLabel',\r\n translate: true,\r\n required: true,\r\n //change: this.calculateInput.bind(this)\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n },\r\n {\r\n key: 'angleOfInclinationOfSlipSurfaces',\r\n type: 'input',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'angle of inclination of slip surfaces',\r\n required: true,\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n expressionProperties: {\r\n 'templateOptions.disabled': 'true',\r\n },\r\n },\r\n {\r\n key: 'angleOfInclinationOfSlipSurfacesRad',\r\n type: 'input',\r\n templateOptions: {\r\n type: 'number',\r\n label: '[rad]',\r\n required: true,\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n expressionProperties: {\r\n 'templateOptions.disabled': 'true',\r\n },\r\n },\r\n {\r\n key: 'influencingDepthOfVerticalSurcharge',\r\n type: 'input',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'influencing depth of vertical surcharge',\r\n required: true,\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n expressionProperties: {\r\n 'templateOptions.disabled': 'true',\r\n },\r\n },\r\n ];\r\n\r\n geometryFields: FormlyFieldConfig[] = [\r\n {\r\n key: 'height',\r\n type: 'input',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'height',\r\n //required: true,\r\n //change: this.calculateInput.bind(this)\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n validators: {\r\n between1and10: {\r\n expression: (control) => control.value !== null && control.value !== undefined && control.value >= 1 && control.value <= 10,\r\n message: (error, field: FormlyFieldConfig) => this.translate.get('input.validationBetween1And10')\r\n },\r\n }\r\n },\r\n {\r\n key: 'slopeAngle',\r\n type: 'input',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'slope angle',\r\n //required: true,\r\n //change: this.calculateInput.bind(this)\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n validators: {\r\n between45and90: {\r\n expression: (control) => control.value !== null && control.value !== undefined && control.value >= 45 && control.value <= 90,\r\n message: (error, field: FormlyFieldConfig) => this.translate.get('input.validationBetween45and90')\r\n },\r\n }\r\n },\r\n {\r\n key: 'slopeAngleDegreeFirst',\r\n type: 'input',\r\n templateOptions: {\r\n type: 'number',\r\n label: '[°]',\r\n required: true,\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n expressionProperties: {\r\n 'templateOptions.disabled': 'true',\r\n },\r\n },\r\n {\r\n key: 'slopeAngleDegreeSecond',\r\n type: 'input',\r\n templateOptions: {\r\n type: 'number',\r\n label: '[°]',\r\n required: true,\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n expressionProperties: {\r\n 'templateOptions.disabled': 'true',\r\n },\r\n },\r\n {\r\n key: 'verticalLayerDistance',\r\n type: 'select',\r\n templateOptions: {\r\n label: 'input.verticalLayerDistanceFieldLabel',\r\n translate: true,\r\n options: [\r\n ],\r\n required: true,\r\n //change: this.calculateInput.bind(this)\r\n },\r\n modelOptions: {\r\n //updateOn: 'blur',\r\n },\r\n },\r\n {\r\n key: 'minOverburdenHeight',\r\n type: 'input',\r\n templateOptions: {\r\n label: 'input.minOverburdenHieghtFieldLabel',\r\n translate: true,\r\n type: 'number',\r\n\r\n required: true,\r\n //change: this.calculateInput.bind(this)\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n },\r\n {\r\n key: 'wallFriction',\r\n type: 'input',\r\n templateOptions: {\r\n label: 'wall friction',\r\n type: 'number',\r\n required: true,\r\n readonly: true,\r\n //change: this.calculateInput.bind(this)\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n },\r\n {\r\n key: 'wallFrictionRad',\r\n type: 'input',\r\n templateOptions: {\r\n label: '[rad]',\r\n type: 'number',\r\n required: true,\r\n },\r\n expressionProperties: {\r\n 'templateOptions.disabled': 'true',\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n },\r\n {\r\n key: 'numberOfGeogrids',\r\n type: 'select',\r\n templateOptions: {\r\n label: 'input.numberOfGeogridsInOneBlockFieldLabel',\r\n translate: true,\r\n options: [\r\n { label: '3', value: 3 },\r\n { label: '4', value: 4 },\r\n ],\r\n required: true,\r\n readonly: true,\r\n //change: this.calculateInput.bind(this)\r\n },\r\n modelOptions: {\r\n //updateOn: 'blur',\r\n },\r\n }\r\n ];\r\n\r\n generalInputFields: FormlyFieldConfig[] = [\r\n //{\r\n // key: 'frictionAngle',\r\n // type: 'input',\r\n // templateOptions: {\r\n // hidden: true,\r\n // type: 'number',\r\n // label: 'input.frictionAngleTanjk',\r\n // translate: true,\r\n // },\r\n // validators: {\r\n // between1and125: {\r\n // expression: (control) => control.value !== null && control.value !== undefined && control.value >= 1 && control.value <= 1.25,\r\n // message: (error, field: FormlyFieldConfig) => this.translate.get('input.validationBetween1and125')\r\n // },\r\n // }\r\n //},\r\n //{\r\n // key: 'unitWeight',\r\n // type: 'input',\r\n // templateOptions: {\r\n // hidden: true,\r\n // type: 'number',\r\n // label: 'input.unitWeightFieldLabel2',\r\n // translate: true,\r\n // //required: true,\r\n // //change: this.calculateInput.bind(this)\r\n // },\r\n // validators: {\r\n // between1and15: {\r\n // expression: (control) => control.value !== null && control.value !== undefined && control.value >= 1 && control.value <= 1.5,\r\n // message: (error, field: FormlyFieldConfig) => this.translate.get('input.validationBetween1and15')\r\n // },\r\n // }\r\n //},\r\n //{\r\n // key: 'trafficLoad',\r\n // type: 'input',\r\n // templateOptions: {\r\n // hidden: true,\r\n // type: 'number',\r\n // label: 'input.trafficLoadFieldLabel',\r\n // translate: true\r\n // //required: true,\r\n // //change: this.calculateInput.bind(this)\r\n // },\r\n // validators: {\r\n // between1and15: {\r\n // expression: (control) => control.value !== null && control.value !== undefined && control.value >= 1 && control.value <= 1.5,\r\n // message: (error, field: FormlyFieldConfig) => this.translate.get('input.validationBetween1and15')\r\n // },\r\n // }\r\n //},\r\n //{\r\n // key: 'materialPartialSafetyFactor',\r\n // type: 'input',\r\n // templateOptions: {\r\n // hidden: true,\r\n // type: 'number',\r\n // label: 'input.materialPartialSafetyFactorFieldLabel',\r\n // translate: true,\r\n // //required: true,\r\n // //change: this.calculateInput.bind(this)\r\n // },\r\n // validators: {\r\n // between1and14: {\r\n // expression: (control) => control.value !== null && control.value !== undefined && control.value >= 1 && control.value <= 1.4,\r\n // message: (error, field: FormlyFieldConfig) => this.translate.get('input.validationBetween1and14')\r\n // },\r\n // }\r\n //},\r\n {\r\n key: 'verticalLayerDistance',\r\n type: 'select',\r\n templateOptions: {\r\n label: 'input.verticalLayerDistanceFieldLabel',\r\n translate: true,\r\n options: [\r\n ],\r\n required: true,\r\n //change: this.calculateInput.bind(this)\r\n },\r\n modelOptions: {\r\n //updateOn: 'blur',\r\n },\r\n },\r\n {\r\n key: 'grainSizeDistribution',\r\n type: 'select',\r\n templateOptions: {\r\n translate: true,\r\n label: 'input.grainSizeDistributionFieldLabel',\r\n options: [\r\n ],\r\n required: true,\r\n }\r\n },\r\n {\r\n key: 'petPva',\r\n type: 'radio',\r\n templateOptions: {\r\n label: 'rawMaterialInputLabel',\r\n translate: true,\r\n options: [\r\n { label: \"PET\", value: 1 }, //Cheap\r\n { label: \"PVA\", value: 2 } //Expensive\r\n ],\r\n change: () => {\r\n setTimeout(() =>{\r\n const isAlkaline = this.inputModel.phValueOfFillingSoil === 3;\r\n const isPET = this.inputModel.petPva === 1;\r\n \r\n if (isAlkaline && isPET) {\r\n alert(\"PET can only be used for acidic and neutral fill materials. Currently alkaline is selected. Selection will be changed to 'Neutral'\");\r\n const optionField = this.inputSoilParameter.find(x => x.key === 'phValueOfFillingSoil');\r\n optionField.formControl.setValue(2);\r\n }\r\n });\r\n }\r\n },\r\n },\r\n //{\r\n // key: 'designLife',\r\n // type: 'select',\r\n // templateOptions: {\r\n // hidden: true,\r\n // label: 'input.designLifeFieldLabel',\r\n // translate:true,\r\n // options: [],\r\n // required: true,\r\n // //change: this.calculateInput.bind(this)\r\n // }\r\n //}\r\n ];\r\n \r\n systemConfigFields: FormlyFieldConfig[] = [\r\n {\r\n key: 'priceId',\r\n type: 'select',\r\n templateOptions: {\r\n label: 'input.PricelistLabel',\r\n translate: true,\r\n options: this.priceService.prices,\r\n valueProp: 'id',\r\n labelProp: 'name',\r\n },\r\n modelOptions: {\r\n //updateOn: 'blur',\r\n },\r\n },\r\n {\r\n key: 'systemModelNature',\r\n type: 'select',\r\n templateOptions: {\r\n label: 'input.systemModelFieldLabel',\r\n translate: true,\r\n options: [\r\n ]\r\n },\r\n modelOptions: {\r\n //updateOn: 'blur',\r\n },\r\n },\r\n {\r\n key: 'seedingMethod',\r\n type: 'select',\r\n templateOptions: {\r\n label: 'input.seedingMethodFieldLabel',\r\n translate: true,\r\n options: [\r\n ]\r\n },\r\n modelOptions: {\r\n //updateOn: 'blur',\r\n },\r\n },\r\n {\r\n key: 'systemModelGabion',\r\n type: 'select',\r\n templateOptions: {\r\n label: 'input.systemModelGabionFieldLabel',\r\n translate: true,\r\n options: []\r\n },\r\n modelOptions: {\r\n //updateOn: 'blur',\r\n },\r\n },\r\n {\r\n key: 'constructionMethodGabion',\r\n type: 'select',\r\n hideExpression: (model: InputModel, formState: any, field: FormlyFieldConfig) => {\r\n return model.systemModelGabion !== GabionSystemModel.TieRodSystem;\r\n },\r\n templateOptions: {\r\n label: 'input.gabionConstructionFieldLabel',\r\n translate: true,\r\n options: [\r\n ]\r\n },\r\n modelOptions: {\r\n //updateOn: 'blur',\r\n },\r\n },\r\n {\r\n key: 'subsystemGabion',\r\n type: 'select',\r\n hideExpression: (model: InputModel, formState: any, field: FormlyFieldConfig) => {\r\n return model.systemModelGabion !== GabionSystemModel.TieRodSystem;\r\n },\r\n templateOptions: {\r\n label: 'input.fortracGabionSubsystemFieldLabel',\r\n translate: true,\r\n options: [\r\n { label: \"System 1\", value: GabionSubsystem.T1Dach },\r\n { label: \"System 2\", value: GabionSubsystem.T2EEMEA },\r\n ]\r\n },\r\n modelOptions: {\r\n //updateOn: 'blur',\r\n },\r\n },\r\n {\r\n key: 'systemModelBlock',\r\n type: 'select',\r\n templateOptions: {\r\n label: 'input.blockFacingFieldLabel',\r\n translate: true,\r\n options: []\r\n },\r\n modelOptions: {\r\n //updateOn: 'blur',\r\n },\r\n },\r\n ];\r\n\r\n inputMainFields: FormlyFieldConfig[] = [\r\n {\r\n key: 'role',\r\n type: 'select',\r\n templateOptions: {\r\n translate: true,\r\n label: 'input.role',\r\n options: [\r\n ]\r\n },\r\n hide: true,\r\n },\r\n\r\n //{\r\n // key: 'unitSystem',\r\n // type: 'radio',\r\n // templateOptions: {\r\n // label: 'input.unitSystem',\r\n // translate: true,\r\n // //required: true,\r\n // options: [{ value: \"Metric\", key: 1 }, { value: \"Imperial\", key: 2 }],\r\n // //required: true,\r\n // //change: this.calculateInput.bind(this)\r\n\r\n // },\r\n // modelOptions: {\r\n // //updateOn: 'blur',\r\n // },\r\n // //validators: {\r\n // // between0and52: {\r\n // // expression: (control) => control.value !== null && control.value !== undefined && control.value >= 0 && control.value <= 52,\r\n // // message: (error, field: FormlyFieldConfig) => this.translate.instant('input.validationBetween0and52kn')\r\n // // },\r\n // //}\r\n //},\r\n\r\n //{\r\n // key: 'language',\r\n // type: 'radio',\r\n // templateOptions: {\r\n // label: 'Lang',\r\n // options: [\r\n // { label: 'de', value: 'de' },\r\n // { label: 'en', value: 'en' },\r\n // ],\r\n // change: (field, event) => {\r\n // const language = (field.form.controls).language.value;\r\n // this.translate.use(language);\r\n // }\r\n // //change:this.changeLang.bind(this)\r\n // },\r\n //},\r\n {\r\n key: 'title',\r\n type: 'input',\r\n templateOptions: {\r\n label: 'input.titleFieldLabel',\r\n translate: true,\r\n type: 'text'\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n //expressionProperties: {\r\n // 'templateOptions.disabled': 'model.isDefault',\r\n //},\r\n },\r\n {\r\n key: 'selectedSystem',\r\n type: 'select',\r\n templateOptions: {\r\n label: 'systemLabel',\r\n translate: true,\r\n options: [\r\n { label: 'Fortrac Nature', value: Product.Nature },\r\n { label: 'Fortrac Gabion', value: Product.Gabion },\r\n { label: 'Fortrac Block', value: Product.Block },\r\n { label: 'Fortrac Panel', value: Product.Panel },\r\n ]\r\n }\r\n },\r\n {\r\n key: 'height',\r\n type: 'input',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'input.heightOfWallFieldLabel',\r\n translate: true,\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n expressionProperties: {\r\n //'templateOptions.label': this.translate.stream('input.heightOfWallFieldLabel', { 'unit': this.getUnitLabel(UnitType.Length) }),\r\n //'templateOptions.disabled': \r\n },\r\n //expressionProperties: {\r\n // 'templateOptions.disabled': 'model.isDefault',\r\n //},\r\n validators: {\r\n between1and10: {\r\n expression: (control) => {\r\n const isImp = control._fields[0].templateOptions.label.endsWith('[ft]');\r\n return control.value !== null &&\r\n control.value !== undefined &&\r\n control.value >= (isImp ? 3 : 1) &&\r\n control.value <= (isImp ? 33 : 10);\r\n },\r\n message: (error, field: FormlyFieldConfig) => {\r\n return this.translate.instant('input.validationBetween1And10');\r\n },\r\n },\r\n }\r\n },\r\n\r\n {\r\n key: 'slopeAngle',\r\n type: 'input',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'input.slopeAngleFieldLabel',\r\n translate: true,\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n validators: {\r\n between45and90: {\r\n expression: (control) => control.value !== null && control.value !== undefined && control.value >= 45 && control.value <= 90,\r\n message: (error, field: FormlyFieldConfig) => {\r\n if (this.inputModel.selectedSystem === Product.Panel) {\r\n return this.translate.get(\"input.validationBetween80And90\");\r\n } else {\r\n return this.translate.get('input.validationBetween45and90');\r\n }\r\n }\r\n }\r\n }\r\n //expressionProperties: {\r\n // 'templateOptions.disabled': 'model.isDefault',\r\n //},\r\n },\r\n {\r\n key: 'uniformVerticalSurcharge',\r\n type: 'input',\r\n templateOptions: {\r\n type: 'number',\r\n label: 'input.uniformverticalsurchargeFieldLabel',\r\n translate: true,\r\n //required: true,\r\n //change: this.calculateInput.bind(this)\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n validators: {\r\n between0and52: {\r\n expression: (control) => {\r\n const isImp = control._fields[0].templateOptions.label.endsWith('[psi]');\r\n return control.value !== null &&\r\n control.value !== undefined &&\r\n control.value >= 0 &&\r\n control.value <= (isImp ? 8 : 52);\r\n },\r\n message: (error, field: FormlyFieldConfig) => this.translate.instant('input.validationBetween0and52kn')\r\n },\r\n }\r\n },\r\n {\r\n key: 'shouldAllGeoGridsHaveSameLength',\r\n type: 'radio',\r\n templateOptions: {\r\n label: 'input.shouldAllGeoGridsHaveSameLength',\r\n translate: true,\r\n options: [\r\n { label: \"EVP\", value: 1 },\r\n { label: \"PET\", value: 2}\r\n ]\r\n },\r\n },\r\n ];\r\n\r\n inputContactData: FormlyFieldConfig[] = [\r\n //{\r\n // key: 'moreInformationNeeded',\r\n // type: 'checkbox',\r\n // templateOptions: {\r\n // label: 'input.moreInformationNeeded',\r\n // translate: true,\r\n // type: 'text'\r\n // }\r\n //},\r\n {\r\n key: 'companyName',\r\n type: 'input',\r\n templateOptions: {\r\n label: 'input.companyNameLabel',\r\n translate: true,\r\n type: 'text'\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n expressionProperties: {\r\n 'templateOptions.disabled': '!model.moreInformationNeeded',\r\n },\r\n },\r\n {\r\n key: 'contactName',\r\n type: 'input',\r\n templateOptions: {\r\n label: 'input.contactNameLabel',\r\n translate: true,\r\n type: 'text',\r\n required: true\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n expressionProperties: {\r\n 'templateOptions.disabled': '!model.moreInformationNeeded',\r\n },\r\n },\r\n {\r\n key: 'contactLastName',\r\n type: 'input',\r\n templateOptions: {\r\n label: 'input.contactLastNameLabel',\r\n translate: true,\r\n type: 'text',\r\n required: true\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n expressionProperties: {\r\n 'templateOptions.disabled': '!model.moreInformationNeeded',\r\n },\r\n },\r\n {\r\n key: 'contactCountry',\r\n type: 'select',\r\n templateOptions: {\r\n label: 'Country',\r\n //translate: true,\r\n options: this.countries.map(x => { label: x.name, value: x.name }),\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n expressionProperties: {\r\n 'templateOptions.disabled': '!model.moreInformationNeeded',\r\n },\r\n },\r\n {\r\n key: 'emailAddress',\r\n type: 'input',\r\n templateOptions: {\r\n label: 'input.emailAddressLabel',\r\n translate: true,\r\n type: 'text',\r\n required: true,\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n expressionProperties: {\r\n 'templateOptions.required': 'true',\r\n },\r\n validators: {\r\n ip: {\r\n expression: (c) => !c.value || /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/.test(c.value),\r\n message: (error, field: FormlyFieldConfig) => this.translate.instant('input.notValidEmail')\r\n },\r\n //required: true\r\n },\r\n },\r\n {\r\n key: 'phoneNumber',\r\n type: 'input',\r\n templateOptions: {\r\n label: 'input.phoneNumberLabel',\r\n translate: true,\r\n type: 'text'\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n expressionProperties: {\r\n 'templateOptions.disabled': '!model.moreInformationNeeded',\r\n },\r\n validators: {\r\n phone: {\r\n expression: (c) => !c.value || /^[+]\\d+$/.test(c.value),\r\n message: (error, field: FormlyFieldConfig) => this.translate.instant('input.notValidPhone')\r\n },\r\n //required: true\r\n },\r\n },\r\n {\r\n key: 'userComment',\r\n type: 'textarea',\r\n templateOptions: {\r\n label: 'input.saveDialogUserCommentLabel',\r\n translate: true,\r\n type: 'text',\r\n rows: 4,\r\n },\r\n modelOptions: {\r\n updateOn: 'blur',\r\n },\r\n //expressionProperties: {\r\n // 'templateOptions.disabled': '!model.moreInformationNeeded',\r\n //},\r\n },\r\n ];\r\n\r\n subSystems = [];\r\n\r\n subSystemName:string = null;\r\n\r\n //getUnitLabel(type: UnitType) {\r\n\r\n // const isMetric = this.inputModel?.unitSystem === UnitSystem.Metric;\r\n // console.log('Get Unit label');\r\n // switch(type)\r\n // {\r\n // case UnitType.Length:\r\n // return isMetric ? \"m\" : \"f\";\r\n\r\n // }\r\n\r\n // return 'm';\r\n //}\r\n \r\n\r\n getSubsystemName(): string {\r\n switch (this.inputModel.selectedSystem) {\r\n case Product.Block:\r\n return this.inputModel.systemModelBlock ? this.inputModel.systemModelBlock.toString() : null;\r\n case Product.Gabion:\r\n return this.inputModel.systemModelGabion ? this.inputModel.systemModelGabion.toString() : null;\r\n case Product.Nature:\r\n return this.inputModel.systemModelNature ? this.inputModel.systemModelNature.toString() : null;\r\n }\r\n return null;\r\n }\r\n\r\n changeLang() {\r\n this.translate.use('de');\r\n }\r\n\r\n private setOptionsetLabels(): void {\r\n const isImp = this.inputModel.language === 'enimp';\r\n \r\n const verticalLayerDistanceOptions = [\r\n { label: isImp ? \"16 inch\" : \"0,4m\", value: 0.4},\r\n { label: isImp ? \"20 inch\" : \"0,5m\", value: 0.5},\r\n { label: isImp ? \"24 inch\" : \"0,6m\", value: 0.6},\r\n ];\r\n\r\n const optionFielVerticalLayerDistance = this.generalInputFields.find(x => x.key === 'verticalLayerDistance');\r\n optionFielVerticalLayerDistance.templateOptions.options = verticalLayerDistanceOptions;\r\n\r\n const phOptions = [\r\n {\r\n label: this.translate.instant('input.phOptionLabelAcidic'),\r\n value: 1\r\n },\r\n {\r\n label: this.translate.instant('input.phOptionLabelNeutral'),\r\n value: 2\r\n }, {\r\n label: this.translate.instant('input.phOptionLabelAlkaline'),\r\n value: 3\r\n }\r\n ];\r\n\r\n const optionField = this.inputSoilParameter.find(x => x.key === 'phValueOfFillingSoil');\r\n optionField.templateOptions.options = phOptions;\r\n\r\n const optionFieldphValueOfFillingSoil = this.fillingSoilFields.find(x => x.key === 'phValueOfFillingSoil');\r\n optionFieldphValueOfFillingSoil.templateOptions.options = phOptions;\r\n\r\n const designLifeOptions = [\r\n { label: this.translate.instant('input.designLifeOptionLabel1year'), value: 1 },\r\n { label: this.translate.instant('input.designLifeOptionLabel10Years'), value: 10 },\r\n { label: this.translate.instant('input.designLifeOptionLabel60years'), value: 60 },\r\n { label: this.translate.instant('input.designLifeOptionLabel120years'), value: 120 },\r\n ];\r\n\r\n //const generalInputFieldDesignLife = this.generalInputFields.find(x => x.key === 'designLife');\r\n //generalInputFieldDesignLife.templateOptions.options = designLifeOptions;\r\n\r\n const designLifeOptionField = this.inputSoilParameter.find(x => x.key === 'designLife');\r\n designLifeOptionField.templateOptions.options = designLifeOptions;\r\n\r\n const grainSizeDistributionOptions = [\r\n { label: this.translate.instant('input.grainSizeDistOptionLabelFine'), value: 1 },\r\n { label: this.translate.instant('input.grainSizeDistOptionLabelMix'), value: 2 },\r\n { label: this.translate.instant('input.grainSizeDistOptionLabelCourse'), value: 3 }\r\n\r\n ];\r\n\r\n const grainSizeDistOptionField = this.generalInputFields.find(x => x.key === 'grainSizeDistribution');\r\n\r\n grainSizeDistOptionField.templateOptions.options = grainSizeDistributionOptions;\r\n\r\n const systemModelOptions = [\r\n { label: this.translate.instant('input.systemModelOptionLabelWithoutIntegrated'), value: NatureSystemModel.WithoutIntegratedFormWork },\r\n { label: this.translate.instant('input.systemModelOptionLabelIntegratedLostFramework'), value: NatureSystemModel.IntegratedLostFormwork },\r\n { label: this.translate.instant('input.systemModelOptionLabelIntegratedCorrossion'), value: NatureSystemModel.IntegratedCorrosinProtectedFormWork }\r\n ];\r\n\r\n const systemModelOptionField = this.systemConfigFields.find(x => x.key === 'systemModelNature');\r\n systemModelOptionField.templateOptions.options = systemModelOptions;\r\n\r\n const seedingMethodOptions = [\r\n { label: this.translate.instant('input.seedingMethodOptionLabelNotNecessary'), value: NatureSeedingMethod.NotNecessary },\r\n { label: this.translate.instant('input.seedingMethodOptionLabelConventional'), value: NatureSeedingMethod.Conventional },\r\n { label: this.translate.instant('input.seedingMethodOptionLabelHydroseeding'), value: NatureSeedingMethod.HydroSeeding }\r\n ];\r\n\r\n const seedingMethodOptionField = this.systemConfigFields.find(x => x.key === 'seedingMethod');\r\n seedingMethodOptionField.templateOptions.options = seedingMethodOptions;\r\n\r\n const systemModelGabionOptions = [\r\n { label: this.translate.instant('input.systemModelGabionOptionLabelFullGabion'), value: GabionSystemModel.FullGabionFacing },\r\n { label: this.translate.instant('input.systemModelGabionOptionLabelHalfGabion'), value: GabionSystemModel.HalfGabionFacing },\r\n { label: this.translate.instant('input.systemModelGabionOptionLabelTieRod'), value: GabionSystemModel.TieRodSystem },\r\n ];\r\n\r\n const systemModelGabionOptionField = this.systemConfigFields.find(x => x.key === 'systemModelGabion');\r\n systemModelGabionOptionField.templateOptions.options = systemModelGabionOptions;\r\n\r\n\r\n const gabionConstructionOptions = [\r\n { label: this.translate.instant('input.gabionConstructionOptionLabelWithoutIntegrated'), value: GabionConstructionMethod.WithoutIntegratedFormwork },\r\n { label: this.translate.instant('input.gabionConstructionOptionLabelIntegrated'), value: GabionConstructionMethod.IntegratedLostFormwork },\r\n ];\r\n\r\n const gabionConstrcutionField = this.systemConfigFields.find(x => x.key === 'constructionMethodGabion');\r\n gabionConstrcutionField.templateOptions.options = gabionConstructionOptions;\r\n\r\n const blockFacingoptions = [\r\n { label: this.translate.instant('input.blockFacingOptionLabelHollow'), value: BlockOptions.HollowBlockFacing },\r\n { label: this.translate.instant('input.blockFacingOptionLabelSolid'), value: BlockOptions.SolidBlockFacing },\r\n ];\r\n\r\n const blockFacingOptionField = this.systemConfigFields.find(x => x.key === 'systemModelBlock');\r\n blockFacingOptionField.templateOptions.options = blockFacingoptions;\r\n\r\n const roleOptions = [\r\n { label: this.translate.instant('input.roleValueCustomer'), value: 'customer' },\r\n { label: this.translate.instant('input.roleValueInternal'), value: 'hueskerInternal' },\r\n { label: \"Admin\", value: 'admin' },\r\n { label: \"Partner\", value: 'partner' }\r\n ];\r\n\r\n const roleOptionField = this.inputMainFields.find(x => x.key === 'role');\r\n roleOptionField.templateOptions.options = roleOptions;\r\n\r\n const yesNoOptions =\r\n [{ label: this.translate.instant('yes'), value: 1 }, { label: this.translate.instant('no'), value: 0 }]\r\n ;\r\n\r\n const yesNoOptionField = this.inputMainFields.find(x => x.key === 'shouldAllGeoGridsHaveSameLength');\r\n yesNoOptionField.templateOptions.options = yesNoOptions;\r\n }\r\n\r\n\r\n initOptionLabelTranslation(): void {\r\n\r\n this.translate.onLangChange.subscribe(x => {\r\n this.translate.get('input.phOptionLabelAcidic').subscribe((res: string) => {\r\n this.setOptionsetLabels();\r\n });\r\n });\r\n\r\n this.translate.get('input.phOptionLabelAcidic').subscribe((res: string) => {\r\n this.setOptionsetLabels();\r\n });\r\n }\r\n\r\n reset(): void {\r\n console.log(\"Reset\");\r\n this.currentCalculationCode.setValue(null);\r\n this.codeLoaded = false;\r\n\r\n //const isImp = this.inputModel.language === 'enimp';\r\n\r\n //const modelOptions = (this.geometryFields.find(x => x.key === 'verticalLayerDistance')).templateOptions.options;\r\n\r\n //modelOptions.splice();\r\n\r\n //modelOptions.push({ label: (isImp ? '16 inch' : '0,40m'), value: (isImp ? 16 : 0.4) });\r\n //modelOptions.push({ label: (isImp ? '20 inch' : '0,50m'), value: (isImp ? 20 : 0.5) });\r\n //modelOptions.push({ label: (isImp ? '24 inch' : '0,60m'), value: (isImp ? 24 : 0.6) });\r\n\r\n this.inputModel = InputModelMapper.getDefaultInputModel(this.inputModel.language, this.inputModel.role);\r\n this.inputContactModelChange();\r\n this.currentCalculationCode.enable();\r\n }\r\n\r\n selectedSubSystemId:number;\r\n\r\n load(): void {\r\n const code = this.currentCalculationCode.value;\r\n this.configurationService.refreshCalculationByCode(code);\r\n }\r\n\r\n copyToClipboard(): void {\r\n\r\n const n = 1.1;\r\n const decimalSeperator = n.toLocaleString().substring(1, 2);\r\n\r\n const m = 1000;\r\n const thousandSeperator = m.toLocaleString().substring(1, 2);\r\n\r\n const res = this.rowData.reduce(function (acc, row) {\r\n const height : number = row.height;\r\n const length: number = row.resultTotalLength;\r\n\r\n return `${acc}\\r\\n${row.layerIndex}\\t${height.toLocaleString()}\\t${row.productLine.label}\\t${length.toLocaleString()}`;\r\n }, '');\r\n\r\n const length = res.length;\r\n\r\n this.clipboardService.copy(res.substring(2, length));\r\n\r\n const alertString = `Values were copied with ${decimalSeperator} as decimal seperator and ${thousandSeperator} as thousand seperator. (i.e. 1${thousandSeperator}000${decimalSeperator}50)`;\r\n\r\n alert(alertString);\r\n }\r\n\r\n setSubsystem(): void {\r\n let subSystem :string = null;\r\n switch (this.inputModel.selectedSystem) {\r\n case Product.Block:\r\n this.inputModel.systemModelBlock = SubSystemMapper.getBlockSubsystem(this.selectedSubSystemId);\r\n this.systemConfig.get('systemModelBlock')?.patchValue(this.inputModel.systemModelBlock);\r\n subSystem = this.inputModel.systemModelBlock.toString();\r\n \r\n break;\r\n case Product.Gabion:\r\n this.inputModel.systemModelGabion = SubSystemMapper.getGabionSubsystem(this.selectedSubSystemId);\r\n this.systemConfig.get('systemModelGabion')?.patchValue(this.inputModel.systemModelGabion);\r\n subSystem = this.inputModel.systemModelGabion.toString();\r\n break;\r\n case Product.Nature:\r\n this.inputModel.systemModelNature = SubSystemMapper.getNatureSubsystem(this.selectedSubSystemId);\r\n this.systemConfig.get('systemModelNature')?.patchValue(this.inputModel.systemModelNature);\r\n subSystem = this.inputModel.systemModelNature.toString();\r\n break;\r\n }\r\n\r\n this.checkAndSetSystemOrSubSystemChange(this.inputModel.selectedSystem.toString(), subSystem);\r\n\r\n this.subSystemName = this.getSubsystemName();\r\n \r\n this.subSystemModalRef.hide();\r\n\r\n const atLeastOneCalculationRelevantError = this.hasAtLeastOneCalcRelevantFieldsChanged();\r\n\r\n if (atLeastOneCalculationRelevantError) {\r\n this.configurationService.recalculate(true);\r\n }\r\n }\r\n\r\n private setLanguage(languageId: string): void {\r\n const langId = languageId?.toLowerCase();\r\n if (!langId) {\r\n this.translate.use('en');\r\n this.inputModel.contactCountry = 'United Kingdom of Great Britain and Northern Ireland (the)';\r\n return;\r\n }\r\n\r\n switch (langId) {\r\n case 'de':\r\n this.translate.use('de');\r\n this.inputModel.contactCountry = 'Germany';\r\n break;\r\n case 'it':\r\n this.translate.use('it');\r\n this.inputModel.contactCountry = 'Italy';\r\n break;\r\n case 'enimp':\r\n this.inputModel.contactCountry = 'United States of America (the)';\r\n break;\r\n default:\r\n this.translate.use('en');\r\n this.inputModel.contactCountry = 'United Kingdom of Great Britain and Northern Ireland (the)';\r\n }\r\n\r\n }\r\n\r\n private labelYes: string = null;\r\n private labelNo: string = null;\r\n\r\n constructor(private priceService: PricesService, private configurationService: ConfigurationService, public translate: TranslateService, private modalService: BsModalService,\r\n private route: ActivatedRoute, @Inject(DOCUMENT) private document: Document, private userService: UserService, private authService: AuthService, private clipboardService: ClipboardService) {\r\n\r\n const langId = route.snapshot.queryParams[\"lang\"];\r\n\r\n this.inputModel = InputModelMapper.getDefaultInputModel();\r\n\r\n this.setLanguage(langId);\r\n\r\n \r\n //this.form.push(this.contact); //this.contact, this.generalInput, this.systemConfig, this.inputSafety, this.inputSoilParameterForm, this.inputMainFieldsForm\r\n //this.form.push(this.generalInput);\r\n //this.form.push(this.systemConfig);\r\n //this.form.push(this.inputSafety);\r\n //this.form.push(this.inputSoilParameterForm);\r\n //this.form.push(this.inputMainFieldsForm);\r\n\r\n \r\n this.inputContactModelChange();\r\n this.initOptionLabelTranslation();\r\n this.currentCalculationCode = new FormControl('');\r\n this.codeLoaded = false;\r\n this.selectConfigForm.get('selectedGroup').valueChanges.subscribe(newValue => {\r\n\r\n const configGroup = (newValue as IConfigurationGroup);\r\n\r\n const calcTitleToSet = !configGroup ? null : configGroup.subCalculations.find(x => x.isDefault);\r\n this.availableCalculations = !configGroup ? [] : configGroup.subCalculations;\r\n this.selectConfigForm.get('selectedCalculation').setValue(calcTitleToSet);\r\n });\r\n\r\n this.configurationService.currentResultSet.subscribe(newResult => {\r\n this.productPrices = newResult ? newResult.productPriceDetails : [];\r\n this.rowData = newResult ? newResult.resultLayers : [];\r\n });\r\n\r\n this.configurationService.currentCalculationCode.subscribe(newCode => {\r\n this.currentCalculationCode.setValue(newCode ? newCode[1] : null);\r\n this.codeLoaded = !!newCode;\r\n this.inputModel.id = newCode ? newCode[0] : null;\r\n\r\n if (this.codeLoaded) {\r\n this.currentCalculationCode.disable();\r\n } else {\r\n this.currentCalculationCode.enable();\r\n }\r\n });\r\n\r\n this.selectConfigForm.get('selectedCalculation').valueChanges.subscribe(newValue => {\r\n const selectedConfig = (newValue as IConfigurationTitle);\r\n\r\n this.configurationService.refreshCalculationById(selectedConfig ? selectedConfig.id : null);\r\n \r\n });\r\n\r\n this.configurationService.currentGroups.subscribe(groups => {\r\n this.availableConfigGroups = groups;\r\n });\r\n\r\n this.configurationService.currentCalculation.subscribe(newCalc => {\r\n if (newCalc) {\r\n\r\n const newModel = InputModelMapper.getInputModel(newCalc);\r\n //this.inputModel = { ...newModel };\r\n const role = this.inputModel.role;\r\n const lang = this.inputModel.language;\r\n this.inputModel = newModel;\r\n this.inputModel.role = role;\r\n this.inputModel.language = lang;\r\n this.inputContactModelChange();\r\n this.configurationService.setNewInputModel(this.inputModel);\r\n this.configurationService.recalculate(true);\r\n }\r\n\r\n });\r\n\r\n this.columnDefs = [\r\n { headerName: 'Layer/Lage [-]', field: 'layerIndex', resizable: true },\r\n { headerName: 'Height above base/Höhe [m]', field: 'height', resizable: true },\r\n { headerName: 'Type [-]', field: 'productLine.label', resizable: true },\r\n { headerName: 'Length/Länge [m]', field: 'resultTotalLength', resizable: true },\r\n { headerName: 'Price/Preis [€/m²]', field: 'productLine.price', resizable: true }\r\n //{ headerName: 'Coordinates BL', field: 'coordinates.val_1' },\r\n //{ headerName: 'Coordinates BM', field: 'coordinates.val_2' },\r\n //{ headerName: 'Coordinates BN', field: 'coordinates.val_3' },\r\n ];\r\n\r\n this.modelChange(null);\r\n }\r\n\r\n ngOnInit(): void {\r\n\r\n //this.document.documentElement.lang = 'de';\r\n this.route.queryParamMap.subscribe(params => {\r\n const langId = (params).params.langId;\r\n\r\n if (!!langId) {\r\n this.setLanguage(langId);\r\n }\r\n\r\n });\r\n this.isLoggedInSubscription = this.authService.isLoggedIn.subscribe(loggedInState => this.isLoggedIn = loggedInState);\r\n this.roleSubscription = this.userService.currentRole.subscribe(role => {\r\n this.inputMainFieldsForm.patchValue({ \"role\": role });\r\n this.inputModel.role = role;\r\n });\r\n }\r\n\r\n inputContactModelChange() {\r\n this.canSaveConfig = !this.inputModel.moreInformationNeeded || !!this.inputModel.emailAddress;\r\n }\r\n\r\n private calcRelevantFields = ['frictionAngleCharacteristic', 'unitWeightCharacteristic', 'phValueOfFillingSoil', 'designLife', 'frictionAngle',\r\n 'unitWeight', 'trafficLoad', 'materialPartialSafetyFactor', 'productString', 'uniformVerticalSurcharge', 'effectiveHeight', 'slopeAngle', 'verticalLayerDistance',\r\n 'grainSizeDistribution', 'priceId', 'systemModelNature', 'seedingMethod', 'systemModelGabion', 'systemModelBlock', 'constructionMethodGabion', 'subsystemGabion', 'height',\r\n 'selectedSystem', 'slopeAngle', 'shouldAllGeoGridsHaveSameLength', 'petPva'];\r\n\r\n\r\n private isValidationErrorCalculationRelevant(): boolean {\r\n const controls = this.form.controls.map(x => (x).controls).reduce((prev, current) => {\r\n if (Object.keys(current).length > 0) {\r\n\r\n Object.keys(current).forEach(x => prev.push({ name: x, ctrl: current[x] as FormControl}));\r\n }\r\n\r\n return prev;\r\n }, []);\r\n\r\n const validationErrorsForCalcRelevantFields = controls.filter(x => {\r\n const ctrl = x.ctrl as FormControl;\r\n return !(ctrl.errors === null || !this.calcRelevantFields.find(y => y === x.name));\r\n });\r\n\r\n return validationErrorsForCalcRelevantFields.length > 0;\r\n }\r\n\r\n private showSubsystemSelectionDialog(): boolean {\r\n const oldconfig = this.oldConfig;\r\n const newConfig = this.inputModel;\r\n\r\n if (!newConfig || !oldconfig) {\r\n return false;\r\n }\r\n\r\n \r\n if (oldconfig.selectedSystem === newConfig.selectedSystem) {\r\n return false;\r\n }\r\n\r\n return newConfig.selectedSystem === Product.Block ||\r\n newConfig.selectedSystem === Product.Gabion ||\r\n newConfig.selectedSystem === Product.Nature;\r\n }\r\n\r\n private hasAtLeastOneCalcRelevantFieldsChanged(): boolean {\r\n const oldCfg = this.oldConfig;\r\n const newCfg = this.inputModel;\r\n\r\n if (!oldCfg || !newCfg) {\r\n return true;\r\n }\r\n\r\n const res = this.calcRelevantFields.filter(x => {\r\n if (!Object.keys(oldCfg).find(y => x === y)) {\r\n return false;\r\n }\r\n\r\n return oldCfg[x] !== newCfg[x];\r\n });\r\n\r\n return res.length > 0;\r\n }\r\n\r\n oldConfig: InputModel;\r\n\r\n private checkAndSetSystemOrSubSystemChange(system: string, subSystem: string): void {\r\n \r\n\r\n if (this.selectedSystemAndSubSystem === null) {\r\n this.selectedSystemAndSubSystem = {\r\n system: system,\r\n subSystem: subSystem\r\n };\r\n } else {\r\n if (this.selectedSystemAndSubSystem.system !== system || this.selectedSystemAndSubSystem.system !== subSystem) {\r\n this.selectedSystemAndSubSystem = {\r\n system: system,\r\n subSystem: subSystem\r\n };\r\n }\r\n }\r\n\r\n console.log(this.selectedSystemAndSubSystem);\r\n }\r\n\r\n private gridApi;\r\n\r\n onGridReady($event) {\r\n this.gridApi = $event.api;\r\n this.gridApi?.setColumnDefs(this.columnDefs);\r\n }\r\n\r\n selectedProductInTable:string;\r\n\r\n productSelected($event) {\r\n this.selectedProductInTable = $event;\r\n //console.log(this.selectedProductInTable);\r\n }\r\n\r\n modelChange($event) {\r\n \r\n if (this.oldConfig) {\r\n const hasRoleChanged = this.inputModel.role !== this.oldConfig.role;\r\n console.log('Role changed. New role:' + this.inputModel.role);\r\n if (hasRoleChanged) {\r\n this.userService.changeRole(this.inputModel.role);\r\n }\r\n\r\n // const haslUnitSystemChanged = this.inputModel.unitSystem !== this.oldConfig.unitSystem;\r\n\r\n // if (haslUnitSystemChanged) {\r\n // const lang = this.inputModel.unitSystem === 1 ? 'en' : 'enimp';\r\n // this.inputModel.language = lang;\r\n // this.translate.use(lang);\r\n // this.reset();\r\n // }\r\n\r\n\r\n if (this.inputModel.role === UserRoles.partner) {\r\n const elementToRemove = this.columnDefs.find(x => x.field === 'productLine.price');\r\n if (elementToRemove) {\r\n const index = this.columnDefs.indexOf(elementToRemove);\r\n this.columnDefs.splice(index, 1);\r\n\r\n this.gridApi?.setColumnDefs(this.columnDefs);\r\n }\r\n } else {\r\n const isExisting = !!this.columnDefs.find(x => x.field === 'productLine.price');\r\n\r\n if (!isExisting) {\r\n this.columnDefs.push({ headerName: 'Price [€/m²]', field: 'productLine.price' });\r\n this.gridApi?.setColumnDefs(this.columnDefs);\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n const atLeastOneCalculationRelevantError = this.isValidationErrorCalculationRelevant();\r\n const atLeastOneRelevantFieldChanged = this.hasAtLeastOneCalcRelevantFieldsChanged();\r\n\r\n this.configurationService.setNewInputModel(this.inputModel);\r\n\r\n if (atLeastOneRelevantFieldChanged) {\r\n this.configurationService.recalculate(!atLeastOneCalculationRelevantError);\r\n }\r\n\r\n const showSubsystemSelection = this.showSubsystemSelectionDialog();\r\n\r\n if (showSubsystemSelection) {\r\n this.showSubsystemSelection(this.templateSubsystem);\r\n }\r\n\r\n this.oldConfig = JSON.parse(JSON.stringify(this.inputModel)) as InputModel;\r\n\r\n this.subSystemName = this.getSubsystemName();\r\n\r\n let subSystem = null;\r\n\r\n switch (this.inputModel.selectedSystem) {\r\n case Product.Nature:\r\n subSystem = this.inputModel.systemModelNature.toString();\r\n break;\r\n case Product.Gabion:\r\n subSystem = this.inputModel.systemModelGabion.toString();\r\n break;\r\n case Product.Block:\r\n subSystem = this.inputModel.systemModelBlock.toString();\r\n break;\r\n }\r\n\r\n this.checkAndSetSystemOrSubSystemChange(this.inputModel.selectedSystem.toString(), subSystem);\r\n }\r\n\r\n isCreatingButtonProcessing = false;\r\n\r\n @ViewChild('templatesubsystem', { read: TemplateRef}) templateSubsystem:TemplateRef;\r\n\r\n showSubsystemSelection(template): void {\r\n \r\n this.selectedSubSystemId = null;\r\n this.subSystemModalRef = this.modalService.show(template, { class: 'modal-lg' });\r\n }\r\n\r\n createNewCalculation(template): void {\r\n\r\n const isUpdate = !!this.inputModel.id && !!this.currentCalculationCode.value;\r\n\r\n this.isCreatingButtonProcessing = true;\r\n\r\n this.dataPrivacyAccepted = false;\r\n\r\n const showModal = () => {\r\n this.isCreatingButtonProcessing = false;\r\n \r\n this.modalRef = this.modalService.show(template);\r\n\r\n }\r\n\r\n const config = InputModelMapper.getConfig(this.inputModel, this.inputModel.id, null, this.currentCalculationCode.value);\r\n config.sendEmail = false;\r\n\r\n if (isUpdate) {\r\n this.configurationService.updateConfiguration(config,\r\n () => {\r\n showModal();\r\n });\r\n } else {\r\n this.configurationService.createNewConfiguration(config, (code) => {\r\n showModal();\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n sendEmail(): void {\r\n if (!\r\n /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/\r\n .test(this.contact.value.emailAddress)) {\r\n alert(\"Bitte eine gültige Emailadresse eintragen.\");\r\n return;\r\n }\r\n\r\n debugger;\r\n\r\n const config =\r\n InputModelMapper.getConfig(this.inputModel, this.inputModel.id, null, this.currentCalculationCode.value);\r\n config.sendEmail = true;\r\n config.languageCode = this.translate.currentLang;\r\n\r\n this.isCreatingButtonProcessing = true;\r\n\r\n this.configurationService.updateConfiguration(config, () => {\r\n this.isCreatingButtonProcessing = false;\r\n this.modalRef.hide();\r\n });\r\n \r\n }\r\n\r\n updateNewCalculation():void {\r\n //const config =\r\n // InputModelMapper.getConfig(this.inputModel, this.inputModel.id, null, this.currentCalculationCode.value);\r\n //this.configurationService.updateConfiguration(config);\r\n }\r\n\r\n isUpdateButtonVisible: boolean ;\r\n isCreateButtonVisible: boolean = true;\r\n\r\n selectedSystemAndSubSystem = null;\r\n\r\n createnewSubCalculation(): void {\r\n const group = this.selectConfigForm.get('selectedGroup').value as IConfigurationGroup;\r\n const masterId = group.subCalculations.find(x => x.isDefault).id;\r\n\r\n\r\n this.configurationService.createNewSubConfiguration(masterId, \"New subcalculation\");\r\n }\r\n\r\n dataPrivacyChanged() {\r\n this.dataPrivacyAccepted = !this.dataPrivacyAccepted;\r\n }\r\n\r\n onNavChange(changeEvent: NgbNavChangeEvent) {\r\n console.log(changeEvent);\r\n if (changeEvent.nextId === 10) {\r\n changeEvent.preventDefault();\r\n this.openLoginModal();\r\n }\r\n if (changeEvent.nextId === 11) {\r\n changeEvent.preventDefault();\r\n this.signOut();\r\n\r\n }\r\n }\r\n\r\n openLoginModal(): void {\r\n this.signInComponent.show();\r\n }\r\n\r\n signOut(): void {\r\n this.authService.signOut();\r\n this.ngbNav.select(1); // Select first tab item.\r\n }\r\n}\r\n","
\r\n \r\n\r\n
\r\n\r\n\r\n
\r\n

{{'input.subSystemLabel' | translate}}

\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n

{{'input.saveDialogHeadline' | translate}}

\r\n \r\n
\r\n
\r\n

\r\n {{'input.saveDialogCodeLabel' | translate}}
\r\n {{currentCalculationCode.value}}\r\n

\r\n\r\n\r\n

{{'input.saveDialogPriceIndicationText' | translate}}

\r\n\r\n \r\n\r\n \r\n\r\n
\r\n \r\n \r\n
\r\n\r\n\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n\r\n
\r\n\r\n","export enum UserRoles {\r\n customer = 1,\r\n admin = 2,\r\n hueskerInternal = 3,\r\n partner = 4\r\n}\r\n","import { Injectable } from '@angular/core';\nimport { Observable, BehaviorSubject } from 'rxjs';\nimport { UserRoles } from './user-roles.config';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class UserService {\n currentRole: BehaviorSubject;\n readonly defaultRole: number = UserRoles.customer;\n\n changeRole(newRole: number): void {\n this.currentRole.next(newRole);\n }\n\n constructor() {\n this.currentRole = new BehaviorSubject(this.defaultRole);\n }\n}\n","// This file can be replaced during build by using the `fileReplacements` array.\n// `ng build --prod` replaces `environment.ts` with `environment.prod.ts`.\n// The list of file replacements can be found in `angular.json`.\n\nexport const environment = {\n production: false\n};\n\n/*\n * For easier debugging in development mode, you can import the following file\n * to ignore zone related error stack frames such as `zone.run`, `zoneDelegate.invokeTask`.\n *\n * This import should be commented out in production mode because it will have a negative impact\n * on performance if an error is thrown.\n */\n// import 'zone.js/dist/zone-error'; // Included with Angular CLI.\n","import { enableProdMode } from '@angular/core';\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\n\nimport { AppModule } from './app/app.module';\nimport { environment } from './environments/environment';\n\nif (environment.production) {\n enableProdMode();\n}\n\nplatformBrowserDynamic().bootstrapModule(AppModule)\n .catch(err => console.error(err));\n"]}