{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./wwwroot/calc/calc_sds/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","SdsCalculator","_StatedutyCalculator","_classCallCheck","_callSuper","arguments","_inherits","_this","this","calcName","_get","_getPrototypeOf","addInputField","type","options","keyup","sendStatisticByCheckbox","goalParams","message","getHash","prefix","args","Dobav_Neimusch","optionFirst","Dobav_Rastorg_braka","optionSecond","Dobav_Imusch_1","Dobav_Imusch_2","sendStatisticMessage","$","change","window","on","loadDescription","openCalcByHash","autoSubmit","each","tools","initSmartLink","_$","result","manual","render","bottomNote","tabHeaderOpt3","text","opt3Comment","toArray","map","comment","convertElemToTextWithLinksForExport","join","parse","dutyValInput","opt1Input","indexOf","tabHeaderOpt1","altNaming1","altNaming2","sum","formula1","formula2","formula3","duty","concat","getLocaleSumInRubbles","getLocaleSum","dutyVal","Math","min","checkHash","additionalFormula","lastComment","hashValue","mainDutyResult","neimuschMB","length","removeClass","addClass","data","calculateDutyImusch1Neimusch7_9","calculateDutyImusch4","calculateDuty","mainBlockDutyVal","mainBlockComment","totalDutyVal","mainFormula1","mainFormula2","mainFormula3","opt1DutyResult","opt1BlockDutyVal","opt1BlockComment","firstFormula1","firstFormula2","firstFormula3","optionThird","opt3DutyResult","opt3Input","opt3BlockDutyVal","opt3BlockComment","thirdFormula1","thirdFormula2","thirdFormula3","StatedutyCalculator","_Calculator","self","closeSubMenu","activeSubMenu","setupStatistic","printMessage","claim_type","exportMessage","isStartedEventIgnore","submitOnChange","maxVal","focus","selectAllText","val","drawLines","click","document","e","target","hasClass","fadeIn","closePopupExemption","fadeDuration","fadeOut","mousedown","$popupExemption","$popupExemptionBody","$closeButton","find","is","has","offsetX","clientWidth","$checkboxItem","prop","showAllHeader","sender","skipValueChangesCheck","permanentNote","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","getClearValue","defaultValue","set","undefined","params_","errClassElem","errors","forEach","err","selector","hide","params","keepValue","setValue","keepErrors","clearErrors","autoValidation","phase","loud","silent","handler","showErrorWay","check","show","documentMode","tagName","_BaseObjectField","_Field","deepcopy","clearValue","NumberField","_Field2","blur","isFloat","props","disableProps","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","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_sds/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 = 1166);\n","import { StatedutyCalculator } from \"../common/stateduty/calc\";\r\n\r\nclass SdsCalculator extends StatedutyCalculator {\r\n code() { return \"sds\"; }\r\n type() { return \"CalcStateDutySoj\"; }\r\n initialize() {\r\n this.calcName = \"Gosp_Soj\";\r\n super.initialize();\r\n\r\n this.addInputField(\"#calcOpt1Block .field-div input\", \"opt1Input\", {\r\n type: \"money\", \r\n options: {keyup: true },\r\n });\r\n\r\n this.addInputField(\"#calcOpt3Block .field-div input\", \"opt3Input\", {\r\n type: \"money\", \r\n options: {keyup: true },\r\n });\r\n\r\n this.addInputField(\".checkboxrow-opt-3\", \"optionThird\");\r\n\r\n const sendStatisticByCheckbox = () => {\r\n let goalParams = {\r\n message: this.getHash(), \r\n prefix: \"\"\r\n };\r\n\r\n if (this.getHash() == \"Imusch_1\") {\r\n goalParams.args = { Dobav_Neimusch: this.optionFirst, Dobav_Rastorg_braka: this.optionSecond };\r\n } else if (this.getHash() == \"Neimusch_1\") {\r\n goalParams.args = { Dobav_Imusch_1: this.optionFirst }\r\n } else if (this.getHash() == \"Neimusch_2\") {\r\n goalParams.args = { Dobav_Imusch_2: this.optionFirst }\r\n }\r\n \r\n this.sendStatisticMessage(goalParams);\r\n };\r\n\r\n $(\"#calcOpt1Checkbox, #calcOpt2Checkbox\").change(sendStatisticByCheckbox);\r\n $(window).on(\"hashchange\", sendStatisticByCheckbox);\r\n\r\n this.loadDescription();\r\n this.openCalcByHash();\r\n this.autoSubmit(null, true);\r\n }\r\n\r\n render() {\r\n super.render();\r\n $(\".smart-link\").each(function() {\r\n tools.initSmartLink(this);\r\n })\r\n }\r\n\r\n generateExportObject() {\r\n const result = super.generateExportObject();\r\n result.manual = {};\r\n result.render.bottomNote = this.bottomNote;\r\n result.render.tabHeaderOpt3 = $('#calcOpt3Block .duty-block-tabs .active-tab')?.text() || \"\";\r\n result.render.opt3Comment = $(\"#dutyValOpt3Comment p:visible\").toArray()\r\n .map((comment) => tools.convertElemToTextWithLinksForExport(comment))\r\n .join(\"||\");\r\n if (result.parse.dutyValInput == null)\r\n result.parse.dutyValInput = 0;\r\n if (result.parse.opt1Input == null)\r\n result.parse.opt1Input = 0;\r\n if ([\"Neimusch_1\", \"Neimusch_2\"].indexOf(this.getHash()) != -1)\r\n result.render.tabHeaderOpt1 = \"\";\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 <= 20000) {\r\n if (sum < 10000) {\r\n duty = 400;\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 += 'до 20 000 рублей госпошлина составляет 4% цены, но не менее 400 рублей';\r\n } else if (sum <= 100000) {\r\n duty = (sum - 20000) * 0.03 + 800;\r\n formula1 = `${tools.getLocaleSum(800)} + 3% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(20000)}) = ${tools.getLocaleSum(800)} + ${tools.getLocaleSum((sum - 20000) * 0.03)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 20 001 рубля до 100 000 рублей госпошлина составляет 800 рублей плюс 3% суммы, превышающей 20 000 рублей';\r\n } else if (sum <= 200000) {\r\n duty = (sum - 100000) * 0.02 + 3200;\r\n formula1 = `${tools.getLocaleSum(3200)} + 2% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(100000)}) = ${tools.getLocaleSum(3200)} + ${tools.getLocaleSum((sum - 100000) * 0.02)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 100 001 рубля до 200 000 рублей госпошлина составляет 3 200 рублей плюс 2% суммы, превышающей 100 000 рублей';\r\n } else if (sum <= 1000000) {\r\n duty = (sum - 200000) * 0.01 + 5200;\r\n formula1 = `${tools.getLocaleSum(5200)} + 1% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(200000)}) = ${tools.getLocaleSum(5200)} + ${tools.getLocaleSum((sum - 200000) * 0.01)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 200 001 рубля до 1 000 000 рублей госпошлина составляет 5 200 рублей плюс 1% суммы, превышающей 200 000 рублей';\r\n } else {\r\n const dutyVal = (sum - 1000000) * 0.005 + 13200;\r\n duty = Math.min(60000, dutyVal);\r\n formula1 = `${tools.getLocaleSum(13200)} + 0,5% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(1000000)}) = ${tools.getLocaleSum(13200)} + ${tools.getLocaleSum((sum - 1000000) * 0.005)} = ${tools.getLocaleSumInRubbles(dutyVal)}`;\r\n if (dutyVal > 60000) {\r\n formula2 = `так как ${tools.getLocaleSumInRubbles(dutyVal)} > ${tools.getLocaleSumInRubbles(60000)}, то госпошлина при подаче иска составляет ${tools.getLocaleSumInRubbles(60000)}`;\r\n }\r\n comment += 'свыше 1 000 000 рублей госпошлина составляет 13 200 рублей плюс 0.5% суммы, превышающей 1 000 000 рублей, но не более 60 000 рублей';\r\n }\r\n\r\n if (this.checkHash('Sud_prikaz')) {\r\n const 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 }\r\n }\r\n\r\n return {duty, comment, formula1, formula2, formula3};\r\n }\r\n\r\n calculateDutyImusch1Neimusch7_9(sum) {\r\n let comment = this.checkHash('Neimusch_7') \r\n ? 'при цене иска ' \r\n : (this.checkHash('Imusch_1|Sud_prikaz|Neimusch_12') ? 'по искам имущественного характера при цене иска ' : 'при цене иска ');\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 = 4_000;\r\n formula1 = `${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'до 100 000 рублей госпошлина составляет 4 000 рублей';\r\n } else if (sum <= 300_000) {\r\n duty = (sum - 100_000) * 0.03 + 4_000;\r\n formula1 = `${tools.getLocaleSum(4_000)} + 3% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(100_000)}) = ${tools.getLocaleSum(4_000)} + ${tools.getLocaleSum((sum - 100_000) * 0.03)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 100 001 рубля до 300 000 рублей госпошлина составляет 4 000 рублей плюс 3% суммы, превышающей 100 000 рублей';\r\n } else if (sum <= 500_000) {\r\n duty = (sum - 300_000) * 0.025 + 10_000;\r\n formula1 = `${tools.getLocaleSum(10_000)} + 2,5% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(300_000)}) = ${tools.getLocaleSum(10_000)} + ${tools.getLocaleSum((sum - 300_000) * 0.025)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 300 001 рубля до 500 000 рублей госпошлина составляет 10 000 рублей плюс 2,5% суммы, превышающей 300 000 рублей';\r\n } else if (sum <= 1_000_000) {\r\n duty = (sum - 500_000) * 0.02 + 15_000;\r\n formula1 = `${tools.getLocaleSum(15_000)} + 2% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(500_000)}) = ${tools.getLocaleSum(15_000)} + ${tools.getLocaleSum((sum - 500_000) * 0.02)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 500 001 рубля до 1 000 000 рублей госпошлина составляет 15 000 рублей плюс 2% суммы, превышающей 500 000 рублей';\r\n } else if (sum <= 3_000_000) {\r\n duty = (sum - 1_000_000) * 0.01 + 25_000;\r\n formula1 = `${tools.getLocaleSum(25_000)} + 1% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(1_000_000)}) = ${tools.getLocaleSum(25_000)} + ${tools.getLocaleSum((sum - 1_000_000) * 0.01)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 1 000 001 рубля до 3 000 000 рублей госпошлина составляет 25 000 рублей плюс 1% суммы, превышающей 1 000 000 рублей';\r\n } else if (sum <= 8_000_000) {\r\n duty = (sum - 3_000_000) * 0.007 + 45_000;\r\n formula1 = `${tools.getLocaleSum(45_000)} + 0,7% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(3_000_000)}) = ${tools.getLocaleSum(45_000)} + ${tools.getLocaleSum((sum - 3_000_000) * 0.007)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 3 000 001 рубля до 8 000 000 рублей госпошлина составляет 45 000 рублей плюс 0,7% суммы, превышающей 3 000 000 рублей';\r\n } else if (sum <= 24_000_000) {\r\n duty = (sum - 8_000_000) * 0.0035 + 80_000;\r\n formula1 = `${tools.getLocaleSum(80_000)} + 0,35% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(8_000_000)}) = ${tools.getLocaleSum(80_000)} + ${tools.getLocaleSum((sum - 8_000_000) * 0.0035)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 8 000 001 рубля до 24 000 000 рублей госпошлина составляет 80 000 рублей плюс 0,35% суммы, превышающей 8 000 000 рублей';\r\n } else if (sum <= 50_000_000) {\r\n duty = (sum - 24_000_000) * 0.003 + 136_000;\r\n formula1 = `${tools.getLocaleSum(136_000)} + 0,3% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(24_000_000)}) = ${tools.getLocaleSum(136_000)} + ${tools.getLocaleSum((sum - 24_000_000) * 0.003)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 24 000 001 рубля до 50 000 000 рублей госпошлина составляет 136 000 рублей плюс 0,3% суммы, превышающей 24 000 000 рублей';\r\n } else if (sum <= 100_000_000) {\r\n duty = (sum - 50_000_000) * 0.002 + 214_000;\r\n formula1 = `${tools.getLocaleSum(214_000)} + 0,2% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(50_000_000)}) = ${tools.getLocaleSum(214_000)} + ${tools.getLocaleSum((sum - 50_000_000) * 0.002)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 50 000 001 рубля до 100 000 000 рублей госпошлина составляет 214 000 рублей плюс 0,2% суммы, превышающей 50 000 000 рублей';\r\n } else {\r\n const dutyVal = (sum - 100_000_000) * 0.0015 + 314_000;\r\n duty = Math.min(900_000, dutyVal);\r\n formula1 = `${tools.getLocaleSum(314_000)} + 0,15% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(100_000_000)}) = ${tools.getLocaleSum(314_000)} + ${tools.getLocaleSum((sum - 100_000_000) * 0.0015)} = ${tools.getLocaleSumInRubbles(dutyVal)}`;\r\n if (dutyVal > 900_000) {\r\n formula2 = `так как ${tools.getLocaleSumInRubbles(dutyVal)} > ${tools.getLocaleSumInRubbles(900_000)}, то госпошлина при подаче иска составляет ${tools.getLocaleSumInRubbles(900_000)}`;\r\n }\r\n comment += 'свыше 100 000 000 рублей госпошлина составляет 314 000 рублей плюс 0.15% суммы, превышающей 100 000 000 рублей, но не более 900 000 рублей';\r\n }\r\n\r\n if (this.checkHash('Neimusch_7')) {\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 const 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 }\r\n }\r\n\r\n return {duty, comment, formula1, formula2, formula3};\r\n }\r\n\r\n calculateDutyImusch4(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 <= 1_000_000) {\r\n duty = 0;\r\n comment += '1 млн руб. и менее истцы освобождены от уплаты пошлины (п. 3 ст. 17 Закона N 2300-1; пп. 4 п. 2, п. 3 ст. 333.36 НК РФ)';\r\n } else if (sum <= 3_000_000) {\r\n duty = (sum - 1_000_000) * 0.01 + 25_000;\r\n formula1 = `${tools.getLocaleSum(25_000)} + 1% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(1_000_000)}) = ${tools.getLocaleSum(25_000)} + ${tools.getLocaleSum((sum - 1_000_000) * 0.01)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 1 000 001 рубля до 3 000 000 рублей госпошлина составляет 25 000 рублей плюс 1% суммы, превышающей 1 000 000 рублей
пп. 1 п. 1 ст. 333.19 НК РФ';\r\n } else if (sum <= 8_000_000) {\r\n duty = (sum - 3_000_000) * 0.007 + 45_000;\r\n formula1 = `${tools.getLocaleSum(45_000)} + 0,7% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(3_000_000)}) = ${tools.getLocaleSum(45_000)} + ${tools.getLocaleSum((sum - 3_000_000) * 0.007)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 3 000 001 рубля до 8 000 000 рублей госпошлина составляет 45 000 рублей плюс 0,7% суммы, превышающей 3 000 000 рублей
пп. 1 п. 1 ст. 333.19 НК РФ';\r\n } else if (sum <= 24_000_000) {\r\n duty = (sum - 8_000_000) * 0.0035 + 80_000;\r\n formula1 = `${tools.getLocaleSum(80_000)} + 0,35% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(8_000_000)}) = ${tools.getLocaleSum(80_000)} + ${tools.getLocaleSum((sum - 8_000_000) * 0.0035)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 8 000 001 рубля до 24 000 000 рублей госпошлина составляет 80 000 рублей плюс 0,35% суммы, превышающей 8 000 000 рублей
пп. 1 п. 1 ст. 333.19 НК РФ';\r\n } else if (sum <= 50_000_000) {\r\n duty = (sum - 24_000_000) * 0.003 + 136_000;\r\n formula1 = `${tools.getLocaleSum(136_000)} + 0,3% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(24_000_000)}) = ${tools.getLocaleSum(136_000)} + ${tools.getLocaleSum((sum - 24_000_000) * 0.003)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 24 000 001 рубля до 50 000 000 рублей госпошлина составляет 136 000 рублей плюс 0,3% суммы, превышающей 24 000 000 рублей
пп. 1 п. 1 ст. 333.19 НК РФ';\r\n } else if (sum <= 100_000_000) {\r\n duty = (sum - 50_000_000) * 0.002 + 214_000;\r\n formula1 = `${tools.getLocaleSum(214_000)} + 0,2% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(50_000_000)}) = ${tools.getLocaleSum(214_000)} + ${tools.getLocaleSum((sum - 50_000_000) * 0.002)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'от 50 000 001 рубля до 100 000 000 рублей госпошлина составляет 214 000 рублей плюс 0,2% суммы, превышающей 50 000 000 рублей
пп. 1 п. 1 ст. 333.19 НК РФ';\r\n } else {\r\n duty = (sum - 100_000_000) * 0.0015 + 314_000;\r\n formula1 = `${tools.getLocaleSum(314_000)} + 0,15% × (${tools.getLocaleSum(sum)} − ${tools.getLocaleSum(100_000_000)}) = ${tools.getLocaleSum(314_000)} + ${tools.getLocaleSum((sum - 100_000_000) * 0.0015)} = ${tools.getLocaleSumInRubbles(duty)}`;\r\n comment += 'свыше 100 000 000 рублей госпошлина составляет 314 000 рублей плюс 0,15 процента суммы, превышающей 100 000 000 рублей, но не более 900 000 рублей
пп. 1 п. 1 ст. 333.19 НК РФ';\r\n if (duty > 900_000) {\r\n formula2 = `так как ${tools.getLocaleSumInRubbles(duty)} > 900 000,00 ₽, то госпошлина при подаче иска имущественного характера составляет 900 000,00 ₽`;\r\n duty = 900_000;\r\n }\r\n }\r\n\r\n if (duty > 25_000) {\r\n const lastComment = `${tools.getLocaleSum(duty)} - ${tools.getLocaleSum(25_000)} = ${tools.getLocaleSumInRubbles(duty - 25_000)}`;\r\n if (formula2) {\r\n formula3 = lastComment;\r\n } else {\r\n formula2 = lastComment;\r\n }\r\n duty -= 25_000;\r\n }\r\n\r\n return {duty, comment, formula1, formula2, formula3};\r\n }\r\n\r\n calculate() {\r\n this.bottomNote = false;\r\n const hashValue = this.getHash();\r\n let mainDutyResult = null;\r\n const neimuschMB = $(\".results-div.type-neimusch .main-block\");\r\n if (neimuschMB.length)\r\n neimuschMB.removeClass(\"raised\");\r\n switch(hashValue) {\r\n case 'Neimusch_1':\r\n case 'Neimusch_2':\r\n neimuschMB.addClass(\"raised\");\r\n case 'Neimusch_12':\r\n mainDutyResult = {duty: $(\".duty-main-val.active-item\").data(\"value\")}\r\n this.bottomNote = true;\r\n break;\r\n case 'Imusch_1':\r\n case 'Neimusch_7':\r\n case 'Neimusch_9':\r\n case 'Sud_prikaz':\r\n mainDutyResult = this.calculateDutyImusch1Neimusch7_9(this.dutyValInput)\r\n break; \r\n case 'Imusch_4':\r\n mainDutyResult = this.calculateDutyImusch4(this.dutyValInput)\r\n break; \r\n default:\r\n mainDutyResult = this.calculateDuty(this.dutyValInput)\r\n break;\r\n }\r\n\r\n this.mainBlockDutyVal = mainDutyResult.duty;\r\n this.mainBlockComment = mainDutyResult.comment;\r\n this.totalDutyVal = this.mainBlockDutyVal;\r\n this.mainFormula1 = mainDutyResult.formula1;\r\n this.mainFormula2 = mainDutyResult.formula2;\r\n this.mainFormula3 = mainDutyResult.formula3;\r\n\r\n let opt1DutyResult = this.calculateDutyImusch1Neimusch7_9(this.opt1Input);\r\n this.opt1BlockDutyVal = opt1DutyResult.duty;\r\n this.opt1BlockComment = opt1DutyResult.comment;\r\n this.firstFormula1 = opt1DutyResult.formula1;\r\n this.firstFormula2 = opt1DutyResult.formula2;\r\n this.firstFormula3 = opt1DutyResult.formula3;\r\n\r\n if (this.optionFirst) {\r\n if (hashValue === 'Neimusch_1' || hashValue === 'Neimusch_2') {\r\n this.totalDutyVal += this.opt1BlockDutyVal;\r\n } else {\r\n this.totalDutyVal += +($(\".duty-val-opt1\").data(\"value\"));\r\n }\r\n }\r\n\r\n if (this.optionSecond) {\r\n this.totalDutyVal += +$(\".duty-val-opt2\").data(\"value\");\r\n }\r\n\r\n if (this.optionThird) {\r\n if (hashValue === 'Neimusch_12') {\r\n let opt3DutyResult = this.calculateDutyImusch1Neimusch7_9(this.opt3Input);\r\n this.opt3BlockDutyVal = opt3DutyResult.duty;\r\n this.opt3BlockComment = opt3DutyResult.comment;\r\n this.thirdFormula1 = opt3DutyResult.formula1;\r\n this.thirdFormula2 = opt3DutyResult.formula2;\r\n this.thirdFormula3 = opt3DutyResult.formula3;\r\n\r\n this.totalDutyVal += opt3DutyResult.duty;\r\n } else {\r\n this.totalDutyVal += +$(\".duty-val-opt3\").data(\"value\");\r\n }\r\n }\r\n\r\n this.altNaming1 = \"\";\r\n this.altNaming2 = \"\";\r\n if (this.checkHash(\"Neimusch_9\")) {\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 SdsCalculator();\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":""}