var _ = require('_'), ko = require('ko'), key = require('key'), Enums = require('Common/Enums'), Utils = require('Common/Utils'), Translator = require('Common/Translator'), kn = require('Knoin/Knoin'), AbstractView = require('Knoin/AbstractView'); /** * @constructor * @extends AbstractView */ function AskPopupView() { AbstractView.call(this, 'Popups', 'PopupsAsk'); this.askDesc = ko.observable(''); this.yesButton = ko.observable(''); this.noButton = ko.observable(''); this.yesFocus = ko.observable(false); this.noFocus = ko.observable(false); this.fYesAction = null; this.fNoAction = null; this.bFocusYesOnShow = true; this.bDisabeCloseOnEsc = true; this.sDefaultKeyScope = Enums.KeyState.PopupAsk; kn.constructorEnd(this); } kn.extendAsViewModel(['View/Popup/Ask', 'PopupsAskViewModel'], AskPopupView); _.extend(AskPopupView.prototype, AbstractView.prototype); AskPopupView.prototype.clearPopup = function() { this.askDesc(''); this.yesButton(Translator.i18n('POPUPS_ASK/BUTTON_YES')); this.noButton(Translator.i18n('POPUPS_ASK/BUTTON_NO')); this.yesFocus(false); this.noFocus(false); this.fYesAction = null; this.fNoAction = null; }; AskPopupView.prototype.yesClick = function() { this.cancelCommand(); if (Utils.isFunc(this.fYesAction)) { this.fYesAction.call(null); } }; AskPopupView.prototype.noClick = function() { this.cancelCommand(); if (Utils.isFunc(this.fNoAction)) { this.fNoAction.call(null); } }; /** * @param {string} sAskDesc * @param {Function=} fYesFunc * @param {Function=} fNoFunc * @param {string=} sYesButton * @param {string=} sNoButton * @param {boolean=} bFocusYesOnShow * @returns {void} */ AskPopupView.prototype.onShow = function(sAskDesc, fYesFunc, fNoFunc, sYesButton, sNoButton, bFocusYesOnShow) { this.clearPopup(); this.fYesAction = fYesFunc || null; this.fNoAction = fNoFunc || null; this.askDesc(sAskDesc || ''); if (sYesButton) { this.yesButton(sYesButton); } if (sNoButton) { this.noButton(sNoButton); } this.bFocusYesOnShow = Utils.isUnd(bFocusYesOnShow) ? true : !!bFocusYesOnShow; }; AskPopupView.prototype.onShowWithDelay = function() { if (this.bFocusYesOnShow) { this.yesFocus(true); } }; AskPopupView.prototype.onBuild = function() { key('tab, shift+tab, right, left', Enums.KeyState.PopupAsk, _.bind(function() { if (this.yesFocus()) { this.noFocus(true); } else { this.yesFocus(true); } return false; }, this)); key('esc', Enums.KeyState.PopupAsk, _.bind(function() { this.noClick(); return false; }, this)); }; module.exports = AskPopupView;