Your IP : 172.69.7.234


Current Path : /var/www/element/data/www/revenuestory.ru/bitrix/js/ui/stepprocessing/dist/
Upload File :
Current File : /var/www/element/data/www/revenuestory.ru/bitrix/js/ui/stepprocessing/dist/process.bundle.js.map

{"version":3,"file":"process.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)\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\tthis.container\n\t\t\t\t.appendChild(Tag.render`<div class=\"${DialogStyle.ProcessOptionsTitle}\"></div>`)\n\t\t\t\t\t.appendChild(Tag.render`<label for=\"${this.id}_inp\">${this.title}</label>`)\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 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(message))\n\t\t\t{\n\t\t\t\tconst messageElement = optionElement.querySelector('.ui-alert-message');\n\t\t\t\tmessageElement.innerHTML = message;\n\t\t\t}\n\t\t\toptionElement.style.display = 'block';\n\t\t}\n\t\telse\n\t\t{\n\t\t\tconst message = message ? message : this.emptyMessage;\n\t\t\tif (Type.isStringFilled(message))\n\t\t\t{\n\t\t\t\tthis.container\n\t\t\t\t\t.appendChild(Tag.render`<div id=\"${alertId}\" class=\"${DialogStyle.ProcessOptionsObligatory}\"></div>`)\n\t\t\t\t\t\t.appendChild(Tag.render`<span class=\"ui-alert-message\">${message}</span>`)\n\t\t\t\t;\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 } 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};\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\toption.hasOwnProperty('title')\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\toption.hasOwnProperty('title')\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});\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}","// @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.data.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.data.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.data.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});\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","options","id","Math","random","toString","substring","name","type","title","obligatory","setValue","value","emptyMessage","Loc","getMessage","Error","field","container","Tag","render","DialogStyle","ProcessOptionContainer","className","appendChild","ProcessOptionsTitle","ProcessOptionsInput","alertId","ProcessOptionsObligatory","message","optionElement","querySelector","Type","isStringFilled","messageElement","innerHTML","style","display","TextField","ProcessOptionText","textSize","cols","textLine","rows","disabled","flag","FileField","ProcessOptionFile","FileList","files","File","CheckboxField","ProcessOptionCheckbox","list","multiple","length","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","getSetting","_messages","optionsFields","fields","isPlainObject","hasOwnProperty","optionName","setSetting","optionsFieldsValue","showButtons","_handlers","popupWindow","destroy","defaultVal","text","handler","args","apply","callHandler","EventEmitter","emit","BaseEvent","dialog","isShown","document","isAdminPanel","progressBar","BX","UI","ProgressBar","statusType","Status","COUNTER","Size","LARGE","MEDIUM","fill","column","Alert","color","AlertColor","DANGER","icon","AlertIcon","AlertSize","SMALL","warning","WARNING","PopupManager","create","getId","cacheable","titleBar","autoHide","closeByEsc","closeIcon","content","_prepareDialogContent","draggable","buttons","_prepareDialogButtons","bindOptions","forceBindPosition","events","onClose","delegate","onDialogClose","overlay","resizable","minWidth","Number","parseInt","maxWidth","show","close","summaryBlock","errorBlock","getContainer","warningBlock","progressBarBlock","optionsFieldsBlock","Dom","clean","optionValue","optionBlock","_renderOption","HTMLElement","dialogContent","btn","getButton","isDisabled","start","stop","ret","startButtonText","Button","Color","SUCCESS","Icon","START","click","handleStartButtonClick","stopButtonText","LIGHT_BORDER","STOP","handleStopButtonClick","setDisabled","closeButtonText","CancelButton","tag","SPAN","handleCloseButtonClick","downloadLink","fileName","purgeHandler","downloadButtonText","downloadButton","DOWNLOAD","LINK","link","props","download","clearButtonText","clearButton","REMOVE","setButtons","bid","lock","wait","setWaiting","isHtml","util","htmlspecialchars","errors","err","setError","setSummary","setColor","setText","totalItems","processedItems","textBefore","isNumber","PRIMARY","setMaxValue","setTextBefore","update","hideProgressBar","hide","isString","initialOptions","getOptionField","val","getValue","isArrayFilled","isFilled","showWarning","hideWarning","ProcessEvent","StateChanged","BeforeRequest","ProcessCallback","RequestStart","RequestStop","RequestFinalize","StepCompleted","ProcessDefaultLabels","AuthError","RequestError","DialogStartButton","DialogStopButton","DialogCloseButton","RequestCanceling","RequestCanceled","RequestCompleted","DialogExportDownloadButton","DialogExportClearButton","WaitingResponse","EndpointType","Controller","Component","Process","Map","getOption","Text","getRandom","toLowerCase","controller","component","controllerDefault","endpointType","componentMode","TypeError","setQueue","setParams","setOptionsFields","setHandlers","setMessages","_closeConnection","startStep","_refreshHash","state","getDialog","checkOptionFields","clearErrors","clearWarnings","networkErrorCount","getQueueLength","currentStep","queue","setController","action","setAction","startRequest","stopRequest","isRequestRunning","ajaxPromise","actionData","FormData","appendData","data","prefix","append","element","params","getOptionFieldValues","isNotEmptyObject","initialOptionValues","storeOptionFieldValues","setState","hasActionHandler","callActionHandler","hasHandler","process","method","onrequeststart","_onRequestStart","bind","ajax","runAction","getAction","then","_onRequestSuccess","_onRequestFailure","mode","signedParameters","runComponentAction","clone","cancelingAction","proceedAction","hash","Date","now","setParam","response","xhr","slice","errMessages","setErrors","result","status","STATUS","summary","SUMMARY","SUMMARY_HTML","PROCESSED_ITEMS","TOTAL_ITEMS","finalize","FINALIZE","setWarning","progressBarTitle","setProgressBar","nextController","NEXT_CONTROLLER","nextAction","NEXT_ACTION","setTimeout","DOWNLOAD_LINK","DOWNLOAD_LINK_NAME","setMessage","CLEAR_LINK_NAME","setDownloadButtons","FILE_NAME","resetButtons","callAction","finalizeRequest","ajaxRejectData","reason","abortingState","networkError","code","XMLHttpRequest","abort","e","addQueueAction","defaultValue","addOptionsField","values","window","valuesToStore","sessionStorage","setItem","JSON","stringify","parse","getItem","key","lockButton","showButton","handlers","setHandler","isFunction","messages","set","placeholders","phrase","has","get","placeholder","replace","restoreOptionFieldValues","startButton","stopButton","closeButton","dialogShown","dialogClosed","ProcessManager","instances"],"mappings":"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"}