DataObjects/Core_watch.php
[Pman.Core] / Pman.Dialog.CoreNotifyRecur.js
index 243a860..fb12481 100644 (file)
@@ -30,7 +30,13 @@ Pman.Dialog.CoreNotifyRecur = {
         this.dialog = Roo.factory({
             xtype: 'LayoutDialog',
             xns: Roo,
-            height : 500,
+            listeners : {
+                show : function (_self)
+                {
+                    _this.grid.ds.load({});
+                }
+            },
+            height : 550,
             modal : true,
             resizable : false,
             title : "Modify Recurrent Notifications",
@@ -62,7 +68,7 @@ Pman.Dialog.CoreNotifyRecur = {
                                 _this.grid = this; 
                                 //_this.dialog = Pman.Dialog.FILL_IN
                                 if (_this.panel.active) {
-                                   this.footer.onClick('first');
+                                //   this.footer.onClick('first');
                                 }
                             },
                             rowdblclick : function (_self, rowIndex, e)
@@ -86,17 +92,23 @@ Pman.Dialog.CoreNotifyRecur = {
                             listeners : {
                                 update : function (_self, record, operation)
                                 {
-                                    Roo.log(operation);
+                                    //Roo.log(operation);
                                     if (operation != 'commit') {
                                         return;
                                     }
+                                    var p = Roo.apply({}, record.data);
+                                    p.dtstart = record.data.dtstart.format('Y-m-d');
+                                    p.dtend = record.data.dtend.format('Y-m-d');    
+                                    
+                                    
                                     new Pman.Request({
                                         url : baseURL + '/Roo/Core_notify_recur',
                                         method :'POST',
-                                        params : record.data,
-                                        success : function()
+                                        params : p,
+                                        success : function(data)
                                         {
-                                            //??
+                                            //Roo.log(data);
+                                            record.set('id', data.data.id);
                                         },
                                         failure : function() {
                                             Roo.MessageBox.alert("Error", "There was a problem saving");
@@ -111,7 +123,7 @@ Pman.Dialog.CoreNotifyRecur = {
                                     if (!_this.data) {
                                         return false;
                                     }
-                                    o.params =  Roo.apply(o.params, {
+                                    o.params =  Roo.apply(o.params || {}, {
                                         person_id : _this.data.person_id,
                                         onid : _this.data.onid,
                                         ontable : _this.data.ontable,
@@ -185,14 +197,6 @@ Pman.Dialog.CoreNotifyRecur = {
                                 ]
                             }
                         },
-                        footer : {
-                            xtype: 'PagingToolbar',
-                            xns: Roo,
-                            pageSize : 25,
-                            displayInfo : true,
-                            displayMsg : "Displaying core_notify_recur{0} - {1} of {2}",
-                            emptyMsg : "No core_notify_recur found"
-                        },
                         toolbar : {
                             xtype: 'Toolbar',
                             xns: Roo,
@@ -207,12 +211,16 @@ Pman.Dialog.CoreNotifyRecur = {
                                             var r = grid.getDataSource().reader.newRow({
                                             // defaults..
                                                 person_id : _this.data.person_id,
-                                                dtstart : new Date(0),
+                                                dtstart : new Date(),
                                                 dtend : Date.parseDate('2050-01-01', 'Y-m-d'),
-                                                tz : 'Asia/Hong Kong',
+                                                tz : 'Asia/Hong_Kong',
                                                 onid : _this.data.onid,
                                                 ontable : _this.data.ontable,
-                                                method : _this.data.method,
+                                                method : _this.data.method, // default...
+                                                
+                                                method_id : _this.data.method_id, // default...
+                                                method_id_display_name : _this.data.method_id_display_name, // default...        
+                                                
                                                 last_event_id : 0,
                                                 freq_day_name : '',
                                                 freq_hour_name : '',
@@ -238,19 +246,102 @@ Pman.Dialog.CoreNotifyRecur = {
                                 {
                                     xtype: 'Button',
                                     xns: Roo.Toolbar,
-                                    text : "Delete",
-                                    cls : 'x-btn-text-icon',
-                                    icon : rootURL + '/Pman/templates/images/trash.gif',
                                     listeners : {
                                         click : function()
                                         {
-                                             Pman.genericDelete(_this, 'core_notify_recur'); 
+                                             _this.grid.stopEditing();
+                                             var s = _this.grid.selModel.getSelectedCell();
+                                             if (!s) {
+                                                Roo.MessageBox.alert("Error", "Select row");
+                                                return;
+                                            }
+                                            
+                                            new Pman.Request({
+                                                url : baseURL + '/Roo/core_notify_recur',
+                                                method : 'POST',
+                                                params : {
+                                                    _delete : _this.grid.ds.getAt(s[0]).data.id
+                                                }, 
+                                                success : function() {
+                                                    _this.grid.ds.load({});
+                                                },
+                                                failure : function() {
+                                                    Roo.MessageBox.alert("Error", "Deleting failed - try reloading");
+                                                }
+                                           });
+                                            
                                         }
-                                    }
+                                    },
+                                    cls : 'x-btn-text-icon',
+                                    text : "Delete",
+                                    icon : rootURL + '/Pman/templates/images/trash.gif'
                                 }
                             ]
                         },
                         colModel : [
+                            {
+                                xtype: 'ColumnModel',
+                                xns: Roo.grid,
+                                dataIndex : 'method_id',
+                                header : 'Type',
+                                width : 120,
+                                renderer : function(v,x,r) {
+                                     return String.format('{0}', r.data.method_id_display_name); 
+                                },
+                                editor : {
+                                    xtype: 'GridEditor',
+                                    xns: Roo.grid,
+                                    field : {
+                                        xtype: 'ComboBox',
+                                        xns: Roo.form,
+                                        allowBlank : 'false',
+                                        displayField : 'display_name',
+                                        editable : false,
+                                        emptyText : "Select Type",
+                                        fieldLabel : 'core_enum',
+                                        forceSelection : true,
+                                        hiddenName : 'method_id',
+                                        listWidth : 400,
+                                        loadingText : "Searching...",
+                                        name : 'method_id_display_name',
+                                        pageSize : 20,
+                                        qtip : "Select core_enum",
+                                        selectOnFocus : true,
+                                        tpl : '<div class="x-grid-cell-text x-btn button"><b>{display_name}</b> </div>',
+                                        triggerAction : 'all',
+                                        typeAhead : true,
+                                        valueField : 'id',
+                                        width : 300,
+                                        store : {
+                                            xtype: 'Store',
+                                            xns: Roo.data,
+                                            listeners : {
+                                                beforeload : function (_self, o){
+                                                    o.params = o.params || {};
+                                                    // set more here
+                                                    o.params.etype = 'core_notify_recur';
+                                                }
+                                            },
+                                            remoteSort : true,
+                                            sortInfo : { direction : 'ASC', field: 'id' },
+                                            proxy : {
+                                                xtype: 'HttpProxy',
+                                                xns: Roo.data,
+                                                method : 'GET',
+                                                url : baseURL + '/Roo/core_enum.php'
+                                            },
+                                            reader : {
+                                                xtype: 'JsonReader',
+                                                xns: Roo.data,
+                                                id : 'id',
+                                                root : 'data',
+                                                totalProperty : 'total',
+                                                fields : [{"name":"id","type":"int"},{"name":"etype","type":"string"}]
+                                            }
+                                        }
+                                    }
+                                }
+                            },
                             {
                                 xtype: 'ColumnModel',
                                 xns: Roo.grid,
@@ -291,6 +382,30 @@ Pman.Dialog.CoreNotifyRecur = {
                                 width : 100,
                                 renderer : function(v,x,r) { 
                                     
+                                    if (v.length) {
+                                     
+                                        var cm = _this.grid.colModel;
+                                       
+                                        var ci = cm.getColumnByDataIndex(this.name);
+                                       
+                                         var tv = [];
+                                        var vals = Roo.decode(v);
+                                        Roo.each(vals, function(k) {
+                                            var r = this.findRecord(this.valueField, k);
+                                            if(r){
+                                                tv.push(r.data[this.displayField]);
+                                            }else if(this.valueNotFoundText !== undefined){
+                                                tv.push( this.valueNotFoundText );
+                                            }
+                                        },ci.editor.field);
+                                
+                                        r.data[this.name + '_name'] = tv.join(', ');
+                                        return String.format('{0}',tv.join(', '));
+                                
+                                        
+                                    
+                                    }
+                                    r.data[this.name + '_name'] = '';
                                     return String.format('{0}', r.data.freq_day_name || v); 
                                     
                                 },
@@ -335,6 +450,31 @@ Pman.Dialog.CoreNotifyRecur = {
                                 width : 250,
                                 renderer : function(v,x,r) { 
                                     
+                                 
+                                    if (v.length) {
+                                     
+                                        var cm = _this.grid.colModel;
+                                       
+                                        var ci = cm.getColumnByDataIndex(this.name);
+                                       
+                                         var tv = [];
+                                        var vals = Roo.decode(v);
+                                        Roo.each(vals, function(k) {
+                                            var r = this.findRecord(this.valueField, k);
+                                            if(r){
+                                                tv.push(r.data[this.displayField]);
+                                            }else if(this.valueNotFoundText !== undefined){
+                                                tv.push( this.valueNotFoundText );
+                                            }
+                                        },ci.editor.field);
+                                
+                                         r.data[this.name + '_name'] = tv.join(', ');
+                                        return String.format('{0}',tv.join(', '));
+                                
+                                        
+                                    
+                                    }
+                                        r.data[this.name + '_name'] = '';
                                     return String.format('{0}', r.data.freq_hour_name || v); 
                                     
                                 },
@@ -366,7 +506,7 @@ Pman.Dialog.CoreNotifyRecur = {
                                                     var dh = i < 13 ? i : i-12;
                                                     
                                                     ret.push([ h+':00', dh+':00' + mer ]);
-                                                    ret.push([ h+':00', dh+':30' + mer ]);        
+                                                    ret.push([ h+':30', dh+':30' + mer ]);        
                                                 }
                                                 return ret;
                                             })(),
@@ -395,11 +535,10 @@ Pman.Dialog.CoreNotifyRecur = {
                                         emptyText : "Select timezone",
                                         fieldLabel : 'core_enum',
                                         forceSelection : true,
-                                        hiddenName : 'tz',
                                         listWidth : 400,
                                         loadingText : "Searching...",
                                         minChars : 2,
-                                        name : 'tz_name',
+                                        name : 'tz',
                                         pageSize : 999,
                                         qtip : "Select timezone",
                                         queryParam : 'q',
@@ -407,7 +546,6 @@ Pman.Dialog.CoreNotifyRecur = {
                                         tpl : '<div class="x-grid-cell-text x-btn button"><b>{tz}</b> </div>',
                                         triggerAction : 'all',
                                         typeAhead : true,
-                                        valueField : 'tz',
                                         width : 300,
                                         store : {
                                             xtype: 'Store',
@@ -441,10 +579,10 @@ Pman.Dialog.CoreNotifyRecur = {
                             {
                                 xtype: 'ColumnModel',
                                 xns: Roo.grid,
-                                header : 'Last event',
-                                width : 75,
                                 dataIndex : 'last_event_id',
-                                renderer : function(v) { return String.format('{0}', v); }
+                                header : 'Last Sent',
+                                width : 75,
+                                renderer : function(v) { return String.format('{0}', v ? v : 'never'); }
                             }
                         ]
                     }
@@ -460,6 +598,12 @@ Pman.Dialog.CoreNotifyRecur = {
                 {
                     xtype: 'Button',
                     xns: Roo,
+                    listeners : {
+                        click : function (_self, e)
+                        {
+                            _this.dialog.hide();
+                        }
+                    },
                     text : "Done"
                 }
             ]