2010-10-22 22 views
5

¿Alguien me puede decir cómo dejar de arrastrar/cambiar el tamaño de los eventos donde event.id > 100? Solo esos eventos no deben ser arrastrables.FullCalendar: ¿Cómo dejar de arrastrar eventos personalizados?

actualiza con código de ejemplo:

eventRender: function(event, element) { 
    if (event.id > 100) { 
     event.disableDragging(); 
     event.disableResizing(); 
    } 

    element.qtip({ 
     content: GetEventToolTip(event), 
     position: { corner: { tooltip: 'bottomLeft', target: 'topMiddle'} }, 
     style: { 
      border: { 
       width: 1, 
       radius: 5 
      }, 
      padding: 5, 
      textAlign: 'left', 
      tip: false, 
      name: event.iscustom == 'True' ? 'cream' : 'dark' 
     } 
    }); 
} 

Gracias.

Respuesta

4

Ni disableDragging ni disableResizingson funciones definidas en fullcalendar partir de 1.4.8. Estoy seguro de que 2 personas en el mundo no han probado la primera sugerencia :) Sin embargo, tendrá que tocar el objeto jQuery UI para deshabilitar el arrastre o el cambio de tamaño en el nivel del evento. Por lo tanto (en lugar de tratar de utilizar las funciones inexistentes) tratar esto en su eventRender(event, element) devolución de llamada:

if (event.id > 100) { 

    element.draggable = false; 

} 

en cuenta que estoy simplemente estableciendo la propiedad en el elemento de jQuery en sí en lo que respecta al comportamiento de la interfaz de usuario que pueden arrastrarse.

Lo mismo ocurre con el tamaño, EXCEPTO que tendrá que eliminar el div (class = ui-resizable-handle ui-resizable-s) que se agrega en fullcalendar identificándolo con un selector de jquery y eliminándolo (solo asegúrese de establecer un className único por evento en yoru events array para que pueda identificarlo fácilmente en el DOM). Solicite amablemente al desarrollador (es) de calendario completo que agregue las propiedades disableDragging y disableResizing al objeto Evento. Lleva menos de un minuto agregar soporte para esto a la fuente.

+0

Excelente respuesta. Funcionó bien para mí ¡Gracias, Aaron! – Saiful

+0

@Saiful ¿Cómo hago para deshabilitar solo el cambio de tamaño? He intentado agregar eventRender: function (event, element) { if (event.title == "typeA") {\t \t \t $ ('. TypeA'). Resizable = false; \t } }, sin suerte – BaconJuice

+1

En fullcalendar v2, se debe usar la propiedad 'editable' en lugar de' arrastrar' – akn

2

yo diría:

if(event.id > 100) 
{ 
    event.disableDragging(); 
    event.disableResizing(); 
} 
+1

1: Y, probablemente el mejor lugar para poner estaría en la devolución de llamada eventRender esto: http: // arshaw .com/fullcalendar/docs/event_rendering/eventRender/ – sdolan

+0

No funciona, ambos métodos dicen: Error: El objeto no admite esta propiedad o el método – Saiful

+0

debe publicar un código para comprender mejor – Dalen

3

Esto funcionó perfecto para mí:

if (event.id > 100) { 
    element.draggable = false; 
    element.resizable = false; 
} 
12
eventRender: function(event, element) { 
    if (event.id.indexOf("IDENTIFYING_STRING") == -1) 
    { 
     event.editable = false; 
    }      
} 
+0

¡Muy bien! Me gusta esto. Gracias. Todavía terminé eliminando las clases para que no se convierta en un puntero y se confunda al usuario. Aparte de eso, la solución perfecta. '$ (elemento) .find ('. fc-resizer'). remove(); $ (elemento) .removeClass ('fc-draggable'). RemoveClass ('fc-resizable'); ' – cocojiambo

-4

usar las siguientes etiquetas al crear su fullcalendar desactivar o cambiar el tamaño arrastrando. Los documentos de arshaw no son muy explicativos, pero esta es la forma de interpretarlos.

$('#calendar').fullCalendar({ 
    disableResizing:true, 
    disableDragging:true, 

    //the rest of your code... 

disableDragging: Boolean, defecto: false Desactiva todos los eventos de arrastrar, incluso cuando los eventos son editables.

disableResizing: Boolean, defecto: false Desactiva todos los eventos de cambio de tamaño, incluso cuando los eventos son editables.

0

Usted tiene que cortar fullcalendar.js

líneas descomenta

t.isEventDraggable = isEventDraggable; 
t.isEventResizable = isEventResizable; 

reemplazar las funciones:

function isEventDraggable(event) { 
     return isEventEditable(event) && !opt('disableDragging') && 
      !event.disableDragging; 
} 


function isEventResizable(event) { // but also need to make sure the seg.isEnd == true 
     return isEventEditable(event) && !opt('disableResizing') && 
      !event.disableResizing; 
} 

Ahora puede habilitar/deshabilitar el cambio de tamaño y arrastrar para cada evento a su gusto.

0

No tuve éxito con los métodos que se muestran aquí. Terminé pirateando fullcalendar.js para agregar una opción noDragging para eventos, que era en realidad muy fácil:

el original:

function isEventDraggable(event) { 
    return isEventEditable(event) && !opt('disableDragging'); 
} 

lo cambió a:

function isEventDraggable(event) { 
    return isEventEditable(event) && !opt('disableDragging') && !event.noDragging; 
} 

acaba de añadir el cheque para event.noDragging.

-2

Utilice estas etiquetas al crear su calendario completo para desactivar el arrastre o el cambio de tamaño.

**> $('#calendar').fullCalendar({ 
> 
> editable: false, 
> 
> //the rest of your code... }** 
+0

Esto es para desactivación global, no para id> 100 – BaconJuice

0

Ni element.draggable = false y event.ediable = false trabajó para mí. Debe ser debido a la versión más nueva de FullCalendar. Si ese es su caso también, intente:

if (event.id > 100) { 
    event.startEditable = false; 
} 

Funcionó para mí.

Como alternativa puede cancela el evento movimiento después de caer:

eventDrop: function (event, delta, revertFunc) { 

      if (event.id < 100) 
       revertFunc(); 
     } 
+0

revertFunc no es una función –

3

Ésta es la mejor solución:

$('#calendar').fullCalendar({ 
    disableDragging = true 
}); 
2

FullCalendar v1.6.4

eventRender: function(jsEvent, element) { 

if(jsEvent.id > 100) { 

    jsEvent.startEditable = false; 
    jsEvent.durationEditable = false; 
    } 

    return element;    
} 

Esta solución tiene estado trabajando para mí como un encanto.

Implementé esta biblioteca JS con Ruby Gem "Fullcalendar_engine".

0

en editable acaba de escribir falsa y que no será capaz de arrastrar y soltar editable: falsa

+1

Considere editar su respuesta a incluir más explicaciones que puedan ayudar a OP y a cualquier persona que pueda tener el mismo problema en el futuro – CallumDA

Cuestiones relacionadas