@@ -869,6 +869,7 @@ modules["breakout/overview"] = class {
869869 return ;
870870 }
871871 groupMember . tile . remove ( ) ;
872+ groupMember . tile = null ;
872873 if ( refresh != false ) {
873874 this . layout . refreshTileSpots ( this . layout . tileLayout . indexOf ( groupMember . group ) ) ;
874875 }
@@ -1409,6 +1410,7 @@ modules["breakout/overview"] = class {
14091410 this . layout . memberSessions [ data . modify ] = [ ] ;
14101411 session = this . layout . memberSessions [ data . modify ] ;
14111412 if ( data . group == null ) {
1413+
14121414 updateUnassignedMemberCount ( 1 ) ;
14131415 }
14141416 } else if ( existingMember != null && existingMember . group != null && data . group == null ) {
@@ -1452,28 +1454,24 @@ modules["breakout/overview"] = class {
14521454 this . layout . updateMemberTile ( this . parent . parent . collaborators [ data . modify ] ) ;
14531455 }
14541456 } , { sort : 1 } ) ;
1455- this . pipeline . subscribe ( "memberUpdate" , "update" , ( data ) => {
1456- let member = this . parent . parent . members [ data . _id ] ;
1457- if ( member == null || member . access > 3 ) {
1458- return ;
1459- }
1460- let groupMember = this . layout . members [ member . modify ] ;
1457+ let updateMember = ( modify , data ) => {
1458+ let groupMember = this . layout . members [ modify ] ;
14611459 if ( groupMember == null ) {
14621460 return ;
14631461 }
14641462 if ( data . hasOwnProperty ( "group" ) == true && data . group != groupMember . group ) {
14651463 if ( groupMember . group != null ) {
14661464 let oldGroupTile = this . layout . tiles [ groupMember . group ] ?? { } ;
14671465 if ( oldGroupTile . members != null ) {
1468- let index = oldGroupTile . members . indexOf ( member . modify ) ;
1466+ let index = oldGroupTile . members . indexOf ( modify ) ;
14691467 if ( index > - 1 ) {
14701468 oldGroupTile . members . splice ( index , 1 ) ;
14711469 }
14721470 }
1473- this . layout . removeMemberTile ( member . modify ) ;
14741471 } else if ( data . group != null ) {
14751472 updateUnassignedMemberCount ( - 1 ) ;
14761473 }
1474+ this . layout . removeMemberTile ( modify ) ;
14771475 groupMember . group = data . group ;
14781476 if ( data . group != null ) {
14791477 let groupTile = this . layout . tiles [ data . group ] ;
@@ -1486,17 +1484,34 @@ modules["breakout/overview"] = class {
14861484 if ( pending . includes ( data . modify ) == false ) {
14871485 pending . push ( data . modify ) ;
14881486 }
1489- } else if ( groupTile . members != null && groupTile . members . includes ( member . modify ) == false ) {
1490- groupTile . members . push ( member . modify ) ;
1491- this . layout . addMemberTile ( member . modify ) ;
1487+ } else if ( groupTile . members != null && groupTile . members . includes ( modify ) == false ) {
1488+ groupTile . members . push ( modify ) ;
1489+ this . layout . addMemberTile ( modify ) ;
14921490 }
1493- } else {
1491+ } else if ( ( this . layout . memberSessions [ modify ] ?? [ ] ) . length > 0 ) {
1492+ this . layout . addMemberTile ( modify ) ;
14941493 updateUnassignedMemberCount ( 1 ) ;
14951494 }
1496- } else {
1497- this . layout . updateMemberTile ( member ) ;
14981495 }
1496+ }
1497+ this . pipeline . subscribe ( "memberUpdate" , "update" , ( data ) => {
1498+ let member = this . parent . parent . members [ data . _id ] ;
1499+ if ( member == null || member . access > 3 ) {
1500+ return ;
1501+ }
1502+ updateMember ( member . modify , data ) ;
14991503 } , { sort : 1 } ) ;
1504+ this . pipeline . subscribe ( "groupMemberMove" , "move" , ( data ) => {
1505+ let existingMember = this . layout . members [ data . modify ] ;
1506+ if ( existingMember != null ) {
1507+ existingMember = {
1508+ ...data ,
1509+ group : existingMember . group ,
1510+ tile : existingMember . tile
1511+ } ;
1512+ updateMember ( data . modify , { group : data . group } ) ;
1513+ }
1514+ } ) ;
15001515 this . pipeline . subscribe ( "memberLeave" , "leave" , ( data ) => {
15011516 if ( data . member != null ) {
15021517 if ( data . member . access > 3 ) {
@@ -1510,8 +1525,10 @@ modules["breakout/overview"] = class {
15101525 }
15111526 if ( session . length < 1 ) {
15121527 delete this . layout . memberSessions [ data . member . modify ] ;
1513- this . layout . updateMemberTile ( this . parent . parent . collaborators [ data . member . modify ] ) ;
1514- if ( data . member . group == null ) {
1528+ if ( data . member . group != null ) {
1529+ this . layout . updateMemberTile ( this . parent . parent . collaborators [ data . member . modify ] ) ;
1530+ } else {
1531+ this . layout . removeMemberTile ( data . member . modify ) ;
15151532 updateUnassignedMemberCount ( - 1 ) ;
15161533 }
15171534 }
@@ -1649,6 +1666,7 @@ modules["breakout/overview"] = class {
16491666 let originalRect = dragContext . tileData . tile . getBoundingClientRect ( ) ;
16501667 if ( moved != true ) {
16511668 removeElement . style . transform = "translate(" + ( ( originalRect . x - pageRect . x ) - ( dragContext . lastX - dragContext . offsetX ) ) + "px, " + ( originalRect . y - pageRect . y - dragContext . lastY + dragContext . offsetY ) + "px) scale(.975)" ;
1669+ dragContext . tileData . tile . removeAttribute ( "disabled" ) ;
16521670 } else {
16531671 removeElement . style . transformOrigin = dragContext . offsetX + "px " + dragContext . offsetY + "px" ;
16541672 removeElement . style . transform = "translate(0px, 0px) scale(0)" ;
@@ -1659,7 +1677,6 @@ modules["breakout/overview"] = class {
16591677 button . removeAttribute ( "disabled" ) ;
16601678 }
16611679 } ) ( ) ;
1662- dragContext . tileData . tile . removeAttribute ( "disabled" ) ;
16631680 } else {
16641681 removeElement . style . transformOrigin = "center" ;
16651682 removeElement . style . transform = "translate(0px, 0px) scale(0)" ;
@@ -1784,11 +1801,20 @@ modules["breakout/overview"] = class {
17841801 if ( dragContext . tileData . group == groupID ) { // Same group:
17851802 return removeDrag ( ) ;
17861803 }
1804+ let path = "lessons/breakout/move?collaborator=" + dragContext . tileData . modify ;
1805+ if ( groupID != null ) {
1806+ path += "&group=" + groupID ;
1807+ }
1808+ let revertTile = dragContext . tileData . tile ;
17871809 removeDrag ( true ) ;
1788- // Send request to change group
1810+ let [ code ] = await sendRequest ( "PUT" , path , null , { session : this . parent . parent . session } ) ;
1811+ if ( code != 200 ) {
1812+ if ( revertTile != null ) {
1813+ revertTile . removeAttribute ( "disabled" ) ;
1814+ }
1815+ }
17891816 return ;
17901817 }
1791-
17921818 removeDrag ( ) ;
17931819 }
17941820 this . pipeline . subscribe ( "dragMemberEnd" , "click_end" , ( data ) => { dragEnd ( data . event ) ; } ) ;
0 commit comments