{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./wwwroot/calc/calc_sda/calc.js","webpack:///./wwwroot/calc/common/stateduty/calc.js","webpack:///./wwwroot/calc/common/calculator/utils.js","webpack:///./wwwroot/calc/common/basic_fields.js","webpack:///./wwwroot/calc/common/calculator/calc_complex.js","webpack:///./wwwroot/calc/common/calculator/calc_interface.js","webpack:///./wwwroot/calc/common/calculator/output_fields.js","webpack:///./wwwroot/calc/common/calculator/index.js"],"names":["installedModules","__webpack_require__","moduleId","exports","module","i","l","modules","call","m","c","d","name","getter","o","Object","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","prototype","hasOwnProperty","p","s","SdaCalculator","_StatedutyCalculator","_classCallCheck","_callSuper","arguments","_inherits","this","calcName","_get","_getPrototypeOf","addInputField","type","options","keyup","maxVal","loadDescription","openCalcByHash","autoSubmit","sender","autoValidation","tabs","$","checkHash","hasClass","removeClass","addClass","result","manual","render","bottomNote","tabHeaderOpt2","text","parse","dutyValInput","opt2Input","hideMain","altNaming1","altNaming2","sum","comment","formula1","formula2","duty","concat","tools","getLocaleSumInRubbles","getLocaleSum","dutyVal","Math","min","formula3","additionalFormula","calculateDuty_Imusch_1","calculateDuty","mainBlockDutyVal","mainBlockComment","mainFormula1","mainFormula2","mainFormula3","totalDutyVal","rightTabActived","dutyValOpt2","dutyValOpt2Comment","secondFormula1","secondFormula2","secondFormula3","optionFirst","data","optionSecond","StatedutyCalculator","_Calculator","_this","self","closeSubMenu","activeSubMenu","setupStatistic","printMessage","message","args","claim_type","getHash","exportMessage","isStartedEventIgnore","submitOnChange","focus","selectAllText","val","drawLines","window","on","click","document","e","target","fadeIn","goalParams","prefix","sendStatisticMessage","closePopupExemption","fadeDuration","fadeOut","mousedown","$popupExemption","$popupExemptionBody","$closeButton","find","is","has","length","offsetX","clientWidth","each","$checkboxItem","prop","opt1Input","opt3Input","showAllHeader","skipValueChangesCheck","permanentNote","convertElemToTextWithLinksForExport","tabHeaderOpt1","toArray","map","join","opt2Comment","opt1Comment","subItem","isOpenedByHash","dataItem","hash","subMenuItem","openSubMenu","attr","closest","isHashExist","Date","valueOf","$calcDivMenu","position","left","css","width","scrollLeft","Calculator","ShowErrorWay","SHOW_ALL","SHOW_FIRST","Field","_createClass","selectorOrElem","elem","defaultGetValue","init","valid","deleted","isDynamic","_ignore","v","getValue","f","change","getClearValue","defaultValue","set","undefined","params_","errClassElem","errors","forEach","err","selector","hide","params","keepValue","setValue","keepErrors","clearErrors","phase","loud","silent","handler","showErrorWay","check","show","documentMode","tagName","_BaseObjectField","_Field","deepcopy","clearValue","NumberField","_Field2","blur","isFloat","props","disableProps","indexOf","console","error","keyName","$field","inputFilter","focusin","classList","remove","CountField","_NumberField","parseLocaleInt","setupNumberInput","YearField","_NumberField2","allowSpaces","maxLength","PeriodField","_NumberField3","FloatField","_NumberField4","parseLocaleFloat","precision","MoneyField","_FloatField","SelectField","_Field3","itemText","reset","RadioField","_Field4","checkedElem","id","parent","CheckboxField","_Field5","control","checked","TextField","_Field6","removeExtraSpace","raw","escapeTags","fields","_Field7","LinkField","selectedLink","event","preventDefault","CalculatorComplex","_CalculatorInterface","htmlNode","calc_","$node","scopeEvalFunc","underscore","script","Function","parseNameType","parts","exec","Error","paramString","match","item","splitPos","warn","varName","substr","test","parseInt","parseFloat","toLowerCase","slice","split","trim","JSON","checkClass","el","class_","getAttribute","autoKey","index","clickOptions","_clickOptions$options","submit","toggleClasses","classesObj","toggle","className","add","inputs","_parseNameType","outputs","_parseNameType2","renderCode","x","keys","obj","path","_this2","gentle","Array","isArray","writePath","part","id_","clearPart","replace","some","__id","push","body","fetchRootElem","findExternalOnly","$table","table","$dataExpandableDiv","elements","createClone","$template","$lastRow","last","$clone","querySelector","cloneNode","_id","genUniqueId","blockPiece","filter","removed","keepOne","beforeRemoval","field","afterRemoval","isFilled","artifacts","getFieldsFlat","getElements","tree","removeFirstEvent","dontSubmitOnRemove","submitForm","_submitOnChange","fetchFields","_ref","_ref2","_slicedToArray","fieldParams","_objectSpread","disabledSubmitting","removeSelector","first","anchor","prepareTemplate","block","_params$prepareTempla","insertAdjacentElement","removePathId","appendButtonSelector","$this","$expandableDiv","keepTable","bp","delete","ignoredEmptyFields","ignoreForEmpty","setCount","_ref3","count","_ref3$removeStrategy","removeStrategy","currentCount","_dynamicFields","nameOrNames","checker","fieldGroups","getFields","resList","inputFields","ignore","__tmpIgnore","isPathInside","checkField","df","a","newOptions","_this3","newValues","irregularValueNames","reduce","acc","log","clearPath","_exportObject","ignoreList","accum","filled","defaultFilled","enableResetButton","hasValueChanges","fieldsToParse","ignoreCouseEmpty","showReset","resetValuesOnIgnore","unsilence","senderField","apply","_toConsumableArray","res","errorIsVisible","getExportValue","afterFirstPhaseCheck","newValuesString","stringify","lastValuesString","group","processGroup","afterParse","forceRender","isActive","notes","beforeSubmit","parsing","resetButtons","_statistic","startedSent","isReady","calculateForValidOnly","toggleCustomClasses","calcValid","calculate","beforeRender","_exportObjectFinal","generateExportObject","showResults","hideResults","renderError","afterSubmit","CalculatorInterface","debug","_fieldTypes","outputFields","forceOutputs","_inputFieldsTree","view","newFieldTypes","string_or_object","hideOnDefault","random","srcPath","BaseOutputField","calculator","container","setup","paramName","renderFunc","compose","renderMethod","compose_","exportObject","RenderRequiredOutputField","_BaseOutputField","HtmlOutputField","_BaseOutputField2","_HtmlOutputField","LocaleNumOutputField","_BaseOutputField3","minPrecision","maxPrecision","getLocaleNumber","LocaleSumOutputField","_BaseOutputField4","MoneyRubleOutputField","_HtmlOutputField2","MoneyTextOutputField","_BaseOutputField5","verboseNumber","MoneyRoundedRubleField","_HtmlOutputField3","getRoundedNumberInRubbles","MoneyRoundedRubleOutputField","_HtmlOutputField4","PeriodOutputField","_BaseOutputField6","from_","dateFrom","toLocaleFormat","to_","dateTo","duration","inDays","verboseCountingValue","DateOutputField","_BaseOutputField7","DayOutputField","_BaseOutputField8","PercentOutputField","_HtmlOutputField5","NoteOutputField","_RenderRequiredOutput","ExportVisibleOutputField","_BaseOutputField9","htmlObject","ToggleOutputField","_RenderRequiredOutput2","slideUpTime","slideUp","slideDownTime","slideDown","ConditionalBlockOutputField","_RenderRequiredOutput3","alternativeBlockSelector","alternativeBlock","ShareOutputField","_HtmlOutputField6","MoneyLocalRoundedOutField","_HtmlOutputField7","getRoundedNumber","createOutputField","_CalculatorComplex","basicFields","showVersionBanner","ShowVersionBanner","setupVersionBanner","setupHandlers","autoAddFields","initialize","_console","_$","_$2","_$3","_$4","print","formData","FormData","append","ajax","url","ExportWordHost","processData","contentType","cache","xhr","XMLHttpRequest","onloadstart","ev","responseType","success","response","textStatus","jQxhr","decodeURI","getResponseHeader","blob","Blob","navigator","msSaveOrOpenBlob","link","createElement","download","href","URL","createObjectURL","location","history","pushState","title","pathname","RegExp","substring","addOutputField","feedbackBottom","Promise","resolve","reject","load","code","DataVersionSalt","initSmartLink","setWarningMessage","IsAuthEnabled","mailSubject","html","prepend","ym","ymId","ymReachGoal","resetInputFields","dynamic","addDynamicField","ftype","_detectFieldType","_makeFieldObject","disableAutoCheck","onChange","preInit","ft","detect","fieldType","onReset","forced","orderedFields","priorities","sort","b","renderExport","customClass"],"mappings":"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","file":"calc/calc_sda/calc.js","sourcesContent":[" \t// The module cache\n \tvar installedModules = {};\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/dist/\";\n\n\n \t// Load entry module and return exports\n \treturn __webpack_require__(__webpack_require__.s = 1165);\n","import { StatedutyCalculator } from \"../common/stateduty/calc\";\r\n\r\nclass SdaCalculator extends StatedutyCalculator {\r\n code() { return \"sda\"; }\r\n type() { return \"CalcStateDutyArbcourt\"; }\r\n initialize() {\r\n this.calcName = \"Gosp_Arb\";\r\n super.initialize();\r\n\r\n this.addInputField(\"#calcOpt2Block .field-div input\", \"opt2Input\", {\r\n type: \"money\", \r\n options: {keyup: true, maxVal: 999999999999.99 },\r\n });\r\n\r\n\r\n this.loadDescription();\r\n this.openCalcByHash();\r\n this.autoSubmit(null, true);\r\n }\r\n\r\n afterParse(sender, autoValidation) {\r\n const tabs = $(\"#flipping-tabs\");\r\n if (this.checkHash(\"Imusch_2\")) {\r\n if (tabs.hasClass(\"main-duty-block-tabs\")) {\r\n tabs.removeClass(\"main-duty-block-tabs\");\r\n tabs.addClass(\"opt-duty-block-tabs\");\r\n }\r\n } else if (tabs.hasClass(\"opt-duty-block-tabs\")) {\r\n tabs.removeClass(\"opt-duty-block-tabs\");\r\n tabs.addClass(\"main-duty-block-tabs\");\r\n }\r\n }\r\n\r\n generateExportObject() {\r\n let result = super.generateExportObject();\r\n result.manual = {};\r\n result.render.bottomNote = true;\r\n if (this.checkHash(\"Imusch_1\"))\r\n result.render.tabHeaderOpt2 = $('#calcOpt2Block .duty-block-tabs .active-tab').text();\r\n if (result.parse.dutyValInput == null)\r\n result.parse.dutyValInput = 0;\r\n if (result.parse.opt2Input == null)\r\n result.parse.opt2Input = 0;\r\n result.manual.hideMain = this.hideMain;\r\n result.manual.altNaming1 = this.altNaming1;\r\n result.manual.altNaming2 = this.altNaming2;\r\n return result;\r\n }\r\n\r\n calculateDuty(sum) {\r\n let comment = '';\r\n let formula1 = '';\r\n let formula2 = '';\r\n let formula3 = '';\r\n let duty = 0;\r\n if (sum <= 100000) {\r\n if (sum < 50000) {\r\n duty = 2000;\r\n formula1 = `${tools.getLocaleSumInRubbles(duty)}, т.к. ${tools.getLocaleSum(sum)} × 4% = ${tools.getLocaleSumInRubbles(sum * 0.04)} < ${tools.getLocaleSumInRubbles(duty)}`;\r\n } else {\r\n duty = sum * 0.04;\r\n formula1 = `${tools.getLocaleSum(sum)} × 4% = ${tools.getLocaleSumInRubbles(duty)}`;\r\n }\r\n comment += 'до 100 000 рублей госпошлина составляет 4% цены, но не менее 2 000 рублей';\r\n } else if (sum <= 200000) {\r\n duty = (sum - 100000) * 0.03 + 4000;\r\n formula1 = `${tools.getLocaleSum(4000)} + 3% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(100000)}) = ${tools.getLocaleSum(4000)} + ${tools.getLocaleSum((sum - 100000) * 0.03)}) = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 100 001 рубля до 200 000 рублей госпошлина составляет 4 000 рублей плюс 3% суммы, превышающей 100 000 рублей';\r\n } else if (sum <= 1000000) {\r\n duty = (sum - 200000) * 0.02 + 7000;\r\n formula1 = `${tools.getLocaleSum(7000)} + 2% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(200000)}) = ${tools.getLocaleSum(7000)} + ${tools.getLocaleSum((sum - 200000) * 0.02)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 200 001 рубля до 1 000 000 рублей госпошлина составляет 7 000 рублей плюс 2% суммы, превышающей 200 000 рублей';\r\n } else if (sum <= 2000000) {\r\n duty = (sum - 1000000) * 0.01 + 23000;\r\n formula1 = `${tools.getLocaleSum(23000)} + 1% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(1000000)}) = ${tools.getLocaleSum(23000)} + ${tools.getLocaleSum((sum - 1000000) * 0.01)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 1 000 001 рубля до 2 000 000 рублей госпошлина составляет 23 000 рублей плюс 1% суммы, превышающей 1 000 000 рублей';\r\n } else {\r\n const dutyVal = (sum - 2000000) * 0.005 + 33000;\r\n duty = Math.min(200000, dutyVal);\r\n formula1 = `${tools.getLocaleSum(33000)} + 0,5% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(2000000)}) = ${tools.getLocaleSum(33000)} + ${tools.getLocaleSum((sum - 2000000) * 0.005)} = ${tools.getLocaleSumInRubbles(dutyVal)}`;\r\n if (dutyVal > 200000) {\r\n formula2 = `так как ${tools.getLocaleSumInRubbles(dutyVal)} > ${tools.getLocaleSumInRubbles(200000)}, то госпошлина при подаче иска составляет ${tools.getLocaleSumInRubbles(200000)}`;\r\n }\r\n comment += 'свыше 2 000 000 рублей госпошлина составляет 33 000 рублей плюс 0.5% суммы, превышающей 2 000 000 рублей, но не более 200 000 рублей';\r\n }\r\n\r\n return {duty, comment, formula1, formula2, formula3};\r\n }\r\n\r\n calculateDuty_Imusch_1(sum) {\r\n let comment = '';\r\n let formula1 = '';\r\n let formula2 = '';\r\n let formula3 = '';\r\n let duty = 0;\r\n if (sum <= 100_000) {\r\n duty = 10_000;\r\n formula1 = `${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'до 100 000 рублей госпошлина составляет 10 000 рублей';\r\n } else if (sum <= 1_000_000) {\r\n duty = (sum - 100_000) * 0.05 + 10_000;\r\n formula1 = `${tools.getLocaleSum(10_000)} + 5% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(100_000)}) = ${tools.getLocaleSum(10_000)} + ${tools.getLocaleSum((sum - 100_000) * 0.05)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 100 001 рубля до 1 000 000 рублей госпошлина составляет 10 000 рублей плюс 5% суммы, превышающей 100 000 рублей';\r\n } else if (sum <= 10_000_000) {\r\n duty = (sum - 1_000_000) * 0.03 + 55_000;\r\n formula1 = `${tools.getLocaleSum(55_000)} + 3% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(1_000_000)}) = ${tools.getLocaleSum(55_000)} + ${tools.getLocaleSum((sum - 1_000_000) * 0.03)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 1 000 001 рубля до 10 000 000 рублей госпошлина составляет 55 000 рублей плюс 3% суммы, превышающей 1 000 000 рублей';\r\n } else if (sum <= 50_000_000) {\r\n duty = (sum - 10_000_000) * 0.01 + 325_000;\r\n formula1 = `${tools.getLocaleSum(325_000)} + 1% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(10_000_000)}) = ${tools.getLocaleSum(325_000)} + ${tools.getLocaleSum((sum - 10_000_000) * 0.01)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 10 000 001 рубля до 50 000 000 рублей госпошлина составляет 325 000 рублей плюс 1% суммы, превышающей 10 000 000 рублей';\r\n } else {\r\n const dutyVal = (sum - 50_000_000) * 0.005 + 725_000;\r\n duty = Math.min(10_000_000, dutyVal);\r\n formula1 = `${tools.getLocaleSum(725_000)} + 0,5% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(50_000_000)}) = ${tools.getLocaleSum(725_000)} + ${tools.getLocaleSum((sum - 50_000_000) * 0.005)} = ${tools.getLocaleSumInRubbles(dutyVal)}`;\r\n if (dutyVal > 10_000_000) {\r\n formula2 = `так как ${tools.getLocaleSumInRubbles(dutyVal)} > ${tools.getLocaleSumInRubbles(10_000_000)}, то госпошлина при подаче иска составляет ${tools.getLocaleSumInRubbles(10_000_000)}`;\r\n }\r\n comment += 'свыше 50 000 000 рублей госпошлина составляет 725 000 рублей плюс 0.5% суммы, превышающей 50 000 000 рублей, но не более 10 000 000 рублей';\r\n }\r\n\r\n if (this.checkHash('Neimusch_10')) {\r\n const additionalFormula = `${tools.getLocaleSum(duty)} × 30% = ${tools.getLocaleSumInRubbles(duty * 0.3)}`;\r\n duty *= 0.3;\r\n if (formula2) {\r\n formula3 = additionalFormula;\r\n } else {\r\n formula2 = additionalFormula;\r\n }\r\n } else if (this.checkHash('Sud_prikaz')) {\r\n let additionalFormula = `${tools.getLocaleSum(duty)} × 50% = ${tools.getLocaleSumInRubbles(duty/2)}`;\r\n duty /= 2;\r\n if (formula2) {\r\n formula3 = additionalFormula;\r\n } else {\r\n formula2 = additionalFormula;\r\n if(duty < 8_000) {\r\n formula3 = `так как ${tools.getLocaleSumInRubbles(duty)} < ${tools.getLocaleSumInRubbles(8_000)}, то госпошлина при подаче иска составляет ${tools.getLocaleSumInRubbles(8_000)}`; \r\n duty = 8_000;\r\n }\r\n }\r\n }\r\n\r\n return {duty, comment, formula1, formula2, formula3};\r\n }\r\n\r\n calculate() {\r\n let result = this.checkHash(\"Imusch_1|Imusch_2|Neimusch_10|Neimusch_12|Sud_prikaz\") ? this.calculateDuty_Imusch_1(this.dutyValInput) : this.calculateDuty(this.dutyValInput);\r\n this.mainBlockDutyVal = result.duty;\r\n this.mainBlockComment = result.comment;\r\n this.mainFormula1 = result.formula1;\r\n this.mainFormula2 = result.formula2;\r\n this.mainFormula3 = result.formula3;\r\n\r\n this.totalDutyVal = 0;\r\n if (this.checkHash(\"Imusch_1\")) {\r\n this.totalDutyVal = this.mainBlockDutyVal;\r\n } else if (this.checkHash(\"Neimusch_1|Neimusch_2\")) {\r\n this.totalDutyVal = this.rightTabActived ? 15_000 : 50_000;\r\n }\r\n \r\n result = this.checkHash(\"Neimusch_1|Neimusch_2\") ? this.calculateDuty_Imusch_1(this.opt2Input) : this.calculateDuty(this.opt2Input);\r\n this.dutyValOpt2 = result.duty;\r\n this.dutyValOpt2Comment = result.comment;\r\n this.secondFormula1 = result.formula1;\r\n this.secondFormula2 = result.formula2;\r\n this.secondFormula3 = result.formula3;\r\n\r\n \r\n\r\n if (this.optionFirst) {\r\n this.totalDutyVal += +$(\".duty-val-opt1\").data('value');\r\n }\r\n if (this.optionSecond) {\r\n this.totalDutyVal += this.checkHash('Neimusch_1|Neimusch_2') ? this.dutyValOpt2 : +$(\".duty-val-opt2\").data('value');\r\n }\r\n\r\n this.hideMain = !!this.checkHash(\"Bankrot\");\r\n if (this.hideMain) {\r\n this.mainFormula1 = '';\r\n this.secondFormula1 = '';\r\n }\r\n\r\n this.altNaming1 = \"\";\r\n this.altNaming2 = \"\";\r\n if (this.checkHash(\"Neimusch_10\")) {\r\n this.altNaming1 = \"подтвержденная решением сумма\";\r\n this.altNaming2 = \"при подтвержденной решением сумме\";\r\n }\r\n if (this.checkHash(\"Neimusch_12\")) {\r\n this.altNaming1 = \"оспариваемая сумма\";\r\n this.altNaming2 = \"при оспариваемой сумме\";\r\n }\r\n \r\n return true;\r\n }\r\n}\r\n\r\n\r\n$(function () {\r\n var calc = new SdaCalculator();\r\n});\r\n","import {Calculator} from '../calculator';\r\n\r\nclass StatedutyCalculator extends Calculator {\r\n initialize() {\r\n let self = this;\r\n\r\n this.setupStatistic({\r\n calcName: this.calcName,\r\n printMessage: () => ({\r\n message: \"Print\", \r\n args: {\r\n claim_type: this.getHash() + '_' + this.calcName\r\n }\r\n }),\r\n exportMessage: () => ({\r\n message: \"Export\", \r\n args: {\r\n claim_type: this.getHash() + '_' + this.calcName\r\n }\r\n }),\r\n isStartedEventIgnore: true\r\n });\r\n\r\n this.submitOnChange();\r\n this.addInputField(\".main-duty-block-body .sum-field input\", \"dutyValInput\", {\r\n type: \"money\",\r\n options: {keyup: true, maxVal: 999999999999.99 },\r\n });\r\n this.addInputField(\".checkboxrow-opt-1\", \"optionFirst\");\r\n this.addInputField(\"#calcOpt2CheckboxRow\", \"optionSecond\");\r\n $(\"input\").focus(tools.selectAllText).val(0);\r\n\r\n this.activeSubMenu = \"\";\r\n\r\n this.drawLines();\r\n $(window).on('resize scroll', this.drawLines);\r\n\r\n function closeSubMenu() {\r\n self.activeSubMenu = \"\";\r\n self.autoSubmit(null, true);\r\n }\r\n\r\n $(\".submenu-item\").click(closeSubMenu);\r\n $(\"#popupSubmenu .close-button\").click(closeSubMenu);\r\n $(document).click(e => { //todo\r\n if ($(e.target).hasClass(\"body-wrapper\")) {\r\n closeSubMenu();\r\n }\r\n });\r\n\r\n const fadeDuration = 100;\r\n $(\".exemption-link\").click(() => {\r\n $('#popupExemption').fadeIn(fadeDuration);\r\n let goalParams = {\r\n message: \"Priveleges\",\r\n prefix: \"\",\r\n args: {\r\n claim_type : self.getHash() + '_' + this.calcName\r\n }\r\n };\r\n self.sendStatisticMessage(goalParams);\r\n\r\n $('body').addClass('body-wrapper-fixed');\r\n });\r\n\r\n const closePopupExemption = (fadeDuration) => {\r\n $('#popupExemption').fadeOut(fadeDuration);\r\n $('body').removeClass('body-wrapper-fixed');\r\n }\r\n\r\n $(document).mousedown(e => {\r\n const $popupExemption = $('#popupExemption');\r\n const $popupExemptionBody = $('#popupExemption > div');\r\n const $closeButton = $('#popupExemption').find(\".close-button\");\r\n \r\n if ($popupExemption.is(\":visible\")) {\r\n if ($(e.target).is($closeButton)) {\r\n closePopupExemption(fadeDuration);\r\n }\r\n if (!$popupExemptionBody.is(e.target) && $popupExemptionBody.has(e.target).length === 0) {\r\n if (!$popupExemption.is(e.target) || e.offsetX < $popupExemption[0].clientWidth) {\r\n closePopupExemption(fadeDuration);\r\n }\r\n }\r\n }\r\n });\r\n\r\n $(window).on(\"hashchange\", (e) => {\r\n $(\"input\").val(0);\r\n $('#calcOpt1Checkbox, #calcOpt2Checkbox, #calcOpt3Checkbox').each(function () {\r\n var $checkboxItem = $(this);\r\n if ($checkboxItem.is(':checked')) {\r\n $checkboxItem.prop(\"checked\", false);\r\n }\r\n });\r\n \r\n this.opt1Input = 0;\r\n this.opt3Input = 0;\r\n this.showAllHeader = false;\r\n this.openCalcByHash();\r\n this.autoSubmit(null, true);\r\n });\r\n\r\n /*\r\n TODO : move autoSubmit() to another part of code\r\n These lines provides proper export under different conditions in 'ifHash'\r\n */\r\n $(\"#wordResult\").mousedown(() => this.autoSubmit());\r\n }\r\n\r\n // TODO: find some better fix for the export - this one is a dirty kludge\r\n autoSubmit(sender, skipValueChangesCheck) {\r\n super.autoSubmit(sender, skipValueChangesCheck);\r\n super.autoSubmit(sender, skipValueChangesCheck);\r\n }\r\n\r\n generateExportObject() {\r\n let result = super.generateExportObject();\r\n result.render.permanentNote = $(\".permanent-note:visible\").length ? tools.convertElemToTextWithLinksForExport($(\".permanent-note\")) : \"\";\r\n result.render.tabHeaderOpt1 = $('#calcOpt1Block .duty-block-tabs .active-tab').text();\r\n result.render.mainBlockComment = $(\"#calcComment div:visible p:visible\").toArray()\r\n .map((comment) => tools.convertElemToTextWithLinksForExport(comment))\r\n .join(\"||\");\r\n result.render.opt2Comment = $(\"#dutyValOpt2Comment p:visible\").toArray()\r\n .map((comment) => tools.convertElemToTextWithLinksForExport(comment))\r\n .join(\"||\");\r\n result.render.opt1Comment = $(\"#dutyValOpt1Comment p:visible\").toArray()\r\n .map((comment) => tools.convertElemToTextWithLinksForExport(comment))\r\n .join(\"||\");\r\n \r\n return result;\r\n }\r\n\r\n openSubMenu(subItem, isOpenedByHash) {\r\n $('.calc-div-item').removeClass('active-item');\r\n\r\n const dataItem = $(`.calc-div-item[data-item = ${subItem}]`);\r\n dataItem.addClass('active-item');\r\n if (dataItem.hasClass('menu-item') || isOpenedByHash) {\r\n this.activeSubMenu = \"\";\r\n } else { \r\n this.activeSubMenu = subItem;\r\n }\r\n }\r\n\r\n openCalcByHash() {\r\n const hash = this.getHash();\r\n if (!hash) {\r\n this.activeSubMenu = \"\";\r\n } else {\r\n const subMenuItem = $(`.submenu-item[data-claim=\"${hash}\"]`); \r\n if (subMenuItem.hasClass('menu-item')) {\r\n this.openSubMenu(subMenuItem.attr('data-item'));\r\n } else {\r\n this.openSubMenu(subMenuItem.closest(\".submenu-group\").attr('id'), true);\r\n }\r\n }\r\n \r\n if(this.isHashExist()) {\r\n const goalParams = {\r\n message: this.getHash(), \r\n prefix: \"\"\r\n };\r\n this.sendStatisticMessage(goalParams);\r\n }\r\n\r\n this.autoSubmit();\r\n }\r\n\r\n showResults() {\r\n if (this.isHashExist()) {\r\n super.showResults();\r\n } else { //todo\r\n $('.calc-div-results').removeClass('show-results'); \r\n $(\".submenu-item\").removeClass(\"active-item\");\r\n }\r\n }\r\n\r\n isHashExist() {\r\n const subMenuItem = $(`.submenu-item[data-claim=\"${this.getHash()}\"]`); \r\n return subMenuItem.length > 0;\r\n }\r\n\r\n //show additional information only after 01.01.2022\r\n isSiriusTextShowed() {\r\n return (new Date(2022, 0, 1).valueOf() - new Date().valueOf()) <= 0;\r\n }\r\n\r\n drawLines() {\r\n const $calcDivMenu = $(\".calc-div-menu\");\r\n if ($calcDivMenu.position().left > 0) {\r\n $('#popupSubmenu').css('left', $calcDivMenu.position().left + $calcDivMenu.width() - $(window).scrollLeft() + 'px');\r\n }\r\n }\r\n}\r\n\r\nexport {StatedutyCalculator};","var ShowErrorWay = {\r\n SHOW_ALL: 1,\r\n SHOW_FIRST: 2\r\n}\r\n\r\nexport { ShowErrorWay };","import { ShowErrorWay } from \"./calculator/utils.js\";\r\n\r\n\r\n/*\r\n * To define new field type create class which extends Field class\r\n */\r\nclass Field {\r\n constructor(selectorOrElem, options) {\r\n this.elem = $(selectorOrElem);\r\n this.options = options;\r\n this.defaultGetValue = options && 'defaultGetValue' in options ? options.defaultGetValue : null;\r\n this.init();\r\n this.valid = true;\r\n this.deleted = false;\r\n this.isDynamic = false;\r\n this._ignore = false;\r\n }\r\n\r\n // this method is required for matching type with class\r\n static keyName() { return ''; }\r\n\r\n getValue() { return undefined; }\r\n setValue(v) { }\r\n\r\n // this method is required for automatic calculation of defaultValue\r\n getClearValue() { return this.getValue(); }\r\n\r\n // this method is required for automatic export build\r\n getExportValue() { return this.getValue(); }\r\n\r\n // additional field setup\r\n init() { }\r\n\r\n // for silent check (send sender as argument of function f)\r\n onChange(f) {\r\n let self = this;\r\n this.elem.change(function (e) { f(self.elem[0]); });\r\n if (this.options && this.options.keyup) {\r\n this.elem.keyup(function (e) { f(self.elem[0]); });\r\n }\r\n return this.elem;\r\n }\r\n\r\n // allows showing reset button for ignored fields\r\n showReset() { return false; }\r\n\r\n // for auto detecting type\r\n static detect(elem) { return false; }\r\n\r\n errorIsVisible() { return this.elem.hasClass('err') || this.elem.find('.err').length > 0; }\r\n isFilled() { return this.getClearValue() !== this.defaultValue; }\r\n\r\n\r\n delete() {\r\n this.deleted = true;\r\n }\r\n\r\n get ignore() { return this._ignore; }\r\n set ignore(val) { this._ignore = val; }\r\n\r\n clearErrors() {\r\n const errClassElem = (this.params_.errClassElem === undefined ? this.elem : $(this.params_.errClassElem));\r\n errClassElem.removeClass('err');\r\n if (this.params_.errors !== undefined) {\r\n this.params_.errors.forEach(function (err) {\r\n if (err.errClassElem !== undefined)\r\n $(err.errClassElem).removeClass('err');\r\n $(err.selector).hide();\r\n });\r\n }\r\n }\r\n\r\n reset(params) {\r\n params = params || {};\r\n if (!params.keepValue) {\r\n this.setValue(this.defaultValue);\r\n }\r\n if (!params.keepErrors) {\r\n this.clearErrors();\r\n }\r\n }\r\n\r\n check(autoValidation, sender, phase, loud ) {\r\n if (phase < 2) {\r\n const silent = autoValidation && sender != this.elem[0] && !loud;\r\n const self = this.elem[0];\r\n let valid = true;\r\n if (this.params_.errors !== undefined) {\r\n const handler = (this.params_.showErrorWay == ShowErrorWay.SHOW_ALL ? 'forEach' : 'some');\r\n const v = this.getValue();\r\n const errClassElem = (this.params_.errClassElem === undefined ? this.elem : $(this.params_.errClassElem));\r\n if (!silent) this.clearErrors();\r\n this.params_.errors[handler](function (err) {\r\n if (!err.check(v, autoValidation)) {\r\n if (!silent) {\r\n $(err.selector).show();\r\n // fix for shadow DOM in ie\r\n if (window.document.documentMode && self.tagName == \"SUMMARY-INPUT\")\r\n $(err.selector).css('display', 'block');\r\n if (err.errClassElem !== undefined)\r\n $(err.errClassElem).addClass('err');\r\n else\r\n errClassElem.addClass('err');\r\n }\r\n valid = false;\r\n return true;\r\n }\r\n });\r\n }\r\n return valid;\r\n }\r\n return true;\r\n };\r\n}\r\n\r\n\r\nclass _BaseObjectField extends Field {\r\n getClearValue() { return tools.deepcopy(this.elem[0].value); }\r\n getValue() { return this.elem.val(); }\r\n setValue(v) { this.elem.val(v); }\r\n getExportValue() { return this.elem.val(); }\r\n isFilled() {\r\n const clearValue = this.getClearValue();\r\n for (const key in clearValue) {\r\n if (clearValue[key] !== this.defaultValue[key])\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n\r\n\r\nclass NumberField extends Field {\r\n static keyName() { return ''; }\r\n getClearValue() { return this.elem.val() === \"\" ? \"\" : this.getValue(); }\r\n setValue(v) { this.elem.val(v); }\r\n onChange(f) {\r\n let self = this;\r\n if (window.document.documentMode) {\r\n this.elem.blur(function (e) { f(self.elem[0]); });\r\n } else {\r\n this.elem.change(function (e) { f(self.elem[0]); });\r\n }\r\n if (this.options && this.options.keyup) {\r\n this.elem.keyup(function (e) { f(self.elem[0]); });\r\n }\r\n return this.elem;\r\n }\r\n setupNumberInput(isFloat, props, disableProps) {\r\n let self = this;\r\n disableProps = disableProps || [];\r\n if (this.options) {\r\n [\"maxVal\", \"minVal\", \"precision\"].forEach(function (name) {\r\n if (self.options[name] !== undefined) {\r\n if (disableProps.indexOf(name) >= 0) {\r\n console.error(`Prop ${name} is not allowed in field of type \"${self.keyName()}\"`);\r\n }\r\n else {\r\n props[name] = self.options[name];\r\n }\r\n }\r\n });\r\n }\r\n const $field = this.elem.closest('div.field-div');\r\n $field.find(\"input.base-input\").inputFilter(isFloat, props);\r\n this.elem.focusin(function () {\r\n this.classList.remove('err');\r\n $field.find(\".error-text\").hide();\r\n });\r\n }\r\n}\r\n\r\n\r\nclass CountField extends NumberField {\r\n static keyName() { return 'count'; }\r\n getValue() { return this.elem.val() ? tools.parseLocaleInt(this.elem.val()) : this.defaultGetValue; }\r\n init() { this.setupNumberInput(false, {}, ['precision']); }\r\n}\r\n\r\n\r\nclass YearField extends NumberField {\r\n static keyName() { return 'year'; }\r\n getValue() { return this.elem.val() ? tools.parseLocaleInt(this.elem.val()) : this.defaultGetValue; }\r\n init() { this.setupNumberInput(false, { allowSpaces: false, maxLength: 4 }, ['precision']); }\r\n}\r\n\r\n\r\nclass PeriodField extends NumberField {\r\n static keyName() { return 'period'; }\r\n getValue() { return this.elem.val() ? tools.parseLocaleInt(this.elem.val()) : this.defaultGetValue; }\r\n init() { this.setupNumberInput(false, { allowSpaces: false }, ['precision']); }\r\n}\r\n\r\n\r\nclass FloatField extends NumberField {\r\n static keyName() { return 'float'; }\r\n getValue() { return this.elem.val() ? tools.parseLocaleFloat(this.elem.val()) : this.defaultGetValue; }\r\n init() { this.setupNumberInput(true, {precision: 3}); }\r\n}\r\n\r\n\r\nclass MoneyField extends FloatField {\r\n static keyName() { return 'money'; }\r\n init() { this.setupNumberInput(true, {}, ['precision']); }\r\n}\r\n\r\n\r\nclass SelectField extends Field {\r\n static keyName() { return 'select'; }\r\n getValue() {\r\n return { value: this.elem[0].value, text: this.elem[0].itemText };\r\n }\r\n setValue(v) { this.elem.val(v); }\r\n init() {\r\n let self = this;\r\n this.elem.focusin(function () {\r\n var $field = $(this).closest('div.field-div');\r\n self.elem.removeClass('err');\r\n $field.find(\".error-text\").hide();\r\n });\r\n }\r\n onChange(f) {\r\n let self = this;\r\n return this.elem.change(function (e) { f(self.elem[0]); });\r\n }\r\n getClearValue() { return this.getValue().value; }\r\n getExportValue() { return this.getValue().text; }\r\n reset(params) {\r\n params = params || {};\r\n if (!params.keepValue) {\r\n this.elem[0].reset(this.defaultValue);\r\n }\r\n if (!params.keepErrors) {\r\n this.clearErrors();\r\n }\r\n }\r\n static detect(elem) {\r\n return elem[0].tagName === 'DROPDOWN-SELECT';\r\n }\r\n}\r\n\r\n\r\nclass RadioField extends Field {\r\n static keyName() { return 'radio'; }\r\n getValue() {\r\n var checkedElem = this.elem.find('input:checked');\r\n if (checkedElem.length > 0) {\r\n return { value: checkedElem[0].id, text: checkedElem.parent().find(\"label\").text() };\r\n }\r\n return undefined;\r\n }\r\n setValue(v) { this.elem.find('input#' + v).prop(\"checked\", true); }\r\n onChange(f) {\r\n let self = this;\r\n return this.elem.find('input').change(function (e) { f(self.elem[0]); });\r\n }\r\n getClearValue() { return this.getValue().value; }\r\n getExportValue() { return this.getValue().text; }\r\n static detect(elem) {\r\n return elem.find('.radio-elem').length > 0;\r\n }\r\n}\r\n\r\n\r\nclass CheckboxField extends Field {\r\n static keyName() { return 'checkbox'; }\r\n getValue() { return this.control.checked; }\r\n setValue(v) {this.control.checked = v; }\r\n init() {\r\n this.control = this.elem.find('input[type=\"checkbox\"]')[0];\r\n }\r\n onChange(f) {\r\n let self = this;\r\n return this.elem.find('input[type=\"checkbox\"]').change(function (e) {f(self.elem[0]); });\r\n }\r\n static detect(elem) {\r\n return elem.find('input[type=\"checkbox\"]').length == 1;\r\n }\r\n}\r\n\r\nclass TextField extends Field {\r\n static keyName() { return 'text'; }\r\n getClearValue() { return this.elem.val();}\r\n getValue() {\r\n const val = tools.removeExtraSpace(this.elem.val());\r\n return (this.options && this.options.raw ? val : tools.escapeTags(val));\r\n }\r\n setValue(v) { this.elem.val(v); }\r\n isFilled() { return false; }\r\n}\r\n\r\nclass LinkField extends Field {\r\n static keyName() { return 'link'; }\r\n getValue() {\r\n const selectedLink = this.elem.find('a.selected-link');\r\n if (selectedLink.length > 0) {\r\n return selectedLink.data(\"type\");\r\n }\r\n return undefined;\r\n }\r\n setValue(v) { this.elem.find(`a[data-type=\"${v}\"]`).addClass(\"selected-link\"); }\r\n init() {\r\n const self = this;\r\n this.elem.find('a').click(function (event) {\r\n event.preventDefault();\r\n self.elem.find('a').removeClass('selected-link');\r\n $(this).addClass('selected-link');\r\n return false;\r\n });\r\n }\r\n onChange(f) {\r\n let self = this;\r\n return this.elem.find('a').click(function (e) { f(self.elem[0]); });\r\n }\r\n getClearValue() { return this.getValue(); }\r\n getExportValue() { return this.getValue(); }\r\n reset(params) {\r\n this.elem.find('a').removeClass('selected-link');\r\n this.setValue(this.defaultGetValue);\r\n }\r\n static detect(elem) {\r\n return elem.find('a.selected-link').length > 0;\r\n }\r\n}\r\n\r\nconst fields = [MoneyField, FloatField, SelectField, RadioField, CountField, YearField, PeriodField, CheckboxField, TextField, LinkField];\r\n\r\nexport { fields, Field, _BaseObjectField, RadioField, TextField, FloatField };\r\n","import { CalculatorInterface } from \"./calc_interface.js\"\r\n\r\n\r\nexport class CalculatorComplex extends CalculatorInterface {\r\n /**\r\n * Scans document or node (if htmlNode is set)\r\n * @param {any} htmlNode - set if you need to scan fields inside specific node (useful for dynamic content)\r\n * @returns {Object} {inputs, outputs}\r\n */\r\n fetchFields(htmlNode) {\r\n const calc_ = this;\r\n if (htmlNode == undefined)\r\n htmlNode = document;\r\n const $node = $(htmlNode);\r\n\r\n function scopeEvalFunc(underscore, script) {\r\n return new Function(`\"use strict\"; const cc = this; const _ = cc[\"${underscore}\"]; return ${script};`).bind(calc_);\r\n }\r\n\r\n function parseNameType(text) {\r\n const parts = /^(\\[(.*?)\\])?([^\\[\\]\\:]+)(\\:(.+))?$/g.exec(text);\r\n if (parts === null) {\r\n throw new Error(`Incorrect format for cc:input value (\"${attr}\"). Must be \"name\" or \"[type]name\"`);\r\n }\r\n const paramString = parts[5];\r\n const options = (parts[2] !== undefined ? { type: parts[2] } : {});\r\n\r\n if (paramString !== undefined) {\r\n paramString.match(/(?:[^,\\s\\[]+(?:\\[.*?\\])?)(?=\\s*,|\\s*$)/g).forEach(item => {\r\n const splitPos = item.indexOf('=');\r\n if (splitPos < 0) {\r\n console.warn(`Incorrect option value '${item}'. Must be something like 'option=value'. Ignoring...`);\r\n return false;\r\n }\r\n const varName = item.substr(0, splitPos);\r\n let value = item.substr(splitPos + 1);\r\n\r\n if (/^\\d+$/.test(value)) {\r\n value = parseInt(value);\r\n }\r\n else if (/^\\d+(\\.\\d+)?$/.test(value)) {\r\n value = parseFloat(value);\r\n }\r\n else if (/^false|true$/i.test(value)) {\r\n value = (value.toLowerCase() === 'true');\r\n }\r\n else if (/^\\[.*\\]$/.test(value)) {\r\n value = value.slice(1, -1).split(',').map(e => e.trim());\r\n }\r\n else {\r\n try {\r\n value = JSON.parse(value);\r\n } catch (e) {}\r\n }\r\n\r\n options[varName] = value;\r\n });\r\n }\r\n return { name: parts[3], options };\r\n }\r\n\r\n function checkClass(el) {\r\n const class_ = $(el).closest('[cc\\\\:class]');\r\n if (class_.length > 0 && class_[0].getAttribute('cc:class') !== calc_.autoKey()) {\r\n return false;\r\n }\r\n const inTemplate = $(el).closest('.template-list-row').length > 0;\r\n return !inTemplate;\r\n }\r\n\r\n $node.find('[cc\\\\:click]').map((index, el) => {\r\n if(checkClass(el)){\r\n const self = this;\r\n const clickOptions = parseNameType(el.getAttribute('cc:click'));\r\n $(el).on('click', function () {\r\n const result = scopeEvalFunc('_', clickOptions.name)();\r\n if (clickOptions?.options?.submit !== false){\r\n self.autoSubmit(null, true); \r\n }\r\n return result;\r\n });\r\n }\r\n });\r\n\r\n this.toggleClasses = $node.find('[cc\\\\:classname]').toArray().map(el => {\r\n const attr = el.getAttribute(\"cc:classname\");\r\n const classesObj = JSON.parse(attr);\r\n \r\n return {\r\n toggle: () => {\r\n for(let className in classesObj) {\r\n const condition = classesObj[className];\r\n if (scopeEvalFunc('_', condition)()) {\r\n el.classList.add(className);\r\n } else {\r\n el.classList.remove(className);\r\n }\r\n }\r\n }\r\n }\r\n });\r\n\r\n return {\r\n inputs: $node.find('[cc\\\\:input]').toArray().map(el => {\r\n if (checkClass(el)) {\r\n const attr = el.getAttribute('cc:input');\r\n const { name, options } = parseNameType(attr);\r\n return [el, name, options];\r\n } else {\r\n return null;\r\n }\r\n }),\r\n outputs: $node.find('[cc\\\\:output]').toArray().map(el => {\r\n if (checkClass(el)) {\r\n const attr = el.getAttribute('cc:output');\r\n let { name, options } = parseNameType(attr);\r\n const renderCode = el.getAttribute('cc:render');\r\n\r\n if (renderCode !== null) {\r\n options.render = function (x) { return scopeEvalFunc(name, renderCode)(); }\r\n }\r\n\r\n if (Object.keys(options).length === 0)\r\n options = undefined;\r\n\r\n return [el, name, options];\r\n } else {\r\n return null;\r\n }\r\n }).concat($node.find('[cc\\\\:if]').toArray().map(el => {\r\n if (checkClass(el)) {\r\n \r\n let attr = el.getAttribute('cc:if');\r\n if (attr[0] == '@') {\r\n attr = $(attr.substr(1))[0].getAttribute('cc:if');\r\n }\r\n return [el, \"\", { type: \"toggle\", render: function () { return scopeEvalFunc('_', attr)(); } }];\r\n } else {\r\n return null;\r\n }\r\n })).concat($node.find('[cc\\\\:ifhash]').toArray().map(el => {\r\n if(checkClass(el)){\r\n let attr = el.getAttribute('cc:ifHash');\r\n let self = this;\r\n\r\n return [el, \"\", { type: \"toggle\", render: function () { \r\n return self.checkHash(attr);\r\n } }];\r\n }\r\n return null;\r\n })).concat($node.find('[cc\\\\:forceif]').toArray().map(el => {\r\n if (checkClass(el)) {\r\n let attr = el.getAttribute('cc:forceIf');\r\n if (attr[0] == '@') {\r\n attr = $(attr.substr(1))[0].getAttribute('cc:forceif');\r\n }\r\n return [el, \"\", {type: \"toggle\", render: function () {return scopeEvalFunc('_', attr)();}}, true];\r\n } else {\r\n return null;\r\n }\r\n })),\r\n }\r\n }\r\n \r\n\r\n writePath(obj, path, value, gentle=false) {\r\n if (Array.isArray(obj)) {\r\n obj.forEach(o => this.writePath(o, path, value, gentle));\r\n return;\r\n }\r\n\r\n let parts = path.split('.');\r\n let target = obj;\r\n parts.forEach(function (part, index) {\r\n if (target !== null) {\r\n if (part.indexOf('[]') >= 0) {\r\n let id_ = /[:]\\d+/.exec(part);\r\n id_ = (id_ == null ? -1 : id_[0]);\r\n let clearPart = part.replace(/([:]\\d+)\\[\\]/g, '');\r\n if (target[clearPart] === undefined)\r\n target[clearPart] = [];\r\n if (!target[clearPart].some(o => {\r\n if (o.__id == id_) {\r\n target = o;\r\n return true;\r\n }\r\n })) {\r\n if (gentle) { target = null; return true; }\r\n target[clearPart].push((id_ < 0 ? {} : { __id: id_ }));\r\n target = target[clearPart][target[clearPart].length - 1];\r\n }\r\n } else {\r\n if (index == parts.length - 1) {\r\n target[part] = value;\r\n } else {\r\n if (target[part] === undefined) {\r\n if (gentle) { target = null; return true; }\r\n target[part] = {};\r\n }\r\n target = target[part];\r\n }\r\n }\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * \r\n * @param {string} name (where value saves: this.[].key\r\n * @param {*} params next keys:\r\n * required:\r\n * table - where to place our elements\r\n * appendButtonSelector - selector for button which will add new item of this dynamic field\r\n * removeSelector - selector (inside template) which deletes particular item\r\n * fields - object {: {selector, options($clone)}}\r\n * \r\n * optional: \r\n * removeFirstEvent() - make some additional acts during removing\r\n * keepOne - true when one element cannot be deleted(false by default)\r\n * keepTable - true when table should be shown, even when keepOne=false (false by default)\r\n * ignoreForEmpty - if true, block wil be ignored if all fields are empty\r\n * prepareTemplate($clone, blockPiece) should return {block: $clone, artifacts: obj(optional)\r\n * (this method can help you to prepare item before placing)\r\n * beforeRemoval($clone) - make some additional acts before removal\r\n * afterRemoval() - make some additional acts after removal\r\n * dontSubmitOnRemove - turning off submitForm in remove()\r\n */\r\n addDynamicField(name, params){\r\n let self = this;\r\n let parent = params.parent || $(document.body);\r\n let fetchRootElem = (selector) => typeof (selector) == \"string\" ? tools.findExternalOnly(parent, selector) : $(selector);\r\n let $table = fetchRootElem(params.table);\r\n let $dataExpandableDiv = $(`.expandablerow[data-expandablediv = '${$table.parent().attr(\"id\")}']`);\r\n let elements = [];\r\n\r\n \r\n function createClone(silent) {\r\n let $template = tools.findExternalOnly($table, \".template-list-row\");\r\n let $lastRow = tools.findExternalOnly($table, '.dynamic-list-row').last();\r\n let $clone = $($table[0].querySelector(\".template-list-row\").cloneNode(true));\r\n let _id = self.genUniqueId();\r\n\r\n let blockPiece = {\r\n index: (() => {\r\n const valid = elements.filter(e => !e.removed);\r\n return valid.length > 0 ? valid[valid.length - 1].index + 1 : 0;\r\n })(),\r\n fields: [],\r\n reset: function() {\r\n if (tools.findExternalOnly($table, '.dynamic-list-row').length > 1 || !params.keepOne) {\r\n if (params.beforeRemoval !== undefined) {\r\n params.beforeRemoval($clone);\r\n }\r\n $clone.remove();\r\n this.fields.map(field => field.delete());\r\n this.removed = true;\r\n if (params.afterRemoval !== undefined) {\r\n params.afterRemoval();\r\n }\r\n } else {\r\n this.index = 0;\r\n }\r\n },\r\n isFilled: function () {\r\n return this.fields.some(f => f.isFilled());\r\n },\r\n artifacts: [],\r\n getFieldsFlat: function () {\r\n let result = [];\r\n this.fields.forEach(f => {\r\n if (f.isDynamic) {\r\n f.getElements().forEach(e => {\r\n result = result.concat(e.getFieldsFlat());\r\n });\r\n } else {\r\n result.push(f);\r\n }\r\n });\r\n return result;\r\n },\r\n tree: {},\r\n removed: false,\r\n remove: function () {\r\n this.removed = true;\r\n let elementsCount = elements.filter(x => !x.removed).length\r\n if (elementsCount === 0) {\r\n if (!params.keepOne) {\r\n $clone.closest('div').hide();\r\n $clone.closest('.expandable-div').find('.expandablerow').addClass('expandablerow-collapsed');\r\n $clone.closest('.expandable-div').find(\".tab-expandablerow-add\").attr(\"tabindex\", \"0\");\r\n }else{\r\n this.removed = false;\r\n }\r\n if (params.removeFirstEvent !== undefined)\r\n params.removeFirstEvent();\r\n }\r\n this.reset();\r\n if (!params.dontSubmitOnRemove)\r\n self.submitForm(null, !self._submitOnChange);\r\n }\r\n }\r\n\r\n $clone.removeClass('template-list-row').addClass('dynamic-list-row');\r\n\r\n // auto fields\r\n self.fetchFields($clone).inputs.forEach(([el, item, options]) => {\r\n const fieldParams = { disabledSubmitting: true, parent: $clone, ...options };\r\n const field = self.addInputField(el, `${name}:${_id}[].${item}`, fieldParams);\r\n blockPiece.tree[item] = field;\r\n blockPiece.fields.push(field);\r\n });\r\n\r\n if (params.fields !== undefined) {\r\n for (let item in params.fields) {\r\n let value = params.fields[item];\r\n let fieldParams = {};\r\n if (typeof (value) === \"string\") {\r\n value = { selector: value };\r\n } else if (value.options !== undefined) {\r\n fieldParams = typeof (value.options) === \"function\" ? value.options($clone) : value.options;\r\n }\r\n fieldParams.disabledSubmitting = true;\r\n fieldParams.parent = $clone;\r\n\r\n const field = self.addInputField($clone.find(value.selector), `${name}:${_id}[].${item}`, fieldParams);\r\n blockPiece.tree[item] = field;\r\n blockPiece.fields.push(field);\r\n }\r\n }\r\n\r\n $clone.find(params.removeSelector).first().click((e) => {\r\n e.preventDefault();\r\n blockPiece.remove();\r\n $(e.target).blur();\r\n });\r\n\r\n let anchor = $lastRow.length === 1 ? $lastRow : $template;\r\n params.prepareTemplate = params.prepareTemplate || (c => { return { block: c }; });\r\n const { block, artifacts } = params.prepareTemplate($clone, blockPiece);\r\n anchor[0].insertAdjacentElement('afterEnd', block[0]);\r\n\r\n if (artifacts !== undefined) {\r\n for (let key in artifacts) {\r\n blockPiece.artifacts.push({\r\n path: `${name}:${_id}[].${key}`,\r\n value: artifacts[key],\r\n name: self.removePathId(`${name}:${_id}[].${key}`),\r\n });\r\n blockPiece.tree[key] = artifacts[key];\r\n }\r\n }\r\n\r\n elements.push(blockPiece);\r\n\r\n if (!silent) {\r\n self.submitForm(null, !self._submitOnChange);\r\n }\r\n\r\n blockPiece.fields.forEach(f => { f.params_.disabledSubmitting = false; });\r\n }\r\n\r\n if(params.keepOne)\r\n createClone(true);\r\n\r\n fetchRootElem(params.appendButtonSelector).click(() => createClone());\r\n\r\n // AG TODO: WILL NOT WORK WITH DYNAMIC-IN-DYNAMIC. NEED TO BE REFACTORED!\r\n $dataExpandableDiv.click(function () {\r\n var $this = $(this);\r\n if ($this.hasClass('expandablerow-collapsed')) {\r\n $this.removeClass('expandablerow-collapsed');\r\n\r\n var $expandableDiv = $('#' + $this.data('expandablediv'));\r\n $expandableDiv.show();\r\n\r\n $this.find(\".tab-expandablerow-add\").attr(\"tabindex\", \"-1\");\r\n\r\n if (tools.findExternalOnly($expandableDiv, '.dynamic-list-row').length === 0) {\r\n createClone();\r\n }\r\n }\r\n });\r\n\r\n let result = {\r\n isDynamic: true,\r\n reset: function () {\r\n elements.forEach((item) => item.reset());\r\n if (!params.keepOne) {\r\n if (!params.keepTable)\r\n $table.parent().hide();\r\n $dataExpandableDiv.addClass('expandablerow-collapsed');\r\n }\r\n if (params.removeFirstEvent !== undefined)\r\n params.removeFirstEvent();\r\n },\r\n params_: params,\r\n getElements: function () {\r\n return elements.filter(bp => !bp.removed);\r\n },\r\n delete: function () {\r\n elements.forEach((item) => item.fields.forEach(f => f.delete()));\r\n },\r\n isFilled: function () { return elements.some(e => e.isFilled()); },\r\n ignoredEmptyFields: function () {\r\n let result = [];\r\n if (params.ignoreForEmpty) {\r\n elements.forEach((e) => {\r\n if (!e.isFilled()) {\r\n result = result.concat(e.getFieldsFlat().map(f => f.varName));\r\n }\r\n });\r\n }\r\n return result;\r\n },\r\n setCount: function ({count, removeStrategy = \"simple\" }) {\r\n let currentCount = this.getElements().length;\r\n if (count !== currentCount) {\r\n if (count > currentCount) {\r\n while (this.getElements().length < count)\r\n createClone();\r\n } else {\r\n if (removeStrategy === \"simple\") {\r\n this.getElements().forEach((bp, i) => { if (i >= count) bp.remove(); });\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n this._dynamicFields.push(result);\r\n\r\n if (params.keepOne && !params.disabledSubmitting)\r\n self.submitForm(null, !self._submitOnChange);\r\n\r\n return result;\r\n }\r\n\r\n\r\n /**\r\n * Adds group of fields to calculator.\r\n * @param {any} nameOrNames to fetch all fields you need\r\n * @param {any} checker function f(fields, options) which returns object {valid: bool, artifacts: obj}\r\n * @param {any} options is additional parameters for group\r\n */\r\n addGroup(nameOrNames, checker, options) {\r\n let self = this;\r\n\r\n this.fieldGroups.push({\r\n getFields: function () {\r\n let resList = [];\r\n function checkField(f, name) {\r\n return !f.ignore && !f.__tmpIgnore && self.isPathInside(f.name, name);\r\n }\r\n if (typeof (nameOrNames) === 'string') {\r\n nameOrNames = [nameOrNames];\r\n }\r\n\r\n nameOrNames.forEach(function (name) {\r\n resList = resList.concat(self.inputFields.filter(f => checkField(f, name)));\r\n });\r\n\r\n resList.tree = {};\r\n resList.forEach((f) => { self.writePath(resList.tree, f.varName, f); });\r\n\r\n self._dynamicFields.forEach(df => {\r\n df.getElements().forEach(e => {\r\n e.artifacts.filter(a => nameOrNames.some(name => self.isPathInside(a.name, name))).forEach(a => {\r\n self.writePath(resList.tree, a.path, a.value);\r\n });\r\n });\r\n });\r\n\r\n return resList;\r\n },\r\n check: function (sender, autoValidation) {\r\n let fields = this.getFields();\r\n let newOptions = { sender: sender, autoValidation: autoValidation };\r\n for (let key in options) {\r\n newOptions[key] = options[key];\r\n }\r\n return checker(fields, newOptions);\r\n }\r\n });\r\n }\r\n\r\n\r\n /**\r\n * Parses all input fields and initialises connected variables\r\n * */\r\n parse(sender, autoValidation) {\r\n var self = this;\r\n const newValues = this.irregularValueNames.reduce((acc, v) => { acc[v] = self[v]; return acc; }, {});\r\n this.log(\"Irregular value obj:\", newValues);\r\n this.inputFields.forEach(function (field) {\r\n field.__tmpIgnore = false;\r\n self.clearPath(self, field.name);\r\n self.clearPath(self._exportObject.parse, field.name);\r\n });\r\n\r\n let ignoreList = this._dynamicFields.reduce((accum, v) => accum.concat(v.ignoredEmptyFields()), []);\r\n this.inputFields = this.inputFields.filter(function (f) { return !f.deleted; });\r\n\r\n var result = {\r\n valid: true,\r\n filled: this.defaultFilled,\r\n enableResetButton: false,\r\n hasValueChanges: false\r\n };\r\n\r\n let fieldsToParse = this.inputFields.filter(function (f) {\r\n let ignoreCouseEmpty = ignoreList.indexOf(f.varName) >= 0;\r\n if (f.showReset()) {\r\n result.enableResetButton = true;\r\n }\r\n if (f.ignore)\r\n f.reset({ keepValue: !self.resetValuesOnIgnore });\r\n else if (ignoreCouseEmpty) {\r\n f.__tmpIgnore = true;\r\n f.reset({ keepValue: true });\r\n }\r\n return !f.ignore && !ignoreCouseEmpty;\r\n });\r\n\r\n const unsilence = [];\r\n if (sender) {\r\n const senderField = fieldsToParse.find(f => sender == f.elem[0]);\r\n if (senderField && senderField.params_.unsilence)\r\n unsilence.push(...senderField.params_.unsilence);\r\n }\r\n \r\n // first phase\r\n fieldsToParse.forEach(function (field) {\r\n var res = field.check(autoValidation, sender, 1, unsilence.indexOf(field.name) >= 0);\r\n field.valid = res;\r\n\r\n if (field.isFilled()) {\r\n result.filled = true;\r\n }\r\n if (field.errorIsVisible()) {\r\n result.enableResetButton = true;\r\n }\r\n\r\n if (!res)\r\n result.valid = false;\r\n else if (field.name !== undefined) {\r\n self.writePath([self, newValues], field.varName, field.getValue());\r\n self.writePath(self._exportObject.parse, field.varName, field.getExportValue());\r\n }\r\n });\r\n\r\n // dynamicField artifacts\r\n this._dynamicFields.forEach(df => {\r\n df.getElements().forEach(e => {\r\n e.artifacts.forEach(a => {self.writePath([self, newValues], a.path, a.value, true);});\r\n });\r\n });\r\n\r\n this.afterFirstPhaseCheck();\r\n\r\n // second phase\r\n fieldsToParse.forEach(function (field) {\r\n var res = field.check(autoValidation, sender, 2);\r\n if (!res)\r\n result.valid = field.valid = false;\r\n });\r\n if (!autoValidation) {\r\n const newValuesString = JSON.stringify(newValues);\r\n result.hasValueChanges = this.lastValuesString !== newValuesString;\r\n this.lastValuesString = newValuesString;\r\n }\r\n\r\n this.fieldGroups.forEach(group => {\r\n let res = this.processGroup(group, sender, autoValidation);\r\n if (!res)\r\n result.valid = false;\r\n });\r\n\r\n this.log(\"PARSE: \", this);\r\n result.enableResetButton = result.enableResetButton || result.filled;\r\n this.afterParse(sender, autoValidation);\r\n this.forceRender();\r\n return result;\r\n }\r\n\r\n\r\n\r\n submitForm(sender, autoValidation, skipValueChangesCheck = false) {\r\n if(!this.isActive) return;\r\n this._exportObject = {\r\n parse: {},\r\n render: {notes: []}\r\n };\r\n \r\n if (this.beforeSubmit() === false) {\r\n return;\r\n }\r\n\r\n let parsing = this.parse(sender, autoValidation);\r\n this.resetButtons.forEach(function (elem) {\r\n (parsing.enableResetButton ? elem.show() : elem.hide());\r\n });\r\n\r\n if (parsing.filled && !this._statistic.startedSent) {\r\n this.sendStatisticMessage('Is_Started');\r\n this._statistic.startedSent = true;\r\n }\r\n\r\n if (!this.isReady()) {\r\n return; // AG TODO: Maybe wait for ready? Design how to do it.\r\n }\r\n\r\n this.log(\"BEFORE CALC: valid=\", parsing.valid);\r\n \r\n if (!this.calculateForValidOnly || parsing.valid) {\r\n this.toggleCustomClasses();\r\n let calcValid = this.calculate({ sender: sender, autoValidation: autoValidation });\r\n this.log('AFTER CALCULATE: ', this);\r\n if (!autoValidation && (skipValueChangesCheck || parsing.hasValueChanges)) {\r\n if (parsing.valid && calcValid) {\r\n this.beforeRender();\r\n this.render();\r\n this._exportObjectFinal = tools.deepcopy(this.generateExportObject());\r\n this.showResults();\r\n } else {\r\n this.hideResults();\r\n }\r\n }\r\n }\r\n\r\n if (!parsing.valid && !autoValidation) {\r\n this.renderError();\r\n }\r\n\r\n this.log(\"EXPORT OBJECT:\", this._exportObject);\r\n this.afterSubmit();\r\n }\r\n \r\n}\r\n","import { ShowErrorWay } from \"./utils.js\";\r\n\r\nexport class CalculatorInterface {\r\n constructor() {\r\n this.debug = false;\r\n this._fieldTypes = [];\r\n this.inputFields = [];\r\n this.outputFields = [];\r\n this.forceOutputs = [];\r\n this.fieldGroups = [];\r\n this.showErrorWay = ShowErrorWay.SHOW_ALL;\r\n this.resetButtons = [];\r\n this._exportObject = {};\r\n this._exportObjectFinal = {};\r\n this.calculateForValidOnly = true;\r\n this.resetValuesOnIgnore = false;\r\n this._submitOnChange = false;\r\n this.isActive = true;\r\n this._dynamicFields = [];\r\n this._inputFieldsTree = {fields: []};\r\n this.view = \"\";\r\n this.irregularValueNames = [];\r\n this.lastValuesString = \"\";\r\n }\r\n\r\n code() { return \"three_letter_code_of_calculator\"; } // reimplement it in inherited classes\r\n type() { return \"code_for_export\"; } // reimplement it in inherited classes\r\n\r\n autoKey() { return '0'; } // used for calculator with tabs (every tab - one mini calculator)\r\n initialize() { } // use this instead of redefining constructor\r\n calculate(params) { } // calculation method (all calculations of calculator should be here)\r\n beforeSubmit() { } // before parsing\r\n afterSubmit() { } // at the end of submit\r\n afterParse(sender, autoValidation) { }\r\n beforeRender() { }\r\n onReset() { }\r\n afterFirstPhaseCheck() { }\r\n isReady() { return true; }\r\n log(...args) {}\r\n setupHandlers() {}\r\n setHash(hash){}\r\n checkHash(hash) {}\r\n getHash() {}\r\n\r\n autoSubmit(sender, skipValueChangesCheck) {\r\n sender = sender || null;\r\n this.submitForm(sender, false, skipValueChangesCheck);\r\n }\r\n fetchFields(htmlNode) {}\r\n\r\n autoAddFields() {} // adds fields from special html attributes\r\n loadDescription(feedbackBottom = true) {} // just loads description from file\r\n patchFieldTypes(newFieldTypes) {} // updates field-type library\r\n\r\n showResults() {$('.calc-div-results').addClass('show-results');} // shows result\r\n hideResults() {} // hides result\r\n\r\n generateExportObject() { return this._exportObject; }\r\n get defaultFilled(){ return false; }\r\n setupStatistic(params) {} // setups statistic module\r\n sendStatisticMessage(string_or_object) {} // sends statistic message to YM\r\n submitOnClick(selectorOrElem) {} // turn on submitting on elem click\r\n submitOnChange() {} // make submit on change\r\n\r\n addResetButton(selector, hideOnDefault) {}\r\n\r\n genUniqueId() { return Math.random() * 1e7 | 0; }\r\n\r\n writePath(obj, path, value, gentle=false) {} // method for writing propery into this object using path (used to generate input values for calculation stage)\r\n removePathId(path) {} // remove path\r\n clearPath(obj, path) {} // clears path\r\n isPathInside(path, srcPath) {} // checks if path inside\r\n \r\n addInputField(selector, name, params) {}\r\n addDynamicField(name, params){}\r\n addGroup(nameOrNames, checker, options) {}\r\n \r\n processGroup(group, sender, autoValidation) { } // Parses group with internal checks (between elements inside group)\r\n\r\n parse(sender, autoValidation) { } // Parses all input fields and initialises connected variables\r\n resetInputFields(params) {}\r\n \r\n addOutputField(selector, name, params, forced = false) {}\r\n\r\n render() {}\r\n\r\n forceRender() {}\r\n\r\n toggleCustomClasses() {}\r\n\r\n renderError() {}\r\n\r\n /**\r\n * Submits form\r\n * - calls beforeSubmit (if it returns false, stops)\r\n * - parse\r\n * - toggling reset buttons\r\n * - Is_Started stat send\r\n * - calls isReady (if false, breaks, but almost always should be true)\r\n * - if parse result is valid:\r\n * - toggle custom classes\r\n * - call calculate\r\n * - if calculation is not valid, hides result part, otherwise \r\n * call beforeRender, then render, then generateExportObject, then shows results\r\n * - renders error for invalid parsing result\r\n * - calls afterSubmit\r\n */\r\n submitForm(sender, autoValidation, skipValueChangesCheck = false) {} \r\n autoValidate(sender) {} \r\n}","class BaseOutputField {\r\n constructor(calculator, selector, name, params) {\r\n this.calculator = calculator;\r\n this.container = $(selector);\r\n this.name = name;\r\n this.params = params;\r\n this.setup();\r\n }\r\n\r\n setup() {}\r\n\r\n get(paramName, defaultValue) {\r\n if (this.params !== undefined && this.params[paramName] !== undefined)\r\n return this.params[paramName];\r\n return defaultValue;\r\n }\r\n\r\n get renderMethod() {\r\n if (this.get('html') !== undefined) {\r\n return 'html';\r\n }\r\n return 'text';\r\n }\r\n\r\n get type() {\r\n return this.get('type', 'text');\r\n }\r\n\r\n get value() {\r\n return this.calculator[this.name];\r\n }\r\n\r\n compose() {\r\n const val = this.value;\r\n if (this.params === undefined && val !== undefined) {\r\n if (val.hasOwnProperty('text'))\r\n return val.text;\r\n return val;\r\n }\r\n }\r\n\r\n compose_() {\r\n const renderFunc = this.get('render');\r\n if (renderFunc === undefined) {\r\n return this.compose();\r\n }\r\n return renderFunc(this.value);\r\n }\r\n\r\n render() {\r\n this.container[this.renderMethod](this.compose_());\r\n }\r\n\r\n renderExport(exportObject) {\r\n exportObject[this.name + '_' + this.type] = this.compose_();\r\n }\r\n}\r\n\r\nclass RenderRequiredOutputField extends BaseOutputField {\r\n setup() {\r\n const renderFunc = this.get('render');\r\n if (renderFunc == undefined) {\r\n console.error(`You must write render method for [${this.type}] type of output field.`);\r\n }\r\n this.renderFunc = renderFunc;\r\n }\r\n\r\n compose() {\r\n return this.renderFunc(this.value);\r\n }\r\n}\r\n\r\nclass HtmlOutputField extends BaseOutputField {\r\n get renderMethod() { return 'html'; }\r\n}\r\n\r\nclass TextField extends HtmlOutputField {\r\n compose() { return this.value; }\r\n}\r\n\r\nclass LocaleNumOutputField extends BaseOutputField {\r\n compose() {\r\n const options = {\r\n minPrecision: this.get('minPrecision'),\r\n maxPrecision: this.get('maxPrecision')\r\n };\r\n return tools.getLocaleNumber(this.value, options);\r\n }\r\n}\r\n\r\nclass LocaleSumOutputField extends BaseOutputField {\r\n compose() { return tools.getLocaleSum(this.value); }\r\n}\r\n\r\nclass MoneyRubleOutputField extends HtmlOutputField {\r\n compose() { return tools.getLocaleSumInRubbles(this.value); }\r\n}\r\n\r\nclass MoneyTextOutputField extends BaseOutputField {\r\n compose() { return tools.verboseNumber(this.value); }\r\n}\r\n\r\nclass MoneyRoundedRubleField extends HtmlOutputField {\r\n compose() { return tools.getRoundedNumberInRubbles(this.value); }\r\n}\r\n\r\nclass MoneyRoundedRubleOutputField extends HtmlOutputField {\r\n compose() { return tools.getRoundedNumberInRubbles(this.value); }\r\n}\r\n\r\nclass PeriodOutputField extends BaseOutputField {\r\n compose() {\r\n const from_ = this.value.dateFrom.toLocaleFormat();\r\n const to_ = this.value.dateTo.toLocaleFormat();\r\n switch (this.get('kind', 'with-duration')) {\r\n case 'with-duration':\r\n return `с ${from_} по ${to_} (${this.value.duration.inDays} дн.)`;\r\n case 'with-full-duration':\r\n return `с ${from_} по ${to_} (${tools.verboseCountingValue(this.value.duration.inDays, [['день', 'дня', 'дней']])})`;\r\n }\r\n }\r\n}\r\n\r\nclass DateOutputField extends BaseOutputField {\r\n compose() { return this.value.toLocaleFormat(); }\r\n}\r\n\r\nclass DayOutputField extends BaseOutputField {\r\n compose() { \r\n return tools.verboseCountingValue(this.value, [[\"день\", \"дня\", \"дней\"]]);}\r\n}\r\n\r\nclass PercentOutputField extends HtmlOutputField {\r\n compose() {\r\n const options = {\r\n minPrecision: this.get('minPrecision'),\r\n maxPrecision: this.get('maxPrecision')\r\n };\r\n\r\n return tools.getLocaleNumber(this.value, options) + \"%\";\r\n }\r\n}\r\n\r\nclass NoteOutputField extends RenderRequiredOutputField {\r\n render() {\r\n const result = this.compose_();\r\n this.container.removeClass('active only-print');\r\n if (result === 'print' || result === true) {\r\n this.container.addClass('active');\r\n if (result === 'print') {\r\n this.container.addClass('only-print');\r\n }\r\n }\r\n }\r\n\r\n renderExport(exportObject) {\r\n const result = this.compose_();\r\n if (result === 'print' || result === true) {\r\n exportObject.notes.push(tools.convertElemToTextWithLinksForExport(this.container));\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * works with only direct children elements\r\n * Takes optional params: \r\n * - parseLink : true if convertElemToTextWithLinksForExport is needed\r\n * - selector : selector for additional logic\r\n */\r\nclass ExportVisibleOutputField extends BaseOutputField {\r\n renderExport(exportObject) {\r\n const selector = this.get('selector', '> *');\r\n const htmlObject = this.container.find(`${selector}:visible`).toArray().filter(x=>$(x).text())[0];\r\n\r\n exportObject[this.name] = this.get(\"parseLink\") && htmlObject \r\n ? tools.convertElemToTextWithLinksForExport(htmlObject) \r\n : $(htmlObject).text();\r\n }\r\n}\r\n\r\n/**\r\n * Takes optional params: \r\n * - duration : object with slideUp and slideDown time or true to use default time\r\n */\r\nclass ToggleOutputField extends RenderRequiredOutputField {\r\n render() {\r\n const slideUpTime = this.get('duration', {slideUp : undefined}).slideUp;\r\n const slideDownTime = this.get('duration', {slideDown : undefined}).slideDown;\r\n\r\n const show = () => this.get('duration') ? this.container.slideDown(slideUpTime || 400) : this.container.show();\r\n const hide = () => this.get('duration') ? this.container.slideUp(slideDownTime || 400) : this.container.hide();\r\n\r\n if (this.compose_())\r\n show();\r\n else\r\n hide();\r\n }\r\n}\r\n\r\nclass ConditionalBlockOutputField extends RenderRequiredOutputField {\r\n setup() {\r\n super.setup();\r\n const alternativeBlockSelector = this.get('alternativeBlock', '');\r\n if (alternativeBlockSelector === '') {\r\n console.warn(\"It's bad way to use `conditionalBlock` with empty alternativeBlock param. Try to use `toggle` instead.\")\r\n }\r\n this.alternativeBlock = $(alternativeBlockSelector);\r\n }\r\n\r\n render() {\r\n if (this.compose_()) {\r\n this.container.show();\r\n this.alternativeBlock.hide();\r\n }\r\n else {\r\n this.container.hide();\r\n this.alternativeBlock.show();\r\n }\r\n }\r\n}\r\n\r\nclass ShareOutputField extends HtmlOutputField {\r\n compose() {\r\n return this.value.text.replace('%', ' %');\r\n }\r\n}\r\n\r\nclass MoneyLocalRoundedOutField extends HtmlOutputField {\r\n compose() {\r\n return tools.getLocaleSumInRubbles(tools.getRoundedNumber(this.value))\r\n }\r\n}\r\n\r\nfunction createOutputField(calculator, selector, name, params) {\r\n let params_ = params || {};\r\n let class_ = undefined;\r\n switch (params_.type) {\r\n case 'localeNumber': class_ = LocaleNumOutputField; break;\r\n case 'localeSum': class_ = LocaleSumOutputField; break;\r\n case 'moneyRuble': class_ = MoneyRubleOutputField; break;\r\n case 'moneyRoundedRuble': class_ = MoneyRoundedRubleOutputField; break;\r\n case 'moneyText': class_ = MoneyTextOutputField; break;\r\n case 'moneyRoundedRuble': class_ = MoneyRoundedRubleField; break;\r\n case 'moneyLocalRoundedRuble': class_ = MoneyLocalRoundedOutField; break\r\n case 'period': class_ = PeriodOutputField; break;\r\n case 'date': class_ = DateOutputField; break;\r\n case 'percent': class_ = PercentOutputField; break;\r\n case 'note': class_ = NoteOutputField; break;\r\n case 'toggle': class_ = ToggleOutputField; break;\r\n case 'conditionalBlock': class_ = ConditionalBlockOutputField; break;\r\n case 'day': class_ = DayOutputField; break;\r\n case 'share': class_ = ShareOutputField; break;\r\n case 'text': class_ = TextField; break;\r\n case 'exportVisible' : class_ = ExportVisibleOutputField; break\r\n default: class_ = BaseOutputField; break;\r\n }\r\n\r\n return new class_(calculator, selector, name, params);\r\n}\r\n\r\nexport { createOutputField };","import {fields as basicFields} from \"../basic_fields.js\";\r\nimport {CalculatorComplex} from \"./calc_complex.js\";\r\nimport {createOutputField} from \"./output_fields.js\";\r\nexport {ShowErrorWay} from \"./utils.js\";\r\n\r\n\r\n/**\r\n * TODO: Move inline-radio to web-component\r\n * TODO: Move datetime-segment elem to web-component\r\n * \r\n * */\r\nexport class Calculator extends CalculatorComplex {\r\n\r\n constructor() {\r\n super();\r\n this._fieldTypes = basicFields;\r\n this.showVersionBanner = ShowVersionBanner;\r\n this.setupVersionBanner();\r\n this.setupHandlers();\r\n this.autoAddFields();\r\n this.initialize();\r\n this.forceRender();\r\n }\r\n \r\n log(...args) {\r\n if (this.debug) {\r\n console.log(...args);\r\n }\r\n }\r\n\r\n setupVersionBanner() {\r\n if(this.showVersionBanner){\r\n $('.old-version-alert')?.show();\r\n $('.old-version-alert')?.find('.close-button')?.click(function () {\r\n $('.old-version-alert').slideUp(200);\r\n });\r\n\r\n $('.new-version-alert')?.show();\r\n $('.new-version-alert')?.find('.close-button')?.click(function () {\r\n $('.new-version-alert').slideUp(200);\r\n });\r\n }\r\n }\r\n\r\n setupHandlers() {\r\n const self = this;\r\n $(\"#printResult\").click(function () {\r\n if (self.isActive){\r\n window.print();\r\n const message = self._statistic.printMessage;\r\n self.sendStatisticMessage(typeof(message) === \"function\" ? message() : message);\r\n }\r\n return false;\r\n });\r\n\r\n $(\"#wordResult\").click(function () {\r\n if (self.isActive) {\r\n const formData = new FormData();\r\n formData.append(\"calcType\", self.type());\r\n formData.append(\"json\", JSON.stringify(self._exportObjectFinal));\r\n\r\n $.ajax({\r\n url: ExportWordHost,\r\n type: \"POST\",\r\n data: formData,\r\n processData: false,\r\n contentType: false,\r\n cache: false,\r\n xhr:function(){\r\n var xhr = new XMLHttpRequest();\r\n xhr.onloadstart = function(ev) {\r\n xhr.responseType = \"blob\";\r\n };\r\n return xhr;\r\n },\r\n success: function(response, textStatus, jQxhr) {\r\n const name = decodeURI(jQxhr.getResponseHeader(\"Content-Disposition\").split(\"filename*=UTF-8''\")[1]);\r\n const blob = new Blob([response], {type:\"application/ms-word\"});\r\n if (window.navigator.msSaveOrOpenBlob) {\r\n navigator.msSaveOrOpenBlob(blob, name);\r\n } else {\r\n const link = document.createElement(\"a\");\r\n link.download = name;\r\n link.href = URL.createObjectURL(blob);\r\n link.click(); \r\n }\r\n return true;\r\n }, \r\n });\r\n\r\n const message = self._statistic.exportMessage;\r\n self.sendStatisticMessage(typeof(message) === \"function\" ? message() : message);\r\n }\r\n return false;\r\n });\r\n\r\n }\r\n /**\r\n * \r\n * @param {string} hash - place where need to redirect\r\n */\r\n setHash(hash){\r\n if (hash)\r\n window.location.hash = hash;\r\n else\r\n window.history.pushState(\"\", document.title, window.location.pathname);\r\n }\r\n\r\n checkHash(hash) {\r\n const currentHash = this.getHash();\r\n return currentHash.match(new RegExp(`^${hash}$`));\r\n }\r\n\r\n getHash() {\r\n return document.location.hash.substring(1);\r\n }\r\n\r\n autoSubmit(sender, skipValueChangesCheck) {\r\n sender = sender || null;\r\n this.submitForm(sender, false, skipValueChangesCheck);\r\n }\r\n \r\n autoAddFields() {\r\n const fields = this.fetchFields();\r\n fields.inputs.forEach(args => { if (args !== null) this.addInputField(...args); });\r\n fields.outputs.forEach(args => { if (args !== null) this.addOutputField(...args); });\r\n }\r\n\r\n loadDescription(feedbackBottom = true) {\r\n const self = this;\r\n return new Promise(function (resolve, reject) {\r\n $(\"#calcDescription\").load(\"/conf/calc_\"+self.code()+\"/promo.html?v=\" + DataVersionSalt, function () {\r\n $(\".smart-link\").each(function () {\r\n tools.initSmartLink(this);\r\n });\r\n\r\n tools.setWarningMessage(this);\r\n\r\n if (!IsAuthEnabled) {\r\n const mailSubject = `Обратная связь`;\r\n if (feedbackBottom) {\r\n $(\".calc-div-input-footer\").append($(mailSubject));\r\n }\r\n else {\r\n $(\"#calcDescription\").prepend($(`
${mailSubject}
`));\r\n }\r\n }\r\n resolve();\r\n });\r\n });\r\n }\r\n\r\n patchFieldTypes(newFieldTypes) {\r\n this._fieldTypes = this._fieldTypes.concat(newFieldTypes);\r\n }\r\n\r\n showResults() {\r\n $(\".calc-div-results\").addClass(\"show-results\");\r\n }\r\n\r\n hideResults() {\r\n $(\".calc-div-results\").removeClass(\"show-results\");\r\n }\r\n\r\n generateExportObject() {\r\n return this._exportObject;\r\n }\r\n\r\n get defaultFilled(){\r\n return false;\r\n }\r\n\r\n /**\r\n * Sets up part which works with statistic\r\n * @param {object} params\r\n * - calcName (required) uses in message gen\r\n * - prefix ('Calculation_' by default) uses in message gen\r\n * - printMessage ('Print' by default) you can use object here (@see {sendStattisticMessage}) or even function which returns string_or_object\r\n * - exportMessage ('Export' by default) the same as previous but for export\r\n */\r\n setupStatistic(params) {\r\n params = params || {};\r\n this._statistic = params;\r\n this._statistic.startedSent = params.isStartedEventIgnore || false;\r\n if (this._statistic.prefix === undefined)\r\n this._statistic.prefix = \"Calculation_\";\r\n\r\n if (this._statistic.printMessage === undefined)\r\n this._statistic.printMessage = \"Print\";\r\n\r\n if (this._statistic.exportMessage === undefined)\r\n this._statistic.exportMessage = \"Export\";\r\n }\r\n\r\n /**\r\n * Sends statistic message\r\n * @param {any} string_or_object\r\n * If this value is object it could contain next props:\r\n * - message (required)\r\n * - args, if you need to send additional arguments\r\n * - prefix, if you need to redefine prefix for specific stat message\r\n * Otherwise it uses like an object with only `message` prop filled\r\n */\r\n sendStatisticMessage(string_or_object) {\r\n let params = string_or_object;\r\n if (typeof (string_or_object) === \"string\") { \r\n params = {\r\n message: string_or_object\r\n };\r\n }\r\n const prefix = params.prefix !== undefined ? params.prefix : this._statistic.prefix;\r\n\r\n if (this._statistic.calcName === undefined) {\r\n console.warn(\"Calculator's name is not set up. Use method `setupStatistic` for it.\");\r\n }\r\n\r\n ym(ymId, ymReachGoal, prefix + params.message + \"_\" + this._statistic.calcName, params.args);\r\n }\r\n\r\n submitOnClick(selectorOrElem) {\r\n var self = this;\r\n $(selectorOrElem).click(function () { self.submitForm(null, false, true); });\r\n }\r\n\r\n submitOnChange() {\r\n this._submitOnChange = true;\r\n }\r\n\r\n addResetButton(selector, hideOnDefault) {\r\n hideOnDefault = hideOnDefault === undefined ? true : hideOnDefault;\r\n var self = this;\r\n var elem = $(selector);\r\n elem.click(function () {\r\n if (self.isActive){\r\n self.resetInputFields();\r\n self.sendStatisticMessage(\"Default\");\r\n }\r\n });\r\n if (hideOnDefault) {\r\n this.resetButtons.push(elem);\r\n }\r\n }\r\n\r\n removePathId(path) {\r\n return path.replace(/[:]\\d+/g, \"\");\r\n }\r\n\r\n clearPath(obj, path) {\r\n const parts = path.split(\".\");\r\n const part0 = parts[0];\r\n obj[part0.replace(/\\[|\\]/g, \"\")] = undefined;\r\n }\r\n\r\n /**\r\n * Checks that path inside srcPath\r\n * @param {object} obj\r\n * @param {string} path\r\n * @param {string} srcPath\r\n */\r\n isPathInside(path, srcPath) {\r\n return (path.indexOf(srcPath + \".\") == 0 || path.indexOf(srcPath + \"[]\") == 0 || path === srcPath);\r\n }\r\n\r\n /**\r\n * Method for adding input fields (instead of parsing form)\r\n * @param {stringOrElement} selector\r\n * @param {string} name (where value saves: this.)\r\n * @param {Object} params has next keys:\r\n * - type - one of (money, int). Some can be detected automatically ()\r\n * - defaultValue - (for reseting)\r\n * - errClassElem - (optional, set it if it's requires to add err class not to $(selector) elem but to different)\r\n * - showErrorWay - (optional - redefines global setting)\r\n * - disableAutoCheck - (optional - otherwise will check on change)\r\n * - errors - list of objects {check: func(v), selector: strOrElem, errClassElem: strOrElem[optional]}\r\n * - options - for some fieldTypes this options is useful\r\n * - preInit - (optional, will be called before init call)\r\n * - unsilence - (optional - array of other field names that would have non-silent check when this field is a sender)\r\n */\r\n addInputField(selector, name, params) {\r\n params = params || {};\r\n const self = this;\r\n\r\n if (params.dynamic) {\r\n params.table = selector;\r\n return this.addDynamicField(name, params);\r\n }\r\n\r\n const elem = $(selector);\r\n const ftype = params.type === undefined ? this._detectFieldType(elem) : params.type;\r\n const field = this._makeFieldObject(elem, ftype, params.options);\r\n params.showErrorWay = params.showErrorWay || self.showErrorWay;\r\n field.params_ = params;\r\n field.varName = name;\r\n field.name = self.removePathId(name);\r\n field.defaultValue = (params.defaultValue === undefined ? field.getClearValue() : params.defaultValue);\r\n\r\n if (!params.disableAutoCheck) {\r\n field.onChange(function (sender) {\r\n if (!params.disabledSubmitting) {\r\n self.submitForm(sender, !self._submitOnChange);\r\n }\r\n });\r\n }\r\n\r\n if (params.preInit !== undefined)\r\n params.preInit(field);\r\n\r\n field.init();\r\n\r\n this.inputFields.push(field);\r\n return field;\r\n }\r\n\r\n _detectFieldType(elem) {\r\n var result = undefined;\r\n this._fieldTypes.some(function (ft) {\r\n if (ft.detect(elem)) {\r\n result = ft.keyName();\r\n return true;\r\n }\r\n });\r\n if (result === undefined) {\r\n console.error(\"Can't detect field type\", elem);\r\n }\r\n return result;\r\n }\r\n\r\n _makeFieldObject(elem, fieldType, options) {\r\n var result = undefined;\r\n if (!this._fieldTypes.some(function (ft) {\r\n if (ft.keyName() === fieldType) {\r\n result = new ft(elem, options);\r\n return true;\r\n }\r\n })) {\r\n console.error(\"Can't find class for field type\", fieldType, \"of element\", elem);\r\n }\r\n return result;\r\n }\r\n \r\n /**\r\n * Parses group with internal checks (between elements inside group)\r\n * @param {any} group\r\n */\r\n processGroup(group, sender, autoValidation) {\r\n const result = group.check(sender, autoValidation);\r\n if (result.artifacts !== undefined) {\r\n for (const key in result.artifacts) {\r\n this[key] = result.artifacts[key];\r\n }\r\n }\r\n return result.valid; \r\n }\r\n \r\n resetInputFields(params) {\r\n const self = this;\r\n if (!this.isActive) return;\r\n params = params || {};\r\n this.inputFields.forEach(function (f) {\r\n if (params.fields === undefined || params.fields.some(f => self.isPathInside(f.name, f)))\r\n f.reset(params);\r\n });\r\n this.lastValuesString = \"\";\r\n\r\n this._dynamicFields.map((item) => item.reset());\r\n this.onReset();\r\n this.forceRender();\r\n\r\n this.resetButtons.forEach(function (elem) {\r\n elem.hide();\r\n });\r\n }\r\n\r\n /**\r\n * Method for rendering from variables (instead of render function)\r\n * @param {any} selector\r\n * @param {any} name\r\n * @param {any} params\r\n * @param {any} forced\r\n */\r\n addOutputField(selector, name, params, forced = false) {\r\n const field = createOutputField(this, selector, name, params);\r\n this.outputFields.push(field);\r\n if (forced)\r\n this.forceOutputs.push(field);\r\n return field;\r\n }\r\n\r\n render() {\r\n const self = this;\r\n const orderedFields = this.outputFields.map(x => x);\r\n const priorities = orderedFields.map(f => f.get(\"priority\", 0));\r\n if (priorities.length > 0 && priorities.some(x => x != priorities[0]))\r\n orderedFields.sort((a, b) => a.get(\"priority\", 0) - b.get(\"priority\", 0));\r\n orderedFields.forEach(function (field) {\r\n field.render(self);\r\n field.renderExport(self._exportObject.render);\r\n });\r\n }\r\n\r\n forceRender() {\r\n this.forceOutputs.forEach((field) => {\r\n field.render(this);\r\n });\r\n }\r\n\r\n toggleCustomClasses() {\r\n this.toggleClasses.map(customClass => {\r\n customClass.toggle();\r\n });\r\n }\r\n\r\n renderError() {\r\n if (!this._submitOnChange) {\r\n $(\".calc-div-results\").removeClass(\"show-results\");\r\n }\r\n }\r\n \r\n autoValidate(sender) {\r\n sender = sender || null;\r\n this.submitForm(sender, true);\r\n }\r\n \r\n}"],"sourceRoot":""}