function TicketSell(o){ /**reference for the instance*/ var app = this; this.defaults = { default_type: 0, selected_type: 1, time_unit_day : 10, time_unit_month : 20, time_unit_month_reference : 30, /**id of filter text*/ types: [{ name :'Bérlet', id_ticket_type: 0, max_usage_count:0, time_unit_type:1, time_unit_count:1, id_account:0, price_brutto:1000, }, ], selector_type: '#ticketcreate-id_ticket_type', selector_start: '#ticketcreate-start', selector_end: '#ticketcreate-end', selector_account: '#ticketcreate-id_account', selector_price: '#ticketcreate-price_brutto', selector_max_usage_count: '#ticketcreate-max_usage_count', date_format_moment: 'YYYY.MM.DD', ticket_type: null, start_date: null, end_date: null, max_usage_count: null, id_account: null, price: null, clear_list_url: '', transfer_list: [] }; init(); function init(){ $.extend(app.defaults, o ); addBehaviourTypeChangedListener(); useDefaults(); createUserSoldItemsTable(); } function useDefaults(){ if ( app.defaults.selected_type > 0){ $(app.defaults.selector_type).val( app.defaults.selected_type ); typeChanged(); } } function createUserSoldItemsTable(){ $('.transfer-list-container').transferList({ 'transfers' : app.defaults.transfer_list }); } function refreshSoldUseritems(){ $('.transfer-list-container').transferList('option','transfers' , app.defaults.sold_items ); } function addBehaviourTypeChangedListener(){ $(app.defaults.selector_type).change(change); } function change(event){ if ( '#'+event.target.id == app.defaults.selector_type ){ typeChanged(); } } function typeChanged(){ validateTypeChanged(); refresh(); } function validateTypeChanged(){ validateType(); validateStartDate(); validateEndDate(); validateMaxUsageCount(); validatePriceBrutto(); validateAccount(); } function validateType(){ var type; type = +$(app.defaults.selector_type).val(); app.defaults.ticket_type = null; for ( var i = 0; i < app.defaults.types.length; i++ ){ if ( app.defaults.types[i].id_ticket_type == type){ app.defaults.ticket_type = app.defaults.types[i]; break; } } } function validateStartDate(){ app.defaults.start_date = moment( $( app.defaults.selector_start ).val(), app.defaults.date_format_moment) ; if ( !app.defaults.start_date.isValid() ){ app.defaults.start_date = moment(); } } function validateEndDate(){ var units; units = app.defaults.ticket_type.time_unit_count; app.defaults.end_date = moment(app.defaults.start_date); switch(app.defaults.ticket_type.time_unit_type){ case app.defaults.time_unit_day: app.defaults.end_date.add( units, 'days'); app.defaults.end_date.subtract( 1, 'days'); break; case app.defaults.time_unit_month: app.defaults.end_date.add( units, 'month'); app.defaults.end_date.subtract( 1, 'days'); break; case app.defaults.time_unit_month_reference: if ( units > 1){ app.defaults.end_date.add( units -1, 'month'); } app.defaults.end_date.endOf('month'); break; } } function validateMaxUsageCount(){ app.defaults.max_usage_count = app.defaults.ticket_type.max_usage_count; } function validatePriceBrutto(){ app.defaults.price = app.defaults.ticket_type.price_brutto; } function validateAccount(){ app.defaults.id_account = app.defaults.ticket_type.id_account; } function refresh(){ console.info( app.defaults.start_date.toDate()); $(app.defaults.selector_start ).val( app.defaults.start_date.format( app.defaults.date_format_moment ) ); $(app.defaults.selector_end ).val( app.defaults.end_date.format( app.defaults.date_format_moment ) ); $(app.defaults.selector_account ).val(app.defaults.id_account); $(app.defaults.selector_price ).val(app.defaults.price); $(app.defaults.selector_max_usage_count ).val(app.defaults.max_usage_count); } }