<vn-crud-model 
    vn-id="model"
    url="TicketServices"
    link="{ticketFk: $ctrl.$params.id}"
    data="$ctrl.services"
    auto-load="true">
</vn-crud-model>
<vn-crud-model
    vn-id="typesModel"
    auto-load="true"
    url="TicketServiceTypes"
    data="ticketServiceTypes"
    order="name">
</vn-crud-model>
<vn-crud-model
    auto-load="true"
    url="TaxClasses"
    data="taxClasses"
    order="description">
</vn-crud-model>
<vn-watcher
    vn-id="watcher"
    data="$ctrl.services">
</vn-watcher>
<form name="form" ng-submit="$ctrl.onSubmit()" class="vn-w-md">
    <vn-card class="vn-pa-lg">
        <vn-horizontal ng-repeat="service in $ctrl.services track by $index">
            <vn-autocomplete vn-two vn-focus
                data="ticketServiceTypes"
                label="Description"
                show-field="name"
                value-field="id"
                ng-model="service.ticketServiceTypeFk">
                <append>
                    <vn-icon-button
                        icon="add_circle"
                        vn-tooltip="New service type"
                        ng-click="$ctrl.onNewServiceTypeClick(service, $event)"
                        vn-acl="administrative"
                        style="padding: 0;">
                    </vn-icon-button>
                </append>
            </vn-autocomplete>
            <vn-input-number
                vn-one
                step="1" 
                label="Quantity"
                ng-model="service.quantity"
                rule="TicketService">
            </vn-input-number>
            <vn-input-number
                vn-one
                label="Price"
                ng-model="service.price"
                step="0.01">
            </vn-input-number>
            <vn-auto>
                <vn-icon-button
                    pointer
                    vn-tooltip="Remove service"
                    icon="delete"
                    ng-click="model.remove($index)">
                </vn-icon-button>  
            </vn-auto>
        </vn-horizontal>
        <vn-icon-button
            ng-if=$ctrl.defaultTaxClass
            vn-tooltip="Add service"
            vn-bind="+"
            icon="add_circle"
            ng-click="$ctrl.add()">
        </vn-icon-button>
    </vn-card>
    <vn-button-bar>
        <vn-submit
            disabled="!watcher.dataChanged()"
            label="Save">
        </vn-submit>
        <!-- # #2680 Undo changes button bugs -->
        <!-- <vn-button
            class="cancel"
            label="Undo changes"
            disabled="!watcher.dataChanged()"
            ng-click="watcher.loadOriginalData()">
        </vn-button> -->
    </vn-button-bar>
</form>

<!-- Create service type dialog -->
<vn-dialog class="edit" 
    vn-id="newServiceTypeDialog"
    on-accept="$ctrl.onNewServiceTypeAccept($data)"
    on-close="newServiceType = null"
    message="New service type">
    <tpl-body>
        <vn-horizontal>
            <vn-textfield
                vn-one
                label="Description"
                ng-model="newServiceType.name"
                vn-focus>
            </vn-textfield>
        </vn-horizontal>
    </tpl-body>
    <tpl-buttons>
        <input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/>
        <button response="accept" translate>Create</button>
    </tpl-buttons>
</vn-dialog>