Ajax Kalender - Termin "merge"

  • hi.
    das scheint daran zu liegen, dass beim "ziehen" des bildes "resize.gif" der focus verloren geht. Ich glaube aber das liegt am Browser. Versuch mal testweise statt einem Bild eine Zeichenkette oder ein DIV zu nutzen

    bei deinem Code hat mich erstmal verwirrt wo selTermin herkommt. Aber die ist global - also alles ok.
    selCache ist nicht global - die könntest du noch ordentlich mit var selCache initialisieren.
    aus den beiden Ifs in der WelcheAktioun() könntest du if und elseif machen.

    Ansonsten: RESPEKT.. schöner Kalender!
    Aber ziemlich groß.. hab jetzt nicht den ganzen Code durchexempliert
  • Ich möchte, wenn sich 3 Termine überschneiden, der 3te gelb wird
    Ich habe die überschneidenden Termine in ein array MergeObjs[] gespeichert, danach mit 2facher for durchlaufen um zu schauen, welche Termin die mit dem aktuellen(selektiert) überschnitten werden, sich schon überschnitten haben, danach mit if überprüft op sie in dem bereich liegen jedoch klappt es nicht :shock:

    meine beschreibun ist nicht die beste aber weiss nicht wie ich es besser ausdrücken soll...


    Quellcode

    1. function uberschneiden()
    2. {
    3. var alleTerminObjekte = alleKlassenObjekte('Termin'); // hier werden alle Objekte mit der ID Termin in alleTerminObjekte geschrieben
    4. var MergeObjs = new Array();
    5. MergeCount = 0;
    6. schneiden = false;
    7. OActTop = parseInt(document.getElementById(selTermin).style.top);
    8. OActHeight = OActTop + parseInt(document.getElementById(selTermin).style.height);
    9. OActLeft = Kolonne();
    10. // hier werden alle objekte durchlaufen, falls im bereich des gerade bewegten objekts, => in array MergeObjs setzen
    11. for (i=0;i<=alleTerminObjekte.length-1;i++)
    12. {
    13. ObjTop = parseInt(alleTerminObjekte[i].style.top);
    14. ObjHeight = ObjTop + parseInt(alleTerminObjekte[i].style.height);
    15. ObjLeft = Kolonne(parseInt(alleTerminObjekte[i].style.left));
    16. if ( !((OActHeight-3 < ObjTop) || (OActTop+3 > ObjHeight)) && (ObjLeft == OActLeft) && (document.getElementById(selTermin).id != alleTerminObjekte[i].id) ) {
    17. MergeObjs[MergeCount] = alleTerminObjekte[i];
    18. MergeCount++;
    19. }
    20. else {
    21. alleTerminObjekte[i].style.width = TerminWidth;
    22. }
    23. }
    24. // hier die 2 fache for um zu überprüfen op der gerade ausgewählte termin über einem bereich ist wo schon 2 termine übereinander liegen
    25. for (c=0;c<=MergeObjs.length-1;c++){
    26. MergeObjs[code=c].style.width = TerminWidth/2-2;
    27. document.getElementById(selTermin).style.width = TerminWidth/2-2;
    28. for (t=0;t<=MergeObjs.length-1;t++){
    29. if ( !((MergeObjs[code=c].style.height < MergeObjs[t].style.top) || (MergeObjs[code=c].style.top > MergeObjs[t].style.height)) && (c != t) ) {
    30. document.getElementById(selTermin).style.backgroundColor = "yellow";
    31. }
    32. else document.getElementById(selTermin).style.backgroundColor = "#E74233";
    33. }
    34. }
    35. MergeObjs.clear;
    36. MergeObjs.length=0;
    37. if (!schneiden) {
    38. return false;
    39. }
    40. else {
    41. if (selected) {
    42. document.getElementById(selTermin).style.top = ty;
    43. document.getElementById(selTermin).style.left = tx;
    44. }
    45. return true;
    46. }
    47. }
    Alles anzeigen


    //UPDATE
    es klappt jetzt

    Termine übereinander bewegen..