如何从网格EXTJS6中的时域组合中获得价值?

时间:2017-06-22 15:04:18

标签: extjs grid

在EXTJS6中有一个网格,可以将工作时间延长一周。所有这些时间都属于时区类型,由早晨,下午,下午,下午分开。

应添加所有小时数并与总工作时间进行比较(如果是,则在标签中显示为YES,否则,表示“否”)。当我添加一个新的默认值行(8:30,13:00,15:00,19:00)时,此复杂工作正常,但存在我需要逐个编辑每个单元格并再次检查总和之后的时刻。

sum算法以这种方式工作:当我单击按钮o添加日期时,创建一个具有默认值的新行并添加到网格计数+1,然后将数组中的所有小时值与cicle相加并检查总数小时值。

当我单击一个单元格(timefieldtype)并编辑该值时,问题就出现了。此值将更改,并在我单击添加日期按钮时添加到总计,但不会在更改的时刻添加。出于这个原因,我想获取单元格时域值以使其他策略值运行此值,换句话说,使用新值操作时域中的旧值。

如何获取单元格中的旧时域值?。

网格图片:enter image description here

这是在网格的时间域组合中单击时监听的视图控制器方法。

 onTimefieldSelect: function(combo, record, eOpts) {
    var value = new Date(combo.getValue());

    hora = value.getHours();
    minuto = (value.getMinutes() === 0)?'00':value.getMinutes();
    hora_combo = hora +':'+minuto;
    combo.setValue(hora_combo);
    console.log('hora '+hora+' '+minuto+" (desde onTimefieldSelect)");
    var valor_actual = grid.editingPlugin.getActiveRecord();
    console.log(valor_actual);

}

然后在此方法中呈现(每列一个)

    renderHora1: function(value, metaData, record, rowIndex, colIndex, store, view) {
    //return(this.renderHora(value));
    if(!isNaN(new Date(value)))
    {
        return(this.renderHora(value));
    }else{
        return value;
    }
},

