jQWidgets Forums

Forum Replies Created

Viewing 7 posts - 1 through 7 (of 7 total)
  • Author
    Posts

  • Kaddath
    Participant

    Thanks for the answer,

    I’ll try to explain it simply, I can’t really share all the code because it’s really long: we have a wrapper class for grids that automatically plugs to a data set component with hidden “system fields” (that the data set uses internally). On creation, filters are added to these system fields and by default, our function to add filters refreshes the row (which seemed a logical thing to do, because these system columns are not always hidden -our debug mode-).

    So it didn’t happen until now, but grids can be in a tab that is created but still not shown. We can’t use this workaround because that would imply to show the tab (select it), however I used another one which consists in an extra parameter to our add filter function, to optionnaly not refresh the row when the grid is in creation.

    If works so far, but it just seemed to me better idea to solve the error at the source, and add an extra test to refreshfilterrow, something like if(!this.columns.records){ return; } so that there is no error in the console.. That’s why I reported here.

    Kaddath


    Kaddath
    Participant

    Hi,

    We also have this issue with jqxDateTimeInput(s) created for the filter row not destroying with the grid.

    If this can help you solve it, the problem happens in our code when doing a call to jqxGrid('clear'). If you look at the DOM for the following test example, you’ll see that each time a call to clear is made on the grid (click several times the clear button), it adds a new “calendarjqxWidgetXXXXXXXX” div to the body, and when jqxGrid('destroy') is called, only the last one created is removed.

    The test example: https://jseditor.io/?key=28f5c709f4c711e9a73300224d6bfcd5

    Hope that helps you, for the moment, i’ll do a workaround by not calling the clear method.

    Kaddath


    Kaddath
    Participant

    Hello,

    Ok thanks for the answer. For the moment, i think i will dynamically change the appointments hours for displaying them in a single day in month views (I noticed it also happens in “monthView” too). Getting rid of “appointmentsRenderMode: ‘exactTime'” option is not enough, as those events will diplay on 2 full days without it, which doesn’t suit us either.

    Also, strongly related to that, I noticed we won’t be able to drag appointments in those views to change the date for the moment, as they will be edited as starting from “00:00:00” and ending at “23:59:59” automatically. I haven’t seen any “appointmentDrag” event in the API to help me prevent that, and i’m not able yet to detect if it was a drag in the “appointmentChange” event.

    Thanks again,
    Kaddath


    Kaddath
    Participant

    Hello,

    Actually this is not the case for “timelineDayView” and “timelineWeekView” if you look at the example given, they do appear in the same row. You will also see that the 3 appointments in the example start all a different day, so it is not directly related to the day. Is it something related to “scale” or something else that does behave differently in “timelineMonthView” differently than the other 2 views?

    I am quite good with JS and have no trouble to override a little a behaviour from the outside, that would greatly help if i could just locate where the difference comes from, as from a look to the code, there is no direct setting that can settle that. I bet this is something related to “getCollisionAppointments” function though.

    Thanks by advance,
    Kaddath


    Kaddath
    Participant

    Thanks,

    Actually, we didn’t want to have fixed row heights in our layout. I fixed the problem with a bit of code: i add it here the general behaviour just in case someone is interested.

    
    //removing the style tag that fixes the height (self is our scheduler module that uses jqxScheduler):
    var styleTag = $('#table__'+self.id+'_scheduler_styleRowsMinHeight');
    if(styleTag.length){
    	styleTag.remove();
    }
    
    //claculating the height
    var appointmentsMinHeight = self.scheduler.jqxScheduler('appointmentsMinHeight'), trs = $('#table__'+self.id+'_scheduler tr[data-key="jqx__'+self.id+'_scheduler_0"]'), rowsHeight;
    if(trs.length){
    	rowsHeight = $(trs[0]).height();
    }
    
    //12 is hardcoded in jqxscheduler + 5 margin
    if(rowsHeight < (appointmentsMinHeight + 12 + 5)){
    	$('<style id="table__'+self.id+'_scheduler_styleRowsMinHeight">#table__'+self.id+'_scheduler td:not(.jqx-grid-cell-pinned){ height: ' + (appointmentsMinHeight + 12 + 5) + 'px !important; }</style>').appendTo(self.jqxElement);
    }
    

    Kaddath
    Participant

    Hi,

    Thanks for your answer, but that won’t do with our UI. I know that we can set a fixed row height but our layout has to be responsive and adapt to different number of resources while filling the container space.

    If there is no way to do it with the API, i will try a CSS fix, i just wanted to know, in case it could be possible..

    Kaddath


    Kaddath
    Participant

    Actually after testing on our project, we still have an issue with the “all day” row. The reason why the style was set to !important is that there is a conflict between the height declared in CSS with “.jqx-scheduler-all-day-cell” and the general “rowsHeight” property for the whole scheduler. Using “rowsHeight” seems to lead to inline styles in the cell elements themselves, that have priority over the height declared for “.jqx-scheduler-all-day-cell”, so that the latter never takes effect.

    Is there a way to declare “rowsHeight” without conflicting with “.jqx-scheduler-all-day-cell”?

    Thanks again,
    Kaddath

Viewing 7 posts - 1 through 7 (of 7 total)