mateuszmarkowski / jQuery-Seat-Charts

jQuery Seat Charts Plugin
MIT License
593 stars 210 forks source link

dynamic kinds of seats #75

Closed omides248 closed 1 year ago

omides248 commented 5 years ago

hi, how dynamic kind of seats ? i use of while in seats:{ while() {} } get return error.

`

`


`

function customTheater(map, code, price, classes, category) { var firstSeatLabel = 1;

var $cart = $('#selected-seats'),
    $counter = $('#counter'),
    $total = $('#total'),

var i = 0;
var code = code;
var code_length = code.length;
var price = price;
var classes = classes;

var category = category;

sc = $('#seat-map').seatCharts({

    map: map,

    seats: {

        while(i < code_length) { // error

            code: {
                price: price,
                    // classes: 'first-class', //your custom CSS class
                    // category: ''
            },

        }

        // 
        //     price: 40,
        //     classes: 'first-class', //your custom CSS class
        //     category: 'First Class'
        // },
    },

    naming: {
        top: false,
        getLabel: function (character, row, column) {
            return firstSeatLabel++;
        },
    },

    legend: {
        node: $('#legend'),
        items: [
            ['f', 'available', 'قابل خرید'],
            // ['e', 'available', 'Economy Class'],
            ['f', 'unavailable', 'فروخته شده']
        ]
    },

    click: function () {
        if (this.status() == 'available') {
            //let's create a new <li> which we'll add to the cart items
            $('<li>' + this.data().category + ' صندلی  ' + this.settings.label + ' : <b>' + this.data().price + 'تومان</b> <a href="#" class="cancel-cart-item btn-danger">حذف بلیط</a></li>')
                .attr('id', 'cart-item-' + this.settings.id)
                .data('seatId', this.settings.id)
                .appendTo($cart);

            /*
             * Lets update the counter and total
             *
             * .find function will not find the current seat, because it will change its stauts only after return
             * 'selected'. This is why we have to add 1 to the length and the current seat price to the total.
             */
            $counter.text(sc.find('selected').length + 1);
            $total.text(recalculateTotal(sc) + this.data().price);

            return 'selected';
        } else if (this.status() == 'selected') {
            //update the counter
            $counter.text(sc.find('selected').length - 1);
            //and total
            $total.text(recalculateTotal(sc) - this.data().price);

            //remove the item from our cart
            $('#cart-item-' + this.settings.id).remove();

            //seat has been vacated
            return 'available';
        } else if (this.status() == 'unavailable') {
            //seat has been already booked
            return 'unavailable';
        } else {
            return this.style();
        }
    }
});

//this will handle "[cancel]" link clicks
$('#selected-seats').on('click', '.cancel-cart-item', function () {
    //let's just trigger Click event on the appropriate seat, so we don't have to repeat the logic here
    sc.get($(this).parents('li:first').data('seatId')).click();
});

//let's pretend some seats have already been booked
sc.get(['1_2', '4_1', '7_1', '7_2', '3_4', '1_12']).status('unavailable');

function recalculateTotal(sc) {
    var total = 0;

    //basically find every selected seat and sum its price
    sc.find('selected').each(function () {
        total += this.data().price;
    });

    return total;
}

}

`