- /**
- @module ember-flexberry
- */
-
- import Controller from '@ember/controller';
- import { inject as service} from '@ember/service';
-
- /**
- Controller for editing record modal window in OLV component.
-
- @class EditrecordDialog
- */
- export default Controller.extend({
- objectlistviewEvents: service(),
-
- /**
- Service for managing the state of the application.
-
- @property appState
- @type AppStateService
- */
- appState: service(),
-
- /**
- Service that triggers lookup events.
-
- @property lookupEventsService
- @type Service
- */
- lookupEventsService: service('lookup-events'),
-
- /**
- Editrecord modal dialog outlet name
-
- @property modalOutletName
- @type String
- @default 'editrecord-modal'
- */
- modalOutletName: 'editrecord-modal',
-
- /**
- Editrecord modal dialog outlet name for content
-
- @property modalContentOutletName
- @type String
- @default 'editrecord-modal-content'
- */
- modalContentOutletName: 'editrecord-modal-content',
-
- /**
- Current open a modal window.
-
- @property _openedModalDialog
- @type JQuery
- @private
- */
- _openedModalDialog: undefined,
-
- /**
- Size of Semantic-UI modal and his class.
- [More info](http://semantic-ui.com/modules/modal.html#size).
-
- Possible variants of size:
- - **small**
- - **large**
- - **fullscreen**
-
- @property sizeClass
- @type String
- @default 'editrecord-dialog'
- */
- sizeClass: 'editrecord-dialog',
-
- actions: {
- /**
- * Handles create modal window action.
- * It saves created window to have opportunity to close it later.
- *
- * @method createdModalDialog
- * @param {JQuery} modalDialog Created modal window.
- */
- createdModalDialog: function(modalDialog) {
- this.set('_openedModalDialog', modalDialog);
- this.get('objectlistviewEvents').editRecordDialogCreatedTrigger();
- this.get('appState').loading();
- this.get('lookupEventsService').on('lookupDialogOnHidden', this, this._refreshDimmer);
- },
-
- /**
- Handler for close editrecord modal dialog.
-
- @method actions.onEditRecordDialogClosing
- @public
- */
- onEditRecordDialogClosing: function() {
- this._closeModalDialog();
- },
-
- /**
- Handler for action after edit record dialog was closed.
-
- @method actions.onEditRecordDialogHidden
- @public
- */
- onEditRecordDialogHidden: function() {
- this._closeModalDialog();
- this.get('objectlistviewEvents').editRecordDialogHiddenTrigger();
- },
- },
-
- /**
- Close current modal window if it exists.
-
- @method _closeModalDialog
- @private
- */
- _closeModalDialog() {
- this.get('appState').reset();
- this.get('lookupEventsService').off('lookupDialogOnHidden', this, this._refreshDimmer);
- let openedDialog = this.get('_openedModalDialog');
- if (openedDialog) {
- openedDialog.modal('hide');
- this.set('_openedModalDialog', undefined);
- }
-
- let modalOutletName = this.get('modalOutletName');
-
- //close other opened modal windows
- this.send('removeModalDialog', { outlet: 'modal' });
-
- //close this modal window
- this.send('removeModalDialog', { outlet: modalOutletName });
- },
-
- /**
- Refresh dimmer for modal dialog.
-
- @method _refreshDimmer
- @private
- */
- _refreshDimmer() {
- let openedDialog = this.get('_openedModalDialog');
- if (openedDialog) {
- openedDialog.modal('show dimmer');
- }
- }
- });
-
-