{"version":3,"sources":["./$_lazy_route_resource lazy namespace object","./src/app/admin-factors.service.ts","./src/app/admin-factors/admin-factors.component.ts","./src/app/admin-factors/admin-factors.component.html","./src/app/app-routing.module.ts","./src/app/app.component.ts","./src/app/app.component.html","./src/app/app.module.ts","./src/app/authService/auth.service.ts","./src/app/calculationModel/adminFactors.ts","./src/app/calculationModel/calculationEnums.ts","./src/app/calculationModel/calculator.ts","./src/app/calculationModel/country-data-store.ts","./src/app/calculationModel/earthPressure.ts","./src/app/calculationModel/fortracBlockCalculator.ts","./src/app/calculationModel/fortracGabionCalculator.ts","./src/app/calculationModel/fortracNaturePriceCalculator.ts","./src/app/calculationModel/fortracPanelCalculator.ts","./src/app/calculationModel/inputModelMapper.ts","./src/app/calculationModel/kreqTables.ts","./src/app/calculationModel/numpyJs.js","./src/app/calculationModel/priceCalculator.ts","./src/app/calculationModel/prices.ts","./src/app/calculationModel/productsTables.ts","./src/app/calculationModel/reductionFactorTables.ts","./src/app/calculationModel/subSystemMapper.ts","./src/app/calculationModel/unitSystem.ts","./src/app/configuration.service.ts","./src/app/fading-image/fading-image.component.ts","./src/app/fading-image/fading-image.component.html","./src/app/login/login.component.ts","./src/app/overview-chart/overview-chart.component.ts","./src/app/overview-chart/overview-chart.component.html","./src/app/panel-wrapper/panel-wrapper.component.ts","./src/app/prices.service.ts","./src/app/prices/prices.component.ts","./src/app/prices/prices.component.html","./src/app/product-result/product-result.component.ts","./src/app/product-result/product-result.component.html","./src/app/result-view/result-view.component.ts","./src/app/result-view/result-view.component.html","./src/app/sign-in/sign-in.component.ts","./src/app/sign-in/sign-in.component.html","./src/app/sign-in/sign-in.model.ts","./src/app/sub-system-selection/sub-system-selection.component.ts","./src/app/sub-system-selection/sub-system-selection.component.html","./src/app/system-to-image-path.pipe.ts","./src/app/tooltip-wrapper/tooltip-wrapper.component.ts","./src/app/tooltip-wrapper/tooltip-wrapper.component.html","./src/app/translate.extension.ts","./src/app/user-input/user-input.component.ts","./src/app/user-input/user-input.component.html","./src/app/user-roles.config.ts","./src/app/user.service.ts","./src/environments/environment.ts","./src/main.ts"],"names":[],"mappings":"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ACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,2BAA2B,IAAI,GAAG,IAAI;AACtC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB,WAAW;AAC5B;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,6CAA6C;AAC7C;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0BAA0B,eAAe;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA,0BAA0B,eAAe;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB;AAClD;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA,CAAC;;AAED;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,0EAA0E;AAC1E,6CAA6C;;AAE7C,8CAA8C;AAC9C,6CAA6C;;AAE7C,8CAA8C;AAC9C,6CAA6C;;AAE7C,2EAA2E;AAC3E,0EAA0E;;AAE1E;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA;AACA;;AAEA,qDAAqD;AACrD;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,wCAAwC;AACxC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,iBAAiB;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA,iBAAiB,sBAAsB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iCAAiC;;AAEjC;AACA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,iBAAiB,oBAAoB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA,SAAS,qBAAqB,EAAE,YAAY,0BAA0B;AACtE;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,8BAA8B,EAAE;AAChC,+BAA+B,EAAE;;AAEjC;AACA;AACA;AACA;AACA;AACA,iCAAiC,EAAE;AACnC,gCAAgC,EAAE;;AAElC;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;AACH;;AAEA,0CAA0C;AAC1C;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0CAA0C;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;;AAEA;;AAEA,0CAA0C;AAC1C;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA,GAAG;;AAEH;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;;AAEA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA;AACA;;AAEA;;;AAGA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,oBAAoB,EAAE;AACpD;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA,KAAK;AACL,GAAG;AACH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+CAA+C,OAAO;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA,iBAAiB,WAAW;AAC5B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,GAAG;;AAEH;AACA;;;AAGA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;;AAEA;AACA;;AAEA,+BAA+B;AAC/B;;AAEA,6BAA6B;AAC7B;;AAEA,iCAAiC;AACjC;;AAEA,gCAAgC;AAChC;;AAEA,iCAAiC;AACjC;;;AAGA;AACA;;AAEA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,aAAa;AAChC;AACA;AACA;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,uBAAuB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2BAA2B;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,WAAW;AAChC;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA;AACA,yBAAyB,UAAU;AACnC;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA,mBAAmB,gBAAgB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,uBAAuB;AAC9C;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,WAAW;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oBAAoB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kBAAkB;AACvC;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA,qBAAqB,qBAAqB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,UAAU;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA,uBAAuB,UAAU;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,aAAa;AACrC,0BAA0B,aAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,aAAa;AACrC,0BAA0B,aAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,kBAAkB;AACrC;AACA;AACA;AACA,mBAAmB,mBAAmB;AACtC;AACA;AACA,kCAAkC,QAAQ;AAC1C;AACA,yBAAyB,kBAAkB;AAC3C;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA,yBAAyB,kBAAkB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,yBAAyB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,aAAa;AACnC,wBAAwB,aAAa;AACrC;AACA,0BAA0B,aAAa;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC,uBAAuB,YAAY;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sBAAsB;AAC3C;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,kBAAkB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,iBAAiB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA,qBAAqB,oBAAoB;AACzC;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,YAAY,EAAE;AACd;;AAEA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,qBAAqB,gBAAgB;AACrC;AACA,uBAAuB,gBAAgB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;AACA;AACA;AACA,mBAAmB,cAAc;AACjC;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,GAAG;AACH;AACA;AACA,GAAG;AACH;AACA;AACA;;AAEA,mBAAmB,eAAe;AAClC;AACA;;AAEA,mBAAmB,sBAAsB;AACzC;AACA,qBAAqB,eAAe;AACpC;;AAEA;AACA;AACA;AACA;AACA,+BAA+B,QAAQ;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,sBAAsB;AACzC;AACA;AACA,qBAAqB,sBAAsB;AAC3C;AACA,2DAA2D,cAAc,EAAE;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;AAED;AACA;;AAEA;;AAEA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,YAAY;AACjC;AACA,uBAAuB,aAAa;AACpC;AACA;AACA;AACA;AACA;AACA,qBAAqB,QAAQ;AAC7B;AACA;AACA;AACA,qBAAqB,iBAAiB;AACtC;AACA,mBAAmB,QAAQ;AAC3B;AACA;AACA;AACA,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA,iBAAiB,YAAY;AAC7B,mBAAmB,YAAY;AAC/B;AACA;AACA;AACA;AACA;AACA,qBAAqB,cAAc;AACnC;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA,qBAAqB,wBAAwB;AAC7C;AACA;AACA;AACA,KAAK;;AAEL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;;AAEL;AACA,yBAAyB,OAAO;AAChC;AACA;AACA;AACA,KAAK;;AAEL;AACA,qBAAqB,OAAO;AAC5B;AACA,6BAA6B,OAAO;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;;AAEL;;AAEA;AA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","file":"main-es2015.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"],"sourceRoot":"webpack:///"}