openrat-cms

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs | README

dialog.min.js (2097B)


      1 import $ from "../jquery-global.min.js";
      2 import View from './view.min.js';
      3 import Notice from "./notice.min.js";
      4 import Workbench from "./workbench.min.js";
      5 import WorkbenchNavigator from "./navigator.min.js";
      6 export default class Dialog {
      7 constructor() {
      8 this.view;
      9 this.element = $('.or-dialog-content .or-view');
     10 }
     11 set isDirty( dirty ) {
     12 if   ( dirty )
     13 this.element.addClass('view--is-dirty');
     14 else
     15 this.element.removeClass('view--is-dirty');
     16 }
     17 get isDirty() {
     18 return this.element.hasClass('view--is-dirty');
     19 }
     20 start( name,action,method,id,params )
     21 {
     22 if (!action)
     23 action =  Workbench.state.action;
     24 if  (!id)
     25 id =  Workbench.state.id;
     26 let dialog = this;
     27 let view = new View( action,method,id,params );
     28 Notice.removeAllNotices();
     29 $('.or-dialog-content .or-view').html(''); 
     30 $('.or-dialog-content .or-act-dialog-name').html( name );
     31 this.show();
     32 view.onCloseHandler.add( function() {
     33 dialog.back();
     34 } );
     35 view.onChangeHandler.add( function() {
     36 console.debug("Changes detected");
     37 dialog.isDirty = true;
     38 });
     39 view.onSaveHandler.add( function() {
     40 dialog.isDirty = false;
     41 });
     42 this.view = view;
     43 Workbench.getInstance().startSpinner();
     44 let viewPromise = this.view.start( this.element );
     45 viewPromise.then(
     46 () => Workbench.getInstance().stopSpinner()
     47 );
     48 return viewPromise;
     49 }
     50 show() {
     51 WorkbenchNavigator.navigateToNew( Workbench.state );
     52 $('.or-dialog').removeClass('dialog--is-closed').addClass('dialog--is-open');
     53 if   ( this.isDirty ) {
     54 this.element.addClass('view--is-dirty');
     55 }
     56 }
     57 back() {
     58 console.debug("Back from dialog");
     59 history.back();
     60 }
     61 hide() {
     62 $('.or-dialog').removeClass('dialog--is-open').addClass('dialog--is-closed'); 
     63 }
     64 close() {
     65 let dialog = this;
     66 if   ( this.isDirty ) {
     67 //	return; 
     68 let notice = new Notice();
     69 notice.msg = Workbench.language.REOPEN_CLOSED_DIALOG;
     70 notice.setStatus( 'warning' );
     71 notice.timeout = 120;
     72 notice.onClick.add( function() {
     73 Workbench.dialog = dialog;
     74 dialog.show();
     75 notice.close();
     76 });
     77 notice.show();
     78 }
     79 $('.or-dialog-content .or-view.or-view--is-dirty').removeClass('view--is-dirty');
     80 this.hide();
     81 //$(document).unbind('keyup',this.escapeKeyClosingHandler); 
     82 }
     83 }