'use strict'; const events = require('../events.js'); const api = require('../api.js'); const views = require('../util/views.js'); const PoolAutoCompleteControl = require('../controls/pool_auto_complete_control.js'); const template = views.getTemplate('pool-merge'); class PoolMergeView extends events.EventTarget { constructor(ctx) { super(); this._pool = ctx.pool; this._hostNode = ctx.hostNode; this._targetPoolId = null; ctx.poolNamePattern = api.getPoolNameRegex(); views.replaceContent(this._hostNode, template(ctx)); views.decorateValidator(this._formNode); if (this._targetPoolFieldNode) { this._autoCompleteControl = new PoolAutoCompleteControl( this._targetPoolFieldNode, { confirm: pool => { this._targetPoolId = pool.id; this._autoCompleteControl.replaceSelectedText( pool.names[0], false); } }); } this._formNode.addEventListener('submit', e => this._evtSubmit(e)); } clearMessages() { views.clearMessages(this._hostNode); } enableForm() { views.enableForm(this._formNode); } disableForm() { views.disableForm(this._formNode); } showSuccess(message) { views.showSuccess(this._hostNode, message); } showError(message) { views.showError(this._hostNode, message); } _evtSubmit(e) { e.preventDefault(); this.dispatchEvent(new CustomEvent('submit', { detail: { pool: this._pool, targetPoolId: this._targetPoolId }, })); } get _formNode() { return this._hostNode.querySelector('form'); } get _targetPoolFieldNode() { return this._formNode.querySelector('input[name=target-pool]'); } get _addAliasCheckboxNode() { return this._formNode.querySelector('input[name=alias]'); } } module.exports = PoolMergeView;