Advertisement
Guest User

Untitled

a guest
Jul 8th, 2011
188
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. Ext.require([
  2.  
  3.     'Ext.form.*',
  4.     'Ext.grid.*',
  5.     'Ext.tree.*',
  6.     'Ext.data.*',
  7.     'Ext.util.*',
  8.     'Ext.window.MessageBox',
  9.         'Ext.tip.*',
  10.         'Ext.state.*'
  11.  
  12. ]);
  13.  
  14. Ext.onReady(function(){
  15.  
  16.     Ext.QuickTips.init();
  17.    
  18.    
  19.      function formatDate(value){
  20.    
  21.    
  22.         if ( value != '' ) {
  23.      
  24.             var dt = new Date(value);
  25.             var date = Ext.Date.dateFormat(dt, 'Y-m-d');
  26.            
  27.             return date;
  28.        } else {
  29.            
  30.            return '';
  31.        }
  32.      
  33.     }
  34.    
  35.    
  36.     var tabValue = new Array();
  37.     var saveneeded = false;
  38.     var indexsaveneed = 0;
  39.     var insertnew = true;
  40.    
  41.     getSortOrder = function(precedent,suivant){
  42.            
  43.             if ( precedent != undefined ){
  44.                 var dprec = precedent.data;
  45.             }
  46.             if ( suivant != undefined ) {
  47.                 var dnext = suivant.data;
  48.             }
  49.             var precorder = 0 ;
  50.             var nextorder = 0;
  51.             if ( dprec != undefined ) {
  52.                 Ext.Object.each(dprec,function(key,value,index){
  53.                    
  54.                         if (key == 'sort_order'){
  55.                            
  56.                             if(value.length > 0 ){
  57.                                 precorder = value;
  58.                                 return false;
  59.                             }else{
  60.                                 precorder = 0;
  61.                                 return false;
  62.                             }          
  63.                         }
  64.                        
  65.                 });
  66.             }
  67.            
  68.             if (dnext != undefined ){
  69.                 Ext.Object.each(dnext,function(key,value,index){
  70.                    
  71.                         if (key == 'sort_order'){
  72.                             if(value.length > 0 ){
  73.                                 nextorder = value;
  74.                                 return false;
  75.                             }else{
  76.                                 nextorder = 0;
  77.                                 return false;
  78.                             }
  79.                         }
  80.                        
  81.                 });
  82.                
  83.             }
  84.        
  85.             var sortorder = 10000;
  86.             if( precorder == 0 ){
  87.                 return sortorder;
  88.             } else if ( nextorder == 0 ) {
  89.                
  90.                 return (parseInt(precorder) + 1000);
  91.            
  92.             }else{
  93.                
  94.                 sortorder = (nextorder - precorder);
  95.                 sortorder = parseInt(precorder) + (sortorder / 2) ;
  96.                 return sortorder;
  97.             }
  98.            
  99.            
  100.            
  101.            
  102.            
  103.         },
  104.        
  105.        
  106.         getNodeId = function(node,type){
  107.             var idNext = 0 ;
  108.             Ext.Object.each(node,function(key, value, myself) {
  109.                    
  110.                 //  alert(Ext.Object.toQueryString(node));
  111.                    
  112.                     if (key === type) {
  113.                         Ext.Object.each(value,function(key, value, myself) {
  114.                     //      alert(Ext.Object.toQueryString(value));
  115.                         //  alert(' 2 ' + key + value);
  116.                                 if ( key == 'internalId'){
  117.                                     if ( value.length > 0 ) {
  118.                                         idNext = value;
  119.                                     }else{
  120.                                         idNext = 0;
  121.                                        
  122.                                     }
  123.                                 }
  124.                             });
  125.                     }
  126.                 });
  127.             return idNext;
  128.         },
  129.             genData2 = function(tab,view){
  130.            
  131.            
  132.                     //var ss = materialstore.findRecord('data','Training Day');
  133.             var final = view;
  134.             var couples = tab.split(';');
  135.             var size = couples.length;
  136.             for ( var i = 1 ; i < 6 ; i++ ) {
  137.                
  138.                 var keyvalue = couples[i].split(':');
  139.                 var ssize = keyvalue.length;
  140.                 for ( var z = 1; z < ssize ; z++) {
  141.                        
  142.                         if ( keyvalue[(ssize - 1)] != "" ){
  143.                             var value = keyvalue[(ssize - 1)];
  144.                             var test = keyvalue[0].concat('store');
  145.                             var prefix = "var c = keyvalue[0] + 'store';";
  146.                            
  147.                             ok=true;
  148.                                  
  149.                                 try{
  150.                                     eval(prefix)
  151.                                     eval(c)
  152.                                    
  153.                                 }
  154.                                 catch(err){
  155.                                     ok=false;
  156.                                 }
  157.                                
  158.                                
  159.                                 final +=  keyvalue[0];
  160.                                 final += ':'
  161.                                
  162.                                 if(ok == true){
  163.                                    
  164.                                    
  165.                                     var store = Ext.getStore(eval(c));
  166.                                    
  167.                                     var index = store.findRecord('data',value);
  168.                                     var modif = index.get('id');
  169.                                     if ( index != null ) {
  170.                                        
  171.                                         var rg = new RegExp(value,'gi');
  172.                                         tab = tab.replace(rg,modif);
  173.                                         var rep = '';
  174.                                        
  175.                                         final += keyvalue[1].replace(rg,modif);
  176.                                         if (  keyvalue[1] != '' ) {
  177.                                             final += ';';
  178.                                         }
  179.                                     }
  180.                                    
  181.                                 } else {
  182.                                    
  183.                                    
  184.                                     final += keyvalue[1];
  185.                                     final += ';';
  186.                                 }
  187.                        
  188.                             } else {
  189.                                
  190.                                 final +=  keyvalue[0];
  191.                                 final += ':'
  192.                                 final += keyvalue[1];
  193.                                 final += ';'
  194.                             }
  195.                 }
  196.                
  197.             }
  198.            
  199.             return final;
  200.             }
  201.            
  202.            
  203.         genParam = function(tab) {
  204.        
  205.            
  206.             var equal = new RegExp("=",'gi');
  207.             var newTab = tab.replace(equal,":");
  208.             var start  = "view_name:'im_timesheet_task_list_extjs';";
  209.             var view = "view_name:'im_timesheet_task_list_extjs';";
  210.             var et = new RegExp("&", 'gi');
  211.            
  212.             start += newTab;
  213.            
  214.             start += "";
  215.             var total = start.replace(et,";");
  216.            
  217.            
  218.            
  219.             total =  decodeURIComponent(total);
  220.             total = genData2(total,view);
  221.            
  222.             var mdlid = monPreeditgrid.getStore().getAt(0).get('id');
  223.            
  224.             var node = monPrestore.getNodeById(mdlid);
  225.            
  226.             total = total +'id:'+mdlid+ ';parentId:' + node.data.parentId + ';project_id' + ':' +  id;;
  227.            
  228.            
  229.             alert(total);
  230.             return total;
  231.         }
  232.        
  233.         genSaveNeedParam = function(tab,id) {
  234.        
  235.            
  236.             var equal = new RegExp("=",'gi');
  237.             var newTab = tab.replace(equal,":");
  238.             var start  = "view_name:'im_timesheet_task_list_extjs';";
  239.             var view = "view_name:'im_timesheet_task_list_extjs';";
  240.             var et = new RegExp("&", 'gi');
  241.            
  242.             start += newTab;
  243.            
  244.             start += "";
  245.             var total = start.replace(et,";");
  246.            
  247.            
  248.            
  249.             total =  decodeURIComponent(total);
  250.             total = genData2(total,view);
  251.            
  252.             var mdlid = monPreeditgrid.getStore().getAt(0).get('id');
  253.            
  254.             var node = monPrestore.getNodeById(mdlid);
  255.            
  256.             total = total +'id:'+id+ ';parentId:' + node.data.parentId + ';project_id' + ':' +  id;;
  257.            
  258.            
  259.             alert(total);
  260.             return total;
  261.         }
  262.         function showResult(btn){
  263.                        
  264.                         if (btn == 'yes') {
  265.                             var mdlexpanded = monPretree.getView().getSelectedRecords()[0];
  266.                             var nodeexpanded = monPrestore.getNodeById(mdlexpanded.get('id'));
  267.                            
  268.                             var idexpanded = nodeexpanded.parentNode.internalId;
  269.                            
  270.                                         var test = 0;
  271.                                        
  272.                                         var mm = monPrepanel.getValues();
  273.                                        
  274.                                         var arrayValue = Ext.Object.getValues(mm);
  275.                                         var tab = Ext.Object.toQueryString(mm);
  276.                                        
  277.                                        
  278.                                            
  279.                                            
  280.                                             Ext.Ajax.request({
  281.                                                
  282.                                                 url : 'update_task.tcl',
  283.                                                 method : 'POST',
  284.                                                 success: function (response){
  285.                                                    
  286.                                                     var text = response.responseText;
  287.                                                     monPretree.getStore().load();
  288.                                                    
  289.                                                    
  290.                                                 //  Ext.Msg.alert('success Updates ...', text);
  291.  
  292.                                                 },
  293.                                                 failure: function(response){
  294.                                                     var text = response.responseText;
  295.                                                     Ext.Msg.alert('failure Updates ...', text);
  296.                                                    
  297.                                                 },
  298.                                                 params : { param : genParam(tab) }
  299.                                                
  300.                                             });
  301.                                        
  302.                                    
  303.                         }
  304.             };
  305.    
  306.            
  307.  
  308.        
  309.         Ext.define('Task',
  310.             {
  311.                 extend : 'Ext.data.Model',
  312.                 fields : [ {name : 'task', type: 'string'} , {name : 'material', type: 'string'} , {name : 'start_date', type: 'string'} , {name : 'short_desc', type: 'string'} , {name : 'sort_order', type: 'string'} , {name : 'id', type: 'string'} ]
  313.         });
  314.        
  315.     Ext.define('Combox',
  316.             {
  317.                 extend : 'Ext.data.Model',
  318.                 fields : [ {name : 'id', type: 'int'} , {name : 'data', type: 'string'} ]
  319.         });
  320.    
  321.    
  322.                 var taskdefaultvalue = '';
  323.            
  324.    
  325.        
  326.         var materialstore = Ext.create('Ext.data.Store',{
  327.            
  328.                 //fields : [ 'id','data'],
  329.                 model :'Combox',
  330.                 data : [
  331.                 { "id" : "12270",
  332.                 "data" : "Basic Monthly Support Contract"}
  333.                  ,
  334.                 { "id" : "12261",
  335.                 "data" : "Business Analysis Hour"}
  336.                  ,
  337.                 { "id" : "12812",
  338.                 "data" : "Default"}
  339.                  ,
  340.                 { "id" : "12275",
  341.                 "data" : "Installation Day"}
  342.                  ,
  343.                 { "id" : "12274",
  344.                 "data" : "Installation Hour"}
  345.                  ,
  346.                 { "id" : "12260",
  347.                 "data" : "Java Development Hour"}
  348.                  ,
  349.                 { "id" : "12303",
  350.                 "data" : "Process Analysis Hour"}
  351.                  ,
  352.                 { "id" : "12264",
  353.                 "data" : "Project/Consulting -Base System-"}
  354.                  ,
  355.                 { "id" : "15276",
  356.                 "data" : "Project Management Hour"}
  357.                  ,
  358.                 { "id" : "12390",
  359.                 "data" : "Project Management Hour"}
  360.                  ,
  361.                 { "id" : "12263",
  362.                 "data" : "Project/Translation -Base System-"}
  363.                  ,
  364.                 { "id" : "12265",
  365.                 "data" : "Project/Translation Freelance Extension"}
  366.                  ,
  367.                 { "id" : "12266",
  368.                 "data" : "Project/Translation Quality Extension"}
  369.                  ,
  370.                 { "id" : "12271",
  371.                 "data" : "Silver Monthly Support Contract"}
  372.                  ,
  373.                 { "id" : "12262",
  374.                 "data" : "Software Design Hour"}
  375.                  ,
  376.                 { "id" : "12269",
  377.                 "data" : "Software Update Service"}
  378.                  ,
  379.                 { "id" : "15275",
  380.                 "data" : "Specification Development Hour"}
  381.                  ,
  382.                 { "id" : "12267",
  383.                 "data" : "Support Hour"}
  384.                  ,
  385.                 { "id" : "12256",
  386.                 "data" : "TCL Programming Hour"}
  387.                  ,
  388.                 { "id" : "12268",
  389.                 "data" : "Testing Hour"}
  390.                  ,
  391.                 { "id" : "12277",
  392.                 "data" : "Training Day"}
  393.                  ,
  394.                 { "id" : "12273",
  395.                 "data" : "Training Hour"}
  396.                  ,
  397.                 { "id" : "30818",
  398.                 "data" : "Translation Task"}
  399.                  ,
  400.                 { "id" : "15283",
  401.                 "data" : "Type3 Customization Hour"}
  402.                  ,
  403.                 { "id" : "15271",
  404.                 "data" : "Typo3 Installation Hour"}
  405.                  ,
  406.                 { "id" : "15269",
  407.                 "data" : "Web Design Hour"}
  408.                  ]
  409.                
  410.            
  411.            
  412.             });
  413.            
  414.        
  415.                
  416.             //  var materialdefaultvalue = 'default';
  417.             var dvalue = materialstore.findRecord('id',12812);
  418.             var data = dvalue.get('data')
  419.             var materialdefaultvalue = data;
  420.            
  421.                 var start_datedefaultvalue = '';
  422.            
  423.                 var short_descdefaultvalue = '';
  424.            
  425.                 var sort_orderdefaultvalue = '';
  426.            
  427.                 var iddefaultvalue = '';
  428.            
  429.    
  430.    
  431.      var monPrestore = Ext.create('Ext.data.TreeStore',{
  432.        
  433.         model : 'Task',
  434.         proxy : {
  435.             model : 'Task',
  436.             appendId: true,
  437.             type : 'ajax',
  438.             url : '/intranet-timesheet2-tasks-extjs/getJSON.tcl',
  439.             extraParams : {
  440.                
  441.                 user_id : '624',
  442.                 project_id : '32001'
  443.                
  444.             },
  445.            
  446.             reader : {
  447.                 type : 'json'
  448.                
  449.             },
  450.             writer : {
  451.                 type : 'json'
  452.                
  453.                
  454.                
  455.             }
  456.            
  457.         }
  458.        
  459.        
  460.    
  461.                
  462.      });
  463.      
  464.          var fieldmanda = new Object();
  465.    
  466.             fieldmanda["Short_desc"] = "Short_desc";
  467.              var cellEditing = Ext.create('Ext.grid.plugin.CellEditing', {
  468.         clicksToEdit: 1
  469.     });
  470.        
  471.         var monPreeditstore = Ext.create('Ext.data.Store', {
  472.    
  473.             //fields : [ {name : 'budgettype', type: 'string'} , {name : 'description', type: 'string'} , {name : 'costcenter', type: 'string'} , {name : 'material', type: 'string'} , {name : 'plannedunits', type: 'string'} , {name : 'uom', type: 'string'} , {name : 'amount', type: 'string'} , {name : 'company', type: 'string'} , {name : 'lineamount', type: 'string'} , {name : 'id', type: 'string'} ],
  474.             model : Task,
  475.             data:{
  476.                
  477.                 'items':
  478.                 []},
  479.                
  480.                 proxy: {
  481.                     type: 'memory',
  482.                     reader: {
  483.                         type: 'json',
  484.                         root: 'items'
  485.                     },
  486.                     writer : {
  487.                        
  488.                         type: 'json',
  489.                         root: 'items'
  490.                     }
  491.                 }
  492.         });
  493.    
  494.    
  495.            
  496.             var monPreeditgrid =  Ext.create('Ext.grid.Panel', {
  497.            
  498.                 store : monPreeditstore,
  499.                 plugins : [cellEditing],
  500.                 columns : [  {  
  501.                
  502.                     header : 'Task',
  503.                     dataIndex : 'task',
  504.                     id : 'Taskgridid',
  505.                    
  506.                      flex : 3,
  507.                
  508.                     field : {
  509.                        
  510.                         xtype : 'textfield',
  511.         anchor : '40%',
  512.          itemId: 'Task',
  513.                
  514.                          allowBlank : true
  515.                     }
  516.             }
  517.             , {  
  518.                
  519.                     header : 'Material',
  520.                     dataIndex : 'material',
  521.                     id : 'Materialgridid',
  522.                    
  523.                      flex : 2,
  524.                     field : {
  525.                        
  526.                         xtype : 'combobox',
  527.                 anchor : '35%',
  528.                 store : materialstore,
  529.                 itemId : 'Material',
  530.                 queryMode: 'local',
  531.                 displayField: 'data',
  532.                 width : 50,
  533.                 valueField: 'data',
  534.                 editable : false,
  535.                 clsm : 'my-combo-lst',
  536.                 grow : true,
  537.                 enforceMaxLength : true,
  538.                 listeners : {
  539.                    
  540.                     render : function(me){
  541.                      
  542.                         var obj = materialstore.findRecord('data',materialdefaultvalue);
  543.                         if ( obj != null ){
  544.                             me.setValue(obj.get('data'),obj);
  545.                         }
  546.                        
  547.                     }
  548.                    
  549.                 },
  550.                
  551.                          allowBlank : true
  552.                     }
  553.             }
  554.             , {  
  555.                
  556.                     header : 'Start Date',
  557.                     dataIndex : 'start_date',
  558.                     id : 'Start_Dategridid',
  559.                    
  560.                      flex : 2,
  561.                 xtype : 'datecolumn',
  562.                 format : 'Y-m-d',
  563.                 renderer: formatDate,
  564.                 //renderer: Ext.util.Format.dateRenderer('Y/m/d'),
  565.                
  566.                
  567.                
  568.                     field : {
  569.                        
  570.                         xtype : 'datefield',
  571.         anchor : '20%',
  572.        
  573.         itemId: 'Start_Date',
  574.         disabledDays : [0,6],
  575.         submitFormat : 'Y-m-d',
  576.         submitValue : false,
  577.         //format : 'Y/m/d',
  578.         format : 'Y-m-d',
  579.         editable: false,
  580.         value : '""',
  581.         listeners : {
  582.            
  583.             blur : function(me,opt){
  584.                
  585.                 //me.setValue(Ext.Date.parse(me.getValue(),'Y-m-d'));
  586.                 var date = me.getValue();
  587.                 alert(me.getValue());
  588.             }
  589.            
  590.         },
  591.        
  592.                          allowBlank : true
  593.                     }
  594.             }
  595.             , {  
  596.                
  597.                     header :  "Short_description  (<span class='icon_mandatory'>*</span>)",
  598.                     dataIndex : 'short_desc',
  599.                     id : 'Short_descgridid',
  600.                    
  601.                      flex : 2,
  602.                     field : {
  603.                        
  604.                         xtype : 'textfield',
  605.         anchor : '40%',
  606.          itemId: 'Short_desc',
  607.                
  608.                          allowBlank : false
  609.                     }
  610.             }
  611.             , {  
  612.                
  613.                     header : 'Sort Order',
  614.                     dataIndex : 'sort_order',
  615.                     id : 'sort_ordergridid',
  616.                    
  617.                      flex : 2,
  618.                     field : {
  619.                        
  620.                         xtype : 'textfield',
  621.         anchor : '40%',
  622.          itemId: 'sort_order',
  623.                
  624.                          allowBlank : true
  625.                     }
  626.             }
  627.             , {  
  628.                
  629.                     header : 'MESSAGE KEY MISSING: \'intranet-timesheet2-tasks-extjs.Id\'',
  630.                     dataIndex : 'id',
  631.                     id : 'Idgridid',
  632.                    
  633.                     hidden : true,  flex : 2,
  634.                     field : {
  635.                        
  636.                         xtype : 'hiddenfield',
  637.          itemId: 'Id',
  638.        
  639.        
  640.                          allowBlank : true
  641.                     }
  642.             }
  643.             ,],
  644.                  dockedItems: [{
  645.                      
  646.                     xtype: 'toolbar',
  647.                     dock: 'bottom',
  648.                     height : 22,
  649.                     items: [
  650.                     {
  651.                          
  652.                         xtype : 'button',
  653.                         id : 'treetbarbpmode',
  654.                         text : 'Mode : add Leaf',
  655.                         enableToggle : true,
  656.                         iconCls : 'tbar_leaf',
  657.                         scale : 'small',
  658.                         width : 170,
  659.                         toggleGroup : 'monGroup',
  660.                         listeners : {
  661.                             toggle : function(me,pressed){
  662.                                 if ( pressed == true ) {
  663.                                    
  664.                                     this.setText('Mode : add Sub_project');
  665.                                     this.setIconCls('tbar_subproject');
  666.                                 } else {
  667.                                     this.setText('Mode : add Leaf');
  668.                                     this.setIconCls('tbar_leaf');
  669.                                 }
  670.                                
  671.                                
  672.                                
  673.                             }
  674.                            
  675.                        
  676.                         }
  677.                     },
  678.                    
  679.                     '->',{
  680.                         xtype : 'button',
  681.                         id : 'updatebtn',
  682.                         text : 'update',
  683.                         scall : 'small',
  684.                         height : 20,
  685.                         iconCls : 'icon_submit',
  686.                         handler : function() {
  687.                            
  688.                            
  689.                         var mdlid = monPreeditgrid.getStore().getAt(0).get('id');
  690.                         //var node = monPrestore.getNodeById(mdlid);
  691.                         //var mdlexpanded = monPretree.getView().getSelectedRecords()[0];
  692.                         if ( mdlid != undefined ) {
  693.                             var nodeexpanded = monPrestore.getNodeById(mdlid);
  694.                        
  695.                             var idexpanded = nodeexpanded.parentNode.internalId;
  696.                             monPrestore.getProxy().extraParams = {
  697.                    
  698.                                     user_id : '624',
  699.                                     project_id : '32001',
  700.                                     expanded : idexpanded
  701.                             }
  702.                            
  703.                                            
  704.                                 var compt = 0;
  705.                                 var fielderror = new Array();
  706.                                
  707.                                 Ext.Object.each(monPreeditgrid.columns, function(key,value){
  708.                                         Ext.Object.each(value ,function(key,value){
  709.                                            
  710.                                                 if(key == 'field'){
  711.                                                    
  712.                                                     Ext.Object.each(value ,function(key,val){
  713.                                                    
  714.                                                        
  715.                                                     var record = monPreeditstore.getAt(0);
  716.                                                            
  717.                                                            
  718.                                                     if ( key == 'itemId') {
  719.                                                                
  720.                                                                
  721.                                                                 var nom = val.toLowerCase();
  722.                                                                 if ( fieldmanda[val] != undefined ) {
  723.                                                                    
  724.                                                                     if (record.get(nom) == '') {
  725.                                                                        
  726.                                                                         fielderror[compt] = fieldmanda[val];
  727.                                                                         compt++;
  728.                                                                     }
  729.                                                                 }
  730.                                                                
  731.                                                            
  732.                                                     }
  733.                                                        
  734.                                                        
  735.                                                     });
  736.                                                    
  737.                                                 }
  738.                                                
  739.                                             });
  740.                                            
  741.                                        
  742.                                    
  743.                                 });
  744.                                
  745.                                     var test = 0;
  746.                                    
  747.                                     //var mm = monPrepanel.getValues();
  748.                                     var mm = monPreeditgrid.getStore().getAt(0);
  749.                                    
  750.                                     var tab = Ext.Object.toQueryString(mm.data);
  751.                                    
  752.                                        
  753.                                         if (fielderror.length == 0 ){
  754.                                             Ext.Ajax.request({
  755.                                                
  756.                                                 url : 'update_task.tcl',
  757.                                                 method : 'GET',
  758.                                                 success: function (response){
  759.                                                    
  760.                                                     var text = response.responseText;
  761.                                                     monPretree.getStore().load();
  762.                                                     saveneeded = false;
  763.                                                     insertnew = true;
  764.                                                 //  Ext.Msg.alert('success Updates ...', text);
  765.  
  766.                                                 },
  767.                                                 failure: function(response){
  768.                                                     var text = response.responseText;
  769.                                                     Ext.Msg.alert('failure Updates ...', text);
  770.                                                    
  771.                                                 },
  772.                                                 params : { param : genParam(tab) , expanded : idexpanded }
  773.                                                
  774.                                             });
  775.                                    
  776.                                         } else {
  777.                                             var msg = 'Fields are mandatory : '.concat(fielderror.toString());
  778.                                             Ext.Msg.show({
  779.                                                  title:'Mandatory fields',
  780.                                                  msg: msg,
  781.                                                  buttons: Ext.Msg.OK,
  782.                                                  icon: Ext.Msg.WARNING
  783.                                             });
  784.                                         }
  785.                                 }
  786.                     }
  787.                     },'-',{
  788.                         xtype : 'button',
  789.                         text :  'delete',
  790.                         iconCls : 'icon_delete',
  791.                         id : 'deletebtn',
  792.                         scall : 'small',
  793.                         height : 20,
  794.                         handler : function() {
  795.                
  796.                             var mm = monPreeditgrid.getStore().getAt(0);
  797.                             var tab = Ext.Object.toQueryString(mm);
  798.                                    
  799.                            
  800.                                        
  801.                             if ( monPreeditgrid.getStore().getAt(0).get('id').charAt(0) != 'X' ){          
  802.                             Ext.Ajax.request({
  803.                                                
  804.                                                 url : 'task-delete.tcl',
  805.                                                 method : 'POST',
  806.                                                 success: function (response){
  807.                                                     var text = response.responseText;
  808.                                                     monPretree.getStore().load();
  809.                                                     saveneeded = false;
  810.                                                    
  811.                                                     //Ext.example.msg('success Deleting ...', text);
  812.                                                 //  Ext.Msg.alert('success Deleting ...', text);
  813.  
  814.                                                 },
  815.                                                 failure: function (response){
  816.                                                     var text = response.responseText;
  817.                                                    
  818.                                                     Ext.Msg.alert('failure Deleting ...', text);
  819.                                                    
  820.                                                     },
  821.                                                 params : { task_id :  monPreeditgrid.getStore().getAt(0).get('id') , project_id : 32001 , return_url : "" }
  822.                                            
  823.                                            
  824.                                                
  825.                                             });
  826.                                         } else {
  827.                                             if(monPreeditgrid.getStore().getAt(0).get('id').charAt(0) == 'X') {
  828.                                                
  829.                                                 var node = monPrestore.getNodeById(monPreeditgrid.getStore().getAt(0).get('id'));
  830.                                            
  831.                                                 node.remove(false);
  832.                                                 monPrestore.load();
  833.                                                
  834.                                             }
  835.                                         }
  836.                     }
  837.                
  838.                     }]
  839.                 }]
  840.  
  841.                
  842.                
  843.                
  844.                
  845.                
  846.             });
  847.             monPreeditgrid.on('edit',onvalidatEdit, this);
  848.            
  849.             function onvalidatEdit(editor,e,opt) {
  850.                 //alert(e.value + ' --- '+e.record.data);
  851.                
  852.                 Ext.Object.each(e.record.data,function(key,value){
  853.                    
  854.                         //alert( key + ' _ ' + value );
  855.                         if (key == e.column.dataIndex){
  856.                                
  857.                                 if ( value == e.value ) {
  858.                                     saveneeded = false;
  859.                                 } else if (e.value == '' ) {
  860.                                    
  861.                                     saveneeded = true;
  862.                                 } else {
  863.                                    
  864.                                     saveneeded = true;
  865.                                    
  866.                                 }
  867.                         }
  868.                 });
  869.                 var mdl = monPreeditgrid.getStore().getAt(0);
  870.                
  871.                 //  alert(Ext.Object.toQueryString(e));
  872.                 //var sel = monPretree.getView().getSelectedRecords();
  873.                 tabValue["e.column.dataIndex"] = mdl.get(e.column.dataIndex);
  874.                
  875.                 indexsaveneed = mdl.get('id');
  876.             //  saveneeded = true; 
  877.             }
  878.    
  879.        
  880.             var mesfields = new Array;
  881.            
  882.             var monPretree = Ext.create('Ext.tree.Panel',{
  883.                 id : 'treepanel',
  884.                 title : 'MESSAGE KEY MISSING: \'intranet-timesheet2-tasks-extjs.treetitle\'',
  885.                 width : 500,
  886.                 useArrows : true,
  887.                 autoScroll : true,
  888.                 singleExpand : false,
  889.                 store : monPrestore,
  890.                 enableDD : true,
  891.                 rootVisible : false,
  892.                
  893.                 viewConfig : {
  894.                     plugins : {
  895.                         ptype: 'treeviewdragdrop',    
  896.                          
  897.                        
  898.                     }
  899.                    
  900.                 },
  901.        
  902.                 listeners : {
  903.         beforeitemclick : function(me,model,item,index,e,opt){
  904.                    
  905.             var fielderror = new Array();
  906.                  if ( monPreeditgrid.getStore().getAt(0) != undefined ) {
  907.                      
  908.                     var mdl =   monPreeditgrid.getStore().getAt(0);
  909.                   }
  910.                
  911.                 if ( saveneeded == true ){
  912.                
  913.                     var node = monPrestore.getNodeById(indexsaveneed);
  914.                     var tab = Ext.Object.toQueryString(mdl.data);
  915.                     var id = mdl.get('id');
  916.                    
  917.                     function update_budget(btn){
  918.                            
  919.                             if ( btn == 'yes'){
  920.                                
  921.                                
  922.                                    
  923.                                 var compt = 0;
  924.                                
  925.                                 Ext.Object.each(monPreeditgrid.columns, function(key,value){
  926.                                         Ext.Object.each(value ,function(key,value){
  927.                                            
  928.                                                 if(key == 'field'){
  929.                                                
  930.                                                     Ext.Object.each(value ,function(key,val){
  931.                                                    
  932.                                                        
  933.                                                     var record = monPreeditstore.getAt(0);
  934.                                                            
  935.                                                            
  936.                                                     if ( key == 'itemId') {
  937.                                                             var nom = val.toLowerCase();
  938.                                                             if ( fieldmanda[val] != undefined ) {
  939.                                                                
  940.                                                                 if (record.get(nom) == '') {
  941.                                                                    
  942.                                                                     fielderrorsave[compt] = fieldmanda[val];
  943.                                                                     compt++;
  944.                                                                 }
  945.                                                             }
  946.                                                     }
  947.                                                        
  948.                                                        
  949.                                                     });
  950.                                                    
  951.                                                 }
  952.                                                
  953.                                             });
  954.                                            
  955.                                        
  956.                                    
  957.                                 });
  958.                                
  959.                            
  960.                                    
  961.                                 if ( fielderror.length > 0 ){
  962.                                    
  963.                                    
  964.                                    
  965.                                             var msg = 'Fields are mandatory : '.concat(fielderrorsave.toString());
  966.                                             Ext.Msg.show({
  967.                                                  title:'Mandatory fields',
  968.                                                  msg: msg,
  969.                                                  buttons: Ext.Msg.OK,
  970.                                                  icon: Ext.Msg.WARNING
  971.                                             });
  972.                                    
  973.                                    
  974.                                    
  975.                                    
  976.                                 } else {     
  977.                                    
  978.                                     Ext.Ajax.request({
  979.                                        
  980.                                         url : 'update_task.tcl',
  981.                                         method : 'GET',
  982.                                         success: function (response){
  983.                                            
  984.                                             var text = response.responseText;
  985.                                             monPretree.getStore().load();
  986.                                            
  987.                                             saveneeded = false;
  988.                                             insertnew = true;
  989.                                         },
  990.                                         failure: function(response){
  991.                                             var text = response.responseText;
  992.                                             Ext.Msg.alert('failure Updates ...', text);
  993.                                            
  994.                                         },
  995.                                         params : { param : genSaveNeedParam(tab,id) }
  996.                                        
  997.                                     });
  998.                                    
  999.                                    
  1000.                                 }
  1001.                                
  1002.                             }
  1003.                            
  1004.                         }
  1005.                        
  1006.                         Ext.Msg.show({
  1007.                                  title:'Save Changes?',
  1008.                                  msg: 'MESSAGE KEY MISSING: \'intranet-timesheet2-tasks-extjs.worksave\'',
  1009.                                  buttons: Ext.Msg.YESNO,
  1010.                                  fn : update_budget,
  1011.                                  icon: Ext.window.MessageBox.QUESTION
  1012.                         });
  1013.                        
  1014.                        
  1015.                         saveneeded = false;
  1016.             }
  1017.         },
  1018.        
  1019.    
  1020.            
  1021.         itemclick : function(a,model,c,index,e){
  1022.            
  1023.            
  1024.             monPreeditgrid.getView().refresh();
  1025.             if ( model instanceof Task ) {
  1026.                
  1027.                
  1028.                
  1029.                 var node = monPrestore.getNodeById(model.get('id'));
  1030.                
  1031.                 if (node.isLeaf() ){
  1032.                            
  1033.                     Ext.getCmp('updatebtn').setDisabled(false);
  1034.                     Ext.getCmp('deletebtn').setDisabled(false);
  1035.                     var i = 0;
  1036.             var Taskgrididcmp = Ext.getCmp('Taskgridid');
  1037.             //alert(Taskgrididcmp);
  1038.             if ( 'Y' == 'Y' ) {
  1039.                 if (mesfields[i] != undefined ) {
  1040.                     Ext.apply(Taskgrididcmp,{
  1041.                             field : mesfields[i]
  1042.                     });
  1043.                    
  1044.                 }
  1045.             } else {
  1046.                
  1047.                    
  1048.                     Ext.apply(Taskgrididcmp,{
  1049.                             field : ''
  1050.                     });
  1051.                    
  1052.                
  1053.                
  1054.             }
  1055.             i++;
  1056.        
  1057.             var Materialgrididcmp = Ext.getCmp('Materialgridid');
  1058.             //alert(Materialgrididcmp);
  1059.             if ( 'N' == 'Y' ) {
  1060.                 if (mesfields[i] != undefined ) {
  1061.                     Ext.apply(Materialgrididcmp,{
  1062.                             field : mesfields[i]
  1063.                     });
  1064.                    
  1065.                 }
  1066.             } else {
  1067.                
  1068.                    
  1069.                     Ext.apply(Materialgrididcmp,{
  1070.                             field : ''
  1071.                     });
  1072.                    
  1073.                
  1074.                
  1075.             }
  1076.             i++;
  1077.        
  1078.             var Start_Dategrididcmp = Ext.getCmp('Start_Dategridid');
  1079.             //alert(Start_Dategrididcmp);
  1080.             if ( 'Y' == 'Y' ) {
  1081.                 if (mesfields[i] != undefined ) {
  1082.                     Ext.apply(Start_Dategrididcmp,{
  1083.                             field : mesfields[i]
  1084.                     });
  1085.                    
  1086.                 }
  1087.             } else {
  1088.                
  1089.                    
  1090.                     Ext.apply(Start_Dategrididcmp,{
  1091.                             field : ''
  1092.                     });
  1093.                    
  1094.                
  1095.                
  1096.             }
  1097.             i++;
  1098.        
  1099.             var Short_descgrididcmp = Ext.getCmp('Short_descgridid');
  1100.             //alert(Short_descgrididcmp);
  1101.             if ( 'Y' == 'Y' ) {
  1102.                 if (mesfields[i] != undefined ) {
  1103.                     Ext.apply(Short_descgrididcmp,{
  1104.                             field : mesfields[i]
  1105.                     });
  1106.                    
  1107.                 }
  1108.             } else {
  1109.                
  1110.                    
  1111.                     Ext.apply(Short_descgrididcmp,{
  1112.                             field : ''
  1113.                     });
  1114.                    
  1115.                
  1116.                
  1117.             }
  1118.             i++;
  1119.        
  1120.             var sort_ordergrididcmp = Ext.getCmp('sort_ordergridid');
  1121.             //alert(sort_ordergrididcmp);
  1122.             if ( 'Y' == 'Y' ) {
  1123.                 if (mesfields[i] != undefined ) {
  1124.                     Ext.apply(sort_ordergrididcmp,{
  1125.                             field : mesfields[i]
  1126.                     });
  1127.                    
  1128.                 }
  1129.             } else {
  1130.                
  1131.                    
  1132.                     Ext.apply(sort_ordergrididcmp,{
  1133.                             field : ''
  1134.                     });
  1135.                    
  1136.                
  1137.                
  1138.             }
  1139.             i++;
  1140.        
  1141.             var Idgrididcmp = Ext.getCmp('Idgridid');
  1142.             //alert(Idgrididcmp);
  1143.             if ( 'N' == 'Y' ) {
  1144.                 if (mesfields[i] != undefined ) {
  1145.                     Ext.apply(Idgrididcmp,{
  1146.                             field : mesfields[i]
  1147.                     });
  1148.                    
  1149.                 }
  1150.             } else {
  1151.                
  1152.                    
  1153.                     Ext.apply(Idgrididcmp,{
  1154.                             field : ''
  1155.                     });
  1156.                    
  1157.                
  1158.                
  1159.             }
  1160.             i++;
  1161.        
  1162.                     monPreeditstore.removeAll(false);
  1163.                     monPreeditstore.insert(0,model);
  1164.                     //PROJECT
  1165.                 } else {
  1166.                    
  1167.                     Ext.getCmp('updatebtn').setDisabled(true);
  1168.                     Ext.getCmp('deletebtn').setDisabled(true);
  1169.                    
  1170.                     monPreeditstore.removeAll(false);
  1171.                     monPreeditstore.insert(0,model);
  1172.                 }
  1173.            
  1174.             }
  1175.            
  1176.         },
  1177.        
  1178.        
  1179.         itemdblclick : function(view, model, htmlitem, index, e )
  1180.         {
  1181.            
  1182.             if ( insertnew == true ) {                     
  1183.                 var cmp = Ext.getCmp('treetbarbpmode');
  1184.                                        
  1185.                 var node = monPrestore.getNodeById(model.get('id'));
  1186.                 var papa = node.parentNode;
  1187.                    
  1188.                 var idparent = 'X'+papa.internalId;
  1189.                 var mdata = papa.data;
  1190.                 var sdate = 0 ;
  1191.                 Ext.Object.each(mdata, function(key, value, myself) {
  1192.                        
  1193.                    
  1194.                         if (key === 'start_date') {
  1195.                            
  1196.                             sdate = value;
  1197.                             return false; // stop the iteration
  1198.                         }
  1199.                     });
  1200.        
  1201.                
  1202.                 //If mode => SUB PROJECT ( Bpn pressed )
  1203.                 if ( cmp.pressed == true ){
  1204.                     //Add Sub Project :
  1205.                     var project = {task: taskdefaultvalue,material: materialdefaultvalue,start_date: sdate,short_desc: short_descdefaultvalue,sort_order: sort_orderdefaultvalue,id: idparent,children : []
  1206.     };
  1207.                     var rechild = papa.insertBefore(project,node);
  1208.                                    
  1209.                    
  1210.                 } else {
  1211.                    
  1212.                     var child = {task: taskdefaultvalue,
  1213. material: materialdefaultvalue,
  1214. start_date: sdate,
  1215. short_desc: short_descdefaultvalue,
  1216. sort_order: sort_orderdefaultvalue,
  1217. id: idparent,
  1218. leaf : true};
  1219.                     var rechild = papa.insertBefore(child,node);
  1220.                 }
  1221.                 if ( node.getDepth() != 1 ) {
  1222.                    
  1223.                        
  1224.                        
  1225.                         var idNext = getNodeId(node,'nextSibling');
  1226.  
  1227.                        
  1228.                         var nodeNext = monPrestore.getNodeById(idNext);
  1229.                         var sortorder = getSortOrder(node,nodeNext);
  1230.                        
  1231.                         rechild.data.sort_order = sortorder;
  1232.                         var renode = papa.replaceChild(rechild,node);
  1233.                         papa.insertBefore(renode,rechild);
  1234.                         monPretree.getView().getSelectionModel().select(rechild);
  1235.                         monPretree.fireEvent('itemclick',monPretree.getView(),rechild);
  1236.                
  1237.                    
  1238.                 } else {   
  1239.                    
  1240.                     var rechild = node.appendChild(rechild);
  1241.                     rechild.data.sort_order = 10000;
  1242.                     monPretree.getView().refresh();
  1243.                     monPretree.getView().getSelectionModel().select(rechild);
  1244.                     monPretree.fireEvent('itemclick',monPretree.getView(),rechild);
  1245.                    
  1246.                 }
  1247.                 insertnew = false;
  1248.             }
  1249.         }
  1250.         },
  1251.                 columns : [ {
  1252.                 xtype : 'treecolumn',
  1253.                 flex :3,
  1254.                 text : 'Task',
  1255.                
  1256.                 width : 100,
  1257.                
  1258.                 dataIndex :  'task',
  1259.                 sortable : true
  1260.                
  1261.                
  1262.             } , {
  1263.                
  1264.                     flex : 2,
  1265.                  
  1266.                 text : 'Material',
  1267.                
  1268.                 width : 100,
  1269.                
  1270.                 dataIndex :  'material',
  1271.                 sortable : true
  1272.                
  1273.                
  1274.             } , {
  1275.                
  1276.                     flex : 2,
  1277.                  
  1278.                 text : 'Start Date',
  1279.                
  1280.                 width : 100,
  1281.                
  1282.                 dataIndex :  'start_date',
  1283.                 sortable : true
  1284.                
  1285.                
  1286.             } , {
  1287.                
  1288.                     flex : 2,
  1289.                  
  1290.                 text : 'Short_description',
  1291.                
  1292.                 width : 100,
  1293.                
  1294.                 dataIndex :  'short_desc',
  1295.                 sortable : true
  1296.                
  1297.                
  1298.             } , {
  1299.                
  1300.                     flex : 2,
  1301.                  
  1302.                 text : 'Sort Order',
  1303.                
  1304.                 width : 100,
  1305.                
  1306.                 dataIndex :  'sort_order',
  1307.                 sortable : true
  1308.                
  1309.                
  1310.             } , {
  1311.                
  1312.                     flex : 2,
  1313.                  hidden : true,
  1314.                     align : 'right',
  1315.                
  1316.                 text : 'MESSAGE KEY MISSING: \'intranet-timesheet2-tasks-extjs.Id\'',
  1317.                
  1318.                 width : 100,
  1319.                
  1320.                 dataIndex :  'id',
  1321.                 sortable : true
  1322.                
  1323.                
  1324.             } , ]
  1325.                
  1326.                
  1327.                 });
  1328.         monPretree.getView().on('drop',function( node, data, overModel, dropPosition,  options ){
  1329.            
  1330.             var node = '';
  1331.             Ext.Array.each(data.records, function(name, index, countriesItSelf) {
  1332.                
  1333.                    
  1334.                     node = monPrestore.getNodeById(name.internalId);   
  1335.             });
  1336.    
  1337.             if ( node != undefined) {
  1338.              var papaid = getNodeId(node,'parentNode');
  1339.              var nextid = getNodeId(node,'nextSibling');
  1340.              var previd = getNodeId(node,'previousSibling');
  1341.  
  1342.            
  1343.              var mdl = monPreeditgrid.getStore().getAt(0);
  1344.             if ( mdl != undefined ) {
  1345.              var nodenxt = monPrestore.getNodeById(nextid);
  1346.              var nodesvt = monPrestore.getNodeById(previd);
  1347.              
  1348.              var sortorder = getSortOrder(nodesvt,nodenxt);
  1349.              
  1350.              node.data.sort_order = sortorder;
  1351.              node.data.parentId = papaid;
  1352.              var ndata = node.data;
  1353.                                
  1354.                                    
  1355.                                    
  1356.             var node = monPrestore.getNodeById(indexsaveneed);
  1357.             var tab = Ext.Object.toQueryString(mdl.data);
  1358.            
  1359.            
  1360.             alert(genParam(tab));
  1361.            
  1362.            
  1363.             Ext.Ajax.request({
  1364.            
  1365.             url : 'update_task.tcl',
  1366.             method : 'GET',
  1367.             success: function (response){
  1368.                
  1369.                 var text = response.responseText;
  1370.                 //monPretree.getStore().load();
  1371.                
  1372.                 saveneeded = false;
  1373.                 //Ext.Msg.alert('success Updates ...', text);
  1374.  
  1375.             },
  1376.             failure: function(response){
  1377.                 var text = response.responseText;
  1378.                 Ext.Msg.alert('failure Updates ...', text);
  1379.                
  1380.             },
  1381.             params : { param : genParam(tab) }
  1382.            
  1383.         });
  1384.                             }
  1385.                         }
  1386.        
  1387.         });
  1388.         monPretree.getView().refresh();
  1389.        
  1390.        
  1391.         var mainPan = Ext.create('Ext.form.Panel',{
  1392.            
  1393.                 title : 'MESSAGE KEY MISSING: \'intranet-timesheet2-tasks-extjs.title\'',
  1394.                
  1395.                 resizable : true,
  1396.                 height : 800,
  1397.                 width : 1200,
  1398.                 layout : {
  1399.                     type : 'anchor'
  1400.                 },
  1401.                 items : [
  1402.                    
  1403.                     {
  1404.                         anchor : '100% 13%',
  1405.                         layout : 'fit',
  1406.                         split : true,
  1407.                         items : [monPreeditgrid]
  1408.                        
  1409.                     },
  1410.                     {
  1411.                        
  1412.                         anchor : '100% 80%',
  1413.                         //margin : '0 0 3 0',
  1414.                        
  1415.                         layout : 'fit',
  1416.                         split : true,
  1417.                         items : [monPretree]
  1418.                        
  1419.                     }
  1420.                
  1421.                 ],
  1422.             renderTo : 'mongrid'   
  1423.         });
  1424.    
  1425.    
  1426.  
  1427. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement