Server IP : 80.87.202.40 / Your IP : 216.73.216.169 Web Server : Apache System : Linux rospirotorg.ru 5.14.0-539.el9.x86_64 #1 SMP PREEMPT_DYNAMIC Thu Dec 5 22:26:13 UTC 2024 x86_64 User : bitrix ( 600) PHP Version : 8.2.27 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /home/bitrix/ext_www/rospirotorg.ru/bitrix/js/ui/stepprocessing/dist/ |
Upload File : |
{"version":3,"file":"stepprocessing.bundle.js","sources":["../src/process-types.js","../src/fields/base-field.js","../src/fields/text-field.js","../src/fields/file-field.js","../src/fields/checkbox-field.js","../src/fields/select-field.js","../src/fields/radio-field.js","../src/dialog.js","../src/process.js","../src/process-manager.js"],"sourcesContent":["// @flow\n\n/**\n * @namespace {BX.UI.StepProcessing}\n */\n\nexport type OptionsField = {\n\tid?: string;\n\tname: string;\n\ttype: 'checkbox' | 'select' | 'radio' | 'text' | 'file';\n\ttitle: string;\n\tvalue?: string;\n\tobligatory?: boolean;\n\tmultiple?: boolean;\n\temptyMessage?: string;\n\ttextSize?: number;\n\ttextLine?: number;\n\tlist?: {[val: string]: string};\n\tsize?: number;\n};\n\nexport type QueueAction = {\n\taction: string;\n\ttitle: string;\n\tprogressBarTitle: string;\n\tmethod?: 'GET' | 'POST';\n\tcontroller?: string;\n\tparams?: {[name: string]: any};\n\tfinalize?: boolean;\n\thandlers?: {\n\t\tStateChanged?: ($Values<ProcessState>, ProcessResult) => void;\n\t\tRequestStart?: FormData => void;\n\t\tRequestStop?: any => void;\n\t\tRequestFinalize?: any => void;\n\t};\n};\n\nexport type ProcessOptions = {\n\tid: string;\n\tcontroller?: string;\n\tcomponent?: string;\n\tcomponentMode?: 'class'|'ajax';\n\tmethod?: 'GET' | 'POST';\n\tparams?: {[name: string]: any};\n\tmessages?: {[code: string]: string};\n\toptionsFields?: OptionsField[];\n\thandlers?: {\n\t\tStateChanged?: ($Values<ProcessState>, ProcessResult) => void;\n\t\tRequestStart?: FormData => void;\n\t\tRequestStop?: any => void;\n\t\tRequestFinalize?: any => void;\n\t};\n\tshowButtons?: {\n\t\tstart?: boolean;\n\t\tstop?: boolean;\n\t\tclose?: boolean;\n\t};\n\tqueue?: QueueAction[];\n\tdialogMinWidth?: number;\n\tdialogMaxWidth?: number;\n};\n\nexport const ProcessResultStatus = {\n\tprogress: 'PROGRESS',\n\tcompleted: 'COMPLETED'\n};\n\nexport type ProcessResult = {\n\tSTATUS?: $Values<ProcessResultStatus>;\n\tSUMMARY?: string;\n\tSUMMARY_HTML?: string;\n\tPROCESSED_ITEMS?: number;\n\tTOTAL_ITEMS?: number;\n\tWARNING?: string;\n\tFINALIZE?: boolean;\n\tNEXT_CONTROLLER?: string;\n\tNEXT_ACTION?: string;\n\tDOWNLOAD_LINK?: string;\n\tFILE_NAME?: string;\n\tDOWNLOAD_LINK_NAME?: string;\n\tCLEAR_LINK_NAME?: string;\n};\n\nexport const ProcessState = {\n\tintermediate: 'INTERMEDIATE',\n\trunning: 'RUNNING',\n\tcompleted: 'COMPLETED',\n\tstopped: 'STOPPED',\n\terror: 'ERROR',\n\tcanceling: 'CANCELING'\n};\n\nexport type ControllerResponse = {\n\tdata?: ProcessResult;\n\terrors?: [];\n\tstatus?: 'success' | 'error';\n};\n","// @flow\n\nimport {Type, Tag, Loc} from 'main.core';\nimport type { OptionsField } from '../process-types';\nimport { DialogStyle } from '../dialog';\n\nexport class BaseField\n{\n\tid: string;\n\ttype: 'checkbox' | 'select' | 'radio' | 'text' | 'file';\n\tname: string;\n\ttitle: string;\n\tobligatory: boolean = false;\n\temptyMessage: string = '';\n\tclassName: string = '';\n\tdisabled: boolean = false;\n\n\tvalue: any = null;\n\tcontainer: HTMLElement;\n\tfield: HTMLElement;\n\n\tconstructor(options: OptionsField)\n\t{\n\t\tthis.id = ('id' in options) ? options.id : 'ProcessDialogField_' + Math.random().toString().substring(2);\n\t\tthis.name = options.name;\n\t\tthis.type = options.type;\n\t\tthis.title = options.title;\n\t\tthis.obligatory = !!options.obligatory;\n\t\tif ('value' in options)\n\t\t{\n\t\t\tthis.setValue(options.value);\n\t\t}\n\t\tif (('emptyMessage' in options) && Type.isStringFilled(options.emptyMessage))\n\t\t{\n\t\t\tthis.emptyMessage = options.emptyMessage;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.emptyMessage = Loc.getMessage('UI_STEP_PROCESSING_EMPTY_ERROR') || '';\n\t\t}\n\t}\n\n\tsetValue(value: any)\n\t{\n\t\tthrow new Error('BX.UI.StepProcessing: Must be implemented by a subclass');\n\t\t//this.value = value;\n\t\t//return this;\n\t}\n\tgetValue(): any\n\t{\n\t\tthrow new Error('BX.UI.StepProcessing: Must be implemented by a subclass');\n\t\t//return this.value;\n\t}\n\n\trender(): HTMLElement\n\t{\n\t\tthrow new Error('BX.UI.StepProcessing: Must be implemented by a subclass');\n\t\t//return this.field;\n\t}\n\n\tlock(flag: boolean = true)\n\t{\n\t\tthrow new Error('BX.UI.StepProcessing: Must be implemented by a subclass');\n\t\t//this.disabled = flag;\n\t\t//this.field.disabled = !!flag;\n\t\t//return this;\n\t}\n\n\tisFilled(): boolean\n\t{\n\t\tthrow new Error('BX.UI.StepProcessing: Must be implemented by a subclass');\n\t\t//return this.field;\n\t}\n\n\tgetInput(): ?HTMLElement | ?HTMLElement[]\n\t{\n\t\treturn this.field ? this.field : null;\n\t}\n\n\tgetContainer(): HTMLElement\n\t{\n\t\tif (!this.container)\n\t\t{\n\t\t\tthis.container = Tag.render`<div class=\"${DialogStyle.ProcessOptionContainer} ${this.className}\"></div>`;\n\n\t\t\tif (this.title)\n\t\t\t{\n\t\t\t\tthis.container\n\t\t\t\t\t.appendChild(Tag.render`<div class=\"${DialogStyle.ProcessOptionsTitle}\"></div>`)\n\t\t\t\t\t\t.appendChild(Tag.render`<label for=\"${this.id}_inp\">${this.title}</label>`)\n\t\t\t\t;\n\t\t\t}\n\n\t\t\tthis.container\n\t\t\t\t.appendChild(Tag.render`<div class=\"${DialogStyle.ProcessOptionsInput}\"></div>`)\n\t\t\t\t\t.appendChild(this.render())\n\t\t\t;\n\n\t\t\tif (this.obligatory)\n\t\t\t{\n\t\t\t\tconst alertId = this.id + '_alert';\n\t\t\t\tthis.container\n\t\t\t\t\t.appendChild(Tag.render`<div id=\"${alertId}\" class=\"${DialogStyle.ProcessOptionsObligatory}\" style=\"display:none\"></div>`)\n\t\t\t\t\t\t.appendChild(Tag.render`<span class=\"ui-alert-message\">${this.emptyMessage}</span>`)\n\t\t\t\t;\n\t\t\t}\n\t\t}\n\n\t\treturn this.container;\n\t}\n\n\tshowWarning(message?: string)\n\t{\n\t\tconst messageText = message ?? this.emptyMessage;\n\t\tconst alertId = this.id + '_alert';\n\t\tconst optionElement = this.container.querySelector('#' + alertId);\n\t\tif (optionElement)\n\t\t{\n\t\t\tif (Type.isStringFilled(messageText))\n\t\t\t{\n\t\t\t\tconst messageElement = optionElement.querySelector('.ui-alert-message');\n\t\t\t\tmessageElement.innerHTML = messageText;\n\t\t\t}\n\t\t\toptionElement.style.display = 'block';\n\t\t}\n\t\telse if (Type.isStringFilled(messageText))\n\t\t{\n\t\t\tthis.container\n\t\t\t\t.appendChild(Tag.render`<div id=\"${alertId}\" class=\"${DialogStyle.ProcessOptionsObligatory}\"></div>`)\n\t\t\t\t\t.appendChild(Tag.render`<span class=\"ui-alert-message\">${messageText}</span>`)\n\t\t\t;\n\t\t}\n\t\treturn this;\n\t}\n\thideWarning()\n\t{\n\t\tconst alertId = this.id + '_alert';\n\t\tconst optionElement = this.container.querySelector('#' + alertId);\n\t\tif (optionElement)\n\t\t{\n\t\t\toptionElement.style.display = 'none';\n\t\t}\n\t\treturn this;\n\t}\n}\n","// @flow\n\nimport {Type, Tag} from 'main.core';\nimport type { OptionsField } from '../process-types';\nimport { BaseField } from './base-field';\nimport { DialogStyle } from '../dialog';\n\nexport class TextField extends BaseField\n{\n\ttype: string = 'text';\n\tclassName: string = DialogStyle.ProcessOptionText;\n\trows: number = 10;\n\tcols: number = 50;\n\n\tconstructor(options: OptionsField)\n\t{\n\t\tsuper(options);\n\n\t\tif (options.textSize)\n\t\t{\n\t\t\tthis.cols = options.textSize;\n\t\t}\n\t\tif (options.textLine)\n\t\t{\n\t\t\tthis.rows = options.textLine;\n\t\t}\n\t}\n\n\tsetValue(value: string)\n\t{\n\t\tthis.value = value;\n\t\tif (this.field)\n\t\t{\n\t\t\tthis.field.value = this.value;\n\t\t}\n\t\treturn this;\n\t}\n\tgetValue(): string\n\t{\n\t\tif (this.field && this.disabled !== true)\n\t\t{\n\t\t\tif (typeof(this.field.value) !== 'undefined')\n\t\t\t{\n\t\t\t\tthis.value = this.field.value;\n\t\t\t}\n\t\t}\n\t\treturn this.value;\n\t}\n\n\tisFilled(): boolean\n\t{\n\t\tif (this.field)\n\t\t{\n\t\t\tif (typeof(this.field.value) !== 'undefined')\n\t\t\t{\n\t\t\t\treturn Type.isStringFilled(this.field.value);\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\trender(): HTMLElement\n\t{\n\t\tif (!this.field)\n\t\t{\n\t\t\tthis.field = Tag.render`<textarea id=\"${this.id}\" name=\"${this.name}\" cols=\"${this.cols}\" rows=\"${this.rows}\"></textarea>`;\n\t\t}\n\t\tif (this.value)\n\t\t{\n\t\t\tthis.field.value = this.value;\n\t\t}\n\t\treturn this.field;\n\t}\n\n\tlock(flag: boolean = true)\n\t{\n\t\tthis.disabled = flag;\n\t\tthis.field.disabled = !!flag;\n\t\treturn this;\n\t}\n}\n","// @flow\n\nimport { Tag, Loc } from 'main.core';\nimport type { OptionsField } from '../process-types';\nimport { BaseField } from './base-field';\nimport { DialogStyle } from '../dialog';\n\nexport class FileField extends BaseField\n{\n\ttype: string = 'file';\n\tclassName: string = DialogStyle.ProcessOptionFile;\n\n\tconstructor(options: OptionsField)\n\t{\n\t\tif (!('emptyMessage' in options))\n\t\t{\n\t\t\toptions.emptyMessage = Loc.getMessage('UI_STEP_PROCESSING_FILE_EMPTY_ERROR');\n\t\t}\n\t\tsuper(options);\n\t}\n\n\tsetValue(value: File | FileList)\n\t{\n\t\tthis.value = value;\n\t\tif (this.field)\n\t\t{\n\t\t\tif (value instanceof FileList)\n\t\t\t{\n\t\t\t\tthis.field.files = value;\n\t\t\t}\n\t\t\telse if (value instanceof File)\n\t\t\t{\n\t\t\t\tthis.field.files[0] = value;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\tgetValue(): ?File\n\t{\n\t\tif (this.field && this.disabled !== true)\n\t\t{\n\t\t\tif (typeof(this.field.files[0]) != \"undefined\")\n\t\t\t{\n\t\t\t\tthis.value = this.field.files[0];\n\t\t\t}\n\t\t}\n\t\treturn this.value;\n\t}\n\n\tisFilled(): boolean\n\t{\n\t\tif (this.field)\n\t\t{\n\t\t\tif (typeof(this.field.files[0]) != \"undefined\")\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\trender(): HTMLElement\n\t{\n\t\tif (!this.field)\n\t\t{\n\t\t\tthis.field = Tag.render`<input type=\"file\" id=\"${this.id}\" name=\"${this.name}\">`;\n\t\t}\n\t\treturn this.field;\n\t}\n\n\tlock(flag: boolean = true)\n\t{\n\t\tthis.disabled = flag;\n\t\tthis.field.disabled = !!flag;\n\t\treturn this;\n\t}\n}\n","// @flow\n\nimport {Type, Tag} from 'main.core';\nimport type { OptionsField } from '../process-types';\nimport { BaseField } from './base-field';\nimport { DialogStyle } from '../dialog';\n\nexport class CheckboxField extends BaseField\n{\n\ttype: string = 'checkbox';\n\tlist: Array = [];\n\tmultiple: boolean = false;\n\tclassName: string = DialogStyle.ProcessOptionCheckbox;\n\n\tconstructor(options: OptionsField)\n\t{\n\t\tsuper(options);\n\n\t\tif ('list' in options)\n\t\t{\n\t\t\tthis.list = options.list;\n\t\t}\n\t\tthis.multiple = (this.list.length > 1);\n\t\tif (this.multiple)\n\t\t{\n\t\t\tthis.class = DialogStyle.ProcessOptionMultiple;\n\t\t}\n\t}\n\n\tsetValue(value: any)\n\t{\n\t\tif (this.multiple)\n\t\t{\n\t\t\tthis.value = Type.isArray(value) ? value : [value];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (value === 'Y' || value === 'N' || value === null || value === undefined)\n\t\t\t{\n\t\t\t\tvalue = (value === 'Y');//Boolean\n\t\t\t}\n\t\t\tthis.value = value;\n\t\t}\n\t\tif (this.field)\n\t\t{\n\t\t\tif (this.multiple)\n\t\t\t{\n\t\t\t\tconst optionElements = this.field.querySelectorAll(\"input[type=checkbox]\");\n\t\t\t\tif (optionElements)\n\t\t\t\t{\n\t\t\t\t\tfor (let k = 0; k < optionElements.length; k++)\n\t\t\t\t\t{\n\t\t\t\t\t\toptionElements[k].checked = (this.value.indexOf(optionElements[k].value) !== -1);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst optionElement = this.field.querySelector(\"input[type=checkbox]\");\n\t\t\t\tif (optionElement)\n\t\t\t\t{\n\t\t\t\t\toptionElement.checked =\n\t\t\t\t\t\tType.isBoolean(this.value) ? this.value : (optionElement.value === this.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\tgetValue(): any\n\t{\n\t\tif (this.field && this.disabled !== true)\n\t\t{\n\t\t\tif (this.multiple)\n\t\t\t{\n\t\t\t\tthis.value = [];\n\t\t\t\tconst optionElements = this.field.querySelectorAll(\"input[type=checkbox]\");\n\t\t\t\tif (optionElements)\n\t\t\t\t{\n\t\t\t\t\tfor (let k = 0; k < optionElements.length; k++)\n\t\t\t\t\t{\n\t\t\t\t\t\tif (optionElements[k].checked)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tthis.value.push(optionElements[k].value);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst optionElement = this.field.querySelector(\"input[type=checkbox]\");\n\t\t\t\tif (optionElement)\n\t\t\t\t{\n\t\t\t\t\tif (optionElement.value && optionElement.value !== 'Y')\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.value = optionElement.checked ? optionElement.value : '';\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.value = optionElement.checked;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this.value;\n\t}\n\n\tisFilled(): boolean\n\t{\n\t\tif (this.field)\n\t\t{\n\t\t\tconst optionElements = this.field.querySelectorAll(\"input[type=checkbox]\");\n\t\t\tif (optionElements)\n\t\t\t{\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetInput(): ?HTMLElement | ?HTMLElement[]\n\t{\n\t\tif (this.field)\n\t\t{\n\t\t\tif (this.multiple)\n\t\t\t{\n\t\t\t\tconst optionElements = this.field.querySelectorAll(\"input[type=checkbox]\");\n\t\t\t\tif (optionElements)\n\t\t\t\t{\n\t\t\t\t\treturn optionElements;\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tconst optionElement = this.field.querySelector(\"input[type=checkbox]\");\n\t\t\t\tif (optionElement)\n\t\t\t\t{\n\t\t\t\t\treturn optionElement;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\trender(): HTMLElement\n\t{\n\t\tif (!this.field)\n\t\t{\n\t\t\tthis.field = Tag.render`<div id=\"${this.id}\"></div>`;\n\t\t}\n\t\tif (this.multiple)\n\t\t{\n\t\t\tObject.keys(this.list).forEach(itemId => {\n\t\t\t\tif (this.value.indexOf(itemId) !== -1)\n\t\t\t\t{\n\t\t\t\t\tthis.field.appendChild(Tag.render`<label><input type=\"checkbox\" name=\"${this.name}[]\" value=\"${itemId}\" checked>${this.list[itemId]}</label>`);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.field.appendChild(Tag.render`<label><input type=\"checkbox\" name=\"${this.name}[]\" value=\"${itemId}\">${this.list[itemId]}</label>`);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse\n\t\t{\n\t\t\tif (Type.isBoolean(this.value))\n\t\t\t{\n\t\t\t\tif (this.value)\n\t\t\t\t{\n\t\t\t\t\tthis.field.appendChild(Tag.render`<input type=\"checkbox\" id=\"${this.id}_inp\" name=\"${this.name}\" value=\"Y\" checked>`);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.field.appendChild(Tag.render`<input type=\"checkbox\" id=\"${this.id}_inp\" name=\"${this.name}\" value=\"Y\">`);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (this.value !== '')\n\t\t\t\t{\n\t\t\t\t\tthis.field.appendChild(Tag.render`<input type=\"checkbox\" id=\"${this.id}_inp\" name=\"${this.name}\" value=\"${this.value}\" checked>`);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.field.appendChild(Tag.render`<input type=\"checkbox\" id=\"${this.id}_inp\" name=\"${this.name}\" value=\"${this.value}>\"`);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\treturn this.field;\n\t}\n\n\tlock(flag: boolean = true)\n\t{\n\t\tthis.disabled = flag;\n\t\tif (this.field)\n\t\t{\n\t\t\tconst optionElements = this.field.querySelectorAll(\"input[type=checkbox]\");\n\t\t\tif (optionElements)\n\t\t\t{\n\t\t\t\tfor (let k = 0; k < optionElements.length; k++)\n\t\t\t\t{\n\t\t\t\t\toptionElements[k].disabled = !!flag;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n}\n","// @flow\n\nimport {Type, Tag} from 'main.core';\nimport type { OptionsField } from '../process-types';\nimport { BaseField } from './base-field';\nimport { DialogStyle } from '../dialog';\n\nexport class SelectField extends BaseField\n{\n\ttype: string = 'select';\n\tmultiple: boolean = false;\n\tsize: number;\n\tlist: Array = [];\n\tclassName: string = DialogStyle.ProcessOptionSelect;\n\n\tconstructor(options: OptionsField)\n\t{\n\t\tsuper(options);\n\n\t\tif ('multiple' in options)\n\t\t{\n\t\t\tthis.multiple = Type.isBoolean(options.multiple) ? options.multiple === true : options.multiple === 'Y';\n\t\t}\n\t\tif (this.multiple)\n\t\t{\n\t\t\tif ('size' in options)\n\t\t\t{\n\t\t\t\tthis.size = options.size;\n\t\t\t}\n\t\t}\n\t\tif ('list' in options)\n\t\t{\n\t\t\tthis.list = options.list;\n\t\t}\n\t}\n\n\tsetValue(value: any)\n\t{\n\t\tif (this.multiple)\n\t\t{\n\t\t\tthis.value = Type.isArray(value) ? value : [value];\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.value = value;\n\t\t}\n\t\tif (this.field)\n\t\t{\n\t\t\tif (this.multiple)\n\t\t\t{\n\t\t\t\tfor (let k = 0; k < this.field.options.length; k++)\n\t\t\t\t{\n\t\t\t\t\tthis.field.options[k].selected = (this.value.indexOf(this.field.options[k].value) !== -1);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.field.value = this.value;\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\tgetValue(): any\n\t{\n\t\tif (this.field && this.disabled !== true)\n\t\t{\n\t\t\tif (this.multiple)\n\t\t\t{\n\t\t\t\tthis.value = [];\n\t\t\t\tfor (let k = 0; k < this.field.options.length; k++)\n\t\t\t\t{\n\t\t\t\t\tif (this.field.options[k].selected)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.value.push(this.field.options[k].value);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.value = this.field.value;\n\t\t\t}\n\t\t}\n\t\treturn this.value;\n\t}\n\n\tisFilled(): boolean\n\t{\n\t\tif (this.field)\n\t\t{\n\t\t\tfor (let k = 0; k < this.field.options.length; k++)\n\t\t\t{\n\t\t\t\tif (this.field.options[k].selected)\n\t\t\t\t{\n\t\t\t\t\treturn true;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\trender(): HTMLElement\n\t{\n\t\tif (!this.field)\n\t\t{\n\t\t\tthis.field = Tag.render`<select id=\"${this.id}\" name=\"${this.name}\"></select>`;\n\t\t}\n\t\tif (this.multiple)\n\t\t{\n\t\t\tthis.field.multiple = 'multiple';\n\t\t\tif (this.size)\n\t\t\t{\n\t\t\t\tthis.field.size = this.size;\n\t\t\t}\n\t\t}\n\n\t\tObject.keys(this.list).forEach(itemId => {\n\t\t\tlet selected;\n\t\t\tif (this.multiple === true)\n\t\t\t{\n\t\t\t\tselected = (this.value.indexOf(itemId) !== -1);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tselected = (itemId === this.value);\n\t\t\t}\n\n\t\t\tlet option = this.field.appendChild(Tag.render`<option value=\"${itemId}\">${this.list[itemId]}</option>`);\n\t\t\tif (selected)\n\t\t\t{\n\t\t\t\toption.selected = 'selected';\n\t\t\t}\n\t\t});\n\n\t\treturn this.field;\n\t}\n\n\tlock(flag: boolean = true)\n\t{\n\t\tthis.disabled = flag;\n\t\tthis.field.disabled = !!flag;\n\t\treturn this;\n\t}\n}\n","// @flow\n\nimport {Type, Tag} from 'main.core';\nimport type { OptionsField } from '../process-types';\nimport { BaseField } from './base-field';\nimport { DialogStyle } from '../dialog';\n\nexport class RadioField extends BaseField\n{\n\ttype: string = 'radio';\n\tlist: Array = [];\n\tclassName: string = DialogStyle.ProcessOptionMultiple;\n\n\tconstructor(options: OptionsField)\n\t{\n\t\tsuper(options);\n\n\t\tif ('list' in options)\n\t\t{\n\t\t\tthis.list = options.list;\n\t\t}\n\t}\n\n\tsetValue(value: any)\n\t{\n\t\tthis.value = value;\n\t\tif (this.field)\n\t\t{\n\t\t\tconst optionElements = this.field.querySelectorAll(\"input[type=radio]\");\n\t\t\tif (optionElements)\n\t\t\t{\n\t\t\t\tfor (let k = 0; k < optionElements.length; k++)\n\t\t\t\t{\n\t\t\t\t\toptionElements[k].checked = (optionElements[k].value === this.value);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\tgetValue(): any\n\t{\n\t\tif (this.field)\n\t\t{\n\t\t\tconst optionElements = this.field.querySelectorAll(\"input[type=radio]\");\n\t\t\tif (optionElements)\n\t\t\t{\n\t\t\t\tfor (let k = 0; k < optionElements.length; k++)\n\t\t\t\t{\n\t\t\t\t\tif (optionElements[k].checked)\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.value = optionElements[k].value;\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this.value;\n\t}\n\n\tisFilled(): boolean\n\t{\n\t\tif (this.field)\n\t\t{\n\t\t\tconst optionElements = this.field.querySelectorAll(\"input[type=radio]\");\n\t\t\tif (optionElements)\n\t\t\t{\n\t\t\t\tfor (let k = 0; k < optionElements.length; k++)\n\t\t\t\t{\n\t\t\t\t\tif (optionElements[k].checked)\n\t\t\t\t\t{\n\t\t\t\t\t\treturn true\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\n\tgetInput(): ?HTMLElement | ?HTMLElement[]\n\t{\n\t\tif (this.field && this.disabled !== true)\n\t\t{\n\t\t\tconst optionElement = this.field.querySelector(\"input[type=radio]\");\n\t\t\tif (optionElement)\n\t\t\t{\n\t\t\t\treturn optionElement;\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\trender(): HTMLElement\n\t{\n\t\tif (!this.field)\n\t\t{\n\t\t\tthis.field = Tag.render`<div id=\"${this.id}\"></div>`;\n\t\t}\n\n\t\tObject.keys(this.list).forEach(itemId => {\n\t\t\tif (itemId === this.value)\n\t\t\t{\n\t\t\t\tthis.field.appendChild(Tag.render`<label><input type=\"radio\" name=\"${this.name}\" value=\"${itemId}\" checked>${this.list[itemId]}</label>`);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.field.appendChild(Tag.render`<label><input type=\"radio\" name=\"${this.name}\" value=\"${itemId}\">${this.list[itemId]}</label>`);\n\t\t\t}\n\t\t});\n\n\t\treturn this.field;\n\t}\n\n\tlock(flag: boolean = true)\n\t{\n\t\tthis.disabled = flag;\n\t\tif (this.field)\n\t\t{\n\t\t\tconst optionElements = this.field.querySelectorAll(\"input[type=radio]\");\n\t\t\tif (optionElements)\n\t\t\t{\n\t\t\t\tfor (let k = 0; k < optionElements.length; k++)\n\t\t\t\t{\n\t\t\t\t\toptionElements[k].disabled = !!flag;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n}\n","// @flow\n\nimport 'ui.design-tokens';\nimport 'ui.progressbar';\nimport {Type, Tag, Loc, Dom, Event} from 'main.core';\nimport { BaseEvent, EventEmitter } from 'main.core.events';\nimport { Popup, PopupManager, PopupOptions } from 'main.popup';\nimport { Alert, AlertColor, AlertIcon, AlertSize } from 'ui.alerts';\nimport {Button, CancelButton} from 'ui.buttons';\nimport type { OptionsField } from './process-types';\nimport { BaseField } from './fields/base-field';\nimport { TextField } from './fields/text-field';\nimport { FileField } from './fields/file-field';\nimport { CheckboxField } from './fields/checkbox-field';\nimport { SelectField } from './fields/select-field';\nimport { RadioField } from './fields/radio-field';\n\n/**\n * @namespace {BX.UI.StepProcessing}\n */\nexport type DialogOptions = {\n\tid: string,\n\tmessages?: {\n\t\ttitle?: string,\n\t\tsummary?: string,\n\t\tstartButton?: string,\n\t\tstopButton?: string,\n\t\tcloseButton?: string\n\t},\n\toptionsFields?: OptionsField[],\n\toptionsFieldsValue?: Object,\n\tshowButtons?: {\n\t\tstart?: boolean,\n\t\tstop?: boolean,\n\t\tclose?: boolean\n\t},\n\thandlers?: {\n\t\tstart?: any => void,\n\t\tstop?: any => void,\n\t\tdialogShown?: any => void,\n\t\tdialogClosed?: any => void\n\t},\n\tminWidth?: number,\n\tmaxWidth?: number,\n\tpopupOptions?: PopupOptions,\n};\n\nexport const DialogStyle = {\n\tProcessWindow: 'bx-stepprocessing-dialog-process',\n\tProcessPopup: 'bx-stepprocessing-dialog-process-popup',\n\tProcessSummary: 'bx-stepprocessing-dialog-process-summary',\n\tProcessProgressbar: 'bx-stepprocessing-dialog-process-progressbar',\n\tProcessOptions: 'bx-stepprocessing-dialog-process-options',\n\tProcessOptionContainer: 'bx-stepprocessing-dialog-process-option-container',\n\tProcessOptionsTitle: 'bx-stepprocessing-dialog-process-options-title',\n\tProcessOptionsInput: 'bx-stepprocessing-dialog-process-options-input',\n\tProcessOptionsObligatory: 'ui-alert ui-alert-xs ui-alert-warning',\n\tProcessOptionText: 'bx-stepprocessing-dialog-process-option-text',\n\tProcessOptionCheckbox: 'bx-stepprocessing-dialog-process-option-checkbox',\n\tProcessOptionMultiple: 'bx-stepprocessing-dialog-process-option-multiple',\n\tProcessOptionFile: 'bx-stepprocessing-dialog-process-option-file',\n\tProcessOptionSelect: 'bx-stepprocessing-dialog-process-option-select',\n\tButtonStart: 'popup-window-button-accept',\n\tButtonStop: 'popup-window-button-disable',\n\tButtonCancel: 'popup-window-button-link-cancel',\n\tButtonDownload: 'popup-window-button-link-download',\n\tButtonRemove: 'popup-window-button-link-remove'\n};\n\nexport const DialogEvent = {\n\tShown: 'BX.UI.StepProcessing.Dialog.Shown',\n\tClosed: 'BX.UI.StepProcessing.Dialog.Closed',\n\tStart: 'BX.UI.StepProcessing.Dialog.Start',\n\tStop: 'BX.UI.StepProcessing.Dialog.Stop',\n};\n\n/**\n * UI of process dialog\n *\n * @namespace {BX.UI.StepProcessing}\n * @event BX.UI.StepProcessing.Dialog.Shown\n * @event BX.UI.StepProcessing.Dialog.Closed\n * @event BX.UI.StepProcessing.Dialog.Start\n * @event BX.UI.StepProcessing.Dialog.Stop\n */\nexport class Dialog\n{\n\tid: string = '';\n\n\t/**\n\t * @type {DialogOptions}\n\t * @private\n\t */\n\t_settings: DialogOptions = {};\n\n\t//popup\n\tpopupWindow: Popup;\n\tisShown: boolean = false;\n\n\t//UI\n\terror: Alert;\n\twarning: Alert;\n\tprogressBar: BX.UI.ProgressBar;\n\tbuttons: {[type: 'start'|'stop'|'close']: Button} = {};\n\tfields: {[name: string]: BaseField} = {};\n\n\t//DOM\n\toptionsFieldsBlock: HTMLElement;\n\tsummaryBlock: HTMLElement;\n\terrorBlock: HTMLElement;\n\twarningBlock: HTMLElement;\n\tprogressBarBlock: HTMLElement;\n\n\t/**\n\t * @private\n\t */\n\t_messages = {};\n\n\t/**\n\t * @private\n\t */\n\t_handlers = {};\n\n\t/**\n\t * @private\n\t */\n\tisAdminPanel = false;\n\n\tconstructor(settings: DialogOptions = {})\n\t{\n\t\tthis._settings = settings;\n\n\t\tthis.id = this.getSetting('id', 'ProcessDialog_' + Math.random().toString().substring(2));\n\n\t\tthis._messages = this.getSetting('messages', {});\n\n\t\tlet optionsFields = {};\n\t\tconst fields = this.getSetting('optionsFields');\n\t\tif (Type.isArray(fields))\n\t\t{\n\t\t\tfields.forEach(option => {\n\t\t\t\tif (\n\t\t\t\t\tType.isPlainObject(option) &&\n\t\t\t\t\toption.hasOwnProperty('name') &&\n\t\t\t\t\toption.hasOwnProperty('type')\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\toptionsFields[option.name] = option;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\telse if (Type.isPlainObject(fields))\n\t\t{\n\t\t\tObject.keys(fields).forEach(optionName => {\n\t\t\t\tlet option = fields[optionName];\n\t\t\t\tif (\n\t\t\t\t\tType.isPlainObject(option) &&\n\t\t\t\t\toption.hasOwnProperty('name') &&\n\t\t\t\t\toption.hasOwnProperty('type')\n\t\t\t\t)\n\t\t\t\t{\n\t\t\t\t\toptionsFields[option.name] = option;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\tthis.setSetting('optionsFields', optionsFields);\n\n\t\tconst optionsFieldsValue = this.getSetting('optionsFieldsValue');\n\t\tif (!optionsFieldsValue)\n\t\t{\n\t\t\tthis.setSetting('optionsFieldsValue',{});\n\t\t}\n\n\t\tconst showButtons = this.getSetting('showButtons');\n\t\tif (!showButtons)\n\t\t{\n\t\t\tthis.setSetting('showButtons', {'start':true, 'stop':true, 'close':true});\n\t\t}\n\n\t\tthis._handlers = this.getSetting('handlers', {});\n\t}\n\n\tdestroy()\n\t{\n\t\tif (this.popupWindow)\n\t\t{\n\t\t\tthis.popupWindow.destroy();\n\t\t\tthis.popupWindow = null;\n\t\t}\n\t}\n\n\tgetId()\n\t{\n\t\treturn this.id;\n\t}\n\n\tgetSetting(name: $Keys<DialogOptions>, defaultVal: ?any = null)\n\t{\n\t\treturn this._settings.hasOwnProperty(name) ? this._settings[name] : defaultVal;\n\t}\n\tsetSetting(name: $Keys<DialogOptions>, value: any)\n\t{\n\t\tthis._settings[name] = value;\n\t\treturn this;\n\t}\n\n\tgetMessage(name: string): string\n\t{\n\t\treturn this._messages && this._messages.hasOwnProperty(name) ? this._messages[name] : \"\";\n\t}\n\tsetMessage(name: string, text: string)\n\t{\n\t\tthis._messages[name] = text;\n\t\treturn this;\n\t}\n\n\t//region Event handlers\n\n\tsetHandler(type: string, handler: any => void)\n\t{\n\t\tif (typeof(handler) == 'function')\n\t\t{\n\t\t\tthis._handlers[type] = handler;\n\t\t}\n\t\treturn this;\n\t}\n\tcallHandler(type: string, args: {[string]: any})\n\t{\n\t\tif (typeof(this._handlers[type]) == 'function')\n\t\t{\n\t\t\tthis._handlers[type].apply(this, args);\n\t\t}\n\t}\n\n\t//endregion\n\n\t//region Run\n\n\tstart()\n\t{\n\t\tthis.callHandler('start');\n\t\tEventEmitter.emit(DialogEvent.Start, new BaseEvent({dialog: this}));\n\t}\n\n\tstop()\n\t{\n\t\tthis.callHandler('stop');\n\t\tEventEmitter.emit(DialogEvent.Stop, new BaseEvent({dialog: this}));\n\t}\n\n\tshow()\n\t{\n\t\tif (this.isShown)\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tconst optionElement = document.querySelector('#bx-admin-prefix');\n\t\tif (optionElement)\n\t\t{\n\t\t\tthis.isAdminPanel = true;\n\t\t}\n\n\t\tthis.progressBar = new BX.UI.ProgressBar({\n\t\t\tstatusType: BX.UI.ProgressBar.Status.COUNTER,\n\t\t\tsize: this.isAdminPanel ? BX.UI.ProgressBar.Size.LARGE : BX.UI.ProgressBar.Size.MEDIUM,\n\t\t\tfill: this.isAdminPanel,\n\t\t\tcolumn: !this.isAdminPanel\n\t\t});\n\n\t\tthis.error = new Alert({\n\t\t\tcolor: AlertColor.DANGER,\n\t\t\ticon: AlertIcon.DANGER,\n\t\t\tsize: AlertSize.SMALL\n\t\t});\n\n\t\tthis.warning = new Alert({\n\t\t\tcolor: AlertColor.WARNING,\n\t\t\ticon: AlertIcon.WARNING,\n\t\t\tsize: AlertSize.SMALL\n\t\t});\n\n\t\tthis.popupWindow = PopupManager.create({\n\t\t\tid: this.getId(),\n\t\t\tcacheable: false,\n\t\t\ttitleBar: this.getMessage(\"title\"),\n\t\t\tautoHide: false,\n\t\t\tcloseByEsc: false,\n\t\t\tcloseIcon: true,\n\t\t\tcontent: this._prepareDialogContent(),\n\t\t\tdraggable: true,\n\t\t\tbuttons: this._prepareDialogButtons(),\n\t\t\tclassName: DialogStyle.ProcessWindow,\n\t\t\tbindOptions: {forceBindPosition: false},\n\t\t\tevents: {\n\t\t\t\tonClose: BX.delegate(this.onDialogClose, this)\n\t\t\t},\n\t\t\toverlay: true,\n\t\t\tresizable: true,\n\t\t\tminWidth: Number.parseInt(this.getSetting('minWidth', 500)),\n\t\t\tmaxWidth: Number.parseInt(this.getSetting('maxWidth', 1000)),\n\t\t\t...this._settings.popupOptions,\n\t\t});\n\n\t\tif (!this.popupWindow.isShown())\n\t\t{\n\t\t\tthis.popupWindow.show();\n\t\t}\n\n\t\tthis.isShown = this.popupWindow.isShown();\n\n\t\tif (this.isShown)\n\t\t{\n\t\t\tthis.callHandler('dialogShown');\n\t\t\tEventEmitter.emit(DialogEvent.Shown, new BaseEvent({dialog: this}));\n\t\t}\n\t\treturn this;\n\t}\n\n\tclose()\n\t{\n\t\tif (!this.isShown)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\tif (this.popupWindow)\n\t\t{\n\t\t\tthis.popupWindow.close();\n\t\t}\n\t\tthis.isShown = false;\n\n\t\tthis.callHandler('dialogClosed');\n\t\tEventEmitter.emit(DialogEvent.Closed, new BaseEvent({dialog: this}));\n\n\t\treturn this;\n\t}\n\n\t// endregion\n\n\t//region Dialog\n\n\t/**\n\t * @private\n\t */\n\t_prepareDialogContent()\n\t{\n\t\tthis.summaryBlock = Tag.render`<div class=\"${DialogStyle.ProcessSummary}\">${this.getMessage('summary')}</div>`;\n\n\t\tthis.errorBlock = this.error.getContainer();\n\t\tthis.warningBlock = this.warning.getContainer();\n\t\tthis.errorBlock.style.display = 'none';\n\t\tthis.warningBlock.style.display = 'none';\n\n\t\tif (this.progressBar)\n\t\t{\n\t\t\tthis.progressBarBlock = Tag.render`<div class=\"${DialogStyle.ProcessProgressbar}\" style=\"display:none\"></div>`;\n\t\t\tthis.progressBarBlock.appendChild(this.progressBar.getContainer());\n\t\t}\n\n\t\tif (!this.optionsFieldsBlock)\n\t\t{\n\t\t\tthis.optionsFieldsBlock = Tag.render`<div class=\"${DialogStyle.ProcessOptions}\" style=\"display:none\"></div>`;\n\t\t}\n\t\telse\n\t\t{\n\t\t\tDom.clean(this.optionsFieldsBlock);\n\t\t}\n\n\t\tlet optionsFields = this.getSetting('optionsFields', {});\n\t\tlet optionsFieldsValue = this.getSetting('optionsFieldsValue', {});\n\n\t\tObject.keys(optionsFields).forEach(optionName => {\n\t\t\tlet optionValue = optionsFieldsValue[optionName] ? optionsFieldsValue[optionName] : null;\n\t\t\tlet optionBlock = this._renderOption(optionsFields[optionName], optionValue);\n\t\t\tif (optionBlock instanceof HTMLElement)\n\t\t\t{\n\t\t\t\tthis.optionsFieldsBlock.appendChild(optionBlock);\n\t\t\t\tthis.optionsFieldsBlock.style.display = 'block';\n\t\t\t}\n\t\t});\n\n\t\tlet dialogContent = Tag.render`<div class=\"${DialogStyle.ProcessPopup}\"></div>`;\n\t\tdialogContent.appendChild(this.summaryBlock);\n\t\tdialogContent.appendChild(this.warningBlock);\n\t\tdialogContent.appendChild(this.errorBlock);\n\n\t\tif (this.progressBarBlock)\n\t\t{\n\t\t\tdialogContent.appendChild(this.progressBarBlock);\n\t\t}\n\n\t\tif (this.optionsFieldsBlock)\n\t\t{\n\t\t\tdialogContent.appendChild(this.optionsFieldsBlock);\n\t\t}\n\n\t\treturn dialogContent;\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_renderOption(option: OptionsField, optionValue: any = null)\n\t{\n\t\toption.id = this.id + '_opt_' + option.name;\n\n\t\tswitch (option.type)\n\t\t{\n\t\t\tcase 'text':\n\t\t\t\tthis.fields[option.name] = new TextField(option);\n\t\t\t\tbreak;\n\n\t\t\tcase 'file':\n\t\t\t\tthis.fields[option.name] = new FileField(option);\n\t\t\t\tbreak;\n\n\t\t\tcase 'checkbox':\n\t\t\t\tthis.fields[option.name] = new CheckboxField(option);\n\t\t\t\tbreak;\n\n\t\t\tcase 'select':\n\t\t\t\tthis.fields[option.name] = new SelectField(option);\n\t\t\t\tbreak;\n\n\t\t\tcase 'radio':\n\t\t\t\tthis.fields[option.name] = new RadioField(option);\n\t\t\t\tbreak;\n\t\t}\n\n\t\tif (optionValue !== null)\n\t\t{\n\t\t\tthis.fields[option.name].setValue(optionValue);\n\t\t}\n\t\tconst optionBlock = this.fields[option.name].getContainer();\n\n\t\treturn optionBlock;\n\t}\n\n\t//endregion\n\n\t//region Events\n\n\tonDialogClose()\n\t{\n\t\tif (this.popupWindow)\n\t\t{\n\t\t\tthis.popupWindow.destroy();\n\t\t\tthis.popupWindow = null;\n\t\t}\n\n\t\tthis.buttons = {};\n\t\tthis.fields = {};\n\t\tthis.summaryBlock = null;\n\n\t\tthis.isShown = false;\n\n\t\tthis.callHandler('dialogClosed');\n\t\tEventEmitter.emit(DialogEvent.Closed, new BaseEvent({dialog: this}));\n\t}\n\n\thandleStartButtonClick()\n\t{\n\t\tconst btn = this.getButton('start');\n\t\tif (btn && btn.isDisabled())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.start();\n\t}\n\n\thandleStopButtonClick()\n\t{\n\t\tconst btn = this.getButton('stop');\n\t\tif (btn && btn.isDisabled())\n\t\t{\n\t\t\treturn;\n\t\t}\n\n\t\tthis.stop();\n\t}\n\n\thandleCloseButtonClick()\n\t{\n\t\tthis.popupWindow.close();\n\t}\n\n\t//endregion\n\n\t//region Buttons\n\n\t/**\n\t * @private\n\t */\n\t_prepareDialogButtons(): Button[]\n\t{\n\t\tconst showButtons = this.getSetting('showButtons');\n\t\tlet ret = [];\n\t\tthis.buttons = {};\n\n\t\tif (showButtons.start)\n\t\t{\n\t\t\tconst startButtonText = this.getMessage('startButton');\n\t\t\tthis.buttons.start = new Button({\n\t\t\t\ttext: startButtonText || 'Start',\n\t\t\t\tcolor: Button.Color.SUCCESS,\n\t\t\t\ticon: Button.Icon.START,\n\t\t\t\t//className: DialogStyle.ButtonStart,\n\t\t\t\tevents:\n\t\t\t\t\t{\n\t\t\t\t\t\tclick: BX.delegate(this.handleStartButtonClick, this)\n\t\t\t\t\t}\n\t\t\t});\n\t\t\tret.push(this.buttons.start);\n\t\t}\n\n\t\tif (showButtons.stop)\n\t\t{\n\t\t\tconst stopButtonText = this.getMessage('stopButton');\n\t\t\tthis.buttons.stop = new Button({\n\t\t\t\ttext: stopButtonText || 'Stop',\n\t\t\t\tcolor: Button.Color.LIGHT_BORDER,\n\t\t\t\ticon: Button.Icon.STOP,\n\t\t\t\t//className: DialogStyle.ButtonStop,\n\t\t\t\tevents:\n\t\t\t\t\t{\n\t\t\t\t\t\tclick: BX.delegate(this.handleStopButtonClick, this)\n\t\t\t\t\t}\n\t\t\t});\n\t\t\tthis.buttons.stop.setDisabled();\n\t\t\tret.push(this.buttons.stop);\n\t\t}\n\n\t\tif (showButtons.close)\n\t\t{\n\t\t\tconst closeButtonText = this.getMessage('closeButton');\n\t\t\tthis.buttons.close = new CancelButton({\n\t\t\t\ttext: closeButtonText || 'Close',\n\t\t\t\tcolor: Button.Color.LIGHT_BORDER,\n\t\t\t\ttag: Button.Tag.SPAN,\n\t\t\t\tevents:\n\t\t\t\t\t{\n\t\t\t\t\t\tclick: BX.delegate(this.handleCloseButtonClick, this)\n\t\t\t\t\t}\n\t\t\t});\n\t\t\tret.push(this.buttons.close);\n\t\t}\n\n\t\treturn ret;\n\t}\n\n\t/**\n\t * @param {String} downloadLink\n\t * @param {String} fileName\n\t * @param {function} purgeHandler\n\t * @return self\n\t */\n\tsetDownloadButtons(downloadLink: string, fileName: string, purgeHandler: any => {})\n\t{\n\t\tlet ret = [];\n\n\t\tif (downloadLink)\n\t\t{\n\t\t\tlet downloadButtonText = this.getMessage(\"downloadButton\");\n\t\t\tdownloadButtonText = downloadButtonText !== \"\" ? downloadButtonText : \"Download file\";\n\t\t\tconst downloadButton = new Button({\n\t\t\t\ttext: downloadButtonText,\n\t\t\t\tcolor: Button.Color.SUCCESS,\n\t\t\t\ticon: Button.Icon.DOWNLOAD,\n\t\t\t\tclassName: DialogStyle.ButtonDownload,\n\t\t\t\ttag: Button.Tag.LINK,\n\t\t\t\tlink: downloadLink,\n\t\t\t\tprops: {\n\t\t\t\t\t//href: downloadLink,\n\t\t\t\t\tdownload: fileName\n\t\t\t\t}\n\t\t\t});\n\t\t\tret.push(downloadButton);\n\t\t}\n\n\t\tif (typeof(purgeHandler) == 'function')\n\t\t{\n\t\t\tlet clearButtonText = this.getMessage(\"clearButton\");\n\t\t\tclearButtonText = clearButtonText !== \"\" ? clearButtonText : \"Delete file\";\n\t\t\tconst clearButton = new Button({\n\t\t\t\ttext: clearButtonText,\n\t\t\t\tcolor: Button.Color.LIGHT_BORDER,\n\t\t\t\ticon: Button.Icon.REMOVE,\n\t\t\t\tclassName: DialogStyle.ButtonRemove,\n\t\t\t\tevents:\n\t\t\t\t\t{\n\t\t\t\t\t\tclick: purgeHandler\n\t\t\t\t\t}\n\t\t\t});\n\t\t\tret.push(clearButton);\n\t\t}\n\n\t\tif (this.buttons.close)\n\t\t{\n\t\t\tret.push(this.buttons.close);\n\t\t}\n\n\t\tif (ret.length > 0 && this.popupWindow)\n\t\t{\n\t\t\tthis.popupWindow.setButtons(ret);\n\t\t}\n\t\treturn this;\n\t}\n\n\tresetButtons(showButtons = {'start':true, 'stop':true, 'close':true})\n\t{\n\t\tthis._prepareDialogButtons();\n\n\t\tshowButtons = showButtons || this.getSetting('showButtons');\n\n\t\tlet ret = [];\n\n\t\tif (showButtons.start)\n\t\t{\n\t\t\tret.push(this.buttons.start);\n\t\t}\n\t\tif (showButtons.stop)\n\t\t{\n\t\t\tret.push(this.buttons.stop);\n\t\t}\n\t\tif (showButtons.close)\n\t\t{\n\t\t\tret.push(this.buttons.close);\n\t\t}\n\t\tif (ret.length > 0 && this.popupWindow)\n\t\t{\n\t\t\tthis.popupWindow.setButtons(ret);\n\t\t}\n\t\treturn this;\n\t}\n\n\tgetButton(bid: string): ?Button\n\t{\n\t\treturn this.buttons[bid] ?? null;\n\t}\n\n\tlockButton(bid: string, lock: boolean, wait: boolean)\n\t{\n\t\tconst btn = this.getButton(bid);\n\t\tif (btn)\n\t\t{\n\t\t\tbtn.setDisabled(lock);\n\t\t\tif (Type.isBoolean(wait))\n\t\t\t{\n\t\t\t\tbtn.setWaiting(wait);\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tshowButton(bid: string, show: boolean)\n\t{\n\t\tconst btn = this.getButton(bid);\n\t\tif (btn)\n\t\t{\n\t\t\tbtn.getContainer().style.display = !!show ? '' : 'none';\n\t\t}\n\t\tif (bid === 'close')\n\t\t{\n\t\t\tif (this.popupWindow && this.popupWindow.closeIcon)\n\t\t\t{\n\t\t\t\tthis.popupWindow.closeIcon.style.display = !!show ? '' : 'none';\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\t// endregion\n\n\t//region Summary\n\n\tsetSummary(content: string, isHtml: boolean = false)\n\t{\n\t\tif (this.optionsFieldsBlock)\n\t\t{\n\t\t\tBX.clean(this.optionsFieldsBlock);\n\t\t\tthis.optionsFieldsBlock.style.display = 'none';\n\t\t}\n\t\tif (Type.isStringFilled(content))\n\t\t{\n\t\t\tif (this.summaryBlock)\n\t\t\t{\n\t\t\t\tif (!!isHtml)\n\t\t\t\t\tthis.summaryBlock.innerHTML = content;\n\t\t\t\telse\n\t\t\t\t\tthis.summaryBlock.innerHTML = BX.util.htmlspecialchars(content);\n\n\t\t\t\tthis.summaryBlock.style.display = \"block\";\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.summaryBlock.innerHTML = \"\";\n\t\t\tthis.summaryBlock.style.display = \"none\";\n\t\t}\n\t\treturn this;\n\t}\n\n\t//endregion\n\n\t//region Errors\n\n\tsetErrors(errors: Array<string>, isHtml: bool = false)\n\t{\n\t\terrors.forEach(err => this.setError(err, isHtml));\n\t\treturn this;\n\t}\n\tsetError(content, isHtml)\n\t{\n\t\tif (Type.isStringFilled(content))\n\t\t{\n\t\t\tthis.setSummary('');\n\n\t\t\tif (this.progressBar)\n\t\t\t{\n\t\t\t\tthis.progressBar.setColor(BX.UI.ProgressBar.Color.DANGER);\n\t\t\t}\n\n\t\t\tif (!!isHtml)\n\t\t\t{\n\t\t\t\tthis.error.setText(content);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.error.setText(BX.util.htmlspecialchars(content));\n\t\t\t}\n\n\t\t\tthis.errorBlock.style.display = \"flex\";\n\t\t}\n\t\treturn this;\n\t}\n\tclearErrors()\n\t{\n\t\tif (this.error)\n\t\t{\n\t\t\tthis.error.setText('');\n\t\t}\n\t\tif (this.errorBlock)\n\t\t{\n\t\t\tthis.errorBlock.style.display = 'none';\n\t\t}\n\t\treturn this;\n\t}\n\tsetWarning(err: string, isHtml: boolean = false)\n\t{\n\t\tif (Type.isStringFilled(err))\n\t\t{\n\t\t\tif (!!isHtml)\n\t\t\t{\n\t\t\t\tthis.warning.setText(err);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.warning.setText(BX.util.htmlspecialchars(err));\n\t\t\t}\n\t\t\tthis.warningBlock.style.display = \"flex\";\n\t\t}\n\t\treturn this;\n\t}\n\tclearWarnings()\n\t{\n\t\tif (this.warning)\n\t\t{\n\t\t\tthis.warning.setText(\"\");\n\t\t}\n\t\tif (this.warningBlock)\n\t\t{\n\t\t\tthis.warningBlock.style.display = 'none';\n\t\t}\n\t\treturn this;\n\t}\n\n\t//endregion\n\n\t//region Progressbar\n\n\tsetProgressBar(totalItems: number, processedItems: number, textBefore: string)\n\t{\n\t\tif (this.progressBar)\n\t\t{\n\t\t\tif (Type.isNumber(processedItems) && Type.isNumber(totalItems) && totalItems > 0)\n\t\t\t{\n\t\t\t\tBX.show(this.progressBarBlock);\n\t\t\t\tthis.progressBar.setColor(BX.UI.ProgressBar.Color.PRIMARY);\n\t\t\t\tthis.progressBar.setMaxValue(totalItems);\n\t\t\t\ttextBefore = textBefore || \"\";\n\t\t\t\tthis.progressBar.setTextBefore(textBefore);\n\t\t\t\tthis.progressBar.update(processedItems);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.hideProgressBar();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\thideProgressBar()\n\t{\n\t\tif (this.progressBar)\n\t\t{\n\t\t\tBX.hide(this.progressBarBlock);\n\t\t}\n\t\treturn this;\n\t}\n\n\t//endregion\n\n\t//region Initial options\n\n\tgetOptionField(name: string): ?BaseField\n\t{\n\t\tif (Type.isString(name))\n\t\t{\n\t\t\tif (this.fields[name] && this.fields[name] instanceof BaseField)\n\t\t\t{\n\t\t\t\treturn this.fields[name];\n\t\t\t}\n\t\t}\n\t\treturn null;\n\t}\n\n\tgetOptionFieldValues()\n\t{\n\t\tlet initialOptions = {};\n\t\tif (this.optionsFieldsBlock)\n\t\t{\n\t\t\tObject.keys(this.fields).forEach(optionName => {\n\t\t\t\tlet field = this.getOptionField(optionName);\n\t\t\t\tlet val = field.getValue();\n\t\t\t\tif (field.type === 'checkbox' && Type.isBoolean(val))\n\t\t\t\t{\n\t\t\t\t\tinitialOptions[optionName] = val ? 'Y' : 'N';\n\t\t\t\t}\n\t\t\t\telse if (Type.isArray(val))\n\t\t\t\t{\n\t\t\t\t\tif (Type.isArrayFilled(val))\n\t\t\t\t\t{\n\t\t\t\t\t\tinitialOptions[optionName] = val;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\telse if (val)\n\t\t\t\t{\n\t\t\t\t\tinitialOptions[optionName] = val;\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn initialOptions;\n\t}\n\n\tcheckOptionFields(): boolean\n\t{\n\t\tlet checked = true;\n\t\tif (this.optionsFieldsBlock)\n\t\t{\n\t\t\tObject.keys(this.fields).forEach(optionName => {\n\t\t\t\tlet field = this.getOptionField(optionName);\n\t\t\t\tif (field.obligatory)\n\t\t\t\t{\n\t\t\t\t\tif (!field.isFilled())\n\t\t\t\t\t{\n\t\t\t\t\t\tfield.showWarning();\n\t\t\t\t\t\tchecked = false;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tfield.hideWarning();\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn checked;\n\t}\n\n\tlockOptionFields(flag: boolean = true)\n\t{\n\t\tif (this.optionsFieldsBlock)\n\t\t{\n\t\t\tObject.keys(this.fields).forEach(optionName => {\n\t\t\t\tlet field = this.getOptionField(optionName);\n\t\t\t\tif (field)\n\t\t\t\t{\n\t\t\t\t\tfield.lock(flag);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\t\treturn this;\n\t}\n\t//endregion\n}\n","// @flow\nimport {Type, Text, Loc} from 'main.core';\nimport { BaseEvent, EventEmitter } from 'main.core.events';\nimport type { ProcessOptions, OptionsField, QueueAction, ProcessResult, ControllerResponse } from './process-types';\nimport { ProcessResultStatus, ProcessState } from './process-types';\nimport { Dialog } from './dialog';\n\n/**\n * @namespace {BX.UI.StepProcessing}\n */\nexport const ProcessEvent = {\n\tStateChanged: 'BX.UI.StepProcessing.StateChanged',\n\tBeforeRequest: 'BX.UI.StepProcessing.BeforeRequest'\n}\n\n/**\n * @namespace {BX.UI.StepProcessing}\n */\nexport const ProcessCallback = {\n\tStateChanged: 'StateChanged',\n\tRequestStart: 'RequestStart',\n\tRequestStop: 'RequestStop',\n\tRequestFinalize: 'RequestFinalize',\n\tStepCompleted: 'StepCompleted'\n}\n\nexport const ProcessDefaultLabels = {\n\tAuthError: Loc.getMessage('UI_STEP_PROCESSING_AUTH_ERROR'),\n\tRequestError: Loc.getMessage('UI_STEP_PROCESSING_REQUEST_ERR'),\n\tDialogStartButton: Loc.getMessage('UI_STEP_PROCESSING_BTN_START'),\n\tDialogStopButton: Loc.getMessage('UI_STEP_PROCESSING_BTN_STOP'),\n\tDialogCloseButton: Loc.getMessage('UI_STEP_PROCESSING_BTN_CLOSE'),\n\tRequestCanceling: Loc.getMessage('UI_STEP_PROCESSING_CANCELING'),\n\tRequestCanceled: Loc.getMessage('UI_STEP_PROCESSING_CANCELED'),\n\tRequestCompleted: Loc.getMessage('UI_STEP_PROCESSING_COMPLETED'),\n\tDialogExportDownloadButton: Loc.getMessage('UI_STEP_PROCESSING_FILE_DOWNLOAD'),\n\tDialogExportClearButton: Loc.getMessage('UI_STEP_PROCESSING_FILE_DELETE'),\n\tWaitingResponse: Loc.getMessage('UI_STEP_PROCESSING_WAITING'),\n};\n\nconst EndpointType = {\n\tController: 'controller',\n\tComponent: 'component'\n};\n\n/**\n * Long running process.\n *\n * @namespace {BX.UI.StepProcessing}\n * @event BX.UI.StepProcessing.StateChanged\n * @event BX.UI.StepProcessing.BeforeRequest\n */\nexport class Process\n{\n\toptions: ProcessOptions;\n\n\tid: string;\n\n\t// Ajax endpoint\n\tendpointType: EndpointType.Controller|EndpointType.Component;\n\tcontroller: string;\n\tcontrollerDefault: string;\n\tcomponent: string;\n\tcomponentMode: 'class'|'ajax';\n\thash: string;\n\taction: string = '';\n\tmethod: 'POST'|'GET' = 'POST';\n\tparams: {[name: string]: any} = {};\n\n\t/**\n\t * @private\n\t */\n\txhr: ?XMLHttpRequest;\n\tajaxPromise: ?Promise;\n\tisRequestRunning: boolean = false;\n\tnetworkErrorCount: 0;\n\n\t// Queue\n\tqueue: Array<QueueAction> = [];\n\tcurrentStep: number = -1;\n\tstate: $Values<ProcessState> = ProcessState.intermediate;\n\n\t// Dialog\n\tdialog: Dialog;\n\tinitialOptionValues: {[id: string]: any} = {};\n\toptionsFields: {[id: string]: OptionsField} = {};\n\n\t// Events\n\thandlers: {[event: string]: any => {}} = {};\n\n\t// Messages\n\tmessages: Map<string, string> = new Map;\n\n\tconstructor(options: ProcessOptions)\n\t{\n\t\tthis.options = Type.isPlainObject(options) ? options : {};\n\n\t\tthis.id = this.getOption('id', '');\n\t\tif (!Type.isStringFilled(this.id))\n\t\t{\n\t\t\tthis.id = 'Process_' + Text.getRandom().toLowerCase();\n\t\t}\n\n\t\tconst controller = this.getOption('controller', '');\n\t\tconst component = this.getOption('component', '');\n\t\tif (Type.isStringFilled(controller))\n\t\t{\n\t\t\tthis.controller = controller;\n\t\t\tthis.controllerDefault = controller;\n\t\t\tthis.endpointType = EndpointType.Controller;\n\t\t}\n\t\telse if (Type.isStringFilled(component))\n\t\t{\n\t\t\tthis.component = component;\n\t\t\tthis.endpointType = EndpointType.Component;\n\t\t\tthis.componentMode = this.getOption('componentMode', 'class');\n\t\t}\n\t\tif (!Type.isStringFilled(this.controller))\n\t\t{\n\t\t\tif (!Type.isStringFilled(this.component))\n\t\t\t{\n\t\t\t\tthrow new TypeError(\"BX.UI.StepProcessing: There no any ajax endpoint was defined.\");\n\t\t\t}\n\t\t}\n\n\t\tthis\n\t\t\t.setQueue(this.getOption('queue', []))\n\t\t\t.setParams(this.getOption('params', {}))\n\t\t\t.setOptionsFields(this.getOption('optionsFields', {}))\n\t\t\t.setHandlers(this.getOption('handlers', {}))\n\t\t\t.setMessages(ProcessDefaultLabels)\n\t\t\t.setMessages(this.getOption('messages', {}))\n\t\t;\n\t}\n\n\tdestroy()\n\t{\n\t\tif (this.dialog instanceof Dialog)\n\t\t{\n\t\t\tthis.dialog.close().destroy();\n\t\t\tthis.dialog = null;\n\t\t}\n\n\t\tthis._closeConnection();\n\t}\n\n\t//region Run\n\n\tstart(startStep?: number = 1)\n\t{\n\t\tthis._refreshHash();\n\n\t\tstartStep = startStep || 1;\n\t\tif (\n\t\t\tthis.state === ProcessState.intermediate ||\n\t\t\tthis.state === ProcessState.stopped ||\n\t\t\tthis.state === ProcessState.completed\n\t\t)\n\t\t{\n\t\t\tif (!this.getDialog().checkOptionFields())\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tthis.getDialog().clearErrors().clearWarnings();\n\n\t\t\tthis.networkErrorCount = 0;\n\n\t\t\tif (this.getQueueLength() > 0)\n\t\t\t{\n\t\t\t\tthis.currentStep = 0;\n\t\t\t\tif (startStep > 1)\n\t\t\t\t{\n\t\t\t\t\tthis.currentStep = startStep - 1;\n\t\t\t\t}\n\n\t\t\t\tif (this.endpointType === EndpointType.Controller)\n\t\t\t\t{\n\t\t\t\t\tif (Type.isStringFilled(this.queue[this.currentStep].controller))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.setController(this.queue[this.currentStep].controller);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!Type.isStringFilled(this.queue[this.currentStep].action))\n\t\t\t\t{\n\t\t\t\t\tthrow new Error(\"BX.UI.StepProcessing: Could not find controller action at the queue position.\");\n\t\t\t\t}\n\t\t\t\tthis.setAction(this.queue[this.currentStep].action);\n\n\t\t\t\tthis.startRequest();\n\n\t\t\t\tif (this.queue[this.currentStep].title)\n\t\t\t\t{\n\t\t\t\t\tthis.getDialog().setSummary(this.queue[this.currentStep].title);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.getDialog().setSummary(this.getMessage('WaitingResponse'));\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.startRequest();\n\t\t\t}\n\t\t}\n\t\treturn this;\n\t}\n\n\tstop()\n\t{\n\t\tif (this.state === ProcessState.running)\n\t\t{\n\t\t\tthis.stopRequest();\n\t\t\tthis.currentStep = -1;\n\t\t}\n\t\treturn this;\n\t}\n\n\t//endregion\n\n\t//region Request\n\n\tstartRequest(): ?Promise\n\t{\n\t\tif (this.isRequestRunning || this.state === ProcessState.canceling)\n\t\t{\n\t\t\treturn this.ajaxPromise;\n\t\t}\n\t\tthis.isRequestRunning = true;\n\t\tthis.ajaxPromise = null;\n\n\t\tlet actionData = new FormData();\n\n\t\tlet appendData = (data, prefix) => {\n\t\t\tif (Type.isPlainObject(data))\n\t\t\t{\n\t\t\t\tObject.keys(data).forEach(name => {\n\t\t\t\t\tlet id = name;\n\t\t\t\t\tif (prefix)\n\t\t\t\t\t{\n\t\t\t\t\t\tid = prefix+'['+name+']';\n\t\t\t\t\t}\n\t\t\t\t\tif (Type.isArray(data[name]) || Type.isPlainObject(data[name]))\n\t\t\t\t\t{\n\t\t\t\t\t\tappendData(data[name], id);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tactionData.append(id, data[name]);\n\t\t\t\t\t}\n\t\t\t\t});\n\t\t\t}\n\t\t\telse if (Type.isArray(data))\n\t\t\t{\n\t\t\t\tdata.forEach(element => actionData.append(prefix+'[]', element));\n\t\t\t}\n\t\t};\n\n\t\tappendData(this.params);\n\t\tif (this.queue[this.currentStep].params)\n\t\t{\n\t\t\tappendData(this.queue[this.currentStep].params);\n\t\t}\n\n\t\tlet initialOptions = this.getDialog().getOptionFieldValues();\n\t\tif (BX.type.isNotEmptyObject(initialOptions))\n\t\t{\n\t\t\tappendData(initialOptions);\n\t\t\tthis.initialOptionValues = initialOptions;\n\t\t\tthis.storeOptionFieldValues(initialOptions);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tObject.keys(this.initialOptionValues).forEach(name => {\n\t\t\t\t// don't repeat file uploading\n\t\t\t\tif (this.initialOptionValues[name] instanceof File)\n\t\t\t\t{\n\t\t\t\t\tdelete (this.initialOptionValues[name]);\n\t\t\t\t}\n\t\t\t});\n\t\t\tappendData(this.initialOptionValues);\n\t\t}\n\n\t\tthis.setState(ProcessState.running);\n\n\t\tif (this.hasActionHandler(ProcessCallback.RequestStart))\n\t\t{\n\t\t\tthis.callActionHandler(ProcessCallback.RequestStart, [actionData]);\n\t\t}\n\t\telse if (this.hasHandler(ProcessCallback.RequestStart))\n\t\t{\n\t\t\tthis.callHandler(ProcessCallback.RequestStart, [actionData]);\n\t\t}\n\n\t\tEventEmitter.emit(ProcessEvent.BeforeRequest, new BaseEvent({data: {process: this, actionData: actionData}}));\n\n\t\tlet params = {\n\t\t\tdata: actionData,\n\t\t\tmethod: this.method,\n\t\t\tonrequeststart: this._onRequestStart.bind(this)\n\t\t};\n\t\tif (this.endpointType === EndpointType.Controller)\n\t\t{\n\t\t\tthis.ajaxPromise =\n\t\t\t\tBX.ajax.runAction(this.controller + '.' + this.getAction(), params)\n\t\t\t\t\t.then(\n\t\t\t\t\t\tthis._onRequestSuccess.bind(this),\n\t\t\t\t\t\tthis._onRequestFailure.bind(this)\n\t\t\t\t\t);\n\t\t}\n\t\telse if (this.endpointType === EndpointType.Component)\n\t\t{\n\t\t\tparams.mode = this.componentMode;\n\t\t\tif ('signedParameters' in params.data)\n\t\t\t{\n\t\t\t\tparams.signedParameters = params.data.signedParameters;\n\t\t\t\tdelete params.data.signedParameters;\n\t\t\t}\n\t\t\tthis.ajaxPromise =\n\t\t\t\tBX.ajax.runComponentAction(this.component, this.getAction(), params)\n\t\t\t\t\t.then(\n\t\t\t\t\t\tthis._onRequestSuccess.bind(this),\n\t\t\t\t\t\tthis._onRequestFailure.bind(this)\n\t\t\t\t\t);\n\t\t}\n\n\t\treturn this.ajaxPromise;\n\t}\n\n\tstopRequest(): ?Promise\n\t{\n\t\tif (this.state === ProcessState.canceling)\n\t\t{\n\t\t\treturn this.ajaxPromise;\n\t\t}\n\n\t\tthis.setState(ProcessState.canceling);\n\n\t\tthis._closeConnection();\n\n\t\tlet actionData = BX.clone(this.params);\n\n\t\tactionData.cancelingAction = this.getAction();\n\n\t\tthis.getDialog().setSummary(this.getMessage(\"RequestCanceling\"));\n\n\t\tlet proceedAction = true;\n\t\tif (this.hasActionHandler(ProcessCallback.RequestStop))\n\t\t{\n\t\t\tproceedAction = false;\n\t\t\tthis.callActionHandler(ProcessCallback.RequestStop, [actionData]);\n\t\t}\n\t\telse if (this.hasHandler(ProcessCallback.RequestStop))\n\t\t{\n\t\t\tproceedAction = false;\n\t\t\tthis.callHandler(ProcessCallback.RequestStop, [actionData]);\n\t\t}\n\n\t\tEventEmitter.emit(ProcessEvent.BeforeRequest, new BaseEvent({data: {process: this, actionData: actionData}}));\n\n\t\tthis.ajaxPromise = null;\n\n\t\tif (proceedAction)\n\t\t{\n\t\t\tlet params = {\n\t\t\t\tdata: actionData,\n\t\t\t\tmethod: this.method,\n\t\t\t\tonrequeststart: this._onRequestStart.bind(this)\n\t\t\t};\n\t\t\tif (this.endpointType === EndpointType.Controller)\n\t\t\t{\n\t\t\t\tthis.setController(this.controllerDefault);\n\t\t\t\tthis.ajaxPromise =\n\t\t\t\t\tBX.ajax.runAction(this.controller + '.cancel', params)\n\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\tthis._onRequestSuccess.bind(this),\n\t\t\t\t\t\t\tthis._onRequestFailure.bind(this)\n\t\t\t\t\t\t);\n\t\t\t}\n\t\t\telse if (this.endpointType === EndpointType.Component)\n\t\t\t{\n\t\t\t\tparams.mode = this.componentMode;\n\t\t\t\tif ('signedParameters' in params.data)\n\t\t\t\t{\n\t\t\t\t\tparams.signedParameters = params.data.signedParameters;\n\t\t\t\t\tdelete params.data.signedParameters;\n\t\t\t\t}\n\t\t\t\tthis.ajaxPromise =\n\t\t\t\t\tBX.ajax.runComponentAction(this.component, 'cancel', params)\n\t\t\t\t\t\t.then(\n\t\t\t\t\t\t\tthis._onRequestSuccess.bind(this),\n\t\t\t\t\t\t\tthis._onRequestFailure.bind(this)\n\t\t\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\treturn this.ajaxPromise;\n\t}\n\n\tfinalizeRequest(): ?Promise\n\t{\n\t\tif (this.state === ProcessState.canceling)\n\t\t{\n\t\t\treturn this.ajaxPromise;\n\t\t}\n\n\t\tlet actionData = BX.clone(this.params);\n\n\t\tlet proceedAction = true;\n\t\tif (this.hasActionHandler(ProcessCallback.RequestFinalize))\n\t\t{\n\t\t\tproceedAction = false;\n\t\t\tthis.callActionHandler(ProcessCallback.RequestFinalize, [actionData]);\n\t\t}\n\t\telse if (this.hasHandler(ProcessCallback.RequestFinalize))\n\t\t{\n\t\t\tproceedAction = false;\n\t\t\tthis.callHandler(ProcessCallback.RequestFinalize, [actionData]);\n\t\t}\n\n\t\tEventEmitter.emit(ProcessEvent.BeforeRequest, new BaseEvent({data: {process: this, actionData: actionData}}));\n\n\t\tthis.ajaxPromise = null;\n\n\t\tif (proceedAction)\n\t\t{\n\t\t\tlet params = {\n\t\t\t\tdata: actionData,\n\t\t\t\tmethod: this.method,\n\t\t\t\tonrequeststart: this._onRequestStart.bind(this)\n\t\t\t};\n\t\t\tif (this.endpointType === EndpointType.Controller)\n\t\t\t{\n\t\t\t\tthis.setController(this.controllerDefault);\n\t\t\t\tthis.ajaxPromise = BX.ajax.runAction(this.controller + '.finalize', params);\n\t\t\t}\n\t\t\telse if (this.endpointType === EndpointType.Component)\n\t\t\t{\n\t\t\t\tparams.mode = this.componentMode;\n\t\t\t\tif ('signedParameters' in params.data)\n\t\t\t\t{\n\t\t\t\t\tparams.signedParameters = params.data.signedParameters;\n\t\t\t\t\tdelete params.data.signedParameters;\n\t\t\t\t}\n\t\t\t\tthis.ajaxPromise = BX.ajax.runComponentAction(this.component, 'finalize', params);\n\t\t\t}\n\t\t}\n\n\t\treturn this.ajaxPromise;\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_refreshHash()\n\t{\n\t\tthis.hash = this.id + Date.now();\n\t\tthis.setParam(\"PROCESS_TOKEN\", this.hash);\n\t\treturn this;\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_onRequestSuccess(response: ControllerResponse)\n\t{\n\t\tthis.isRequestRunning = false;\n\t\tthis.xhr = null;\n\t\tthis.ajaxPromise = null;\n\n\t\tif (!response)\n\t\t{\n\t\t\tthis.getDialog().setError(this.getMessage('RequestError'));\n\t\t\tthis.setState(ProcessState.error);\n\t\t\treturn;\n\t\t}\n\n\t\tif (Type.isArrayFilled(response.errors))\n\t\t{\n\t\t\tconst errors = response.errors.slice(-10);\n\t\t\tlet errMessages = [];\n\t\t\terrors.forEach(err => errMessages.push(err.message));\n\n\t\t\tthis.getDialog().setErrors(errMessages, true);\n\t\t\tthis.setState(ProcessState.error);\n\t\t\treturn;\n\t\t}\n\n\t\tthis.networkErrorCount = 0;\n\n\t\tconst result = response.data;\n\n\t\tconst status = Type.isStringFilled(result.STATUS) ? result.STATUS : \"\";\n\t\tlet summary = \"\";\n\t\tif (Type.isStringFilled(result.SUMMARY))\n\t\t{\n\t\t\tsummary = result.SUMMARY;\n\t\t}\n\t\telse if (Type.isStringFilled(result.SUMMARY_HTML))\n\t\t{\n\t\t\tsummary = result.SUMMARY_HTML;\n\t\t}\n\t\tconst processedItems = Type.isNumber(result.PROCESSED_ITEMS) ? result.PROCESSED_ITEMS : 0;\n\t\tconst totalItems = Type.isNumber(result.TOTAL_ITEMS) ? result.TOTAL_ITEMS : 0;\n\t\tlet finalize = !!result.FINALIZE;\n\n\t\tif (this.hasActionHandler(ProcessCallback.StepCompleted))\n\t\t{\n\t\t\tthis.callActionHandler(ProcessCallback.StepCompleted, [status, result]);\n\t\t}\n\n\t\tif (Type.isStringFilled(result.WARNING))\n\t\t{\n\t\t\tthis.getDialog().setWarning(result.WARNING);\n\t\t}\n\n\t\tif (status === ProcessResultStatus.progress || status === ProcessResultStatus.completed)\n\t\t{\n\t\t\tif (totalItems > 0)\n\t\t\t{\n\t\t\t\tif (this.queue[this.currentStep].progressBarTitle)\n\t\t\t\t{\n\t\t\t\t\tthis.getDialog()\n\t\t\t\t\t\t.setProgressBar(totalItems, processedItems, this.queue[this.currentStep].progressBarTitle);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.getDialog()\n\t\t\t\t\t\t.setProgressBar(totalItems, processedItems);\n\t\t\t\t}\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getDialog().hideProgressBar();\n\t\t\t}\n\t\t}\n\n\t\tif (status === ProcessResultStatus.progress)\n\t\t{\n\t\t\tif (summary !== \"\")\n\t\t\t{\n\t\t\t\tthis.getDialog().setSummary(summary, true);\n\t\t\t}\n\n\t\t\tif (this.state === ProcessState.canceling)\n\t\t\t{\n\t\t\t\tthis.setState(ProcessState.stopped);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tif (this.endpointType === EndpointType.Controller)\n\t\t\t\t{\n\t\t\t\t\tconst nextController = Type.isStringFilled(result.NEXT_CONTROLLER) ? result.NEXT_CONTROLLER : \"\";\n\t\t\t\t\tif (nextController !== \"\")\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.setController(nextController);\n\t\t\t\t\t}\n\t\t\t\t\telse if (Type.isStringFilled(this.queue[this.currentStep].controller))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.setController(this.queue[this.currentStep].controller);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.setController(this.controllerDefault);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst nextAction = Type.isStringFilled(result.NEXT_ACTION) ? result.NEXT_ACTION : \"\";\n\t\t\t\tif (nextAction !== \"\")\n\t\t\t\t{\n\t\t\t\t\tthis.setAction(nextAction);\n\t\t\t\t}\n\n\t\t\t\tsetTimeout(\n\t\t\t\t\tBX.delegate(this.startRequest, this),\n\t\t\t\t\t100\n\t\t\t\t);\n\t\t\t}\n\t\t\treturn;\n\t\t}\n\n\t\tif (this.state === ProcessState.canceling)\n\t\t{\n\t\t\tthis.getDialog().setSummary(this.getMessage(\"RequestCanceled\"));\n\t\t\tthis.setState(ProcessState.completed);\n\t\t}\n\t\telse if (status === ProcessResultStatus.completed)\n\t\t{\n\t\t\tif (this.getQueueLength() > 0 && this.currentStep + 1 < this.getQueueLength())\n\t\t\t{\n\t\t\t\t// next\n\t\t\t\tthis.currentStep ++;\n\n\t\t\t\tif (this.endpointType === EndpointType.Controller)\n\t\t\t\t{\n\t\t\t\t\tif (Type.isStringFilled(this.queue[this.currentStep].controller))\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.setController(this.queue[this.currentStep].controller);\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tthis.setController(this.controllerDefault);\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tif (!Type.isStringFilled(this.queue[this.currentStep].action))\n\t\t\t\t{\n\t\t\t\t\tthrow new Error(\"BX.UI.StepProcessing: Could not find controller action at the queue position.\");\n\t\t\t\t}\n\n\t\t\t\tif ('finalize' in this.queue[this.currentStep])\n\t\t\t\t{\n\t\t\t\t\tfinalize = true;\n\t\t\t\t\tthis.setAction(this.queue[this.currentStep].action);\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\tthis.setAction(this.queue[this.currentStep].action);\n\n\t\t\t\t\tthis.getDialog().setSummary(this.queue[this.currentStep].title);\n\n\t\t\t\t\tsetTimeout(\n\t\t\t\t\t\tBX.delegate(this.startRequest, this),\n\t\t\t\t\t\t100\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (summary !== \"\")\n\t\t\t{\n\t\t\t\tthis.getDialog().setSummary(summary, true);\n\t\t\t}\n\t\t\telse\n\t\t\t{\n\t\t\t\tthis.getDialog().setSummary(this.getMessage(\"RequestCompleted\"));\n\t\t\t}\n\n\t\t\tif (Type.isStringFilled(result.DOWNLOAD_LINK))\n\t\t\t{\n\t\t\t\tif (Type.isStringFilled(result.DOWNLOAD_LINK_NAME))\n\t\t\t\t{\n\t\t\t\t\tthis.getDialog().setMessage('downloadButton', result.DOWNLOAD_LINK_NAME);\n\t\t\t\t}\n\t\t\t\tif (Type.isStringFilled(result.CLEAR_LINK_NAME))\n\t\t\t\t{\n\t\t\t\t\tthis.getDialog().setMessage('clearButton', result.CLEAR_LINK_NAME);\n\t\t\t\t}\n\t\t\t\tthis.getDialog().setDownloadButtons(\n\t\t\t\t\tresult.DOWNLOAD_LINK,\n\t\t\t\t\tresult.FILE_NAME,\n\t\t\t\t\tBX.delegate(function(){\n\t\t\t\t\t\tthis.getDialog().resetButtons({stop: true, close: true});\n\t\t\t\t\t\tthis.callAction('clear'); //.then\n\t\t\t\t\t\tsetTimeout(BX.delegate(function(){\n\t\t\t\t\t\t\t\tthis.getDialog().resetButtons({close: true});\n\t\t\t\t\t\t\t}, this), 1000);\n\t\t\t\t\t}, this)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\tthis.setState(ProcessState.completed, result);\n\n\t\t\tif (finalize)\n\t\t\t{\n\t\t\t\tsetTimeout(\n\t\t\t\t\tBX.delegate(this.finalizeRequest, this),\n\t\t\t\t\t100\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getDialog().setSummary(\"\").setError(this.getMessage(\"RequestError\"));\n\t\t\tthis.setState(ProcessState.error);\n\t\t}\n\t}\n\n\t/**\n\t * @private\n\t */\n\t_onRequestFailure (response: ControllerResponse)\n\t{\n\t\t/*\n\t\t// check if it's manual aborting\n\t\tif (this.state === ProcessState.canceling)\n\t\t{\n\t\t\treturn;\n\t\t}\n\t\t*/\n\t\tthis.isRequestRunning = false;\n\t\tthis.ajaxPromise = null;\n\n\t\t// check non auth\n\t\tif (\n\t\t\tType.isPlainObject(response) &&\n\t\t\t('data' in response) && Type.isPlainObject(response.data) &&\n\t\t\t('ajaxRejectData' in response.data) && Type.isPlainObject(response.data.ajaxRejectData) &&\n\t\t\t('reason' in response.data.ajaxRejectData) && (response.data.ajaxRejectData.reason === 'status') &&\n\t\t\t('data' in response.data.ajaxRejectData) && (response.data.ajaxRejectData.data === 401)\n\t\t)\n\t\t{\n\t\t\tthis.getDialog().setError(this.getMessage('AuthError'));\n\t\t}\n\t\t// check errors\n\t\telse if (\n\t\t\tType.isPlainObject(response) &&\n\t\t\t('errors' in response) &&\n\t\t\tType.isArrayFilled(response.errors)\n\t\t)\n\t\t{\n\t\t\tlet abortingState = false;\n\t\t\tlet networkError = false;\n\t\t\tresponse.errors.forEach(err => {\n\t\t\t\tif (err.code === 'NETWORK_ERROR')\n\t\t\t\t{\n\t\t\t\t\tif (this.state === ProcessState.canceling)\n\t\t\t\t\t{\n\t\t\t\t\t\tabortingState = true;\n\t\t\t\t\t}\n\t\t\t\t\telse\n\t\t\t\t\t{\n\t\t\t\t\t\tnetworkError = true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\t// ignoring error of manual aborting\n\t\t\tif (abortingState)\n\t\t\t{\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (networkError)\n\t\t\t{\n\t\t\t\tthis.networkErrorCount ++;\n\t\t\t\t// Let's give it more chance to complete\n\t\t\t\tif (this.networkErrorCount <= 2)\n\t\t\t\t{\n\t\t\t\t\tsetTimeout(\n\t\t\t\t\t\tBX.delegate(this.startRequest, this),\n\t\t\t\t\t\t15000\n\t\t\t\t\t);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst errors = response.errors.slice(-10);\n\t\t\tlet errMessages = [];\n\t\t\terrors.forEach(err => {\n\t\t\t\tif (err.code === 'NETWORK_ERROR')\n\t\t\t\t{\n\t\t\t\t\terrMessages.push(this.getMessage('RequestError'))\n\t\t\t\t}\n\t\t\t\telse\n\t\t\t\t{\n\t\t\t\t\terrMessages.push(err.message)\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tthis.getDialog().setErrors(errMessages, true);\n\t\t}\n\t\telse\n\t\t{\n\t\t\tthis.getDialog().setError(this.getMessage('RequestError'));\n\t\t}\n\n\t\tthis.xhr = null;\n\t\tthis.currentStep = -1;\n\n\t\tthis.setState(ProcessState.error);\n\t}\n\n\t//endregion\n\n\t//region Connection\n\n\t/**\n\t * @private\n\t */\n\t_closeConnection()\n\t{\n\t\tif (this.xhr instanceof XMLHttpRequest)\n\t\t{\n\t\t\ttry\n\t\t\t{\n\t\t\t\tthis.xhr.abort();\n\t\t\t\tthis.xhr = null;\n\t\t\t}\n\t\t\tcatch (e){}\n\t\t}\n\t}\n\t/**\n\t * @private\n\t */\n\t_onRequestStart(xhr: XMLHttpRequest)\n\t{\n\t\tthis.xhr = xhr;\n\t}\n\n\t//endregion\n\n\t//region Set & Get\n\n\tsetId(id: string)\n\t{\n\t\tthis.id = id;\n\t\treturn this;\n\t}\n\tgetId(): string\n\t{\n\t\treturn this.id;\n\t}\n\n\t//region Queue actions\n\n\tsetQueue(queue: Array<QueueAction>)\n\t{\n\t\tqueue.forEach((action: QueueAction) => this.addQueueAction(action));\n\t\treturn this;\n\t}\n\taddQueueAction(action: QueueAction)\n\t{\n\t\tthis.queue.push(action);\n\t\treturn this;\n\t}\n\tgetQueueLength(): number\n\t{\n\t\treturn this.queue.length;\n\t}\n\n\t//endregion\n\n\t//region Process options\n\n\tsetOption(name: $Keys<ProcessOptions>, value: any)\n\t{\n\t\tthis.options[name] = value;\n\t\treturn this;\n\t}\n\tgetOption(name: $Keys<ProcessOptions>, defaultValue?: any = null): any\n\t{\n\t\treturn this.options.hasOwnProperty(name) ? this.options[name] : defaultValue;\n\t}\n\n\t//endregion\n\n\t//region Initial fields\n\n\tsetOptionsFields(optionsFields: {[id: string]: OptionsField})\n\t{\n\t\tObject.keys(optionsFields).forEach(id => this.addOptionsField(id, optionsFields[id]));\n\t\treturn this;\n\t}\n\taddOptionsField(id: string, field: OptionsField)\n\t{\n\t\tthis.optionsFields[id] = field;\n\t\treturn this;\n\t}\n\tstoreOptionFieldValues(values: {[name: string]: any})\n\t{\n\t\tif ('sessionStorage' in window)\n\t\t{\n\t\t\tlet valuesToStore = {};\n\t\t\tObject.keys(this.optionsFields).forEach((name: string) => {\n\t\t\t\tlet field: OptionsField = this.optionsFields[name];\n\t\t\t\tswitch (field.type)\n\t\t\t\t{\n\t\t\t\t\tcase 'checkbox':\n\t\t\t\t\tcase 'select':\n\t\t\t\t\tcase 'radio':\n\t\t\t\t\t\tif (field.name in values)\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tvaluesToStore[field.name] = values[field.name];\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t});\n\t\t\twindow.sessionStorage.setItem('bx.' + this.getId(), JSON.stringify(valuesToStore));\n\t\t}\n\t\treturn this;\n\t}\n\trestoreOptionFieldValues()\n\t{\n\t\tlet values = {};\n\t\tif ('sessionStorage' in window)\n\t\t{\n\t\t\tvalues = JSON.parse(window.sessionStorage.getItem('bx.' + this.getId()));\n\t\t\tif (!Type.isPlainObject(values))\n\t\t\t{\n\t\t\t\tvalues = {};\n\t\t\t}\n\t\t}\n\t\treturn values;\n\t}\n\n\t//endregion\n\n\t//region Request parameters\n\n\tsetParams(params: {[name: string]: any})\n\t{\n\t\tthis.params = {};\n\t\tObject.keys(params).forEach(name => this.setParam(name, params[name]));\n\t\treturn this;\n\t}\n\tgetParams(): {[string]:any}\n\t{\n\t\treturn this.params;\n\t}\n\tsetParam(key: string, value: any)\n\t{\n\t\tthis.params[key] = value;\n\t\treturn this;\n\t}\n\tgetParam(key: string): any | null\n\t{\n\t\treturn this.params[key] ? this.params[key] : null;\n\t}\n\n\t//endregion\n\n\t//region Process state\n\n\tsetState(state: $Values<ProcessState>, result?: ProcessResult = {})\n\t{\n\t\tif (this.state === state)\n\t\t{\n\t\t\treturn this;\n\t\t}\n\n\t\tthis.state = state;\n\t\tif (state === ProcessState.intermediate || state === ProcessState.stopped)\n\t\t{\n\t\t\tthis.getDialog()\n\t\t\t\t.lockButton('start', false)\n\t\t\t\t.lockButton('stop', true)\n\t\t\t\t.showButton('close', true);\n\t\t}\n\t\telse if (state === ProcessState.running)\n\t\t{\n\t\t\tthis.getDialog()\n\t\t\t\t.lockButton('start', true, true)\n\t\t\t\t.lockButton('stop', false)\n\t\t\t\t.showButton('close', false);\n\t\t}\n\t\telse if (state === ProcessState.canceling)\n\t\t{\n\t\t\tthis.getDialog()\n\t\t\t\t.lockButton('start', true)\n\t\t\t\t.lockButton('stop', true, true)\n\t\t\t\t.showButton('close', false)\n\t\t\t\t.hideProgressBar();\n\t\t}\n\t\telse if (state === ProcessState.error)\n\t\t{\n\t\t\tthis.getDialog()\n\t\t\t\t.lockButton('start', true)\n\t\t\t\t.lockButton('stop', true)\n\t\t\t\t.showButton('close', true);\n\t\t}\n\t\telse if (state === ProcessState.completed)\n\t\t{\n\t\t\tthis.getDialog()\n\t\t\t\t.lockButton('start', true)\n\t\t\t\t.lockButton('stop', true)\n\t\t\t\t.showButton('close', true)\n\t\t\t\t.hideProgressBar();\n\t\t}\n\n\t\tif (this.hasActionHandler(ProcessCallback.StateChanged))\n\t\t{\n\t\t\tthis.callActionHandler(ProcessCallback.StateChanged, [state, result]);\n\t\t}\n\t\telse if (this.hasHandler(ProcessCallback.StateChanged))\n\t\t{\n\t\t\tthis.callHandler(ProcessCallback.StateChanged, [state, result]);\n\t\t}\n\n\t\tEventEmitter.emit(ProcessEvent.StateChanged, new BaseEvent({data: {state: state, result: result}}));\n\n\t\treturn this;\n\t}\n\tgetState(): $Values<ProcessState>\n\t{\n\t\treturn this.state;\n\t}\n\n\t//endregion\n\n\t//region Controller\n\n\tsetController(controller: string)\n\t{\n\t\tthis.controller = controller;\n\t\treturn this;\n\t}\n\tgetController(): string\n\t{\n\t\treturn this.controller;\n\t}\n\n\tsetComponent(component: string, componentMode: 'class'|'ajax' = 'class')\n\t{\n\t\tthis.component = component;\n\t\tthis.componentMode = componentMode;\n\t\treturn this;\n\t}\n\tgetComponent(): string\n\t{\n\t\treturn this.component;\n\t}\n\n\tsetAction(action: string)\n\t{\n\t\tthis.action = action;\n\t\treturn this;\n\t}\n\tgetAction(): string\n\t{\n\t\treturn this.action;\n\t}\n\tcallAction(action: string): ?Promise\n\t{\n\t\tthis.setAction(action)._refreshHash();\n\t\treturn this.startRequest();\n\t}\n\n\t//endregion\n\n\t//region Event handlers\n\n\tsetHandlers(handlers: {[$Keys<ProcessCallback>]: any => {}})\n\t{\n\t\tObject.keys(handlers).forEach(type => this.setHandler(type, handlers[type]));\n\t\treturn this;\n\t}\n\tsetHandler(type: $Keys<ProcessCallback>, handler: any => {})\n\t{\n\t\tif (Type.isFunction(handler))\n\t\t{\n\t\t\tthis.handlers[type] = handler;\n\t\t}\n\t\treturn this;\n\t}\n\thasHandler(type: $Keys<ProcessCallback>)\n\t{\n\t\treturn Type.isFunction(this.handlers[type]);\n\t}\n\tcallHandler(type: $Keys<ProcessCallback>, args: any)\n\t{\n\t\tif (this.hasHandler(type))\n\t\t{\n\t\t\tthis.handlers[type].apply(this, args);\n\t\t}\n\t}\n\thasActionHandler(type: $Keys<ProcessCallback>)\n\t{\n\t\tif (this.queue[this.currentStep])\n\t\t{\n\t\t\tif ('handlers' in this.queue[this.currentStep])\n\t\t\t{\n\t\t\t\treturn Type.isFunction(this.queue[this.currentStep].handlers[type]);\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}\n\tcallActionHandler(type: $Keys<ProcessCallback>, args: any)\n\t{\n\t\tif (this.hasActionHandler(type))\n\t\t{\n\t\t\tthis.queue[this.currentStep].handlers[type].apply(this, args);\n\t\t}\n\t}\n\n\t//endregion\n\n\t//region lang messages\n\tsetMessages(messages: {[string]: string})\n\t{\n\t\tObject.keys(messages).forEach((id) => this.setMessage(id, messages[id]));\n\t\treturn this;\n\t}\n\tsetMessage(id: string, text: string)\n\t{\n\t\tthis.messages.set(id, text);\n\t\treturn this;\n\t}\n\tgetMessage(id: string, placeholders?: {[string]: string} = null): string\n\t{\n\t\tlet phrase = this.messages.has(id) ? this.messages.get(id) : '';\n\t\tif (Type.isStringFilled(phrase) && Type.isPlainObject(placeholders))\n\t\t{\n\t\t\tObject.keys(placeholders).forEach((placeholder: string) => {\n\t\t\t\tphrase = phrase.replace('#'+placeholder+'#', placeholders[placeholder]);\n\t\t\t});\n\t\t}\n\t\treturn phrase;\n\t}\n\n\t//endregion\n\t//endregion\n\n\t//region Dialog\n\n\tgetDialog(): Dialog\n\t{\n\t\tif (!this.dialog)\n\t\t{\n\t\t\tthis.dialog = new Dialog({\n\t\t\t\tid: this.id,\n\t\t\t\toptionsFields: this.getOption('optionsFields', {}),\n\t\t\t\tminWidth: Number.parseInt(this.getOption('dialogMinWidth', 500)),\n\t\t\t\tmaxWidth: Number.parseInt(this.getOption('dialogMaxWidth', 1000)),\n\t\t\t\toptionsFieldsValue: this.restoreOptionFieldValues(),\n\t\t\t\tmessages: {\n\t\t\t\t\ttitle: this.getMessage('DialogTitle'),\n\t\t\t\t\tsummary: this.getMessage('DialogSummary'),\n\t\t\t\t\tstartButton: this.getMessage('DialogStartButton'),\n\t\t\t\t\tstopButton: this.getMessage('DialogStopButton'),\n\t\t\t\t\tcloseButton: this.getMessage('DialogCloseButton'),\n\t\t\t\t\tdownloadButton: this.getMessage('DialogExportDownloadButton'),\n\t\t\t\t\tclearButton: this.getMessage('DialogExportClearButton')\n\t\t\t\t},\n\t\t\t\tshowButtons: this.getOption('showButtons'),\n\t\t\t\thandlers: {\n\t\t\t\t\tstart: BX.delegate(this.start, this),\n\t\t\t\t\tstop: BX.delegate(this.stop, this),\n\t\t\t\t\tdialogShown: (typeof(this.handlers.dialogShown) == 'function' ? this.handlers.dialogShown : null),\n\t\t\t\t\tdialogClosed: (typeof(this.handlers.dialogClosed) == 'function' ? this.handlers.dialogClosed : null)\n\t\t\t\t},\n\t\t\t\tpopupOptions: this.options.popupOptions,\n\t\t\t});\n\t\t}\n\n\t\treturn this.dialog;\n\t}\n\n\tshowDialog ()\n\t{\n\t\tthis.getDialog()\n\t\t\t.setSetting('optionsFieldsValue', this.restoreOptionFieldValues())\n\t\t\t.resetButtons(this.getOption('optionsFields'))\n\t\t\t.show();\n\n\t\tif (!this.isRequestRunning)\n\t\t{\n\t\t\tthis.setState(ProcessState.intermediate);\n\t\t}\n\n\t\treturn this;\n\t}\n\n\tcloseDialog ()\n\t{\n\t\tif (this.isRequestRunning)\n\t\t{\n\t\t\tthis.stop();\n\t\t}\n\t\tthis.getDialog().close();\n\n\t\treturn this;\n\t}\n\n\t//endregion\n}\n","//@flow\nimport {type ProcessOptions} from './process-types';\nimport {Process} from './process';\n\n/**\n * @namespace {BX.UI.StepProcessing}\n */\nexport class ProcessManager\n{\n\tstatic instances: Map<string, Process>;\n\n\tstatic create(props: ProcessOptions): Process\n\t{\n\t\tif (!this.instances)\n\t\t{\n\t\t\tthis.instances = new Map();\n\t\t}\n\n\t\tlet process = new Process(props);\n\t\tthis.instances.set(process.getId(), process);\n\n\t\treturn process;\n\t}\n\n\tstatic get(id: string): ?Process\n\t{\n\t\tif (this.instances)\n\t\t{\n\t\t\tif (this.instances.has(id))\n\t\t\t{\n\t\t\t\treturn this.instances.get(id);\n\t\t\t}\n\t\t}\n\n\t\treturn null;\n\t}\n\n\tstatic has(id: string): boolean\n\t{\n\t\tif (this.instances)\n\t\t{\n\t\t\treturn this.instances.has(id);\n\t\t}\n\n\t\treturn false;\n\t}\n\n\tstatic delete(id: string): void\n\t{\n\t\tif (this.instances)\n\t\t{\n\t\t\tif (this.instances.has(id))\n\t\t\t{\n\t\t\t\tthis.instances.get(id).destroy();\n\t\t\t\tthis.instances.delete(id);\n\t\t\t}\n\t\t}\n\t}\n}\n"],"names":["ProcessResultStatus","progress","completed","ProcessState","intermediate","running","stopped","error","canceling","BaseField","constructor","options","obligatory","emptyMessage","className","disabled","value","id","Math","random","toString","substring","name","type","title","setValue","Type","isStringFilled","Loc","getMessage","Error","getValue","render","lock","flag","isFilled","getInput","field","getContainer","container","Tag","DialogStyle","ProcessOptionContainer","appendChild","ProcessOptionsTitle","ProcessOptionsInput","alertId","ProcessOptionsObligatory","showWarning","message","messageText","optionElement","querySelector","messageElement","innerHTML","style","display","hideWarning","TextField","ProcessOptionText","rows","cols","textSize","textLine","FileField","ProcessOptionFile","FileList","files","File","CheckboxField","list","multiple","ProcessOptionCheckbox","length","class","ProcessOptionMultiple","isArray","undefined","optionElements","querySelectorAll","k","checked","indexOf","isBoolean","push","Object","keys","forEach","itemId","SelectField","ProcessOptionSelect","size","selected","option","RadioField","ProcessWindow","ProcessPopup","ProcessSummary","ProcessProgressbar","ProcessOptions","ButtonStart","ButtonStop","ButtonCancel","ButtonDownload","ButtonRemove","DialogEvent","Shown","Closed","Start","Stop","Dialog","settings","_settings","isShown","buttons","fields","_messages","_handlers","isAdminPanel","getSetting","optionsFields","isPlainObject","hasOwnProperty","optionName","setSetting","optionsFieldsValue","showButtons","destroy","popupWindow","getId","defaultVal","setMessage","text","setHandler","handler","callHandler","args","apply","start","EventEmitter","emit","BaseEvent","dialog","stop","show","document","progressBar","BX","UI","ProgressBar","statusType","Status","COUNTER","Size","LARGE","MEDIUM","fill","column","Alert","color","AlertColor","DANGER","icon","AlertIcon","AlertSize","SMALL","warning","WARNING","PopupManager","create","cacheable","titleBar","autoHide","closeByEsc","closeIcon","content","_prepareDialogContent","draggable","_prepareDialogButtons","bindOptions","forceBindPosition","events","onClose","delegate","onDialogClose","overlay","resizable","minWidth","Number","parseInt","maxWidth","popupOptions","close","summaryBlock","errorBlock","warningBlock","progressBarBlock","optionsFieldsBlock","Dom","clean","optionValue","optionBlock","_renderOption","HTMLElement","dialogContent","handleStartButtonClick","btn","getButton","isDisabled","handleStopButtonClick","handleCloseButtonClick","ret","startButtonText","Button","Color","SUCCESS","Icon","START","click","stopButtonText","LIGHT_BORDER","STOP","setDisabled","closeButtonText","CancelButton","tag","SPAN","setDownloadButtons","downloadLink","fileName","purgeHandler","downloadButtonText","downloadButton","DOWNLOAD","LINK","link","props","download","clearButtonText","clearButton","REMOVE","setButtons","resetButtons","bid","lockButton","wait","setWaiting","showButton","setSummary","isHtml","util","htmlspecialchars","setErrors","errors","err","setError","setColor","setText","clearErrors","setWarning","clearWarnings","setProgressBar","totalItems","processedItems","textBefore","isNumber","PRIMARY","setMaxValue","setTextBefore","update","hideProgressBar","hide","getOptionField","isString","getOptionFieldValues","initialOptions","val","isArrayFilled","checkOptionFields","lockOptionFields","ProcessEvent","StateChanged","BeforeRequest","ProcessCallback","RequestStart","RequestStop","RequestFinalize","StepCompleted","ProcessDefaultLabels","AuthError","RequestError","DialogStartButton","DialogStopButton","DialogCloseButton","RequestCanceling","RequestCanceled","RequestCompleted","DialogExportDownloadButton","DialogExportClearButton","WaitingResponse","EndpointType","Controller","Component","Process","action","method","params","isRequestRunning","queue","currentStep","state","initialOptionValues","handlers","messages","Map","getOption","Text","getRandom","toLowerCase","controller","component","controllerDefault","endpointType","componentMode","TypeError","setQueue","setParams","setOptionsFields","setHandlers","setMessages","_closeConnection","startStep","_refreshHash","getDialog","networkErrorCount","getQueueLength","setController","setAction","startRequest","stopRequest","ajaxPromise","actionData","FormData","appendData","data","prefix","append","element","isNotEmptyObject","storeOptionFieldValues","setState","hasActionHandler","callActionHandler","hasHandler","process","onrequeststart","_onRequestStart","bind","ajax","runAction","getAction","then","_onRequestSuccess","_onRequestFailure","mode","signedParameters","runComponentAction","clone","cancelingAction","proceedAction","finalizeRequest","hash","Date","now","setParam","response","xhr","slice","errMessages","result","status","STATUS","summary","SUMMARY","SUMMARY_HTML","PROCESSED_ITEMS","TOTAL_ITEMS","finalize","FINALIZE","progressBarTitle","nextController","NEXT_CONTROLLER","nextAction","NEXT_ACTION","setTimeout","DOWNLOAD_LINK","DOWNLOAD_LINK_NAME","CLEAR_LINK_NAME","FILE_NAME","callAction","ajaxRejectData","reason","abortingState","networkError","code","XMLHttpRequest","abort","e","setId","addQueueAction","setOption","defaultValue","addOptionsField","values","window","valuesToStore","sessionStorage","setItem","JSON","stringify","restoreOptionFieldValues","parse","getItem","getParams","key","getParam","getState","getController","setComponent","getComponent","isFunction","set","placeholders","phrase","has","get","placeholder","replace","startButton","stopButton","closeButton","dialogShown","dialogClosed","showDialog","closeDialog","ProcessManager","instances","delete"],"mappings":"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"}