和添加日期的方法:

 onAgregarDiaClick: function(button, e, eOpts) {

    dias_store  = button.up('grid').getStore().count();
    console.log(dias_store+" dia (desde agregardiaclick)");

    horas_semanales = Ext.ComponentQuery.query('numberfield[name=num_horasSemanales]')[0].getValue();
    hora_inicial = 0;
    dif_hora_total = 8.80;
    dif_hora_med_jor = 4.48;
    hora_entera = 0; // VARIABLE QUE DETERMINA EL VALOR DE LA SUMA DE HORAS SIN DECIMALES.
    cuenta_grid    = Ext.ComponentQuery.query('[itemId=grid_jornadaLaboral]')[0].getStore().getCount();





    if (horas_semanales === 0) {

         Ext.Msg.show
        ({
            title:'Advertencia',
            msg: 'No has ingresado las horas semanales' ,
            icon: Ext.MessageBox.WARNING,
            buttons: Ext.MessageBox.OK
        });
    } else {

        if(dias_store < 7)
    {


        grideditable = button.up('grid');
        opcion = new form_48.model.JornadaLaboral.mdl_JornadaDiaria({
            'dia_codigo'    : 8,
            'dia_nombre'    : 'Seleccione...',
            'entrada_manana': '08:30',
            'salida_manana' : '13:18',
            'entrada_tarde' : '15:00',
            'salida_tarde'  : '19:00'
        });
        if(dias_store == 6)
        button.disable();

        var editor = button.up('grid').editingPlugin;
        //editor.cancelEdit();

        console.log(cuenta_grid);
         console.log("**********************************************")

        if(cuenta_grid === 0){

            button.up('grid').getStore().insert(dias_store+1, opcion);
            button.up('grid').getStore().sort('dia_codigo', 'ASC');
            //cuenta_grid = cuenta_grid + 1;

        }
        //editor.startEditByPosition({row: dias_store+1, column: 0});



    }




        if( hora_inicial < horas_semanales ){
        hora_inicial = dif_hora_total;
        activa_suma = true;

        if (activa_suma ==true) {


            for (var i = 0; i < cuenta_grid; i++)
            {

                var ent_mnna = Ext.ComponentQuery.query('[itemId=grid_jornadaLaboral]')[0].getStore().data.items[i].data.entrada_manana;
                var sal_mnna = Ext.ComponentQuery.query('[itemId=grid_jornadaLaboral]')[0].getStore().data.items[i].data.salida_manana;
                var ent_tard = Ext.ComponentQuery.query('[itemId=grid_jornadaLaboral]')[0].getStore().data.items[i].data.entrada_tarde;
                var sal_tard = Ext.ComponentQuery.query('[itemId=grid_jornadaLaboral]')[0].getStore().data.items[i].data.salida_tarde;


                var ent_mnna_sum = form_48.app.getController('FormateoNumero').fecha_hora(ent_mnna);
                var sal_mnna_sum = form_48.app.getController('FormateoNumero').fecha_hora(sal_mnna);
                var ent_tard_sum = form_48.app.getController('FormateoNumero').fecha_hora(ent_tard);
                var sal_tard_sum = form_48.app.getController('FormateoNumero').fecha_hora(sal_tard);

                //OBTENEMOS LAS DIFERENCIAS DE HORAS DE LA MANANA Y DE LA TARDE (EJ. 8:30 -13:18 = 04:48)
                dif_hora_manana = form_48.app.getController('FormateoNumero').resta_horas(ent_mnna_sum,sal_mnna_sum);
                dif_hora_tarde  = form_48.app.getController('FormateoNumero').resta_horas(ent_tard_sum,sal_tard_sum);


                //SUMAMOS LAS DIFERENCIAS DE HORAS DE LA MANANA Y DE LA TARDE PARA OBTENER EL TOTAL DE HORAS TRABAJADO AL DIA.
                suma_horas_jornada = form_48.app.getController('FormateoNumero').suma_horas(dif_hora_manana,dif_hora_tarde);
                dif_hora_total = (dif_hora_total + suma_horas_jornada);


                console.log(suma_horas_jornada+ " horas jornada(desdea gregardiaclick)");
                console.log(hora_entera+ " diferencia horas sin decimal (desde agregardiaclick)");

                console.log("-------------------------------------------------------------------");

                console.log(ent_mnna);


                // Ext.ComponentQuery.query('numberfield[name=num_horas_grid]')[0].setValue(num_horas_grid);
                //console.log(dif_hora_total);



            }
            hora_entera = Math.trunc(dif_hora_total);

            if(hora_entera <= horas_semanales){

                //alert("dif_hora2: "+dif_hora_total);
                button.up('grid').getStore().insert(dias_store+1, opcion);
                button.up('grid').getStore().sort('dia_codigo', 'ASC');

            }else{

                Ext.Msg.show
                ({
                    title:'Advertencia',
                    msg: 'No se puede ingresar la jornada ya que se exceden por ' +(dif_hora_total- horas_semanales).toFixed(1) + ' horas el maximo establecido en el campo:<center><b>"Horas Semanales"</b></center>' ,
                    icon: Ext.MessageBox.WARNING,
                    buttons: Ext.MessageBox.OK

                });
                activa_suma == false;
            }
                console.log(dif_hora_total+ " suma actual de horas(desde agregardiaclick)");

               if((hora_entera || dif_hora_total)=== horas_semanales){

                Ext.ComponentQuery.query('displayfield[name=dsp_cumple_horas]')[0].setValue('SI');

               console.log(horas_semanales+ " horas semanales(desde agregardiaclick)");
            }else{

                Ext.ComponentQuery.query('displayfield[name=dsp_cumple_horas]')[0].setValue('NO');

            }


        }//fin if cuentagrid
    }




     //horas_semanales = Ext.ComponentQuery.query('numberfield[name=num_horasSemanales]')[0].getValue();


    }


},

抱歉我的英文。我希望你能帮助我一个想法。 谢谢!

0 个答案:

没有答案