fixes #5174 Refactor ticket weekly to use smartTable #1275

Merged
pau merged 4 commits from 5174-refactor-ticket-weekly into dev 2023-02-03 07:41:28 +00:00
3 changed files with 150 additions and 88 deletions

View File

@ -562,15 +562,15 @@ export default {
payoutBank: '.vn-dialog vn-autocomplete[ng-model="$ctrl.bankFk"]', payoutBank: '.vn-dialog vn-autocomplete[ng-model="$ctrl.bankFk"]',
payoutDescription: 'vn-textfield[ng-model="$ctrl.receipt.description"]', payoutDescription: 'vn-textfield[ng-model="$ctrl.receipt.description"]',
submitPayout: '.vn-dialog button[response="accept"]', submitPayout: '.vn-dialog button[response="accept"]',
searchWeeklyResult: 'vn-ticket-weekly-index vn-table vn-tbody > vn-tr', searchWeeklyResult: 'vn-ticket-weekly-index vn-card smart-table slot-table table tbody tr',
searchResultDate: 'vn-ticket-summary [label=Landed] span', searchResultDate: 'vn-ticket-summary [label=Landed] span',
topbarSearch: 'vn-searchbar', topbarSearch: 'vn-searchbar',
moreMenu: 'vn-ticket-index vn-icon-button[icon=more_vert]', moreMenu: 'vn-ticket-index vn-icon-button[icon=more_vert]',
fourthWeeklyTicket: 'vn-ticket-weekly-index vn-table vn-tbody vn-tr:nth-child(4)', fourthWeeklyTicket: 'vn-ticket-weekly-index vn-card smart-table slot-table tr:nth-child(4)',
fiveWeeklyTicket: 'vn-ticket-weekly-index vn-table vn-tbody vn-tr:nth-child(5)', fiveWeeklyTicket: 'vn-ticket-weekly-index vn-card smart-table slot-table tr:nth-child(5)',
weeklyTicket: 'vn-ticket-weekly-index vn-table > div > vn-tbody > vn-tr', weeklyTicket: 'vn-ticket-weekly-index vn-card smart-table slot-table table tbody tr',
firstWeeklyTicketDeleteIcon: 'vn-ticket-weekly-index vn-tr:nth-child(1) vn-icon-button[icon="delete"]', firstWeeklyTicketDeleteIcon: 'vn-ticket-weekly-index vn-card smart-table slot-table tr:nth-child(1) vn-icon-button[icon="delete"]',
firstWeeklyTicketAgency: 'vn-ticket-weekly-index vn-tr:nth-child(1) [ng-model="weekly.agencyModeFk"]', firstWeeklyTicketAgency: 'vn-ticket-weekly-index vn-card smart-table slot-table tr:nth-child(1) [ng-model="weekly.agencyModeFk"]',
acceptDeleteTurn: '.vn-confirm.shown button[response="accept"]' acceptDeleteTurn: '.vn-confirm.shown button[response="accept"]'
}, },
createTicketView: { createTicketView: {

View File

@ -17,87 +17,110 @@
model="model"> model="model">
</vn-searchbar> </vn-searchbar>
</vn-portal> </vn-portal>
<vn-data-viewer <vn-card>
model="model" <smart-table
class="vn-w-xl"> model="model"
<vn-card> options="$ctrl.smartTableOptions"
<vn-table model="model"> view-config-id="ticketsMonitor"
<vn-thead> expr-builder="$ctrl.exprBuilder(param, value)"
<vn-tr> >
<vn-th field="ticketFk" number>Ticket ID</vn-th> <slot-actions>
<vn-th field="clientName">Client</vn-th> <vn-check
<vn-th>Shipment</vn-th> label="Auto-refresh"
<vn-th>Agency</vn-th> vn-tooltip="Toggle auto-refresh every 2 minutes"
<vn-th>Warehouse</vn-th> on-change="$ctrl.autoRefresh(value)">
<vn-th>Salesperson</vn-th> </vn-check>
<vn-th shrink></vn-th> </slot-actions>
</vn-tr> <slot-table>
</vn-thead> <table>
<vn-tbody> <thead>
<vn-tr <tr>
ng-repeat="weekly in weeklies" <th field="ticketFk">
ui-sref="ticket.card.summary({id: {{::weekly.ticketFk}}})" <span translate>Ticket ID</span>
class="clickable"> </th>
<vn-td number> <th field="clientName">
<span <span translate>Client</span>
vn-click-stop="ticketDescriptor.show($event, weekly.ticketFk)" </th>
class="link"> <th field="weekDay">
{{weekly.ticketFk}} <span translate>Shipment</span>
</span> </th>
</vn-td> <th field="agencyModeFk">
<vn-td> <span translate>Agency</span>
<span </th>
vn-click-stop="clientDescriptor.show($event, weekly.clientFk)" <th field="warehouseFk">
title ="{{::weekly.clientName}}" <span translate>Warehouse</span>
class="link"> </th>
{{::weekly.clientName}} <th field="nickName">
</span> <span translate>Salesperson</span>
</vn-td> </th>
<vn-td vn-click-stop> </tr>
<vn-autocomplete </thead>
vn-id="weekday" <tbody>
ng-model="weekly.weekDay" <tr
data="$ctrl.weekdays" ng-repeat="weekly in weeklies"
show-field="name" ui-sref="ticket.card.summary({id: {{::weekly.ticketFk}}})"
translate-fields="['name']" class="clickable">
value-field="id" <td number>
on-change="$ctrl.onUpdate(weekly.ticketFk, 'weekDay', value)" <span
order="id" vn-click-stop="ticketDescriptor.show($event, weekly.ticketFk)"
class="dense"> class="link">
</vn-autocomplete> {{weekly.ticketFk}}
</vn-td> </span>
<vn-td vn-click-stop> </td>
<vn-autocomplete <td>
vn-id="agencyMode" <span
ng-model="weekly.agencyModeFk" vn-click-stop="clientDescriptor.show($event, weekly.clientFk)"
url="AgencyModes/isActive" title ="{{::weekly.clientName}}"
show-field="name" class="link">
value-field="id" {{::weekly.clientName}}
on-change="$ctrl.onUpdate(weekly.ticketFk, 'agencyModeFk', value)" </span>
order="name" </td>
class="dense"> <td vn-click-stop>
</vn-autocomplete> <vn-autocomplete
</vn-td> vn-id="weekday"
<vn-td>{{::weekly.warehouseName}}</vn-td> ng-model="weekly.weekDay"
<vn-td> data="$ctrl.weekdays"
<span show-field="name"
vn-click-stop="workerDescriptor.show($event, weekly.workerFk)" translate-fields="['name']"
class="link" > value-field="id"
{{::weekly.userName}} on-change="$ctrl.onUpdate(weekly.ticketFk, 'weekDay', value)"
</span> order="id"
</vn-td> class="dense">
<vn-td shrink> </vn-autocomplete>
<vn-icon-button </td>
icon="delete" <td vn-click-stop>
vn-click-stop="deleteWeekly.show(weekly.ticketFk)" <vn-autocomplete
vn-tooltip="Delete"> vn-id="agencyMode"
</vn-icon-button> ng-model="weekly.agencyModeFk"
</vn-td> url="AgencyModes/isActive"
</vn-tr> show-field="name"
</vn-tbody> value-field="id"
</vn-table> on-change="$ctrl.onUpdate(weekly.ticketFk, 'agencyModeFk', value)"
</vn-card> order="name"
</vn-data-viewer> class="dense">
</vn-autocomplete>
</td>
<td vn-click-stop>{{weekly.warehouseName}}</td>
<td>
<span
vn-click-stop="workerDescriptor.show($event, weekly.workerFk)"
class="link" >
{{::weekly.userName}}
</span>
</td>
<td shrink>
<vn-icon-button
icon="delete"
vn-click-stop="deleteWeekly.show(weekly.ticketFk)"
vn-tooltip="Delete">
</vn-icon-button>
</td>
</tr>
</tbody>
</table>
</slot-table>
</smart-table>
</vn-card>
<vn-client-descriptor-popover <vn-client-descriptor-popover
vn-id="clientDescriptor"> vn-id="clientDescriptor">
</vn-client-descriptor-popover> </vn-client-descriptor-popover>

View File

@ -1,3 +1,4 @@
import ngModule from '../module'; import ngModule from '../module';
import Section from 'salix/components/section'; import Section from 'salix/components/section';
@ -15,6 +16,44 @@ export default class Controller extends Section {
{id: 5, name: 'Saturday'}, {id: 5, name: 'Saturday'},
{id: 6, name: 'Sunday'} {id: 6, name: 'Sunday'}
]; ];
this.smartTableOptions = {
activeButtons: {
search: true,
shownColumns: true,
},
columns: [
{
field: 'ticketFk',
searchable: false
},
{
field: 'clientName',
},
{
field: 'weekDay',
searchable: false,
},
{
field: 'agencyModeFk',
searchable: false,
},
{
field: 'warehouseFk',
searchable: false,
},
{
field: 'nickname',
},
]
};
}
exprBuilder(param, value) {
switch (param) {
case 'clientName': return {'c.name': value};
case 'nickName': return {'u.name': value};
}
} }
onUpdate(ticketFk, field, value) { onUpdate(ticketFk, field, value) {