This commit is contained in:
2026-02-19 08:33:11 +01:00
parent efbdcce08a
commit ed0d1fff30
5 changed files with 424 additions and 71 deletions

View File

@@ -26,6 +26,22 @@
</div>
</div>
<div class="campaigns-list-panel" id="campaigns_list_panel" style="display: none;">
<div class="campaigns-list-toolbar">
<div class="campaigns-list-toolbar-left">
<input type="checkbox" id="campaigns_select_all" title="Zaznacz wszystkie">
<label for="campaigns_select_all">Zaznacz wszystkie</label>
<span class="campaigns-selected-count">Zaznaczone: <strong id="campaigns_selected_count">0</strong></span>
</div>
<div class="campaigns-list-toolbar-right">
<button type="button" id="campaigns_bulk_delete" class="campaigns-bulk-delete-btn" disabled>
<i class="fa-solid fa-trash"></i> Usun zaznaczone
</button>
</div>
</div>
<div class="campaigns-list-items" id="campaigns_list_items"></div>
</div>
<div class="campaigns-chart-wrap">
<div id="container"></div>
</div>
@@ -162,6 +178,113 @@ function reloadChart()
$( function()
{
function updateCampaignsSelectedCount()
{
var count = $( '.campaigns-list-item-cb:checked' ).length;
$( '#campaigns_selected_count' ).text( count );
$( '#campaigns_bulk_delete' ).prop( 'disabled', count === 0 );
$( '#campaigns_select_all' ).prop( 'checked', count > 0 && count === $( '.campaigns-list-item-cb' ).length );
}
function buildCampaignsList( campaigns )
{
var panel = $( '#campaigns_list_panel' );
var container = $( '#campaigns_list_items' );
container.empty();
$( '#campaigns_select_all' ).prop( 'checked', false );
updateCampaignsSelectedCount();
if ( !campaigns.length )
{
panel.hide();
return;
}
campaigns.forEach( function( pair ) {
var c = pair[1];
var item = $( '<label class="campaigns-list-item">' +
'<input type="checkbox" class="campaigns-list-item-cb" value="' + c.id + '" data-name="' + $( '<span>' ).text( c.campaign_name ).html() + '"> ' +
'<span class="campaigns-list-item-name">' + $( '<span>' ).text( c.campaign_name ).html() + '</span>' +
'</label>' );
container.append( item );
});
panel.show();
}
$( 'body' ).on( 'change', '.campaigns-list-item-cb', updateCampaignsSelectedCount );
$( 'body' ).on( 'change', '#campaigns_select_all', function()
{
$( '.campaigns-list-item-cb' ).prop( 'checked', $( this ).is( ':checked' ) );
updateCampaignsSelectedCount();
});
$( 'body' ).on( 'click', '#campaigns_bulk_delete', function()
{
var checked = $( '.campaigns-list-item-cb:checked' );
var count = checked.length;
if ( count === 0 ) return;
var names = [];
checked.each( function() { names.push( $( this ).data( 'name' ) ); } );
var namesList = '<ul style="text-align:left; max-height:200px; overflow:auto; margin-top:10px;">';
names.forEach( function( n ) { namesList += '<li>' + n + '</li>'; } );
namesList += '</ul>';
$.confirm({
title: 'Potwierdzenie usuniecia',
content: 'Czy na pewno chcesz usunac <strong>' + count + '</strong> kampanii?' + namesList + '<br>Ta operacja jest nieodwracalna i usunie rowniez cala historie tych kampanii.',
type: 'red',
buttons: {
confirm: {
text: 'Usun (' + count + ')',
btnClass: 'btn-red',
action: function()
{
var ids = [];
checked.each( function() { ids.push( $( this ).val() ); } );
$.ajax({
url: '/campaigns/delete_campaigns/',
type: 'POST',
data: { ids: ids },
success: function( response )
{
var data = JSON.parse( response );
if ( data.success )
{
$.alert({
title: 'Sukces',
content: 'Usunieto ' + data.deleted + ' kampanii.',
type: 'green',
autoClose: 'ok|2000'
});
var current_campaign = $( '#campaign_id' ).val();
if ( ids.indexOf( current_campaign ) !== -1 )
storage_set( STORAGE_CAMPAIGN_KEY, '' );
$( '#client_id' ).trigger( 'change' );
}
else
{
$.alert({
title: 'Blad',
content: data.message || 'Nie udalo sie usunac kampanii.',
type: 'red'
});
}
}
});
}
},
cancel: { text: 'Anuluj' }
}
});
});
$( 'body' ).on( 'change', '#client_id', function()
{
var client_id = $( this ).val();
@@ -176,7 +299,10 @@ $( function()
campaigns_select.append( '<option value="">- wybierz kampanie -</option>' );
if ( !client_id )
{
$( '#campaigns_list_panel' ).hide();
return;
}
$.ajax({
url: '/campaigns/get_campaigns_list/client_id=' + client_id,
@@ -201,6 +327,8 @@ $( function()
campaigns_select.append( '<option value="' + value.id + '">' + value.campaign_name + '</option>' );
});
buildCampaignsList( campaigns );
if ( campaign_to_restore && campaigns_select.find( 'option[value="' + campaign_to_restore + '"]' ).length )
{
campaigns_select.val( campaign_to_restore ).trigger( 'change' );