Album | Titel | Versions | Länge | Komponist/Autor | Beschreibung | Suchbegriffe | Key | BPM |
|
|
---|---|---|---|---|---|---|---|---|---|---|
|
![]() |
Quizzin [CEZ4366 - 4] |
0 | 3'54 | Mr. Gib | Boom bap / beat making / old school / underscore. Nocturnal, urban & ... | boom bap städtisch investigativ nächtlich ... | Gm | 90 |
|
|
![]() |
Jazz Phantom [MAG6001 - 21] |
0 | 4'26 | Chomsk' | Broken beat. Evanescent & cosy. Voice, piano and double basse ... | Broken Beat Intro Samples Beat Making ... | Bbm | 73 |
|
|
![]() |
Back in the Days [CEV3019 - 1] |
1'55 | La Fine Equipe | Vocal Hip-hop. Soulful. Bass synth & decisive beat. BPM 91. Text | städtisch Rap aktuell Attitüde ... | Fm | 91 |
|
|
|
![]() |
Back in the Days [CEV3019 - 2] |
Vers. | 1'58 | La Fine Equipe | Laid back & smart instrumental hip-hop with female voice. BPM 91 | Beat Making Hip Hop (alle) 2000 Schleife ... | Fm | 91 |
|
|
![]() |
Think 4 Yourself [CEV3019 - 9] |
2'36 | La Fine Equipe | Hip-hop song with a 60's feel. Female lead vocal. BPM 94. Text | auf Englisch gesungen zuversichtlich Hip Hop (alle) städtisch ... | Bbm | 94 |
|
|
|
![]() |
Think 4 Yourself [CEV3019 - 10] |
Vers. | 2'14 | La Fine Equipe | Instrumental Hip-hop with a 60's feel. Up & relaxed underscore. BPM 94 | aktuell Schleife zuversichtlich Hip Hop (alle) ... | Bbm | 94 |
|
|
![]() |
Gnocchi with Cheese [MAG6013 - 2] |
0 | 2'14 | J.Kid | Beatmaking. Catchy & cut-up. Samples, piano & rhythm. | Beat Making ruckartig städtisch aktuell ... | Bm | 86 |
|
|
![]() |
So Real [CEZ4389 - 6] |
2'57 | Airsouth | Rap. Confident, chill & urban. Rapper, synth & rhythm. | Mode arty auf Englisch gesungen Werbung ... | A | 90 |
|
|
|
![]() |
So Real Alternate [CEZ4389 - 26] |
Vers. | 2'56 | Airsouth | Alternate version. Abstract hip hop. Confident, dreamy & urban. Synth ... | Mode arty Werbung Abstract Hip Hop ... | Gbm | 90 |
|
|
![]() |
Punching Ball [CEZ4215 - 5] |
2'31 | Beat Assailant | Rap. Epic & urban. Synth, rapper & rhythm. Fx car. Text | Attitüde Rap Extremsport Kampfsport städtisch ... | Am | 98 |
|
|
|
![]() |
Punching Ball 2 [CEZ4215 - 17] |
Vers. | 2'39 | Beat Assailant | Hip hop. Epic & urban. Synth & rhythm. | fx Auto Actionfilme aktuell episch ... | Am | 98 |
|
|
![]() |
Punching Ball 3 [CEZ4215 - 18] |
Vers. | 2'39 | Beat Assailant | Hip hop. Epic & urban. Synth & rhythm. Fx car. Text | Rap Extremsport Kampfsport Actionfilme fx Auto ... | Am | 98 |
|
|
![]() |
Blunt to Fakie [CEZ4271 - 5] |
0 | 2'54 | Chomsk' | Hip hop / Beat making. Urban, stylish & classy. Synth, vocoder & ... | Beat Making Street Sports städtisch aktuell ... | Gm | 100 |
|
|
![]() |
Candlelight Serenade [CEZ4300 - 8] |
0 | 2'40 | Stan Laferriere | Ballroom. 40s. Sentimental & sensual ballad. Big band. | Big Band 1940 stilvoll Variété-Theater ... | Eb | 77 |
|
|
![]() |
Mystery in Black [CEZ4300 - 9] |
0 | 3'31 | Stan Laferriere | Jungle. 40s. Cotton Club. Mysterious & interrogative. Big band. | Big Band Swing Jazz Variété-Theater klassische Hollywoodfilme ... | Ebm | 108 |
|
|
![]() |
Opening on Broadway [CEO2100 - 25] |
0 | 2'03 | Barthélémy Corbelet | Cinematic jazz in the spirit of the 50's & 60's. Urban & nocturnal. ... | zuversichtlich Abspann TV Cinematic Jazz sorglos ... | E | 89 |
|
|
![]() |
Pollock [CEZ4281 - 24] |
0 | 2'13 | Marc-Olivier Dupin | Jazzy, questionning & sensual. Tenor sax, piano & cymbals. | Tenorsaxofon schlicht Film Noir 1960 ... | Bb | 113 |
|
|
![]() |
The Peugeot 403 Convertible [CEO2089 - 8] |
0 | 3'01 | Gregory Cotti | Blues. Confident & relaxed. Solo piano. | Jazz Club zuversichtlich akustisches Klavier bluesy ... | C | 100 |
|
|
![]() |
Statue Of Liberty [CEZ4060 - 8] |
0 | 1'56 | Teddy Lasry | Inspired & hopeful. Violin played staccato, clarinet & double-bass. | Israel Klezmer Judaismus Jiddish ... | Ebm | 96 |
|
|
![]() |
Yiddish Harlem [CEZ4060 - 7] |
0 | 2'19 | Teddy Lasry | Jazz in the style of the 30's. Clarinet, tuba, trombone & rhythm. | Klezmer sorglos 1930 Klarinette ... | Dm | 132 |
|
|
![]() |
Brooklyn Boys [CEZ4060 - 6] |
0 | 2'17 | Teddy Lasry | Jazz in the style of the 30's. Clarinet, sax, tuba, trombone & rhythm. | Klezmer amüsant burlesk Jiddish ... | Fm | 162 |
|
|
![]() |
Soyez Bénis [CEZ4009 - 33] |
0 | 1'47 | Denis Levaillant | Relax & sophisticated jazz in spirit of the 40's. Big band. | Be-Bop Big Band Variété-Theater sorglos ... | Gm | 145 |
|
|
![]() |
Nuova York [CEV3008 - 3] |
0 | 2'26 | Jean Jacques Milteau, Manuel Galvin | Dixieland jazz band. Carefree & festive. | Big Band hüpfend Jazzband (alle) New Orleans Jazz ... | Fm | 93 |
|
|
![]() |
Walking on Clouds [CEZ4409 - 3] |
0 | 2'59 | Tigerz | Hip-Hop bed / Hip-Hop loop / beatmaking. Chill, luminous & airy. ... | chill trap luftig Stadtlandschaft verträumt ... | Em | 110 |
|
|
![]() |
Mister Cool [MAG6038 - 3] |
0 | 3'20 | Skence | Beat making / exotica / old school. Catchy, groovy & urban. Synth, fx ... | einprägsam Beat Making Exotica groovy ... | Fm | 84 |
|
|
![]() |
Everybody Wants [CEV3019 - 11] |
4'26 | La Fine Equipe | Hip-hop. Male vocal. Detroit style. BPM 98. Text | Rap Hip Hop (alle) Lied auf Englisch gesungen ... | Gbm | 98 |
|
|
|
![]() |
Everybody Wants [CEV3019 - 12] |
Vers. | 2'23 | La Fine Equipe | Hip-hop. Detroit style. Underscore. Male & female voices. BPM 98. | Hip Hop (alle) städtisch 1990 2000 ... | Gbm | 98 |
|
|
![]() |
Last Chance [CCB1026 - 2] |
0 | 2'02 | Ray Bartok | Experimental rock. Intriguing, mysterious & relax. Rock band. | Experimenteller Rock 1990 Band investigativ ... | Gbm | 136 |
|
|
![]() |
Let it Flow [MAG6015 - 8] |
0 | 2'46 | Powell | Old school hiphop / beatmaking. Loop. Cosy & jazzy. Fender Rhodes, ... | Old School Stadtlandschaft städtisch Beat Making ... | Cm | 94 |
|
|
![]() |
Op Art [CEZ4047 - 40] |
0 | 2'27 | Michel Gaucher, Benoît Sourisse | "Groovy & rhythmic fun. Entertaining. ""Singing flute"" & Hammond ... | Flöte Pop Art 1960 abstrakte Kunst ... | Dm | 147 |
|
|
![]() |
Chelsea Hotel [CEZ4047 - 14] |
0 | 2'40 | Silvano Michelino, Jean-Francois Morin | Easy going, sophisticated & confident. Pop sound of the 60's with ... | 1960 psychedelia 1970 zuversichtlich ... | G | 110 |
|
|
![]() |
Set 'em up Joe Alternate ...
[CEZ4297 - 24] |
3'11 | André Charlier, Benoît Sourisse | Nostalgic but carefree. 50s. Piano & rhythm. | Jazz Club 1950 akustisches Klavier 1960 ... | Bbm | 144 |
|
|
|
![]() |
Set 'em up Joe [CEZ4297 - 15] |
Vers. | 3'07 | André Charlier, Benoît Sourisse | Nostalgic but carefree. 50s. Sax, piano & rhythm. | Hard Bop Jazz Jazzquartett Jazz Club Nouvelle vague ... | Dm | 144 |
|
login
password
Nom
Loading ' + file.name + ' ' + (file.size ? (file.size/1024|0) + 'K' : ''); fichier=file.name; } } //--- //- recog readfiles //--- readfiles = function(files) { var formData = tests.formdata ? new FormData() : null; for (var i = 0; i < files.length; i++) { if (tests.formdata) formData.append('file', files[i]); // previewfile(files[i]); en commentaire pcq nom du fichier pas important et pas beau } formData.set('lang','de'); // now post a new XHR request if (tests.formdata) { var xhr = new XMLHttpRequest(); xhr.open('POST', '/recog/upload.php'); xhr.onload = function() { progress.value = progress.innerHTML = 100; }; xhr.onloadend = function() { JSONreponse= xhr.responseText.trim(); if(JSONreponse=="ERR"){ spinnerStopCancellable(); $('#progress_external_recommendation_file').hide(); document.getElementById('file_external_recommendation').files = null; document.getElementById('file_external_recommendation_lbl').innerHTML = 'Choose file from your computer'; getAlertDanger("An error has occured, please try again with another file"); }else if(JSONreponse=="ERR_NOT_CONNECTED"){ //jQuery('#infoBoxListePage_connect').show(); TipNotConnected(); }else{ $('#fichiercharge').remove(); $('#chargementde').remove(); $('progress').hide(); spinnerStop(); reponses = JSON.parse(JSONreponse); reponsesMots = reponses.mots; suggestiontitres(files[0].name, 'mp3'); /** SG 21/10/2021 : POUR CACHER LA BOX QD RESULTAT AFFICHÉ **/ if($('.external_recommendationbox').length){ /** SG 22/10/2021 : POUR PROGRESS BAR EXTERNAL_RECOMMENDATION **/ $('#progress_external_recommendation_file').width('100%'); $('.external_recommendationbox').hide(); $('#progress_external_recommendation_file').width('0%'); $('#progress_external_recommendation_file').hide(); $('#file_external_recommendation').val(''); document.getElementById('file_external_recommendation_lbl').innerHTML = 'Drop your file here.'; } } }; if (tests.progress) { $('progress').show(); $('#progress_external_recommendation_file').show(); spinnerStart(); xhr.upload.onprogress = function (event) { if (event.lengthComputable) { var complete = (event.loaded / event.total * 100 | 0); if(complete!=100){ $('#recogdiv').each(function(){$(this).remove();}); } /** SG 22/10/2021 : PR PROGRESS BAR EXTERNAL_RECOMMENDATION **/ if($('#progress_external_recommendation_file').length){ $('#progress_external_recommendation_file').width((event.loaded/event.total*100)+'%'); } progress.value = progress.innerHTML = complete; } } } xhr.send(formData); } } //--- //- recog readfiles //--- readfiles_image = function(files) { var formData = tests.formdata ? new FormData() : null; for (var i = 0; i < files.length; i++) { if (tests.formdata) formData.append('file', files[i]); // previewfile(files[i]); en commentaire pcq nom du fichier pas important et pas beau } formData.set('lang','de'); // now post a new XHR request if (tests.formdata) { var xhr = new XMLHttpRequest(); xhr.open('POST', '/ajax/get_keywords_from_brief.php'); xhr.onload = function() { progress.value = progress.innerHTML = 100; }; xhr.onloadend = function() { JSONreponse= xhr.responseText.trim(); if(JSONreponse=="ERR"){ spinnerStopCancellable(); $('#progress_external_recommendation_file').hide(); document.getElementById('file_external_recommendation').files = null; document.getElementById('file_external_recommendation_lbl').innerHTML = 'Choose file from your computer'; getAlertDanger("XXXXXAn error has occured, please try again with another file"); }else if(JSONreponse=="ERR_NOT_CONNECTED"){ //jQuery('#infoBoxListePage_connect').show(); TipNotConnected(); }else{ $('#fichiercharge').remove(); $('#chargementde').remove(); $('progress').hide(); spinnerStop(); var parsedRes = JSON.parse(JSONreponse); var div_error = document.getElementById('external_brief_errors'); if ( parsedRes.error !== undefined ) { var txt_error = "Error : "; if ( parsedRes.error == "brief_empty" ) { txt_error += "Your brief is empty"; } else if ( parsedRes.error == "brief_too_long" ) { txt_error += "Your brief is too long, it must be 1000 characters long maximum"; } div_error.innerHTML = txt_error; div_error.style.display = 'block'; spinnerStop(); } else { div_error.innerHTML = ''; div_error.style.display = 'none'; var responseJSON = parsedRes; var response = responseJSON; var url = "/liste_resultats.php?"; var params = []; var tab_mots = []; for( var valou of response ) { params.push("mot[]=" + encodeURI(valou + "@@@@" + valou + "@@@@" + valou)); tab_mots.push(valou); } if ( params.length == 0 ) { div_error.innerHTML = 'No results found, please try again later.'; div_error.style.display = 'block'; spinnerStop(); return; } url += params.join("&"); xajax_check_multiple_words(tab_mots.join(' '), [], false, true, false, ''); //window.location.href = url; } } }; if (tests.progress) { $('progress').show(); $('#progress_external_recommendation_file').show(); spinnerStart(); xhr.upload.onprogress = function (event) { if (event.lengthComputable) { var complete = (event.loaded / event.total * 100 | 0); if(complete!=100){ $('#recogdiv').each(function(){$(this).remove();}); } /** SG 22/10/2021 : PR PROGRESS BAR EXTERNAL_RECOMMENDATION **/ if($('#progress_external_recommendation_file').length){ $('#progress_external_recommendation_file').width((event.loaded/event.total*100)+'%'); } progress.value = progress.innerHTML = complete; } } } xhr.send(formData); } } //--- //- afficherPanneauEntree //--- afficherPanneauEntree = function(){ var zeObj = $('#header-search-query'); if(zeObj.val()!=""){ $('#boiteAdviceRico').show(500); } } //--- //- jelancenoresult //--- jelancenoresult = function(){ in_search=false; $('#msgdbg').text($("#header-search-query").attr('value')); spinnerStart(); //xajax_check_multiple_words($("#header-search-query").attr('value'), xajax.getFormValues('search_form')); }; var mytimeoutrb; var randomPercent = 0 randomBar = function( ){ randomPercent = randomPercent + 5 if(randomPercent > 100) { randomPercent = 0 } progress = document.getElementById('uploadprogress'); progress.value = progress.innerHTML = randomPercent; mytimeoutrb = setTimeout( function(){randomBar( );} , 300); } todoOnKeyDown = function(zeObj,e){ $carousel_gallery_home.flickity('pausePlayer'); /** le moteur suggest est désactivé quand on tape une touche, cela empeche le masque "Entrée" de s'afficher, et lance le timeout de 3 secondes pour l'ouvrir **/ spinnerStop(); clearTimeout(timeoutAfficherPanneauEntree); in_search=true; timeoutAfficherPanneauEntree = setTimeout(function(){afficherPanneauEntree();},3000); //var kc=e.keyCode; var kc = e.key || e.code; if(kc=="Enter" || kc==13 || kc==37 || kc==38 || kc==39 || kc==40 || zeObj.value=='' || zeObj.value.indexOf('?+')!=-1){ spinnerStop(); } if($('#btn_external_recommendation').length > 0){ /** SG 21/20/2021 : POUR CACHER BOUTON external_recommendation QD QQUE CHOSE DE TAPER **/ if((zeObj.value).length>0){ /////16/04/2024 Eric / on ne le retire plus. : document.getElementById('btn_external_recommendation').style.display = 'none'; }else{ document.getElementById('btn_external_recommendation').style.display = 'flex'; } } if(( kc==13 || kc=='Enter') && zeObj.value!='' ){ var r = $(".text-tags .text-label").map( function(){return $(this).text();}).get().join(' '); if(r!=''){ var phrase=r + ' ' + zeObj.value; }else{ var phrase=zeObj.value; } $.ajax({ type: "POST", url: "/ajax/check_is_prompt.php", data: { phrase: phrase, langue: 'de' } }).done(function(reponse) { if (reponse === "OK" && "cn"!=="de") { /**vider le formulaire de recherche**/ empty_search_form(); /**appeler la fonction de recommandation par brief**/ searchExternalRecommendationFromBrief(phrase); } else { //bouton entrée tappé fct_menuzonehidden(); spinnerStart(); clearTimeout('jelancelenoresultdansxsecondes'); xajax_check_multiple_words(phrase, xajax.getFormValues('search_form')); } }); }else if(( kc==13 || kc=='Enter') && zeObj.value==''){ fct_menuzonehidden(); } } todoOnBlur = function(zeObj,e){ var v = zeObj.value; $carousel_gallery_home.flickity('pausePlayer'); spinnerStop(); clearTimeout(timeoutAfficherPanneauEntree); in_search=true; timeoutAfficherPanneauEntree = setTimeout(function(){afficherPanneauEntree();},3000); spinnerStop(); /** SG 24/10/2023 : POUR CACHER BOUTON external_recommendation QD QQUE CHOSE DE TAPER **/ if($('#btn_external_recommendation').length > 0){ if((zeObj.value).length>0){ /////16/04/2024 Eric / on ne le retire plus. : document.getElementById('btn_external_recommendation').style.display = 'none'; }else{ document.getElementById('btn_external_recommendation').style.display = 'flex'; } } if(v!=''){ fct_menuzonehidden(); spinnerStart(); clearTimeout('jelancelenoresultdansxsecondes'); zeObj.value = ''; var r = $(".text-tags .text-label").map( function(){return $(this).text();}).get().join(' '); var phrase = ''; if ( r!='' ) { phrase = r + ' ' + v; } else { phrase = v; } $.ajax({ type: "POST", url: "/ajax/check_is_prompt.php", data: { phrase: phrase, langue: 'de' } }).done(function(reponse) { if (reponse === "OK") { /**vider le formulaire de recherche**/ empty_search_form(); /**appeler la fonction de recommandation par brief**/ searchExternalRecommendationFromBrief(phrase); } else { //bouton entrée tappé fct_menuzonehidden(); spinnerStart(); clearTimeout('jelancelenoresultdansxsecondes'); xajax_check_multiple_words(phrase, xajax.getFormValues('search_form')); ////////show_bpm_key_zone("search"); } }); } else { //fct_menuzonehidden(); //remettre cette ligne si problème sur le onblur //SG 03/11/2023 : afin que la cartouche ne se ferme plus au onblur de l'input et que le bouton ai search se cache quand des mots sont présents dans l'input var r = $(".text-tags .text-label").map( function(){return $(this).text();}).get().join(' '); if ( r!="" ) { /////16/04/2024 Eric / on ne le retire plus. : $("#btn_external_recommendation").hide(); } else { if (document.getElementsByClassName('recogbutton').length == 0) { fct_menuzonehidden(); } } } } //Tooltip sur liste track search v4 pour les recommandations tooltip_menu_media = function(button,id_media,name,mode='modal'){ $.ajax({ url: "/ajax/get_tooltip_template.php", // Ton script PHP qui va générer le bon template type: "POST", data: { name: name, id_media: id_media }, success: function(responseHTML) { if(mode === 'modal'){ // On reçoit le HTML dynamisé en fonction des paramètres jcAlertTT(responseHTML, { boxWidth: 'calc(600px + 10%)', theme: 'cez-'+name, },name,mode); }else if(mode === 'tooltip'){ jcAlertTT(responseHTML, { boxWidth:'300px', theme: 'cez-'+name, },name,mode,button); } const $tooltip = $("#" + name + "_" + id_media); const modalBackdrop = $(".jconfirm-cez-"+name+" .jconfirm-cell"); //on charge pour ce contenu le code pour la region if(name === "tooltiprecommandation"){ $(document).on("mousedown", function (e) { if (modalBackdrop.is(e.target)) { $tooltip.find('.Ttr_timingdebut').val(''); $tooltip.find('.Ttr_timingfin').val(''); fctclearRegions(); } }); from_last_click ="recommandationedit"; if (!myPlaylist || typeof myPlaylist.playlist !== 'object') { //console.error("myPlaylist.playlist n'est pas un objet valide."); return; } //console.log("",myPlaylist.playlist); //! Cas ajaxify surtout, où le titre du player ne fait pas parti de la liste de lecture de la page nouvellement affichée // Vérifier si l'id_media est présent dans la playlist const idExistsInPlaylist = myPlaylist.playlist.some( item => String(item.id_media) === id_media ); if (!idExistsInPlaylist) { // Récupérer les IDs dans l'attribut onclick du bouton Tl_play let $parentTr = $(button).closest('tr'); let $parentUl = $parentTr.find('td:first ul.boxcontroleplayer'); let id_mediaAttr = $parentUl.attr('id_media'); let positionAttr = $parentUl.attr('position'); let onclickAttr = $parentUl.find("button.Tl_play").attr("onclick"); //console.log(id_mediaAttr+" pos"+positionAttr); // Extraire les IDs avec une expression régulière let match = onclickAttr.match(/PlayPauseUnTitreButton\('([^']+)'/); if (match && match[1]) { let idsList = match[1]; xajax_load_player_playlist(idsList,0,positionAttr,from_last_click,"oui"); } }else{ //! Si le titre existe dans la playlist, c'est que la page a été rechargé. Ici 2 problematiques, soit on a cliqué sur un bouton de lecture de la liste de titre et on a prechargé une playlist contenant les alernates, ou bien c'est une version playlist allegée //--playlist avec les alernates if (String(id_media).startsWith("0")) { id_media_alt = String(id_media).slice(1); // Supprime le premier caractère pos = $('#boxcontrol_'+id_media_alt).attr('curposition'); //--sinon c'est la playlist allegée }else{ const playlistValues = Object.values(myPlaylist.playlist); // Rechercher l'index const index = myPlaylist.playlist.findIndex( item => String(item.id_media) === id_media ); //console.log("Index trouvé :", index, "Données :", playlistValues); if (index !== -1) { const currentItem = playlistValues[index]; pos = index; } } window.setCurrentSongLOAD(pos); } setTimeout(() => { let dureetrack = $("#time-total").html(); let [minutesDT, secondsDT] = dureetrack.split(':').map(Number); let newseconds = (minutesDT * 60) + secondsDT; window.createRegion('0', newseconds, 'false', 'false', '', 'recommandation_' + id_media); jQuery('.wavesurfer-handle-start').css('width','4px').css('background-color','#222222'); jQuery('.wavesurfer-handle-end').css('width','4px').css('background-color','#222222'); }, 150); $(document).on("click", ".Ttr_validate", function (e) { let timingdebut = $tooltip.find('.Ttr_timingdebut').val(); let timingfin = $tooltip.find('.Ttr_timingfin').val(); //console.log(timingdebut+" "+timingfin+" Suivant"); //launch_recommendation('https://stream.cezamemusic.com/albums/CEZ4297/mp3/128/master-15.mp3','037648');" }); $(document).on("click", ".Ttr_cancel", function (e) { $tooltip.find('.Ttr_timingdebut').val(''); $tooltip.find('.Ttr_timingfin').val(''); $('.jconfirm-cez-tooltiprecommandation .jconfirm-closeIcon').trigger("click"); fctclearRegions(); }); } }, error: function(xhr) { console.error("Erreur lors du chargement du tooltip :", xhr); } }); } // Variable globale pour stocker le timeout let tooltipTimeout; // Gestionnaire d'événements avec délai $(document).on({ mouseenter: function(e) { const button = this; const id_media = $(button).data("id-media"); const name = $(button).data("name"); tooltip_gestion_alternative(button, id_media, name); /* clearTimeout(tooltipTimeout); tooltipTimeout = setTimeout(() => { tooltip_gestion_alternative(button, id_media, name); }, 500); */ }, mouseleave: function() { clearTimeout(tooltipTimeout); } }, ".tooltip-trigger-alt"); const tooltip_gestion_alternative = function(button, id_media, name) { let isTooltipOpen = false; let isMouseOverButton = false; let isMouseOverTooltip = false; let closeTimeout; // Création du conteneur du tooltip avec styles pour l'animation if (!$('#tooltip-container').length) { $('body').append(`
`); } const tooltipContainer = $('#tooltip-container'); // Fonction pour positionner le tooltip const updateTooltipPosition = function() { if (!isTooltipOpen) return; const buttonPos = $(button).offset(); const buttonHeight = $(button).outerHeight(); const buttonWidth = $(button).outerWidth(); let tooltipTop = buttonPos.top + buttonHeight -175; let tooltipLeft = buttonPos.left + (buttonWidth / 2) + 10; const tooltipWidth = tooltipContainer.outerWidth(); const windowWidth = $(window).width(); if (tooltipLeft + tooltipWidth > windowWidth) { tooltipLeft = windowWidth - tooltipWidth - 10; } tooltipContainer.css({ top: tooltipTop, left: tooltipLeft }); }; // Fonction pour ouvrir le tooltip avec animation const openTooltip = function() { if (isTooltipOpen) return; $.ajax({ url: "/ajax/get_tooltip_template.php", type: "POST", data: { name: name, id_media: id_media }, success: function(responseHTML) { tooltipContainer.html(responseHTML); tooltipContainer.css('display', 'block'); // Force un reflow pour assurer que la transition fonctionne tooltipContainer[0].offsetHeight; // Applique l'animation tooltipContainer.css({ 'opacity': '1', 'transform': 'translateY(0)' }); isTooltipOpen = true; updateTooltipPosition(); }, error: function() { console.error('Erreur lors du chargement du tooltip'); } }); }; // Fonction pour fermer le tooltip avec animation const closeTooltip = function() { if (!isMouseOverButton && !isMouseOverTooltip) { closeTimeout = setTimeout(() => { tooltipContainer.css({ 'opacity': '0', 'transform': 'translateY(-5px)' }); // Attendre la fin de l'animation avant de cacher setTimeout(() => { tooltipContainer.css('display', 'none'); isTooltipOpen = false; }, 200); }, 300); } }; // Gestionnaire d'événements pour le bouton $(button).on({ mouseenter: function() { isMouseOverButton = true; clearTimeout(closeTimeout); openTooltip(); }, mouseleave: function() { isMouseOverButton = false; closeTooltip(); } }); // Gestionnaire d'événements pour le tooltip tooltipContainer.on({ mouseenter: function() { isMouseOverTooltip = true; clearTimeout(closeTimeout); }, mouseleave: function() { isMouseOverTooltip = false; closeTooltip(); } }); // Mettre à jour la position lors du défilement ou redimensionnement $(window).on('scroll resize', updateTooltipPosition); // Ouvrir immédiatement le tooltip openTooltip(); return { destroy: function() { clearTimeout(closeTimeout); $(button).off('mouseenter mouseleave'); tooltipContainer.off('mouseenter mouseleave'); $(window).off('scroll resize', updateTooltipPosition); tooltipContainer.remove(); } }; }; launch_recommendation = function(localurl,last_item_played, debut=null, fin=null){ let logged_in = false; jQuery.ajax({url: "/ajax/check_conn.php", type: "GET", async: false, success: function(JSONreponseFromAjax){ logged_in = JSONreponseFromAjax; }} ); var cookiepubai = document.cookie.match('(^|;) ?no_pub_ai=([^;]*)(;|$)'); var test_pubai = false; if ( cookiepubai !== null ) { test_pubai = cookiepubai[2]; } //SG 14/11/2023 : si pas connecté, on affiche la popup de pub pour les fonctionnalités complémentaires de l'IA // if ( logged_in != "OK" && !test_pubai ) { ///pour l'instant on met ça de côté ... TipNotConnectedPubAi(false); // } $('progress').hide(); spinnerStart(); /**on supprime le div de recog, vu que l'on va en charger un nouveau**/ jQuery('#recogdiv').remove(); if ( !$('body').hasClass('mobile') ) { randomBar( ); } if (debut !== null && fin !== null && Number.isFinite(debut) && Number.isFinite(fin)) { paramjson = {localurl: localurl, id_media: last_item_played,lang:'de', debut: debut, fin: fin}; }else{ paramjson = {localurl: localurl, id_media: last_item_played,lang:'de'}; } jQuery.ajax({url: "/recog/upload.php", type: "POST", data : paramjson, success: function(JSONreponseFromAjax){ if(JSONreponseFromAjax=="ERR"){ $('progress').hide(); spinnerStop(); }else if(JSONreponseFromAjax=="ERR_NOT_CONNECTED"){ TipNotConnected(); $('progress').hide(); spinnerStop(); }else if(JSONreponseFromAjax.match(/^ERR_/) ){ $('progress').hide(); spinnerStop(); clearTimeout(mytimeoutrb); }else { clearTimeout(mytimeoutrb); if ( !$('body').hasClass('mobile') ) { progress = document.getElementById('uploadprogress'); progress.value = progress.innerHTML = 0; } jQuery('progress').hide(); spinnerStop(); reponses = JSON.parse(JSONreponseFromAjax); reponsesMots = reponses.mots; JSONreponse = JSONreponseFromAjax; suggestiontitres(last_item_played,'equal'); } } }); } // Fonction pour obtenir le début et la fin d'une région spécifique function getRegionTiming(idMedia) { // Supposons que votre instance WaveSurfer est dans la variable 'wavesurfer' const regionId = 'recommandation_' + idMedia; const regionKey = hasRegionStartingWith(); let region = null; //ne jamais clear les (climax[0-9]) //if(regionKey.some(item => item.startsWith('climax'))){ if(regionKey){ regionKey.forEach(key => { if(key==regionId){ region=myPlaylist.regions.list[key]; } }); } if (region!=null) { return { start: region.start, // Début en secondes end: region.end // Fin en secondes }; } return { start: null, // Début en secondes end: null // Fin en secondes }; } //--- //- changeScrollHeight //--- changeScrollHeight = function() { var h = parseInt(window.prompt('Please type new scroll height (number in pixels):', jQuery.Autocompleter.defaults.scrollHeight)); if(h > 0) { $("#suggest1").setOptions({ scrollHeight: h }); } } //--- //- focus_header_search_query //--- focus_header_search_query = function(){ //$("#header-search-query").trigger("activate.autocomplete"); $("#header-search-query").click(); } //--- //- RemoveAccents //--- RemoveAccents = function(strAccents) { var strAccents = strAccents.split(''); var strAccentsOut = new Array(); var strAccentsLen = strAccents.length; var accents = 'ÀÁÂÃÄÅàáâãäåÒÓÔÕÕÖØòóôõöøÈÉÊËèéêëðÇçÐÌÍÎÏìíîïÙÚÛÜùúûüÑñÿý'; var accentsOut = "AAAAAAaaaaaaOOOOOOOooooooEEEEeeeeeCcDIIIIiiiiUUUUuuuuNnSsYyyZz"; for (var y = 0; y < strAccentsLen; y++) { if (accents.indexOf(strAccents[y]) != -1) { strAccentsOut[y] = accentsOut.substr(accents.indexOf(strAccents[y]), 1); } else strAccentsOut[y] = strAccents[y]; } strAccentsOut = strAccentsOut.join(''); //return strAccentsOut.replace(/ +/,"-"); strAccentsOut=strAccentsOut.replace(/'/g,"-").replace(/&+/g," ").replace(/ +/g,"-").replace(/\-+/,'-'); return strAccentsOut; } //--- //- addAlbumAndLaunch //--- addAlbumAndLaunch = function(id_album,e,f){ e.after(""); f.submit(); } //--- //- launchSearch //--- launchSearch = function(){ jQuery('.loupe').click(); } /**tout ce qui se rapoporte au filtrage par bpm et key**/ load_bpm_key_slider = function(){ jQuery('#slider').slider({ range: true, min: 10, max: 300, step: 1, values: [ 10, 300 ], slide: function( event, ui ) { jQuery('.slider-min').html(ui.values[ 0 ]); jQuery('.slider-max').html(ui.values[ 1 ]); }, change: function( event, ui ) { var min = ui.values[ 0 ]; var max = ui.values[ 1 ]; jQuery('#customFilterBpm').val(''); jQuery.ajax({ url: '/ajax/ajax_search_filters.php?minbpm='+min+'&maxbpm='+max} ).done(function(){ var only_word_search = jQuery('#search_form').serialize().replace('search_external_recommendation_youtube=&search_external_recommendation_brief=', ''); const url_params = new URLSearchParams(window.location.search); const id_media_str = url_params.get('id_media_str'); var tmp_url = ""; if ( id_media_str !== null ) { tmp_url = '/liste_resultats.php?id_media_str='+id_media_str+'&randkeybpm='+Math.random().toString(36).substring(7); }else if(only_word_search!=''){ tmp_url = '/liste_resultats.php?'+jQuery('#search_form').serialize()+'&randkeybpm='+Math.random().toString(36).substring(7); } goLaunchAjaxify(tmp_url,'#searchlink','search_' + Math.random().toString(36).substring(7)); }); } }); } -->