/*______________ | ______ | U I Z E J A V A S C R I P T F R A M E W O R K | / / | --------------------------------------------------- | / O / | MODULE : Uize.Widget.Dialog.Form Class | / / / | | / / / /| | ONLINE : http://uize.com | /____/ /__/_| | COPYRIGHT : (c)2006-2016 UIZE | /___ | LICENSE : Available under MIT License or GNU General Public License |_______________| http://uize.com/license.html */ /* Module Meta Data type: Class importance: 3 codeCompleteness: 100 docCompleteness: 2 */ /*? Introduction The =Uize.Widget.Dialog.Form= class implements support for FORM-based dialogs, where the dialog result is an object with the values of its form inputs. *DEVELOPERS:* `Guang-Yu Xu` */ Uize.module ({ name:'Uize.Widget.Dialog.Form', required:[ 'Uize.Data.Compare', 'Uize.Dom.Form' ], builder:function (_superclass) { 'use strict'; var /*** Variables for Scruncher Optimization ***/ _Uize_Dom_Form = Uize.Dom.Form ; return _superclass.subclass ({ alphastructor:function () { var m = this; m._isModified = false; /*** add event handler ***/ function _handleOk(_qualifiedOk) { if (!m._theForm) return m.fire ('Submission Complete'); var _result = m.getResult(); if (_result.isModified) m._formData = _result.formData; _result.isQualifiedOk = _qualifiedOk; m.fire ({name:'Submission Complete',result:_result}); m._isModified = false; } m.wire ({ 'Ok': function () { _handleOk(false); }, 'Qualified Ok': function () { _handleOk(true); }, 'Cancel': function () { if (m._theForm) { m._isModified = m.getResult().isModified; } }, 'Before Show': function () { m._theForm && m._formData && m._isModified && _Uize_Dom_Form.setValues(m._formData) ; } }); }, instanceMethods:{ wireUi:function () { var m = this; if (!m.isWired) { /*** initialization ***/ var _theForm = m._theForm = m.getNode('form'); if (_theForm && !m._formData) m._formData = _Uize_Dom_Form.getValues(_theForm); _superclass.doMy (m,'wireUi'); } }, getResult:function () { var m = this, _formData = _Uize_Dom_Form.getValues(m._theForm) ; return {isModified:!Uize.Data.Compare.identical(m._formData, _formData), formData:_formData}; } }, stateProperties:{ _formData:{ name:'formData', value:null, onChange:function () { _Uize_Dom_Form.setValues(this._formData); } } } }); } });