Pman.Dialog.Companies.js
authorAlan Knowles <alan@roojs.com>
Wed, 12 Sep 2012 08:37:13 +0000 (16:37 +0800)
committerAlan Knowles <alan@roojs.com>
Wed, 12 Sep 2012 08:37:13 +0000 (16:37 +0800)
Pman.Dialog.Companies.js

index a81c3b6..831fbc3 100644 (file)
@@ -9,3 +9,491 @@ Pman.Dialog.Companies =   new Roo.util.Observable({
     }
 
 });
+//<script type="text/javascript">
+/*
+
+Pman.Dialog.Companies =   new Roo.util.Observable({
+    events : {
+        'beforerender' : true, // trigger so we can add modules later..
+        'show' : true, // trigger on showing form.. - to load additiona data..
+        'beforesave' : true
+    },
+    show : function (data, callback)
+    {
+        Pman.Dialog.CoreCompanies.show({id:data.id});
+    }
+   
+   dialog : false,
+   form : false,
+   callback: false,
+   create: function()
+   {
+       if (this.dialog) {
+           return;
+       }
+       
+       this.dialog = new Ext.LayoutDialog(Ext.get(document.body).createChild({tag:'div'}),  { 
+           autoCreated: true,
+           title: "Edit Companies",
+           modal: true,
+           width:  750,
+           height: 400,
+           shadow:true,
+           minWidth:200,
+           minHeight:180,
+           //proxyDrag: true,
+           collapsible : false,
+           closable: false,
+           draggable: false,
+           center: {
+               autoScroll:false,
+               titlebar: false,
+              // tabPosition: 'top',
+               hideTabs: true,
+               closeOnTab: true,
+               alwaysShowTabs: false
+           }
+       });
+       this.dialog.addKeyListener(27, this.dialog.hide, this.dialog);
+       this.dialog.addButton("Cancel", this.dialog.hide, this.dialog);
+      
+       this.dialog.addButton("Save", this.save, this);
+       this.layout = this.dialog.getLayout();
+       this.layout.beginUpdate();
+       
+       var _this = this;
+       
+       this.form = new Ext.form.Form({
+           labelWidth: 150 ,
+             
+           fileUpload : true,
+           listeners : {
+               actionfailed : function(f, act) {
+                   _this.dialog.el.unmask();
+                   // error msg???
+                   Pman.standardActionFailed(f,act);
+                             
+               },
+               actioncomplete: function(f, act) {
+                   _this.dialog.el.unmask();
+                   //console.log('load completed'); 
+                   // error messages?????
+                   
+                  
+                   if (act.type == 'load') {
+                       
+                       _this.data = act.result.data;
+                       var meth = _this.data.isOwner || !Pman.Login.isOwner() ? 'disable' : 'enable';
+                    
+                           
+                       if (_this.form.findField('comptype')) {
+                           _this.form.findField('comptype')[meth]();
+                       }
+                        
+                      // _this.loaded();
+                       return;
+                   }
+                   
+                   
+                   if (act.type == 'submit') { // only submitted here if we are 
+                       _this.dialog.hide();
+                      
+                       if (_this.callback) {
+                           _this.callback.call(this, act.result.data);
+                       }
+                       return; 
+                   }
+                   // unmask?? 
+               }
+           }
+       
+           
+           
+            
+       });
+       //?? will this work...
+       
+       this.form.addxtype.apply(this.form, this.getFormFields());
+        this.fireEvent('beforeRender', this );
+       
+       var ef = this.dialog.getLayout().getEl().createChild({tag: 'div'});
+       ef.dom.style.margin = 10;
+        
+       this.form.render(ef.dom);
+
+       var vp = this.dialog.getLayout().add('center', new Ext.ContentPanel(ef, {
+           autoCreate : true,
+           //title: 'Org Details',
+           //toolbar: this.tb,
+           width: 250,
+           maxWidth: 250,
+           fitToFrame:true
+       }));
+         
+       
+       
+       
+       this.layout.endUpdate();
+   },
+   show : function (data, callback)
+   {
+       this.callback = callback;
+       this._id = data.id ? data.id : 0;  // modify if you do not use ID !!!!
+       this.create();
+       this.data = data;
+       this.form.reset();
+       if (data._fetch) {
+           this.dialog.show();
+           this.dialog.el.mask("Loading");
+           this.form.doAction('load', {
+               url: baseURL + '/Roo/Companies.html',
+               method: 'GET',
+               params: {
+                   _id: this._id ,
+                   _ts : Math.random()
+               } 
+           });
+           this.fireEvent('show');
+           return;
+       } else {
+           this.form.setValues(data);
+       }
+       
+       
+       
+       this.dialog.show();
+       
+       if (data.isOwner || !Pman.Login.isOwner()) {
+           this.dialog.setTitle("Your Company Details");
+           if (this.form.findField('comptype')) {
+               this.form.findField('comptype').disable();
+           }
+           
+           
+           
+           
+       } else {
+           this.dialog.setTitle(data.id ? "Edit Company" : "Add Company");
+           if (this.form.findField('comptype')) {
+               this.form.findField('comptype').enable();
+           }
+       }
+       this.fireEvent('show');
+
+   },
+   
+   
+   save : function()
+   {
+       this.form.fileUpload = this.form.findField('imageUpload') ? true : false;
+       this.fireEvent('beforesave'); 
+       this.form.doAction('submit', {
+           url: baseURL + '/Roo/Companies.html',
+           method: 'POST',
+           params: {
+               _id: this._id ,
+               ts : Math.random()
+           } 
+       });
+   },
+   
+   comptypeList : function()
+   {
+       // should probably be system configurable..
+       return [
+           
+           [ 'CONSULTANT', "Consultant" ],
+           [ 'CLIENT'    ,  "Client" ],
+           [ 'CONTRACTOR' , "Contractor" ]
+         //  [ 'OWNER', "System Owner" ]
+        ];
+   },
+   comptypeListToString: function(v) {
+       if (!v.length) {
+           return '';
+       }
+       if (v== "OWNER") {
+           return "System Owner";
+       }
+       var a = this.comptypeList();
+       var ret = '';
+       Roo.each(a, function( ar) {
+           if (ar[0] == v) {
+               ret = ar[1];
+               return false;
+           }
+       });
+       return ret;
+       
+       
+       
+   },
+   
+   getFormFields : function() {
+       return [
+           {   
+               xtype : 'Column',
+               width: 500,
+               items: [
+                   this.c_code(),
+                   this.c_comptype_name(),
+                   this.c_name(),
+                   this.c_tel(),
+                   this.c_fax(),
+                   this.c_email(),
+                   
+                   
+                   this.c_address(),
+                   this.c_remarks()
+               ]
+           },
+           {   
+               xtype : 'Column',
+               width: 200,
+               labelAlign: 'top',
+               items : [
+                   this.c_background_color(),
+                   this.c_image_edit()
+                   //this.c_image_view(),
+                   //this.c_image_change(),
+               ]
+           },
+           this.c_isOwner(),
+           this.c_id()
+       ];
+   },
+   
+   
+   c_code : function() {
+       return {
+               name : 'code',
+               fieldLabel : "Company ID (for filing Ref.)",
+               value : '',
+               allowBlank : false,
+               qtip : "Enter code",
+               xtype : 'TextField',
+               width : 100
+           }
+   },
+   c_comptype_name : function() {
+       return {
+                       
+               fieldLabel : 'Type',
+               disabled : Pman.Login.isOwner() ? false : true,
+               name : 'comptype_name',
+               xtype : 'ComboBox',
+               allowBlank : false,
+                       qtip : 'Select Company type',
+               
+               width: 200,
+               xns : Roo.form,
+               
+               listWidth : 250,
+               
+              
+               store: {
+                   xtype : 'SimpleStore',
+                   fields: ['val', 'desc'],
+                   data : this.comptypeList()
+               },
+               displayField:'desc',
+               valueField: 'val',
+               hiddenName : 'comptype',
+               
+               typeAhead: false,
+               editable: false,
+               //mode: 'local',
+               triggerAction: 'all',
+               emptyText: "Select Type",
+               selectOnFocus: true
+               
+               
+          }
+   },
+   c_name : function() {
+       return {
+   
+               name : 'name',
+               fieldLabel : "Company Name",
+               value : '',
+               allowBlank : true,
+               qtip : "Enter Company Name",
+               xtype : 'TextField',
+               width : 300
+                   }
+   },
+   c_tel : function() {
+       return {
+   
+               name : 'tel',
+               fieldLabel : "Phone",
+               value : '',
+               allowBlank : true,
+               qtip : "Enter Phone Number",
+               xtype : 'TextField',
+               width : 300
+                   }
+   },
+   c_fax : function() {
+       return {
+   
+               name : 'fax',
+               fieldLabel : "fax",
+               value : '',
+               allowBlank : true,
+               qtip : "Enter fax Number",
+               xtype : 'TextField',
+               width : 300
+                   }
+   },
+   c_email : function() {
+       return {
+   
+               name : 'email',
+               fieldLabel : "Email",
+               value : '',
+               allowBlank : true,
+               qtip : "Enter Email Address",
+               xtype : 'TextField',
+               width : 300
+                   }
+   },
+   c_address : function() {
+       return {
+   
+               name : 'address',
+               fieldLabel : "Address",
+               value : '',
+               allowBlank : true,
+               qtip : "Enter Address",
+               xtype : 'TextArea',
+               height : 70,
+               width : 300
+       }
+   },
+   c_remarks : function() {
+       return {
+   
+               name : 'remarks',
+               fieldLabel : "Remarks",
+               value : '',
+               allowBlank : true,
+               qtip : "Enter remarks",
+               xtype : 'TextArea',
+               height : 40,
+               width : 300
+       }
+   },
+   c_background_color : function() {
+       return {
+                   xtype: 'ColorField',
+               name : 'background_color',
+               fieldLabel: "Background Colour"
+       }
+   },
+   c_image_view : function() {
+       var _this = this;
+       return {
+               xtype :  'FieldSetEx',
+               name : 'image-view',
+               collapseGroup : 'companies-image',
+               value: 0,
+               labelWidth: 100,
+               expanded: true,
+               style: 'width:420px;',
+               legend : "Logo Image",
+               items: [
+                   {
+                       xtype :  'DisplayImage', // image preview...
+                       name : 'logo_id',
+                       fieldLabel : 'Logo Image',
+                       width: 300,
+                       height: 50,
+                       renderer : function(v) {
+                           return v ?  String.format('<img src="{0}" height="{1}">', 
+                               baseURL + '/Images/' + v + '/' + _this.data.logo_id_filename, 
+                               Math.min(this.height, _this.data.logo_id_height)) : "No Image Attached";
+                           
+                       }
+                   }
+               ]
+               
+       }
+   },
+   c_image_edit : function() {
+       var _this = this;
+       return {
+                   name : 'logo_id',
+                   fieldLabel : "Logo Image",
+                   value : '',
+                   allowBlank : true,
+                   style: 'border: 1px solid #ccc;',
+                   xtype : 'DisplayImage',
+                   width : 170,
+                   height: 170,
+                   addTitle : "Change / Add Image",
+                   icon: Roo.rootURL + 'images/default/dd/drop-add.gif',
+                   handler : function() {
+                       var _t = this;
+                        
+                       Pman.Dialog.Image.show({
+                           onid :_this.data.id,
+                           ontable : 'Companies',
+                           imgtype : 'LOGO'
+                       }, function(data) {
+                           if  (data) {
+                               _t.setValue(data.id);
+                           }
+                           
+                       });
+                   }, 
+                   renderer : function(v) {
+                       //var vp = v ? v : 'Companies:' + _this.data.id + ':-LOGO';
+                       if (!v) {
+                           return "No Image Available" + '<BR/>';
+                       }
+                       return String.format('<img src="{0}" width="150">', 
+                               baseURL + '/Images/Thumb/150x150/' + v + '/logo.jpg'
+                       );
+                   }
+           
+           }  ;
+       
+   },
+   c_image_change: function() {
+       return { 
+               xtype :  'FieldSetEx',
+               collapseGroup : 'companies-image',
+               name : 'image-change',
+               value: 0,
+               labelWidth: 100,
+               expanded: false,
+               style: 'width:420px;',
+               legend : "Add / Change Image",
+               items : [ 
+                   {   
+                       xtype :  'TextField',
+                       name : 'imageUpload',
+                       fieldLabel : "Upload Image",
+                       inputType : 'file'
+                   }
+               ]
+       }
+   },
+   c_isOwner : function() {
+       return {                 
+               name : 'isOwner',
+               value : '',
+               xtype : 'Hidden'
+           }
+   },
+   c_id : function() {
+       return { 
+               name : 'id',
+               value : '',
+               xtype : 'Hidden'
+           }
+   }
+         
+});
+*/
\ No newline at end of file