(function () { 'use strict'; var _ = require('_'), ko = require('ko'), key = require('key'), Enums = require('Common/Enums'), Utils = require('Common/Utils'), 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(Utils.i18n('POPUPS_ASK/BUTTON_YES')); this.noButton(Utils.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 */ 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 (sYesButton) { this.yesButton(sNoButton); } this.bFocusYesOnShow = Utils.isUnd(bFocusYesOnShow) ? true : !!bFocusYesOnShow; }; AskPopupView.prototype.onFocus = 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; }());