/** * Created by Benny on 12.10.2014. */ "use strict"; var TB = TB || {}; TB.Control = TB.Control || {}; TB.Control.Team = { // Load & Create index : function( params ) { TB.GUI.showLoader(); var page = new TB.Page( 'team' ); TB.Service.request( 'Team', 'load', { addPremium: true } , function( data ) { TB.GUI.hideLoader(); TB.GUI.show( page, data ); page.$container.find('#btn_team_invite').click(function () { if ( TB.GUI.isTrainer() || TB.GUI.isCoTrainer() ) { TB.Controller.do('Team', 'invite'); } else { TB.Ext.Alert.show( 'Bitte validiere zuerst Deine Email Adresse.' ); } return false; }); page.$container.find( '#btn_team_invite_more' ).click( function() { TB.Premium.handleNoPremium(); }); page.$container.find( 'button[data-action="invitation-delete"]').click( function() { var invitationId = $(this).attr( 'data-invitation_id' ); TB.Ext.Alert.modal({ title: 'Einladung löschen?', text : 'Wenn diese Einladung gelöscht wird, verliert die Einladung ihre Gültigkeit.' }, function() { TB.Service.request( 'Team', 'deleteInvitation', { invitation_id : invitationId }, function( data ) { if ( data.res && data.res == 'ok' ) { TB.Ext.Notification.show( 'Einladung erfolgreich gelöscht.', TB.Ext.Notification.TYPE_SUCCESS ); TB.Controller.reload(); } else { TB.Ext.Notification.show( 'Ein Fehler ist aufgetreten', TB.Ext.Notification.TYPE_DANGER ); } }); }); }); page.$container.find( 'button[data-action="invitation-reminder"]').click( function() { var invitationId = $(this).attr('data-invitation_id'); TB.Ext.Alert.modal({ title: 'Einladung erneut verschickten?' }, function() { TB.Service.request( 'Team', 'resendInvitation', { invitation_id : invitationId }, function( data ) { if ( data.res && data.res == 'ok' ) { TB.Ext.Notification.show( 'Einladung erfolgreich verschickt.', TB.Ext.Notification.TYPE_SUCCESS ); TB.Utils.trackEvent( 'team', 'invitation_resend' ); TB.Controller.reload(); } else if ( data.res && data.res == 'not-enough-time-passed' ) { TB.Ext.Alert.modal( { title : 'Nicht möglich', text : 'Einladungen können erst nach einer Zeit von 24 Stunden erneut verschickt werden.' }); } else { TB.Ext.Notification.show( 'Ein Fehler ist aufgetreten', TB.Ext.Notification.TYPE_DANGER ); } }); }); }); page.$container.find( '#btn_edit_team').click( function() { TB.Controller.do( 'Team', 'edit' ); return false; }); page.$container.find( '#btn_edit_team_emblem').click( function() { TB.Premium.callPremium( 'Team', 'edit_emblem' ); return false; }); page.$container.find( '#btn-coach-help').click( function() { TB.GUI.showModal( "Team", TB.Config.Content.helpHtml.team ); }); }); }, edit_emblem : function( params ) { TB.GUI.showLoader(); var page = new TB.Page( 'team_edit_emblem' ), slimCropper; page.onLeave = function() { slimCropper && slimCropper.destroy() }; TB.Service.request( 'Team', 'load', {} , function( data ) { TB.GUI.hideLoader(); TB.GUI.show(page, data); function initSlimCropper() { slimCropper = new Slim( document.getElementsByClassName('slim')[0], { label: 'Emblem wählen', ratio: '1:1', maxFileSize: 6, size: { width: 300, height: 300 }, edit: true, instantEdit: true, download: false, buttonCancelLabel: 'Abbrechen', buttonConfirmLabel: 'Ok', statusNoSupport: 'Dein Browser unterstützt diese Funktion nicht.', statusImageTooSmall: 'Das Bild ist zu klein.', statusContentLength: 'Das Bild ist zu groß.', statusFileSize: 'Das Bild ist zu groß. Es darf maximal 6MB groß sein.' } ); } initSlimCropper(); page.$container.find( '#btn_edit_team_emblem_new').click( function() { if ( TB.Env.isNativeMobile() && "ANDROID" == TB.Env.platform ) { var myCb = function( data ) { slimCropper && slimCropper.destroy(); var $myImg = page.$container.find( '#edit-team-emblem-img' ); $myImg.on( 'load', function() { slimCropper && slimCropper.destroy() initSlimCropper(); }); $myImg.attr( 'src', "data:image/jpeg;base64," + data.pic64 ); initSlimCropper(); slimCropper.edit(); }; TB.ICom.post( "getPictureData", null, myCb ); } else { slimCropper.remove(); page.$container.find( 'input[type="file"]' ).click(); } return false; }); page.$container.find( '#btn_edit_team_emblem_cancel').click( function() { TB.Controller.do( 'Team', 'index' ); return false; }); page.$container.find( '#btn_edit_team_emblem_save').click( function() { var imgData = slimCropper.dataBase64; TB.GUI.showLoader(); // Update TB.Service.request( 'Team', 'updateEmblem', { slim : JSON.stringify( imgData ) }, function(data) { TB.GUI.hideLoader(); TB.Ext.Notification.show( 'Teamemblem erfolgreich gespeichert.', TB.Ext.Notification.TYPE_SUCCESS ); TB.Controller.do( 'Team', 'index' ); TB.Utils.trackEvent( 'team', 'pic_updated' ); }, $(this), function() { TB.GUI.hideLoader(); TB.Ext.Notification.show( 'Emblem konnte nicht gespeichert. Versuche es später erneut.', TB.Ext.Notification.TYPE_DANGER ); TB.Controller.do( 'Team', 'index' ); } ); return false; }); }); }, edit : function( params ) { TB.GUI.showLoader(); var page = new TB.Page( 'team_settings_detail' ), activeTab = 'details'; TB.Service.request( 'Team', 'load', {} , function( data ) { TB.GUI.hideLoader(); data.activeTab = activeTab; TB.GUI.show( page, data ); page.$container.find( '#teamcategory' ).easyAutocomplete({ // Note: // Duplicate list data : TB.Config.General.team_categories, list: { maxNumberOfElements: 10, match: { enabled: true } } }); page.$container.find( '#btn_save_team_cancel').click( function() { TB.Controller.do( 'Team', 'index' ); return false; }); page.$container.find( '#btn_save_team').click( function() { if ( !TB.GUI.performFormValidation( $( '#form_save_team' ) ) ) { return false; } var displayName = page.$container.find( 'input[name="team.display_name"]').val(), regNo = page.$container.find( 'input[name="team.reg_no"]').val(), teamId = page.$container.find( 'input[name="team.id"]').val(), category = page.$container.find( 'input[name="team.category"]').val(); // Update TB.Service.request( 'Team', 'update', { display_name: displayName, reg_no : regNo, category : category }, function(data) { TB.Ext.Notification.show( 'Teamänderungen erfolgreich gespeichert.', TB.Ext.Notification.TYPE_SUCCESS ); TB.Controller.do( 'Team', 'index' ); }, $(this) ); return false; }); }); }, invite : function( params ) { TB.GUI.showLoader(); var page = new TB.Page( 'team_invite' ); TB.Service.request( 'Team', 'load', {} , function( data ) { data.profile = TB.Client.profile; TB.GUI.hideLoader(); TB.GUI.show( page, data ); page.$container.find( '#btn_invite_player_cancel').click( function() { TB.Controller.do( 'Team' ); return false; }); page.$container.find( '#btn-group-role').find( 'label' ).not( '.btn-disabled').click( function() { $(this).parent( "div").find( 'label.btn-primary').removeClass( 'btn-primary').addClass( 'btn-default'); $(this).removeClass( 'btn-default').addClass( 'btn-primary'); page.$container.find( '#btn-group-role').find( 'span.fa.fa-check').remove(); $( this ).append( '' ); }); page.$container.find( '#btn_invite_player').click( function() { if ( !TB.GUI.performFormValidation( $( '#form_invite_player' ) ) ) { return false; } var email = page.$container.find( 'input[name="player_invitation_email"]').val(), firstName = page.$container.find( 'input[name="player_invitation_first_name"]').val(), lastName = page.$container.find( 'input[name="player_invitation_last_name"]').val(), role = page.$container.find( 'input[name="player_invitation_role"]:checked').val(); TB.Service.request( 'Team', 'invitePlayer', { player_invitation_email: email, player_invitation_first_name: firstName, player_invitation_last_name: lastName, player_invitation_role : role }, function( data ) { if ( data.error && 'email-already-in-team' == data.error ) { TB.Ext.Alert.show( 'Email vorhanden', 'Ein Buddy mit dieser Email Adresse befindet sich bereits im Team.' ); } else if ( data.error && 'email-already-invited' == data.error ) { TB.Ext.Alert.show( 'Email Einladung', 'Eine Einladung an diese Email Adresse wurde bereits verschickt.' ); } else { TB.Ext.Notification.show( 'Einladung wird in Kürze verschickt.', TB.Ext.Notification.TYPE_SUCCESS ); TB.Controller.do( 'Team', 'index' ); TB.Utils.trackEvent( 'team', 'invitation_send' ); } }, $(this) ); return false; }); }); } };