Last fixes & tests passed
gitea/salix/pipeline/head This commit looks good
Details
gitea/salix/pipeline/head This commit looks good
Details
This commit is contained in:
parent
6a8e1bf6b5
commit
6c14743017
|
@ -5,11 +5,11 @@ export default {
|
||||||
userMenuButton: '#user',
|
userMenuButton: '#user',
|
||||||
logoutButton: '#logout',
|
logoutButton: '#logout',
|
||||||
applicationsMenuVisible: '.modules-menu',
|
applicationsMenuVisible: '.modules-menu',
|
||||||
clientsButton: '.modules-menu > li[ui-sref="client.index"]',
|
clientsButton: '.modules-menu [ui-sref="client.index"]',
|
||||||
itemsButton: '.modules-menu > li[ui-sref="item.index"]',
|
itemsButton: '.modules-menu [ui-sref="item.index"]',
|
||||||
ticketsButton: '.modules-menu > li[ui-sref="ticket.index"]',
|
ticketsButton: '.modules-menu [ui-sref="ticket.index"]',
|
||||||
invoiceOutButton: '.modules-menu > li[ui-sref="invoiceOut.index"]',
|
invoiceOutButton: '.modules-menu [ui-sref="invoiceOut.index"]',
|
||||||
claimsButton: '.modules-menu > li[ui-sref="claim.index"]',
|
claimsButton: '.modules-menu [ui-sref="claim.index"]',
|
||||||
returnToModuleIndexButton: 'a[ui-sref="order.index"]',
|
returnToModuleIndexButton: 'a[ui-sref="order.index"]',
|
||||||
homeButton: 'vn-topbar > div.side.start > a',
|
homeButton: 'vn-topbar > div.side.start > a',
|
||||||
userLocalWarehouse: '.user-popover vn-autocomplete[ng-model="$ctrl.localWarehouseFk"]',
|
userLocalWarehouse: '.user-popover vn-autocomplete[ng-model="$ctrl.localWarehouseFk"]',
|
||||||
|
@ -56,8 +56,8 @@ export default {
|
||||||
cancelButton: 'vn-button[href="#!/client/index"]'
|
cancelButton: 'vn-button[href="#!/client/index"]'
|
||||||
},
|
},
|
||||||
clientDescriptor: {
|
clientDescriptor: {
|
||||||
moreMenu: 'vn-client-descriptor vn-icon-menu[icon=more_vert]',
|
moreMenu: 'vn-client-descriptor vn-icon-button[icon=more_vert]',
|
||||||
simpleTicketButton: '.vn-drop-down.shown li[name="Simple ticket"]'
|
simpleTicketButton: '.vn-menu [name="simpleTicket"]'
|
||||||
},
|
},
|
||||||
clientBasicData: {
|
clientBasicData: {
|
||||||
basicDataButton: 'vn-left-menu a[ui-sref="client.card.basicData"]',
|
basicDataButton: 'vn-left-menu a[ui-sref="client.card.basicData"]',
|
||||||
|
@ -241,14 +241,14 @@ export default {
|
||||||
},
|
},
|
||||||
itemDescriptor: {
|
itemDescriptor: {
|
||||||
goBackToModuleIndexButton: 'vn-item-descriptor a[href="#!/item/index"]',
|
goBackToModuleIndexButton: 'vn-item-descriptor a[href="#!/item/index"]',
|
||||||
moreMenu: 'vn-item-descriptor vn-icon-menu[icon=more_vert]',
|
moreMenu: 'vn-item-descriptor vn-icon-button[icon=more_vert]',
|
||||||
moreMenuRegularizeButton: '.vn-drop-down.shown li[name="Regularize stock"]',
|
moreMenuRegularizeButton: '.vn-menu [name="regularizeStock"]',
|
||||||
regularizeQuantity: '.vn-dialog.shown vn-textfield[ng-model="$ctrl.quantity"]',
|
regularizeQuantity: '.vn-dialog.shown vn-textfield[ng-model="$ctrl.quantity"]',
|
||||||
regularizeWarehouse: '.vn-dialog.shown vn-autocomplete[ng-model="$ctrl.warehouseFk"]',
|
regularizeWarehouse: '.vn-dialog.shown vn-autocomplete[ng-model="$ctrl.warehouseFk"]',
|
||||||
editButton: 'vn-item-descriptor vn-float-button[icon="edit"]',
|
editButton: 'vn-item-descriptor vn-float-button[icon="edit"]',
|
||||||
regularizeSaveButton: '.vn-dialog.shown tpl-buttons > button',
|
regularizeSaveButton: '.vn-dialog.shown tpl-buttons > button',
|
||||||
inactiveIcon: 'vn-item-descriptor vn-icon[icon="icon-unavailable"]',
|
inactiveIcon: 'vn-item-descriptor vn-icon[icon="icon-unavailable"]',
|
||||||
navigateBackToIndex: 'vn-item-descriptor vn-icon[icon="chevron_left"]'
|
navigateBackToIndex: 'vn-item-descriptor [name="goToModuleIndex"]'
|
||||||
},
|
},
|
||||||
itemRequest: {
|
itemRequest: {
|
||||||
firstRequestItemID: 'vn-item-request vn-tbody > vn-tr:nth-child(1) > vn-td-editable:nth-child(7)',
|
firstRequestItemID: 'vn-item-request vn-tbody > vn-tr:nth-child(1) > vn-td-editable:nth-child(7)',
|
||||||
|
@ -378,7 +378,7 @@ export default {
|
||||||
topbarSearch: 'vn-searchbar',
|
topbarSearch: 'vn-searchbar',
|
||||||
advancedSearchButton: 'vn-ticket-search-panel button[type=submit]',
|
advancedSearchButton: 'vn-ticket-search-panel button[type=submit]',
|
||||||
searchButton: 'vn-searchbar vn-icon[icon="search"]',
|
searchButton: 'vn-searchbar vn-icon[icon="search"]',
|
||||||
moreMenu: 'vn-ticket-index vn-icon-menu[icon=more_vert]',
|
moreMenu: 'vn-ticket-index vn-icon-button[icon=more_vert]',
|
||||||
sixthWeeklyTicket: 'vn-ticket-weekly-index vn-table vn-tr:nth-child(6)',
|
sixthWeeklyTicket: 'vn-ticket-weekly-index vn-table vn-tr:nth-child(6)',
|
||||||
weeklyTicket: 'vn-ticket-weekly-index vn-table > div > vn-tbody > vn-tr',
|
weeklyTicket: 'vn-ticket-weekly-index vn-table > div > vn-tbody > vn-tr',
|
||||||
firstWeeklyTicketDeleteIcon: 'vn-ticket-weekly-index vn-tr:nth-child(1) vn-icon-button[icon="delete"]',
|
firstWeeklyTicketDeleteIcon: 'vn-ticket-weekly-index vn-tr:nth-child(1) vn-icon-button[icon="delete"]',
|
||||||
|
@ -397,13 +397,13 @@ export default {
|
||||||
idLabelValue: 'vn-ticket-descriptor vn-label-value[label="Id"]',
|
idLabelValue: 'vn-ticket-descriptor vn-label-value[label="Id"]',
|
||||||
stateLabelValue: 'vn-ticket-descriptor vn-label-value[label="State"]',
|
stateLabelValue: 'vn-ticket-descriptor vn-label-value[label="State"]',
|
||||||
goBackToModuleIndexButton: 'vn-ticket-descriptor a[ui-sref="ticket.index"]',
|
goBackToModuleIndexButton: 'vn-ticket-descriptor a[ui-sref="ticket.index"]',
|
||||||
moreMenu: 'vn-ticket-descriptor vn-icon-menu[icon=more_vert]',
|
moreMenu: 'vn-ticket-descriptor vn-icon-button[icon=more_vert]',
|
||||||
moreMenuAddStowaway: '.vn-drop-down.shown li[name="Add stowaway"]',
|
moreMenuAddStowaway: '.vn-menu [name="addStowaway"]',
|
||||||
moreMenuDeleteStowawayButton: '.vn-drop-down.shown li[name="Delete stowaway"]',
|
moreMenuDeleteStowawayButton: '.vn-menu [name="deleteStowaway"]',
|
||||||
moreMenuAddToTurn: '.vn-drop-down.shown li[name="Add turn"]',
|
moreMenuAddToTurn: '.vn-menu [name="addTurn"]',
|
||||||
moreMenuDeleteTicket: '.vn-drop-down.shown li[name="Delete ticket"]',
|
moreMenuDeleteTicket: '.vn-menu [name="deleteTicket"]',
|
||||||
moreMenuMakeInvoice: '.vn-drop-down.shown li[name="Make invoice"]',
|
moreMenuMakeInvoice: '.vn-menu [name="makeInvoice"]',
|
||||||
moreMenuChangeShippedHour: '.vn-drop-down.shown li[name="Change shipped hour"]',
|
moreMenuChangeShippedHour: '.vn-menu [name="changeShipped"]',
|
||||||
changeShippedHourDialog: '.vn-dialog.shown',
|
changeShippedHourDialog: '.vn-dialog.shown',
|
||||||
changeShippedHour: '.vn-dialog.shown vn-input-time[ng-model="$ctrl.newShipped"]',
|
changeShippedHour: '.vn-dialog.shown vn-input-time[ng-model="$ctrl.newShipped"]',
|
||||||
addStowawayDialogFirstTicket: '.vn-dialog.shown vn-table vn-tbody vn-tr',
|
addStowawayDialogFirstTicket: '.vn-dialog.shown vn-table vn-tbody vn-tr',
|
||||||
|
@ -412,7 +412,7 @@ export default {
|
||||||
saturdayButton: '.vn-popup.shown vn-tool-bar > vn-button:nth-child(6)',
|
saturdayButton: '.vn-popup.shown vn-tool-bar > vn-button:nth-child(6)',
|
||||||
acceptDeleteButton: '.vn-dialog.shown button[response="accept"]',
|
acceptDeleteButton: '.vn-dialog.shown button[response="accept"]',
|
||||||
acceptChangeHourButton: '.vn-dialog.shown button[response="accept"]',
|
acceptChangeHourButton: '.vn-dialog.shown button[response="accept"]',
|
||||||
descriptorDeliveryDate: 'vn-ticket-descriptor > div > div.body > div.attributes > vn-label-value:nth-child(6) > section > span',
|
descriptorDeliveryDate: 'vn-ticket-descriptor slot-body > .attributes > vn-label-value:nth-child(3) > section > span',
|
||||||
acceptInvoiceOutButton: '.vn-confirm.shown button[response="accept"]',
|
acceptInvoiceOutButton: '.vn-confirm.shown button[response="accept"]',
|
||||||
acceptDeleteStowawayButton: '.vn-dialog.shown button[response="accept"]'
|
acceptDeleteStowawayButton: '.vn-dialog.shown button[response="accept"]'
|
||||||
},
|
},
|
||||||
|
@ -444,7 +444,7 @@ export default {
|
||||||
saleDescriptorPopoverSummaryButton: '.vn-popover.shown vn-item-descriptor a[ui-sref="item.card.summary({id: $ctrl.item.id})"]',
|
saleDescriptorPopoverSummaryButton: '.vn-popover.shown vn-item-descriptor a[ui-sref="item.card.summary({id: $ctrl.item.id})"]',
|
||||||
descriptorItemDiaryButton: 'vn-item-descriptor .quicklinks.ng-scope > vn-horizontal > a > vn-icon > i',
|
descriptorItemDiaryButton: 'vn-item-descriptor .quicklinks.ng-scope > vn-horizontal > a > vn-icon > i',
|
||||||
newItemFromCatalogButton: 'vn-ticket-sale vn-float-button[icon="add"]',
|
newItemFromCatalogButton: 'vn-ticket-sale vn-float-button[icon="add"]',
|
||||||
newItemButton: 'vn-ticket-sale > vn-vertical > vn-card > vn-vertical > vn-one > vn-icon-button > button > vn-icon > i',
|
newItemButton: 'vn-ticket-sale vn-card vn-icon-button[icon="add_circle"]',
|
||||||
moreMenu: 'vn-ticket-sale vn-tool-bar > vn-button-menu[vn-id="more-button"] > div > button',
|
moreMenu: 'vn-ticket-sale vn-tool-bar > vn-button-menu[vn-id="more-button"] > div > button',
|
||||||
moreMenuCreateClaim: '.vn-drop-down.shown li[name="Add claim"]',
|
moreMenuCreateClaim: '.vn-drop-down.shown li[name="Add claim"]',
|
||||||
moreMenuReserve: '.vn-drop-down.shown li[name="Mark as reserved"]',
|
moreMenuReserve: '.vn-drop-down.shown li[name="Mark as reserved"]',
|
||||||
|
@ -558,8 +558,8 @@ export default {
|
||||||
searchButton: 'vn-searchbar vn-icon[icon="search"]'
|
searchButton: 'vn-searchbar vn-icon[icon="search"]'
|
||||||
},
|
},
|
||||||
claimDescriptor: {
|
claimDescriptor: {
|
||||||
moreMenu: 'vn-claim-descriptor vn-icon-menu[icon=more_vert]',
|
moreMenu: 'vn-claim-descriptor vn-icon-button[icon=more_vert]',
|
||||||
moreMenuDeleteClaim: '.vn-drop-down.shown li[name="Delete claim"]',
|
moreMenuDeleteClaim: '.vn-menu [name="deleteClaim"]',
|
||||||
acceptDeleteClaim: '.vn-confirm.shown button[response="accept"]'
|
acceptDeleteClaim: '.vn-confirm.shown button[response="accept"]'
|
||||||
},
|
},
|
||||||
claimSummary: {
|
claimSummary: {
|
||||||
|
@ -571,7 +571,7 @@ export default {
|
||||||
itemDescriptorPopover: '.vn-popover.shown vn-item-descriptor',
|
itemDescriptorPopover: '.vn-popover.shown vn-item-descriptor',
|
||||||
itemDescriptorPopoverItemDiaryButton: '.vn-popover.shown vn-item-descriptor a[href="#!/item/2/diary"]',
|
itemDescriptorPopoverItemDiaryButton: '.vn-popover.shown vn-item-descriptor a[href="#!/item/2/diary"]',
|
||||||
firstDevelopmentWorker: 'vn-claim-summary vn-horizontal > vn-auto:nth-child(5) vn-table > div > vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(4) > span',
|
firstDevelopmentWorker: 'vn-claim-summary vn-horizontal > vn-auto:nth-child(5) vn-table > div > vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(4) > span',
|
||||||
firstDevelopmentWorkerGoToClientButton: '.vn-popover.shown vn-worker-descriptor vn-quick-links > a[href="#!/client/21/summary"]',
|
firstDevelopmentWorkerGoToClientButton: '.vn-popover.shown vn-worker-descriptor .quicklinks a[href="#!/client/21/summary"]',
|
||||||
firstActionTicketId: 'vn-claim-summary > vn-card > vn-horizontal > vn-auto:nth-child(6) vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > span',
|
firstActionTicketId: 'vn-claim-summary > vn-card > vn-horizontal > vn-auto:nth-child(6) vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(2) > span',
|
||||||
firstActionTicketDescriptor: '.vn-popover.shown vn-ticket-descriptor'
|
firstActionTicketDescriptor: '.vn-popover.shown vn-ticket-descriptor'
|
||||||
},
|
},
|
||||||
|
@ -782,7 +782,7 @@ export default {
|
||||||
weekWorkedHours: 'vn-worker-time-control vn-side-menu vn-label-value > section > span',
|
weekWorkedHours: 'vn-worker-time-control vn-side-menu vn-label-value > section > span',
|
||||||
nextMonthButton: 'vn-worker-time-control vn-side-menu vn-calendar vn-button[icon=keyboard_arrow_right]',
|
nextMonthButton: 'vn-worker-time-control vn-side-menu vn-calendar vn-button[icon=keyboard_arrow_right]',
|
||||||
secondWeekDay: 'vn-worker-time-control vn-side-menu vn-calendar .day:nth-child(8) > .day-number',
|
secondWeekDay: 'vn-worker-time-control vn-side-menu vn-calendar .day:nth-child(8) > .day-number',
|
||||||
navigateBackToIndex: 'vn-worker-descriptor vn-icon[icon="chevron_left"]',
|
navigateBackToIndex: 'vn-worker-descriptor [name="goToModuleIndex"]',
|
||||||
acceptDeleteDialog: '.vn-confirm.shown button[response="accept"]'
|
acceptDeleteDialog: '.vn-confirm.shown button[response="accept"]'
|
||||||
},
|
},
|
||||||
invoiceOutIndex: {
|
invoiceOutIndex: {
|
||||||
|
@ -791,10 +791,10 @@ export default {
|
||||||
searchResult: 'vn-invoice-out-index vn-card > vn-table > div > vn-tbody > a.vn-tr',
|
searchResult: 'vn-invoice-out-index vn-card > vn-table > div > vn-tbody > a.vn-tr',
|
||||||
},
|
},
|
||||||
invoiceOutDescriptor: {
|
invoiceOutDescriptor: {
|
||||||
moreMenu: 'vn-invoice-out-descriptor vn-icon-menu[icon=more_vert]',
|
moreMenu: 'vn-invoice-out-descriptor vn-icon-button[icon=more_vert]',
|
||||||
moreMenuDeleteInvoiceOut: '.vn-drop-down.shown li[name="Delete Invoice"]',
|
moreMenuDeleteInvoiceOut: '.vn-menu [name="deleteInvoice"]',
|
||||||
moreMenuBookInvoiceOut: '.vn-drop-down.shown li[name="Book invoice"]',
|
moreMenuBookInvoiceOut: '.vn-menu [name="bookInvoice"]',
|
||||||
moreMenuShowInvoiceOutPdf: '.vn-drop-down.shown li[name="Show invoice PDF"]',
|
moreMenuShowInvoiceOutPdf: '.vn-menu [name="showInvoicePdf"]',
|
||||||
acceptDeleteButton: '.vn-confirm.shown button[response="accept"]',
|
acceptDeleteButton: '.vn-confirm.shown button[response="accept"]',
|
||||||
acceptBookingButton: '.vn-confirm.shown button[response="accept"]'
|
acceptBookingButton: '.vn-confirm.shown button[response="accept"]'
|
||||||
},
|
},
|
||||||
|
@ -846,8 +846,8 @@ export default {
|
||||||
confirmed: 'vn-entry-summary vn-check[label="Confirmed"]',
|
confirmed: 'vn-entry-summary vn-check[label="Confirmed"]',
|
||||||
},
|
},
|
||||||
entryDescriptor: {
|
entryDescriptor: {
|
||||||
agency: 'vn-entry-descriptor div.body vn-label-value:nth-child(3) span',
|
agency: 'vn-entry-descriptor div.body vn-label-value:nth-child(2) span',
|
||||||
travelsQuicklink: 'vn-entry-descriptor vn-quick-links > a:nth-child(1)',
|
travelsQuicklink: 'vn-entry-descriptor .quicklinks > :nth-child(1) a',
|
||||||
entriesQuicklink: 'vn-entry-descriptor vn-quick-links > a:nth-child(2)'
|
entriesQuicklink: 'vn-entry-descriptor .quicklinks > :nth-child(2) a'
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,6 +1,3 @@
|
||||||
<tpl-title translate>
|
|
||||||
{{::$ctrl.message}}
|
|
||||||
</tpl-title>
|
|
||||||
<tpl-body translate>
|
<tpl-body translate>
|
||||||
{{::$ctrl.question}}
|
{{::$ctrl.question}}
|
||||||
</tpl-body>
|
</tpl-body>
|
||||||
|
|
|
@ -8,7 +8,6 @@ ngModule.vnComponent('vnConfirm', {
|
||||||
slotTemplate: require('./confirm.html'),
|
slotTemplate: require('./confirm.html'),
|
||||||
controller: Confirm,
|
controller: Confirm,
|
||||||
bindings: {
|
bindings: {
|
||||||
question: '@',
|
question: '@'
|
||||||
message: '@?'
|
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -12,8 +12,11 @@
|
||||||
</vn-button>
|
</vn-button>
|
||||||
<form>
|
<form>
|
||||||
<h6
|
<h6
|
||||||
ng-if="::$ctrl.$transclude.isSlotFilled('title')"
|
ng-if="::$ctrl.message || $ctrl.$transclude.isSlotFilled('title')"
|
||||||
ng-transclude="title">
|
ng-transclude="title">
|
||||||
|
<tpl-title translate>
|
||||||
|
{{$ctrl.message}}
|
||||||
|
</tpl-title>
|
||||||
</h6>
|
</h6>
|
||||||
<div
|
<div
|
||||||
class="body"
|
class="body"
|
||||||
|
|
|
@ -140,6 +140,7 @@ ngModule.vnComponent('vnDialog', {
|
||||||
buttons: '?tplButtons'
|
buttons: '?tplButtons'
|
||||||
},
|
},
|
||||||
bindings: {
|
bindings: {
|
||||||
|
message: '@?',
|
||||||
onResponse: '&?',
|
onResponse: '&?',
|
||||||
onAccept: '&?'
|
onAccept: '&?'
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,6 +7,8 @@ vn-icon {
|
||||||
& > i,
|
& > i,
|
||||||
& > i.material-icons {
|
& > i.material-icons {
|
||||||
display: block;
|
display: block;
|
||||||
|
}
|
||||||
|
& > i.material-icons {
|
||||||
font-size: inherit;
|
font-size: inherit;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,27 +1,11 @@
|
||||||
@import "./effects";
|
@import "./effects";
|
||||||
/*
|
|
||||||
ul.menu {
|
|
||||||
list-style-type: none;
|
|
||||||
padding: 0;
|
|
||||||
padding-top: $spacing-md;
|
|
||||||
margin: 0;
|
|
||||||
font-size: inherit;
|
|
||||||
|
|
||||||
& > li > a {
|
|
||||||
@extend %clickable;
|
|
||||||
display: block;
|
|
||||||
color: inherit;
|
|
||||||
padding: 9px 32px;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
|
|
||||||
vn-list,
|
vn-list,
|
||||||
.vn-list {
|
.vn-list {
|
||||||
display: block;
|
display: block;
|
||||||
max-width: $width-sm;
|
max-width: $width-sm;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
padding: 0;
|
padding: $spacing-sm 0;
|
||||||
list-style-type: none;
|
list-style-type: none;
|
||||||
|
|
||||||
vn-list,
|
vn-list,
|
||||||
|
@ -32,6 +16,8 @@ vn-list,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
&.separated {
|
&.separated {
|
||||||
|
padding: 0;
|
||||||
|
|
||||||
vn-item,
|
vn-item,
|
||||||
.vn-item {
|
.vn-item {
|
||||||
border-bottom: $border-thin-light;
|
border-bottom: $border-thin-light;
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import ngModule from '../../module';
|
import ngModule from '../../module';
|
||||||
import Popup from '../popup';
|
import Popup from '../popup';
|
||||||
import template from './index.html';
|
|
||||||
import isMobile from '../../lib/is-mobile';
|
import isMobile from '../../lib/is-mobile';
|
||||||
import './style.scss';
|
import './style.scss';
|
||||||
|
|
||||||
|
@ -17,7 +16,6 @@ export default class Popover extends Popup {
|
||||||
constructor(...args) {
|
constructor(...args) {
|
||||||
super(...args);
|
super(...args);
|
||||||
this.displayMode = isMobile ? 'centered' : 'relative';
|
this.displayMode = isMobile ? 'centered' : 'relative';
|
||||||
this.template = template;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -48,7 +46,6 @@ export default class Popover extends Popup {
|
||||||
// Bug #2147 Popover loses parent location
|
// Bug #2147 Popover loses parent location
|
||||||
set parent(value) {
|
set parent(value) {
|
||||||
this.__parent = value;
|
this.__parent = value;
|
||||||
|
|
||||||
if (!value) return;
|
if (!value) return;
|
||||||
|
|
||||||
const parentRect = value.getBoundingClientRect();
|
const parentRect = value.getBoundingClientRect();
|
||||||
|
@ -119,3 +116,7 @@ export default class Popover extends Popup {
|
||||||
ngModule.vnComponent('vnPopover', {
|
ngModule.vnComponent('vnPopover', {
|
||||||
controller: Popover
|
controller: Popover
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ngModule.run(['$compile', function($compile) {
|
||||||
|
Popover.prototype.contentLinkFn = $compile(require('./index.html'));
|
||||||
|
}]);
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import ngModule from '../../module';
|
import ngModule from '../../module';
|
||||||
import Component from '../../lib/component';
|
import Component from '../../lib/component';
|
||||||
import template from './index.html';
|
|
||||||
import './style.scss';
|
import './style.scss';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -11,7 +10,6 @@ export default class Popup extends Component {
|
||||||
super(...args);
|
super(...args);
|
||||||
this._shown = false;
|
this._shown = false;
|
||||||
this.displayMode = 'centered';
|
this.displayMode = 'centered';
|
||||||
this.template = template;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
$onDestroy() {
|
$onDestroy() {
|
||||||
|
@ -45,11 +43,11 @@ export default class Popup extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
this.$contentScope = this.$.$new();
|
this.$contentScope = this.$.$new();
|
||||||
|
this.contentLinkFn(
|
||||||
let linkFn = this.$compile(this.template);
|
this.$contentScope,
|
||||||
this.popup = linkFn(this.$contentScope, null,
|
element => this.popup = element[0],
|
||||||
{parentBoundTranscludeFn: this.$transclude}
|
{parentBoundTranscludeFn: this.$transclude}
|
||||||
)[0];
|
);
|
||||||
|
|
||||||
this.windowEl = this.popup.querySelector('.window');
|
this.windowEl = this.popup.querySelector('.window');
|
||||||
this.windowEl.focus();
|
this.windowEl.focus();
|
||||||
|
@ -131,3 +129,7 @@ ngModule.vnComponent('vnPopup', {
|
||||||
},
|
},
|
||||||
installClasses: false
|
installClasses: false
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ngModule.run(['$compile', function($compile) {
|
||||||
|
Popup.prototype.contentLinkFn = $compile(require('./index.html'));
|
||||||
|
}]);
|
||||||
|
|
|
@ -5,6 +5,7 @@ vn-spinner {
|
||||||
min-height: 28px;
|
min-height: 28px;
|
||||||
min-width: 28px;
|
min-width: 28px;
|
||||||
color: $color-main;
|
color: $color-main;
|
||||||
|
overflow: hidden;
|
||||||
|
|
||||||
& > .loader {
|
& > .loader {
|
||||||
position: relative;
|
position: relative;
|
||||||
|
|
|
@ -9,12 +9,12 @@ function vnAcl(aclService) {
|
||||||
priority: -1,
|
priority: -1,
|
||||||
link: function(_, $element, $attrs) {
|
link: function(_, $element, $attrs) {
|
||||||
acls = $attrs.vnAcl.split(',').map(i => i.trim());
|
acls = $attrs.vnAcl.split(',').map(i => i.trim());
|
||||||
|
|
||||||
if (acls[0] == '') return;
|
if (acls[0] == '') return;
|
||||||
|
|
||||||
let action = $attrs.vnAclAction || 'disable';
|
let action = $attrs.vnAclAction || 'disable';
|
||||||
|
|
||||||
if (aclService.hasAny(acls)) return;
|
if (aclService.hasAny(acls)) return;
|
||||||
|
console.log('acls', acls, action);
|
||||||
|
|
||||||
if (action === 'disable') {
|
if (action === 'disable') {
|
||||||
let element = $element[0];
|
let element = $element[0];
|
||||||
|
|
|
@ -6,11 +6,9 @@
|
||||||
</vn-icon-button>
|
</vn-icon-button>
|
||||||
<vn-dialog
|
<vn-dialog
|
||||||
class="modal-form"
|
class="modal-form"
|
||||||
vn-id="uvc">
|
vn-id="uvc"
|
||||||
|
message="Fields to show">
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<vn-horizontal class="vn-pa-md header">
|
|
||||||
<h5><span translate>Fields to show</span></h5>
|
|
||||||
</vn-horizontal>
|
|
||||||
<div class="vn-pa-md">
|
<div class="vn-pa-md">
|
||||||
<vn-horizontal ng-repeat="field in fields">
|
<vn-horizontal ng-repeat="field in fields">
|
||||||
<vn-check
|
<vn-check
|
||||||
|
|
|
@ -0,0 +1,15 @@
|
||||||
|
import ngModule from '../module';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Formats the value as id.
|
||||||
|
*
|
||||||
|
* @return {String} The formated value
|
||||||
|
*/
|
||||||
|
export default function id() {
|
||||||
|
return function(value) {
|
||||||
|
if (value == null || value === '')
|
||||||
|
return '';
|
||||||
|
return `#${value}`;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
ngModule.filter('id', id);
|
|
@ -4,3 +4,4 @@ import './dash-if-empty';
|
||||||
import './percentage';
|
import './percentage';
|
||||||
import './currency';
|
import './currency';
|
||||||
import './zero-fill';
|
import './zero-fill';
|
||||||
|
import './id';
|
||||||
|
|
|
@ -87,7 +87,7 @@ export default class Component extends EventEmitter {
|
||||||
* Fills a named transclude slot.
|
* Fills a named transclude slot.
|
||||||
*
|
*
|
||||||
* @param {String} slot The trasnclude slot name
|
* @param {String} slot The trasnclude slot name
|
||||||
* @param {JQElement|String} template The slot name
|
* @param {JQElement|String} template The slot template
|
||||||
*/
|
*/
|
||||||
fillSlot(slot, template) {
|
fillSlot(slot, template) {
|
||||||
const linkFn = this.$compile(template);
|
const linkFn = this.$compile(template);
|
||||||
|
@ -196,6 +196,7 @@ runFn.$inject = [
|
||||||
'vnApp',
|
'vnApp',
|
||||||
'vnToken',
|
'vnToken',
|
||||||
'vnConfig',
|
'vnConfig',
|
||||||
|
'vnModules',
|
||||||
'aclService'
|
'aclService'
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
|
@ -10,15 +10,10 @@ export default class Modules {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
reset() {
|
fetch() {
|
||||||
this.modules = null;
|
const map = {};
|
||||||
}
|
|
||||||
|
|
||||||
get() {
|
|
||||||
if (this.modules)
|
|
||||||
return this.modules;
|
|
||||||
|
|
||||||
const modules = [];
|
const modules = [];
|
||||||
|
|
||||||
for (let mod of this.$window.routes) {
|
for (let mod of this.$window.routes) {
|
||||||
if (!mod || !mod.routes) continue;
|
if (!mod || !mod.routes) continue;
|
||||||
|
|
||||||
|
@ -32,12 +27,15 @@ export default class Modules {
|
||||||
if (res) keyBind = res.key.toUpperCase();
|
if (res) keyBind = res.key.toUpperCase();
|
||||||
}
|
}
|
||||||
|
|
||||||
modules.push({
|
const module = {
|
||||||
name: mod.name || mod.module,
|
name: mod.name || mod.module,
|
||||||
icon: mod.icon || null,
|
icon: mod.icon || null,
|
||||||
route,
|
route,
|
||||||
keyBind
|
keyBind
|
||||||
});
|
};
|
||||||
|
|
||||||
|
modules.push(module);
|
||||||
|
map[mod.module] = mod;
|
||||||
}
|
}
|
||||||
|
|
||||||
const sortedModules = modules.sort((a, b) => {
|
const sortedModules = modules.sort((a, b) => {
|
||||||
|
@ -46,9 +44,23 @@ export default class Modules {
|
||||||
return translatedNameA.localeCompare(translatedNameB);
|
return translatedNameA.localeCompare(translatedNameB);
|
||||||
});
|
});
|
||||||
this.modules = sortedModules;
|
this.modules = sortedModules;
|
||||||
|
this.map = map;
|
||||||
|
}
|
||||||
|
|
||||||
|
reset() {
|
||||||
|
this.modules = null;
|
||||||
|
this.map = null;
|
||||||
|
}
|
||||||
|
|
||||||
|
get() {
|
||||||
|
if (!this.modules) this.fetch();
|
||||||
return this.modules;
|
return this.modules;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getMap() {
|
||||||
|
if (!this.map) this.fetch();
|
||||||
|
return this.map;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
Modules.$inject = ['aclService', '$window', '$translate'];
|
Modules.$inject = ['aclService', '$window', '$translate'];
|
||||||
|
|
||||||
|
|
|
@ -39,3 +39,8 @@
|
||||||
/* Support for IE. */
|
/* Support for IE. */
|
||||||
font-feature-settings: 'liga';
|
font-feature-settings: 'liga';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[class^="icon-"] {
|
||||||
|
padding: .1em;
|
||||||
|
font-size: .833em;
|
||||||
|
}
|
||||||
|
|
|
@ -32,7 +32,7 @@ html [vn-auto], vn-auto, .vn-auto {
|
||||||
flex: initial;
|
flex: initial;
|
||||||
}
|
}
|
||||||
html [vn-none], vn-none, .vn-none {
|
html [vn-none], vn-none, .vn-none {
|
||||||
flex: none 0 1px;
|
flex: 0 0 auto;
|
||||||
}
|
}
|
||||||
html [vn-one], vn-one, .vn-one {
|
html [vn-one], vn-one, .vn-one {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
|
|
|
@ -6,21 +6,22 @@ export default class DescriptorPopover extends Popover {
|
||||||
show(parent, id) {
|
show(parent, id) {
|
||||||
super.show(parent);
|
super.show(parent);
|
||||||
|
|
||||||
const descriptor = this.content.querySelector('.vn-descriptor');
|
this.id = id;
|
||||||
descriptor.$ctrl.load(id)
|
this.descriptor = this.content.querySelector('.vn-descriptor').$ctrl;
|
||||||
.then(() => {
|
this.descriptor.load(id)
|
||||||
this.$.$applyAsync(() => this.relocate());
|
.then(() => this.$.$applyAsync(() => this.relocate()));
|
||||||
});
|
}
|
||||||
|
|
||||||
|
hide() {
|
||||||
|
super.hide();
|
||||||
|
this.id = null;
|
||||||
|
this.descriptor = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ngModule.vnComponent('vnDescriptorPopover', {
|
ngModule.vnComponent('vnDescriptorPopover', {
|
||||||
slotTemplate: require('./index.html'),
|
slotTemplate: require('./index.html'),
|
||||||
controller: DescriptorPopover,
|
controller: DescriptorPopover,
|
||||||
bindings: {
|
|
||||||
id: '<?',
|
|
||||||
entity: '<?',
|
|
||||||
},
|
|
||||||
transclude: {
|
transclude: {
|
||||||
descriptor: '?slotDescriptor'
|
descriptor: '?slotDescriptor'
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,16 +1,11 @@
|
||||||
@import "variables";
|
@import "variables";
|
||||||
|
|
||||||
.vn-descriptor-popover {
|
.vn-descriptor-popover {
|
||||||
.content > vn-spinner {
|
vn-descriptor-content > .descriptor {
|
||||||
padding: $spacing-md;
|
|
||||||
display: block;
|
|
||||||
margin: 0 auto;
|
|
||||||
height: 45px;
|
|
||||||
}
|
|
||||||
.descriptor-wrapper {
|
|
||||||
width: 260px;
|
width: 260px;
|
||||||
}
|
|
||||||
.vn-descriptor > .header > a:first-child {
|
& > .header > a:first-child {
|
||||||
visibility: hidden;
|
visibility: hidden;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -2,12 +2,15 @@
|
||||||
ng-if="$ctrl.descriptor.canceler"
|
ng-if="$ctrl.descriptor.canceler"
|
||||||
enable="true">
|
enable="true">
|
||||||
</vn-spinner>
|
</vn-spinner>
|
||||||
<div ng-if="$ctrl.descriptor.entity">
|
<div
|
||||||
|
ng-if="!$ctrl.descriptor.canceler"
|
||||||
|
class="descriptor">
|
||||||
<div class="header">
|
<div class="header">
|
||||||
<a
|
<a
|
||||||
translate-attr="{title: 'Return to module index'}"
|
translate-attr="{title: 'Go to module index'}"
|
||||||
ui-sref="{{::$ctrl.module}}.index">
|
ui-sref="{{::$ctrl.module}}.index"
|
||||||
<vn-icon icon="chevron_left"></vn-icon>
|
name="goToModuleIndex">
|
||||||
|
<vn-icon icon="{{$ctrl.moduleMap[$ctrl.module].icon}}"></vn-icon>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a
|
||||||
translate-attr="{title: 'Preview'}"
|
translate-attr="{title: 'Preview'}"
|
||||||
|
@ -15,12 +18,23 @@
|
||||||
<vn-icon icon="desktop_windows"></vn-icon>
|
<vn-icon icon="desktop_windows"></vn-icon>
|
||||||
</a>
|
</a>
|
||||||
<vn-icon-button
|
<vn-icon-button
|
||||||
|
ng-class="::{invisible: !$ctrl.$transclude.isSlotFilled('menu')}"
|
||||||
icon="more_vert"
|
icon="more_vert"
|
||||||
vn-popover="menu">
|
vn-popover="menu">
|
||||||
</vn-icon-button>
|
</vn-icon-button>
|
||||||
</div>
|
</div>
|
||||||
<vn-menu vn-id="menu">
|
<vn-menu vn-id="menu">
|
||||||
<div ng-transclude="menu"></div>
|
<vn-list ng-transclude="menu"></vn-list>
|
||||||
</vn-menu>
|
</vn-menu>
|
||||||
<div ng-transclude="body"></div>
|
<div ng-transclude="before"></div>
|
||||||
|
<div class="body">
|
||||||
|
<div class="top">
|
||||||
|
<h5>{{$ctrl.description}}</h5>
|
||||||
|
<div class="text-secondary">
|
||||||
|
{{$ctrl.descriptor.id | id}}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div ng-transclude="body"></div>
|
||||||
|
</div>
|
||||||
|
<div ng-transclude="after"></div>
|
||||||
</div>
|
</div>
|
|
@ -3,15 +3,17 @@ import Component from 'core/lib/component';
|
||||||
import './style.scss';
|
import './style.scss';
|
||||||
import './quick-link';
|
import './quick-link';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Small card with basing entity information and actions.
|
||||||
|
*/
|
||||||
export default class Descriptor extends Component {
|
export default class Descriptor extends Component {
|
||||||
$postLink() {
|
$postLink() {
|
||||||
const content = this.element.querySelector('vn-descriptor-content');
|
const content = this.element.querySelector('vn-descriptor-content');
|
||||||
|
if (!content) throw new Error('Directive vnDescriptorContent not found');
|
||||||
|
|
||||||
if (content) {
|
angular.element(content)
|
||||||
angular.element(content)
|
.controller('vnDescriptorContent')
|
||||||
.controller('vnDescriptorContent')
|
.descriptor = this;
|
||||||
.descriptor = this;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
get id() {
|
get id() {
|
||||||
|
@ -114,13 +116,26 @@ ngModule.vnComponent('vnDescriptor', {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
export class DescriptorContent {
|
||||||
|
constructor($transclude, vnModules) {
|
||||||
|
this.$transclude = $transclude;
|
||||||
|
this.moduleMap = vnModules.getMap();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
DescriptorContent.$inject = ['$transclude', 'vnModules'];
|
||||||
|
|
||||||
ngModule.component('vnDescriptorContent', {
|
ngModule.component('vnDescriptorContent', {
|
||||||
template: require('./index.html'),
|
template: require('./index.html'),
|
||||||
|
controller: DescriptorContent,
|
||||||
bindings: {
|
bindings: {
|
||||||
module: '@'
|
module: '@',
|
||||||
|
description: '<',
|
||||||
|
descriptor: '<?'
|
||||||
},
|
},
|
||||||
transclude: {
|
transclude: {
|
||||||
body: 'slotBody',
|
body: 'slotBody',
|
||||||
|
before: '?slotBefore',
|
||||||
|
after: '?slotAfter',
|
||||||
menu: '?slotMenu'
|
menu: '?slotMenu'
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
|
@ -2,7 +2,14 @@
|
||||||
@import "./effects";
|
@import "./effects";
|
||||||
@import "./variables";
|
@import "./variables";
|
||||||
|
|
||||||
.vn-descriptor > vn-descriptor-content {
|
vn-descriptor-content {
|
||||||
|
display: block;
|
||||||
|
|
||||||
|
& > vn-spinner {
|
||||||
|
display: block;
|
||||||
|
height: 40px;
|
||||||
|
padding: $spacing-md;
|
||||||
|
}
|
||||||
& > div {
|
& > div {
|
||||||
display: block;
|
display: block;
|
||||||
box-shadow: 0 1px 3px $color-shadow;
|
box-shadow: 0 1px 3px $color-shadow;
|
||||||
|
@ -15,13 +22,16 @@
|
||||||
color: $color-font-dark;
|
color: $color-font-dark;
|
||||||
|
|
||||||
& > * {
|
& > * {
|
||||||
@extend %clickable;
|
display: flex;
|
||||||
min-width: 45px;
|
min-width: 45px;
|
||||||
height: 45px;
|
height: 45px;
|
||||||
box-sizing: border-box;
|
box-sizing: border-box;
|
||||||
display: flex;
|
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
|
}
|
||||||
|
& > a,
|
||||||
|
& > vn-icon-button {
|
||||||
|
@extend %clickable;
|
||||||
color: inherit;
|
color: inherit;
|
||||||
|
|
||||||
& > vn-icon {
|
& > vn-icon {
|
||||||
|
@ -32,51 +42,59 @@
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
& > div > slot-body {
|
& > .body {
|
||||||
display: block;
|
display: block;
|
||||||
padding: $spacing-sm;
|
padding: $spacing-md;
|
||||||
|
|
||||||
& > * {
|
& > .top {
|
||||||
padding: $spacing-sm;
|
|
||||||
}
|
|
||||||
& > .attributes > h5 {
|
|
||||||
padding-bottom: $spacing-sm;
|
padding-bottom: $spacing-sm;
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
& > * {
|
||||||
overflow: hidden;
|
margin-bottom: 0;
|
||||||
}
|
text-overflow: ellipsis;
|
||||||
& > .icons {
|
white-space: nowrap;
|
||||||
display: flex;
|
overflow: hidden;
|
||||||
align-items: center;
|
|
||||||
justify-content: center;
|
|
||||||
padding: 0;
|
|
||||||
|
|
||||||
& > vn-icon {
|
|
||||||
padding: $spacing-sm;
|
|
||||||
color: $color-marginal;
|
|
||||||
font-size: 1.5rem;
|
|
||||||
|
|
||||||
&.bright {
|
|
||||||
color: $color-main;
|
|
||||||
opacity: 1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
& > .quicklinks {
|
& > div > slot-body {
|
||||||
display: flex;
|
& > * {
|
||||||
align-items: center;
|
padding-bottom: $spacing-md;
|
||||||
justify-content: center;
|
}
|
||||||
|
& > :last-child {
|
||||||
vn-quick-link > a {
|
padding-bottom: 0;
|
||||||
|
}
|
||||||
|
& > .icons {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
justify-content: center;
|
justify-content: center;
|
||||||
padding: 0 $spacing-md;
|
|
||||||
margin: 0 $spacing-sm;
|
|
||||||
|
|
||||||
& > vn-icon {
|
& > vn-icon {
|
||||||
font-size: 1.75rem;
|
padding: $spacing-xs $spacing-sm;
|
||||||
padding: 0;
|
color: $color-marginal;
|
||||||
|
font-size: 1.5rem;
|
||||||
|
|
||||||
|
&.bright {
|
||||||
|
color: $color-main;
|
||||||
|
opacity: 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
& > .quicklinks {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
|
||||||
|
vn-quick-link > a {
|
||||||
|
display: flex;
|
||||||
|
align-items: center;
|
||||||
|
justify-content: center;
|
||||||
|
padding: 0 $spacing-md;
|
||||||
|
margin: 0 $spacing-sm;
|
||||||
|
|
||||||
|
& > vn-icon {
|
||||||
|
font-size: 1.75rem;
|
||||||
|
padding: 0;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,18 +39,26 @@
|
||||||
</vn-icon-button>
|
</vn-icon-button>
|
||||||
</div>
|
</div>
|
||||||
<vn-menu vn-id="apps-menu">
|
<vn-menu vn-id="apps-menu">
|
||||||
<ul class="modules-menu vn-pa-sm">
|
<vn-list class="modules-menu">
|
||||||
<li ui-sref="home">
|
<a class="vn-item" ui-sref="home">
|
||||||
<vn-icon icon="home"></vn-icon>
|
<vn-item-section avatar>
|
||||||
<span translate>Home</span>
|
<vn-icon icon="home"></vn-icon>
|
||||||
</li>
|
</vn-item-section>
|
||||||
<li
|
<vn-item-section translate>
|
||||||
|
Home
|
||||||
|
</vn-item-section>
|
||||||
|
</a>
|
||||||
|
<a class="vn-item"
|
||||||
ng-repeat="mod in ::$ctrl.modules"
|
ng-repeat="mod in ::$ctrl.modules"
|
||||||
ui-sref="{{::mod.route.state}}">
|
ui-sref="{{::mod.route.state}}">
|
||||||
<vn-icon icon="{{::mod.icon || 'photo'}}"></vn-icon>
|
<vn-item-section avatar>
|
||||||
<span translate>{{::mod.name}}</span>
|
<vn-icon icon="{{::mod.icon || 'photo'}}"></vn-icon>
|
||||||
</li>
|
</vn-item-section>
|
||||||
</ul>
|
<vn-item-section translate>
|
||||||
|
{{::mod.name}}
|
||||||
|
</vn-item-section>
|
||||||
|
</a>
|
||||||
|
</vn-list>
|
||||||
</vn-menu>
|
</vn-menu>
|
||||||
<vn-user-popover
|
<vn-user-popover
|
||||||
vn-id="user-popover">
|
vn-id="user-popover">
|
||||||
|
|
|
@ -142,29 +142,6 @@ vn-layout {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
.vn-popover .modules-menu {
|
|
||||||
list-style-type: none;
|
|
||||||
margin: 0;
|
|
||||||
color: $color-font-dark;
|
|
||||||
|
|
||||||
& > li {
|
|
||||||
@extend %clickable-light;
|
|
||||||
background-color: $color-main;
|
|
||||||
margin-bottom: 9px;
|
|
||||||
padding: 12px;
|
|
||||||
border-radius: 1px;
|
|
||||||
min-width: 128px;
|
|
||||||
white-space: nowrap;
|
|
||||||
|
|
||||||
&:last-child {
|
|
||||||
margin-bottom: 0;
|
|
||||||
}
|
|
||||||
& > vn-icon {
|
|
||||||
padding-right: 4px;
|
|
||||||
vertical-align: middle;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#user {
|
#user {
|
||||||
font-size: 1.5rem;
|
font-size: 1.5rem;
|
||||||
height: auto;
|
height: auto;
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
class="vn-item"
|
class="vn-item"
|
||||||
ng-class="{active: item.active && !item.childs, expanded: item.active}"
|
ng-class="{active: item.active && !item.childs, expanded: item.active}"
|
||||||
ng-click="$ctrl.setActive(item)">
|
ng-click="$ctrl.setActive(item)">
|
||||||
<vn-item-section avatar>
|
<vn-item-section avatar>
|
||||||
<vn-icon icon="{{::item.icon}}" ng-if="::item.icon"></vn-icon>
|
<vn-icon icon="{{::item.icon}}" ng-if="::item.icon"></vn-icon>
|
||||||
</vn-item-section>
|
</vn-item-section>
|
||||||
<vn-item-section translate>
|
<vn-item-section translate>
|
||||||
|
|
|
@ -3,16 +3,12 @@
|
||||||
@import "variables";
|
@import "variables";
|
||||||
|
|
||||||
vn-left-menu {
|
vn-left-menu {
|
||||||
& > .vn-list {
|
& > .vn-list > li > .vn-item {
|
||||||
padding: $spacing-md 0;
|
& > [side] > vn-icon[icon="keyboard_arrow_down"] {
|
||||||
|
transition: transform 200ms;
|
||||||
& > li > .vn-item {
|
}
|
||||||
& > [side] > vn-icon[icon="keyboard_arrow_down"] {
|
&.expanded > [side] > vn-icon[icon="keyboard_arrow_down"] {
|
||||||
transition: transform 200ms;
|
transform: rotate(180deg);
|
||||||
}
|
|
||||||
&.expanded > [side] > vn-icon[icon="keyboard_arrow_down"] {
|
|
||||||
transform: rotate(180deg);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ Name: Nombre
|
||||||
Preview: Vista previa
|
Preview: Vista previa
|
||||||
Profile: Perfil
|
Profile: Perfil
|
||||||
Push on applications menu: Para abrir un módulo pulsa en el menú de aplicaciones
|
Push on applications menu: Para abrir un módulo pulsa en el menú de aplicaciones
|
||||||
Return to module index: Volver a la página principal del módulo
|
Go to module index: Ir al índice del módulo
|
||||||
What is new: Novedades de la versión
|
What is new: Novedades de la versión
|
||||||
Settings: Ajustes
|
Settings: Ajustes
|
||||||
|
|
||||||
|
|
|
@ -130,5 +130,6 @@
|
||||||
"ORDER_ROW_UNAVAILABLE": "No hay disponibilidad de este producto",
|
"ORDER_ROW_UNAVAILABLE": "No hay disponibilidad de este producto",
|
||||||
"Distance must be lesser than 1000": "La distancia debe ser inferior a 1000",
|
"Distance must be lesser than 1000": "La distancia debe ser inferior a 1000",
|
||||||
"This ticket is deleted": "Este ticket está eliminado",
|
"This ticket is deleted": "Este ticket está eliminado",
|
||||||
"A travel with this data already exists": "Ya existe un travel con estos datos"
|
"A travel with this data already exists": "Ya existe un travel con estos datos",
|
||||||
|
"AMOUNT_NOT_MATCH_GROUPING": "AMOUNT_NOT_MATCH_GROUPING"
|
||||||
}
|
}
|
|
@ -1,36 +1,28 @@
|
||||||
<vn-descriptor-content module="claim">
|
<vn-descriptor-content
|
||||||
|
module="claim"
|
||||||
|
description="$ctrl.claim.client.name">
|
||||||
<slot-menu>
|
<slot-menu>
|
||||||
<ul class="vn-list">
|
<a class="vn-item"
|
||||||
<li>
|
ui-sref="ticket.create({clientFk: $ctrl.client.id})"
|
||||||
<a class="vn-item"
|
translate>
|
||||||
ui-sref="ticket.create({clientFk: $ctrl.client.id})"
|
Show Pickup order
|
||||||
translate>
|
</a>
|
||||||
Show Pickup order
|
<vn-item
|
||||||
</a>
|
ng-click="confirmPickupOrder.show()"
|
||||||
</li>
|
translate>
|
||||||
<li>
|
Send Pickup order
|
||||||
<div class="vn-item"
|
</vn-item>
|
||||||
ng-click="confirmPickupOrder.show()"
|
<vn-item
|
||||||
translate>
|
vn-acl="salesAssistant"
|
||||||
Send Pickup order
|
vn-acl-action="remove"
|
||||||
</div>
|
ng-click="confirmDeleteClaim.show()"
|
||||||
</li>
|
name="deleteClaim"
|
||||||
<li vn-acl="salesAssistant">
|
translate>
|
||||||
<div class="vn-item"
|
Delete claim
|
||||||
ng-click="confirmDeleteClaim.show()"
|
</vn-item>
|
||||||
translate>
|
|
||||||
Delete claim
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</slot-menu>
|
</slot-menu>
|
||||||
<slot-body>
|
<slot-body>
|
||||||
<div class="attributes">
|
<div class="attributes">
|
||||||
<h5>{{$ctrl.claim.id}}</h5>
|
|
||||||
<vn-label-value
|
|
||||||
label="Client"
|
|
||||||
value="{{::$ctrl.claim.client.name}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value
|
<vn-label-value
|
||||||
label="State"
|
label="State"
|
||||||
value="{{$ctrl.claim.claimState.description}}">
|
value="{{$ctrl.claim.claimState.description}}">
|
||||||
|
@ -76,15 +68,14 @@
|
||||||
</slot-body>
|
</slot-body>
|
||||||
</vn-descriptor-content>
|
</vn-descriptor-content>
|
||||||
<vn-confirm
|
<vn-confirm
|
||||||
vn-id="confirm-pickup-order"
|
vn-id="confirmPickupOrder"
|
||||||
on-accept="$ctrl.sendPickupOrder()"
|
on-accept="$ctrl.sendPickupOrder()"
|
||||||
question="Send Pickup order"
|
question="Send Pickup order"
|
||||||
message="Are you sure you want to send it?">
|
message="Are you sure you want to send it?">
|
||||||
</vn-confirm>
|
</vn-confirm>
|
||||||
<vn-confirm
|
<vn-confirm
|
||||||
vn-id="confirm-delete-claim"
|
vn-id="confirmDeleteClaim"
|
||||||
on-accept="$ctrl.deleteClaim()"
|
on-accept="$ctrl.deleteClaim()"
|
||||||
question="Delete claim"
|
question="Delete claim"
|
||||||
message="Are you sure you want to delete this claim?">
|
message="Are you sure you want to delete this claim?">
|
||||||
</vn-confirm>
|
</vn-confirm>
|
||||||
|
|
||||||
|
|
|
@ -81,10 +81,10 @@
|
||||||
</a>
|
</a>
|
||||||
<!-- Add Lines Dialog -->
|
<!-- Add Lines Dialog -->
|
||||||
<vn-dialog vn-id="add-sales" class="modal-form">
|
<vn-dialog vn-id="add-sales" class="modal-form">
|
||||||
|
<tpl-title>
|
||||||
|
<span translate>Claimable sales from ticket</span> {{$ctrl.claim.ticketFk}}
|
||||||
|
</tpl-title>
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<vn-horizontal class="header vn-pa-md">
|
|
||||||
<h5><span translate>Claimable sales from ticket</span> {{$ctrl.claim.ticketFk}}</h5>
|
|
||||||
</vn-horizontal>
|
|
||||||
<vn-horizontal class="vn-pa-md">
|
<vn-horizontal class="vn-pa-md">
|
||||||
<vn-table>
|
<vn-table>
|
||||||
<vn-thead>
|
<vn-thead>
|
||||||
|
|
|
@ -150,9 +150,9 @@
|
||||||
<!-- Create custom agent dialog -->
|
<!-- Create custom agent dialog -->
|
||||||
<vn-dialog class="edit"
|
<vn-dialog class="edit"
|
||||||
vn-id="customAgent"
|
vn-id="customAgent"
|
||||||
on-accept="$ctrl.onCustomAgentAccept()">
|
on-accept="$ctrl.onCustomAgentAccept()"
|
||||||
|
message="New customs agent">
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<h5 class="vn-py-sm" translate>New customs agent</h5>
|
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-textfield vn-one vn-focus
|
<vn-textfield vn-one vn-focus
|
||||||
label="NIF"
|
label="NIF"
|
||||||
|
|
|
@ -198,9 +198,9 @@
|
||||||
<!-- Create custom agent dialog -->
|
<!-- Create custom agent dialog -->
|
||||||
<vn-dialog class="edit"
|
<vn-dialog class="edit"
|
||||||
vn-id="customAgent"
|
vn-id="customAgent"
|
||||||
on-accept="$ctrl.onCustomAgentAccept()">
|
on-accept="$ctrl.onCustomAgentAccept()"
|
||||||
|
message="New customs agent">
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<h5 class="vn-py-sm" translate>New customs agent</h5>
|
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-textfield vn-one vn-focus
|
<vn-textfield vn-one vn-focus
|
||||||
label="NIF"
|
label="NIF"
|
||||||
|
|
|
@ -98,9 +98,9 @@
|
||||||
<!-- Create bank entity dialog -->
|
<!-- Create bank entity dialog -->
|
||||||
<vn-dialog class="edit"
|
<vn-dialog class="edit"
|
||||||
vn-id="bankEntityDialog"
|
vn-id="bankEntityDialog"
|
||||||
on-accept="$ctrl.onBankEntityAccept()">
|
on-accept="$ctrl.onBankEntityAccept()"
|
||||||
|
message="New bank entity">
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<h5 class="vn-py-sm" translate>New bank entity</h5>
|
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-textfield
|
<vn-textfield
|
||||||
vn-one
|
vn-one
|
||||||
|
|
|
@ -1,36 +1,26 @@
|
||||||
<vn-descriptor-content module="client">
|
<vn-descriptor-content
|
||||||
|
module="client"
|
||||||
|
description="$ctrl.client.name">
|
||||||
<slot-menu>
|
<slot-menu>
|
||||||
<ul class="vn-list">
|
<a class="vn-item"
|
||||||
<li>
|
ui-sref="ticket.create({clientFk: $ctrl.client.id})"
|
||||||
<a class="vn-item"
|
name="simpleTicket"
|
||||||
ui-sref="ticket.create({clientFk: $ctrl.client.id})"
|
translate>
|
||||||
translate>
|
Simple ticket
|
||||||
Simple ticket
|
</a>
|
||||||
</a>
|
<vn-item
|
||||||
</li>
|
ng-click="$ctrl.showSMSDialog()"
|
||||||
<li>
|
translate>
|
||||||
<div class="vn-item"
|
Send SMS
|
||||||
ng-click="$ctrl.showSMSDialog()"
|
</vn-item>
|
||||||
translate>
|
<vn-item
|
||||||
Send SMS
|
ng-click="consumerReportDialog.show()"
|
||||||
</div>
|
translate>
|
||||||
</li>
|
Send consumer report
|
||||||
<li>
|
</vn-item>
|
||||||
<div class="vn-item"
|
|
||||||
ng-click="consumerReportDialog.show()"
|
|
||||||
translate>
|
|
||||||
Send consumer report
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</slot-menu>
|
</slot-menu>
|
||||||
<slot-body>
|
<slot-body>
|
||||||
<div class="attributes">
|
<div class="attributes">
|
||||||
<h5>{{$ctrl.client.name}}</h5>
|
|
||||||
<vn-label-value
|
|
||||||
label="Id"
|
|
||||||
value="{{$ctrl.client.id}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value
|
<vn-label-value
|
||||||
label="Phone"
|
label="Phone"
|
||||||
value="{{$ctrl.client.phone | phone}}">
|
value="{{$ctrl.client.phone | phone}}">
|
||||||
|
@ -101,26 +91,22 @@
|
||||||
</vn-client-sms>
|
</vn-client-sms>
|
||||||
<vn-dialog
|
<vn-dialog
|
||||||
vn-id="consumerReportDialog"
|
vn-id="consumerReportDialog"
|
||||||
on-accept="$ctrl.onConsumerReportAccept()">
|
on-accept="$ctrl.onConsumerReportAccept()"
|
||||||
|
message="Send consumer report">
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<div>
|
<vn-date-picker
|
||||||
<h5 style="text-align: center">
|
vn-id="from"
|
||||||
<span translate>Send consumer report</span>
|
vn-one
|
||||||
</h5>
|
ng-model="$ctrl.from"
|
||||||
<vn-date-picker
|
label="From date"
|
||||||
vn-id="from"
|
vn-focus>
|
||||||
vn-one
|
</vn-date-picker>
|
||||||
ng-model="$ctrl.from"
|
<vn-date-picker
|
||||||
label="From date"
|
vn-id="to"
|
||||||
vn-focus>
|
vn-one
|
||||||
</vn-date-picker>
|
ng-model="$ctrl.to"
|
||||||
<vn-date-picker
|
label="To date">
|
||||||
vn-id="to"
|
|
||||||
vn-one
|
|
||||||
ng-model="$ctrl.to"
|
|
||||||
label="To date">
|
|
||||||
</vn-date-picker>
|
</vn-date-picker>
|
||||||
</div>
|
|
||||||
</tpl-body>
|
</tpl-body>
|
||||||
<tpl-buttons>
|
<tpl-buttons>
|
||||||
<input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/>
|
<input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/>
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<vn-dialog class="edit"
|
<vn-dialog class="edit"
|
||||||
vn-id="postcodeDialog"
|
vn-id="postcodeDialog"
|
||||||
on-open="$ctrl.onOpen()"
|
on-open="$ctrl.onOpen()"
|
||||||
on-accept="$ctrl.onAccept()">
|
on-accept="$ctrl.onAccept()"
|
||||||
|
message="New postcode">
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<h5 class="vn-py-sm" translate>New postcode</h5>
|
|
||||||
<p translate>Please, ensure you put the correct data!</p>
|
<p translate>Please, ensure you put the correct data!</p>
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-textfield
|
<vn-textfield
|
||||||
|
|
|
@ -1,12 +1,12 @@
|
||||||
{
|
{
|
||||||
"module": "client",
|
"module": "client",
|
||||||
"name": "Clients",
|
"name": "Clients",
|
||||||
"icon": "icon-person",
|
"icon": "person",
|
||||||
"validations" : true,
|
"validations" : true,
|
||||||
"dependencies": ["worker", "invoiceOut"],
|
"dependencies": ["worker", "invoiceOut"],
|
||||||
"menus": {
|
"menus": {
|
||||||
"main": [
|
"main": [
|
||||||
{"state": "client.index", "icon": "icon-person"}
|
{"state": "client.index", "icon": "person"}
|
||||||
],
|
],
|
||||||
"card": [
|
"card": [
|
||||||
{"state": "client.card.basicData", "icon": "settings"},
|
{"state": "client.card.basicData", "icon": "settings"},
|
||||||
|
|
|
@ -1,23 +1,18 @@
|
||||||
<vn-descriptor-content module="entry">
|
<vn-descriptor-content
|
||||||
|
module="entry"
|
||||||
|
description="$ctrl.entry.supplier.nickname">
|
||||||
<slot-menu>
|
<slot-menu>
|
||||||
<ul class="vn-list">
|
<vn-item
|
||||||
<li>
|
ng-click="$ctrl.showEntryReport()"
|
||||||
<div class="vn-item"
|
translate>
|
||||||
ng-click="$ctrl.showEntryReport()"
|
Show entry report
|
||||||
translate>
|
</vn-item>
|
||||||
Show entry report
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</slot-menu>
|
</slot-menu>
|
||||||
<slot-body>
|
<slot-body>
|
||||||
<div class="attributes">
|
<div class="attributes">
|
||||||
<vn-label-value label="Id"
|
<vn-label-value label="Id"
|
||||||
value="{{$ctrl.entry.id}}">
|
value="{{$ctrl.entry.id}}">
|
||||||
</vn-label-value>
|
</vn-label-value>
|
||||||
<vn-label-value label="Supplier"
|
|
||||||
value="{{$ctrl.entry.supplier.nickname}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value label="Agency "
|
<vn-label-value label="Agency "
|
||||||
value="{{$ctrl.entry.travel.agency.name}}">
|
value="{{$ctrl.entry.travel.agency.name}}">
|
||||||
</vn-label-value>
|
</vn-label-value>
|
||||||
|
|
|
@ -11,10 +11,14 @@ class Controller extends Descriptor {
|
||||||
}
|
}
|
||||||
|
|
||||||
get travelFilter() {
|
get travelFilter() {
|
||||||
return JSON.stringify({agencyFk: this.entry.travel.agencyFk});
|
return this.entry && JSON.stringify({
|
||||||
|
agencyFk: this.entry.travel.agencyFk
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
get entryFilter() {
|
get entryFilter() {
|
||||||
|
if (!this.entry) return null;
|
||||||
|
|
||||||
const date = new Date(this.entry.travel.landed);
|
const date = new Date(this.entry.travel.landed);
|
||||||
date.setHours(0, 0, 0, 0);
|
date.setHours(0, 0, 0, 0);
|
||||||
|
|
||||||
|
@ -25,7 +29,7 @@ class Controller extends Descriptor {
|
||||||
to.setDate(to.getDate() + 10);
|
to.setDate(to.getDate() + 10);
|
||||||
|
|
||||||
return JSON.stringify({
|
return JSON.stringify({
|
||||||
supplierFk: this.entry.travel.supplierFk,
|
supplierFk: this.entry.supplierFk,
|
||||||
from,
|
from,
|
||||||
to
|
to
|
||||||
});
|
});
|
||||||
|
|
|
@ -58,7 +58,8 @@
|
||||||
<vn-icon
|
<vn-icon
|
||||||
ng-if="entry.notes.length"
|
ng-if="entry.notes.length"
|
||||||
vn-tooltip="{{::entry.notes}}"
|
vn-tooltip="{{::entry.notes}}"
|
||||||
icon="insert_drive_file">
|
icon="insert_drive_file"
|
||||||
|
class="bright">
|
||||||
</vn-icon>
|
</vn-icon>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
</a>
|
</a>
|
||||||
|
|
|
@ -1,6 +1,5 @@
|
||||||
import ngModule from '../module';
|
import ngModule from '../module';
|
||||||
import Section from 'salix/components/section';
|
import Section from 'salix/components/section';
|
||||||
import './style.scss';
|
|
||||||
|
|
||||||
export default class Controller extends Section {}
|
export default class Controller extends Section {}
|
||||||
|
|
||||||
|
|
|
@ -1,5 +0,0 @@
|
||||||
@import "variables";
|
|
||||||
|
|
||||||
vn-icon[icon=insert_drive_file] {
|
|
||||||
color: $color-font-secondary;
|
|
||||||
}
|
|
|
@ -3,8 +3,4 @@
|
||||||
|
|
||||||
vn-entry-summary .summary {
|
vn-entry-summary .summary {
|
||||||
max-width: $width-lg;
|
max-width: $width-lg;
|
||||||
|
|
||||||
vn-icon[icon=insert_drive_file]{
|
|
||||||
color: $color-font-secondary;
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -1,33 +1,33 @@
|
||||||
<vn-descriptor-content module="invoiceOut">
|
<vn-descriptor-content
|
||||||
|
module="invoiceOut"
|
||||||
|
description="$ctrl.invoiceOut.ref">
|
||||||
<slot-menu>
|
<slot-menu>
|
||||||
<ul class="vn-list">
|
<a class="vn-item"
|
||||||
<li>
|
href="api/InvoiceOuts/{{$ctrl.id}}/download?access_token={{$ctrl.vnToken.token}}"
|
||||||
<a class="vn-item"
|
target="_blank"
|
||||||
href="api/InvoiceOuts/{{$ctrl.id}}/download?access_token={{$ctrl.vnToken.token}}"
|
name="showInvoicePdf"
|
||||||
target="_blank"
|
translate>
|
||||||
translate>
|
Show invoice PDF
|
||||||
Show invoice PDF
|
</a>
|
||||||
</a>
|
<vn-item
|
||||||
</li>
|
ng-click="deleteConfirmation.show()"
|
||||||
<li vn-acl="invoicing">
|
vn-acl="invoicing"
|
||||||
<div class="vn-item"
|
vn-acl-action="remove"
|
||||||
ng-click="deleteConfirmation.show()"
|
name="deleteInvoice"
|
||||||
translate>
|
translate>
|
||||||
Delete Invoice
|
Delete Invoice
|
||||||
</div>
|
</vn-item>
|
||||||
</li>
|
<vn-item
|
||||||
<li vn-acl="invoicing">
|
ng-click="bookConfirmation.show()"
|
||||||
<div class="vn-item"
|
vn-acl="invoicing"
|
||||||
ng-click="bookConfirmation.show()"
|
vn-acl-action="remove"
|
||||||
translate>
|
name="bookInvoice"
|
||||||
Book invoice
|
translate>
|
||||||
</div>
|
Book invoice
|
||||||
</li>
|
</vn-item>
|
||||||
</ul>
|
|
||||||
</slot-menu>
|
</slot-menu>
|
||||||
<slot-body>
|
<slot-body>
|
||||||
<div class="attributes">
|
<div class="attributes">
|
||||||
<h5>{{$ctrl.invoiceOut.ref}}</h5>
|
|
||||||
<vn-label-value
|
<vn-label-value
|
||||||
label="Date"
|
label="Date"
|
||||||
value="{{$ctrl.invoiceOut.issued | date: 'dd/MM/yyyy'}}">
|
value="{{$ctrl.invoiceOut.issued | date: 'dd/MM/yyyy'}}">
|
||||||
|
|
|
@ -3,8 +3,4 @@
|
||||||
|
|
||||||
vn-invoice-out-summary .summary {
|
vn-invoice-out-summary .summary {
|
||||||
max-width: $width-lg;
|
max-width: $width-lg;
|
||||||
|
|
||||||
vn-icon[icon=insert_drive_file]{
|
|
||||||
color: $color-font-secondary;
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -145,9 +145,9 @@
|
||||||
<!-- Create custom agent dialog -->
|
<!-- Create custom agent dialog -->
|
||||||
<vn-dialog class="edit"
|
<vn-dialog class="edit"
|
||||||
vn-id="intrastat"
|
vn-id="intrastat"
|
||||||
on-accept="$ctrl.onIntrastatAccept()">
|
on-accept="$ctrl.onIntrastatAccept()"
|
||||||
|
message="New intrastat">
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<h5 class="vn-py-sm" translate>New intrastat</h5>
|
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-input-number vn-one vn-focus
|
<vn-input-number vn-one vn-focus
|
||||||
label="Identifier"
|
label="Identifier"
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<slot-descriptor>
|
<slot-descriptor>
|
||||||
<vn-item-descriptor warehouse-fk="$ctrl.warehouseFk">
|
<vn-item-descriptor warehouse-fk="$ctrl.warehouseFk">
|
||||||
<btn-three>
|
<btn-three>
|
||||||
<vn-quick-link
|
<vn-quick-link
|
||||||
tooltip="Item diary"
|
tooltip="Item diary"
|
||||||
state="['item.card.diary']"
|
state="['item.card.diary', {id: $ctrl.id, warehouseFk: $ctrl.warehouseFk, ticketFk: $ctrl.ticketFk}]"
|
||||||
icon="icon-transaction">
|
icon="icon-transaction">
|
||||||
</vn-quick-link>
|
</vn-quick-link>
|
||||||
</btn-three>
|
</btn-three>
|
||||||
</vn-item-descriptor>
|
</vn-item-descriptor>
|
||||||
</slot-descriptor>
|
</slot-descriptor>
|
||||||
|
|
|
@ -1,15 +1,7 @@
|
||||||
import ngModule from '../module';
|
import ngModule from '../module';
|
||||||
import DescriptorPopover from 'salix/components/descriptor-popover';
|
import DescriptorPopover from 'salix/components/descriptor-popover';
|
||||||
|
|
||||||
class Controller extends DescriptorPopover {
|
class Controller extends DescriptorPopover {}
|
||||||
get diaryParams() {
|
|
||||||
return {
|
|
||||||
id: this.descriptor && this.descriptor.id,
|
|
||||||
warehouseFk: this.warehouseFk,
|
|
||||||
ticketFk: this.ticketFk
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
ngModule.vnComponent('vnItemDescriptorPopover', {
|
ngModule.vnComponent('vnItemDescriptorPopover', {
|
||||||
slotTemplate: require('./index.html'),
|
slotTemplate: require('./index.html'),
|
||||||
|
|
|
@ -1,48 +1,42 @@
|
||||||
<vn-descriptor-content module="item">
|
<vn-descriptor-content
|
||||||
|
module="item"
|
||||||
|
description="$ctrl.item.name">
|
||||||
<slot-menu>
|
<slot-menu>
|
||||||
<ul class="vn-list">
|
<vn-item
|
||||||
<li>
|
ng-click="regularize.show()"
|
||||||
<div class="vn-item"
|
name="regularizeStock"
|
||||||
ng-click="regularize.show()"
|
translate>
|
||||||
translate>
|
Regularize stock
|
||||||
Regularize stock
|
</vn-item>
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</slot-menu>
|
</slot-menu>
|
||||||
<slot-body>
|
<slot-before>
|
||||||
<div>
|
<div style="position: relative" text-center>
|
||||||
<div style="position: relative" text-center>
|
<img
|
||||||
<img
|
ng-src="{{::$root.imagePath}}/catalog/200x200/{{$ctrl.item.image}}"
|
||||||
ng-src="{{::$root.imagePath}}/catalog/200x200/{{$ctrl.item.image}}"
|
zoom-image="{{::$root.imagePath}}/catalog/1600x900/{{$ctrl.item.image}}"
|
||||||
zoom-image="{{::$root.imagePath}}/catalog/1600x900/{{$ctrl.item.image}}"
|
on-error-src
|
||||||
on-error-src
|
/>
|
||||||
/>
|
<a href="//verdnatura.es/#!form=admin/items&filter={{$ctrl.item.id}}" target="_blank">
|
||||||
<a href="//verdnatura.es/#!form=admin/items&filter={{$ctrl.item.id}}" target="_blank">
|
<vn-float-button
|
||||||
<vn-float-button
|
icon="edit"
|
||||||
icon="edit"
|
style="position: absolute; margin: 1em; bottom: 0; right: 0;"
|
||||||
style="position: absolute; margin: 1em; bottom: 0; right: 0;"
|
vn-visible-by="marketing, buyer">
|
||||||
vn-visible-by="marketing, buyer">
|
</vn-float-button>
|
||||||
</vn-float-button>
|
</a>
|
||||||
</a>
|
|
||||||
</div>
|
|
||||||
<vn-horizontal class="item-state">
|
|
||||||
<vn-one>
|
|
||||||
<p translate>Visible</p>
|
|
||||||
<p>{{$ctrl.visible | dashIfEmpty}}</p>
|
|
||||||
</vn-one>
|
|
||||||
<vn-one>
|
|
||||||
<p translate>Available</p>
|
|
||||||
<p>{{$ctrl.available | dashIfEmpty}}</p>
|
|
||||||
</vn-one>
|
|
||||||
</vn-horizontal>
|
|
||||||
</div>
|
</div>
|
||||||
|
<vn-horizontal class="item-state">
|
||||||
|
<vn-one>
|
||||||
|
<p translate>Visible</p>
|
||||||
|
<p>{{$ctrl.visible | dashIfEmpty}}</p>
|
||||||
|
</vn-one>
|
||||||
|
<vn-one>
|
||||||
|
<p translate>Available</p>
|
||||||
|
<p>{{$ctrl.available | dashIfEmpty}}</p>
|
||||||
|
</vn-one>
|
||||||
|
</vn-horizontal>
|
||||||
|
</slot-before>
|
||||||
|
<slot-body>
|
||||||
<div class="attributes">
|
<div class="attributes">
|
||||||
<h5>{{$ctrl.item.id}}</h5>
|
|
||||||
<vn-label-value
|
|
||||||
label="Name"
|
|
||||||
value="{{$ctrl.item.name}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value
|
<vn-label-value
|
||||||
label="Buyer"
|
label="Buyer"
|
||||||
value="{{$ctrl.item.itemType.worker.user.nickname}}">
|
value="{{$ctrl.item.itemType.worker.user.nickname}}">
|
||||||
|
@ -71,10 +65,8 @@
|
||||||
vn-id="regularize"
|
vn-id="regularize"
|
||||||
on-open="$ctrl.warehouseFk = $ctrl.vnConfig.warehouseFk"
|
on-open="$ctrl.warehouseFk = $ctrl.vnConfig.warehouseFk"
|
||||||
on-close="$ctrl.clearRegularizeDialog()"
|
on-close="$ctrl.clearRegularizeDialog()"
|
||||||
on-accept="$ctrl.saveRegularize()">
|
on-accept="$ctrl.saveRegularize()"
|
||||||
<tpl-title translate>
|
message="Regularize stock">
|
||||||
Regularize stock
|
|
||||||
</tpl-title>
|
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<vn-textfield
|
<vn-textfield
|
||||||
label="Type the visible quantity"
|
label="Type the visible quantity"
|
||||||
|
|
|
@ -1,16 +1,9 @@
|
||||||
|
|
||||||
vn-item-descriptor {
|
vn-item-descriptor {
|
||||||
display: block;
|
|
||||||
|
|
||||||
img[ng-src] {
|
img[ng-src] {
|
||||||
min-height: 16em;
|
min-height: 16em;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
display: block;
|
display: block;
|
||||||
}
|
}
|
||||||
vn-dialog[vn-id=regularize]{
|
|
||||||
.vn-textfield{
|
|
||||||
width: 100%
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,7 +86,8 @@
|
||||||
<vn-icon
|
<vn-icon
|
||||||
ng-if="request.response.length"
|
ng-if="request.response.length"
|
||||||
translate-attr="{title: request.response}"
|
translate-attr="{title: request.response}"
|
||||||
icon="insert_drive_file">
|
icon="insert_drive_file"
|
||||||
|
class="bright">
|
||||||
</vn-icon>
|
</vn-icon>
|
||||||
<vn-icon-button
|
<vn-icon-button
|
||||||
ng-if="request.isOk != 0"
|
ng-if="request.isOk != 0"
|
||||||
|
@ -113,10 +114,8 @@
|
||||||
<vn-dialog
|
<vn-dialog
|
||||||
vn-id="denyDialog"
|
vn-id="denyDialog"
|
||||||
on-accept="$ctrl.onDenyAccept($data)"
|
on-accept="$ctrl.onDenyAccept($data)"
|
||||||
on-close="$ctrl.denyObservation = null">
|
on-close="$ctrl.denyObservation = null"
|
||||||
<tpl-title translate>
|
message="Specify the reasons to deny this request">
|
||||||
Specify the reasons to deny this request
|
|
||||||
</tpl-title>
|
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<vn-textarea
|
<vn-textarea
|
||||||
ng-model="$ctrl.denyObservation"
|
ng-model="$ctrl.denyObservation"
|
||||||
|
|
|
@ -12,7 +12,4 @@ vn-item-request {
|
||||||
width: 100%
|
width: 100%
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
vn-icon[icon=insert_drive_file]{
|
|
||||||
color: $color-font-secondary;
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -1,4 +1,3 @@
|
||||||
|
|
||||||
<vn-crud-model
|
<vn-crud-model
|
||||||
url="ItemCategories"
|
url="ItemCategories"
|
||||||
data="categories"
|
data="categories"
|
||||||
|
@ -18,8 +17,8 @@
|
||||||
on-search="$ctrl.onSearch($params)">
|
on-search="$ctrl.onSearch($params)">
|
||||||
</vn-searchbar>
|
</vn-searchbar>
|
||||||
</vn-portal>
|
</vn-portal>
|
||||||
|
<vn-order-catalog-view
|
||||||
<vn-order-catalog-view model="model"
|
model="model"
|
||||||
order="$ctrl.order">
|
order="$ctrl.order">
|
||||||
</vn-order-catalog-view>
|
</vn-order-catalog-view>
|
||||||
<vn-side-menu side="right">
|
<vn-side-menu side="right">
|
||||||
|
|
|
@ -1,25 +1,15 @@
|
||||||
<vn-descriptor-content module="order">
|
<vn-descriptor-content
|
||||||
|
module="order"
|
||||||
|
description="$ctrl.order.client.name">
|
||||||
<slot-menu>
|
<slot-menu>
|
||||||
<ul class="vn-list">
|
<vn-item
|
||||||
<li>
|
ng-click="deleteOrderConfirmation.show()"
|
||||||
<div class="vn-item"
|
translate>
|
||||||
ng-click="deleteOrderConfirmation.show()"
|
Delete order
|
||||||
translate>
|
</vn-item>
|
||||||
Delete order
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</slot-menu>
|
</slot-menu>
|
||||||
<slot-body>
|
<slot-body>
|
||||||
<div class="attributes">
|
<div class="attributes">
|
||||||
<vn-label-value
|
|
||||||
label="ID"
|
|
||||||
value="{{$ctrl.order.id}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value
|
|
||||||
label="Client"
|
|
||||||
value="{{$ctrl.order.client.name}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value
|
<vn-label-value
|
||||||
label="State"
|
label="State"
|
||||||
value="{{$ctrl.$t($ctrl.order.isConfirmed ? 'Confirmed' : 'Not confirmed')}}">
|
value="{{$ctrl.$t($ctrl.order.isConfirmed ? 'Confirmed' : 'Not confirmed')}}">
|
||||||
|
|
|
@ -1,19 +1,11 @@
|
||||||
<vn-popover vn-id="popover" on-close="$ctrl.clear()">
|
<default>
|
||||||
<div class="vn-descriptor vn-order-prices-popover">
|
<vn-descriptor-content
|
||||||
<div class="header">
|
module="item"
|
||||||
<span></span>
|
description="$ctrl.item.name"
|
||||||
<a translate-attr="{title: 'Preview'}" ui-sref="item.card.summary({id: $ctrl.item.id})">
|
descriptor="$ctrl"
|
||||||
<vn-icon icon="desktop_windows"></vn-icon>
|
class="vn-order-prices-popover">
|
||||||
</a>
|
<slot-body>
|
||||||
<span></span>
|
|
||||||
</div>
|
|
||||||
<div class="body vn-pa-md">
|
|
||||||
<div class="attributes">
|
<div class="attributes">
|
||||||
<h5>{{$ctrl.item.name}}</h5>
|
|
||||||
<vn-label-value
|
|
||||||
label="Id"
|
|
||||||
value="{{$ctrl.item.id}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value
|
<vn-label-value
|
||||||
label="Buyer"
|
label="Buyer"
|
||||||
value="{{$ctrl.item.firstName}} {{$ctrl.item.lastName}}">
|
value="{{$ctrl.item.firstName}} {{$ctrl.item.lastName}}">
|
||||||
|
@ -24,56 +16,60 @@
|
||||||
value="{{::tag.value}}">
|
value="{{::tag.value}}">
|
||||||
</vn-label-value>
|
</vn-label-value>
|
||||||
</div>
|
</div>
|
||||||
<vn-quick-links
|
<div class="quicklinks">
|
||||||
links="$ctrl.quicklinks">
|
<vn-quick-link
|
||||||
</vn-quick-links>
|
tooltip="Diary"
|
||||||
</div>
|
state="['item.card.diary', {id: $ctrl.id}]"
|
||||||
<form name="form" class="prices">
|
icon="icon-transaction">
|
||||||
<vn-table>
|
</vn-quick-link>
|
||||||
<vn-tbody>
|
|
||||||
<vn-tr ng-repeat="price in $ctrl.prices">
|
|
||||||
<vn-td shrink class="warehouse">
|
|
||||||
<span
|
|
||||||
class="ellipsize text"
|
|
||||||
title="{{::price.warehouse}}">
|
|
||||||
{{::price.warehouse}}
|
|
||||||
</span>
|
|
||||||
</vn-td>
|
|
||||||
<vn-td number expand>
|
|
||||||
<div>
|
|
||||||
<span
|
|
||||||
ng-click="$ctrl.addQuantity(price)"
|
|
||||||
class="link unselectable">
|
|
||||||
{{::price.grouping}}
|
|
||||||
</span>
|
|
||||||
<span> x {{::price.price | currency: 'EUR': 2}}</span>
|
|
||||||
</div>
|
|
||||||
<div class="price-kg" ng-show="::price.priceKg">
|
|
||||||
{{price.priceKg | currency: 'EUR'}}/Kg
|
|
||||||
</div>
|
|
||||||
</vn-td>
|
|
||||||
<vn-td shrink>
|
|
||||||
<vn-input-number
|
|
||||||
min="0"
|
|
||||||
name="quantity"
|
|
||||||
ng-model="price.quantity"
|
|
||||||
step="price.grouping"
|
|
||||||
on-change="$ctrl.validate()"
|
|
||||||
class="dense">
|
|
||||||
</vn-input-number>
|
|
||||||
</vn-td>
|
|
||||||
</vn-tr>
|
|
||||||
</vn-tbody>
|
|
||||||
</vn-table>
|
|
||||||
<div class="footer vn-pa-md">
|
|
||||||
<div class="error">
|
|
||||||
<span translate>Wrong quantity</span>
|
|
||||||
</div>
|
|
||||||
<vn-submit
|
|
||||||
label="Save"
|
|
||||||
ng-click="$ctrl.submit()">
|
|
||||||
</vn-submit>
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</slot-body>
|
||||||
</div>
|
<slot-after>
|
||||||
</vn-popover>
|
<form name="form" class="prices">
|
||||||
|
<vn-table>
|
||||||
|
<vn-tbody>
|
||||||
|
<vn-tr ng-repeat="price in $ctrl.prices">
|
||||||
|
<vn-td shrink class="warehouse">
|
||||||
|
<span
|
||||||
|
class="ellipsize text"
|
||||||
|
title="{{::price.warehouse}}">
|
||||||
|
{{::price.warehouse}}
|
||||||
|
</span>
|
||||||
|
</vn-td>
|
||||||
|
<vn-td number expand>
|
||||||
|
<div>
|
||||||
|
<span
|
||||||
|
ng-click="$ctrl.addQuantity(price)"
|
||||||
|
class="link unselectable">{{::price.grouping}}</span>
|
||||||
|
<span> x {{::price.price | currency: 'EUR': 2}}</span>
|
||||||
|
</div>
|
||||||
|
<div class="price-kg" ng-show="::price.priceKg">
|
||||||
|
{{price.priceKg | currency: 'EUR'}}/Kg
|
||||||
|
</div>
|
||||||
|
</vn-td>
|
||||||
|
<vn-td shrink>
|
||||||
|
<vn-input-number
|
||||||
|
min="0"
|
||||||
|
name="quantity"
|
||||||
|
ng-model="price.quantity"
|
||||||
|
step="price.grouping"
|
||||||
|
on-change="$ctrl.validate()"
|
||||||
|
class="dense">
|
||||||
|
</vn-input-number>
|
||||||
|
</vn-td>
|
||||||
|
</vn-tr>
|
||||||
|
</vn-tbody>
|
||||||
|
</vn-table>
|
||||||
|
<div class="footer vn-pa-md">
|
||||||
|
<div class="error">
|
||||||
|
<span translate>Wrong quantity</span>
|
||||||
|
</div>
|
||||||
|
<vn-submit
|
||||||
|
label="Save"
|
||||||
|
ng-click="$ctrl.submit()">
|
||||||
|
</vn-submit>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
</slot-after>
|
||||||
|
</vn-descriptor-content>
|
||||||
|
</default>
|
||||||
|
|
|
@ -1,10 +1,10 @@
|
||||||
import ngModule from '../module';
|
import ngModule from '../module';
|
||||||
import Component from 'core/lib/component';
|
import Popover from 'core/components/popover';
|
||||||
import './style.scss';
|
import './style.scss';
|
||||||
|
|
||||||
class Controller extends Component {
|
class Controller extends Popover {
|
||||||
constructor($element, $) {
|
constructor(...args) {
|
||||||
super($element, $);
|
super(...args);
|
||||||
this.totalBasquet = 0;
|
this.totalBasquet = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -19,37 +19,32 @@ class Controller extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
getTags() {
|
getTags() {
|
||||||
let filter = {
|
const filter = {
|
||||||
where: {itemFk: this.item.id,
|
where: {
|
||||||
priority: {gte: 4}},
|
itemFk: this.id,
|
||||||
|
priority: {gte: 4}
|
||||||
|
},
|
||||||
order: 'priority ASC',
|
order: 'priority ASC',
|
||||||
include: {relation: 'tag'}
|
include: {relation: 'tag'}
|
||||||
};
|
};
|
||||||
this.quicklinks = {
|
this.$http.get(`ItemTags`, {filter})
|
||||||
btnOne: {
|
.then(res => {
|
||||||
icon: 'icon-transaction',
|
this.tags = res.data;
|
||||||
state: `item.card.diary({id: ${this.item.id}})`,
|
this.$.$applyAsync(() => this.relocate());
|
||||||
tooltip: 'Diary'
|
|
||||||
}
|
|
||||||
};
|
|
||||||
this.$http.get(`ItemTags?filter=${JSON.stringify(filter)}`).then(response => {
|
|
||||||
this.tags = response.data;
|
|
||||||
this.$.$applyAsync(() => {
|
|
||||||
this.$.popover.relocate();
|
|
||||||
});
|
});
|
||||||
});
|
|
||||||
}
|
}
|
||||||
|
|
||||||
show(event, item) {
|
show(parent, item) {
|
||||||
this.item = JSON.parse(JSON.stringify(item));
|
this.item = JSON.parse(JSON.stringify(item));
|
||||||
|
this.id = item.id;
|
||||||
this.prices = this.item.prices;
|
this.prices = this.item.prices;
|
||||||
this.getTags();
|
this.getTags();
|
||||||
this.$.popover.parent = event.target;
|
super.show(parent);
|
||||||
this.$.popover.show();
|
|
||||||
this.$.popover.relocate();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
clear() {
|
hide() {
|
||||||
|
super.hide();
|
||||||
|
this.id = null;
|
||||||
this.item = {};
|
this.item = {};
|
||||||
this.tags = {};
|
this.tags = {};
|
||||||
this._prices = {};
|
this._prices = {};
|
||||||
|
@ -76,7 +71,7 @@ class Controller extends Component {
|
||||||
}
|
}
|
||||||
|
|
||||||
getFilledLines() {
|
getFilledLines() {
|
||||||
let filledLines = [];
|
const filledLines = [];
|
||||||
let match;
|
let match;
|
||||||
this.prices.forEach(price => {
|
this.prices.forEach(price => {
|
||||||
if (price.quantity && price.quantity > 0) {
|
if (price.quantity && price.quantity > 0) {
|
||||||
|
@ -96,30 +91,28 @@ class Controller extends Component {
|
||||||
|
|
||||||
submit() {
|
submit() {
|
||||||
this.calculateTotal();
|
this.calculateTotal();
|
||||||
let filledLines = this.getFilledLines();
|
const filledLines = this.getFilledLines();
|
||||||
|
|
||||||
if (filledLines.length <= 0) {
|
if (filledLines.length <= 0) {
|
||||||
this.vnApp.showError(this.$translate.instant('First you must add some quantity'));
|
this.vnApp.showError(this.$t('First you must add some quantity'));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
let params = {
|
const params = {
|
||||||
orderFk: this.order.id,
|
orderFk: this.order.id,
|
||||||
items: filledLines
|
items: filledLines
|
||||||
};
|
};
|
||||||
|
this.$http.post(`OrderRows/addToOrder`, params)
|
||||||
this.$http.post(`OrderRows/addToOrder`, params).then(res => {
|
.then(() => {
|
||||||
this.vnApp.showSuccess(this.$translate.instant('Data saved!'));
|
this.vnApp.showSuccess(this.$t('Data saved!'));
|
||||||
this.$.popover.hide();
|
this.hide();
|
||||||
|
if (this.card) this.card.reload();
|
||||||
if (this.card)
|
});
|
||||||
this.card.reload();
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
ngModule.component('vnOrderPricesPopover', {
|
ngModule.vnComponent('vnOrderPricesPopover', {
|
||||||
template: require('./index.html'),
|
slotTemplate: require('./index.html'),
|
||||||
controller: Controller,
|
controller: Controller,
|
||||||
bindings: {
|
bindings: {
|
||||||
order: '<'
|
order: '<'
|
||||||
|
|
|
@ -1,8 +1,11 @@
|
||||||
@import "variables";
|
@import "variables";
|
||||||
|
|
||||||
.vn-order-prices-popover {
|
.vn-order-prices-popover {
|
||||||
display: block;
|
max-width: 350px;
|
||||||
|
|
||||||
|
.header > a:first-child {
|
||||||
|
visibility: hidden;
|
||||||
|
}
|
||||||
img[ng-src] {
|
img[ng-src] {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
width: 100%;
|
width: 100%;
|
||||||
|
|
|
@ -1,11 +1,11 @@
|
||||||
<slot-descriptor>
|
<slot-descriptor>
|
||||||
<vn-route-descriptor>
|
<vn-route-descriptor>
|
||||||
<btn-three>
|
<btn-three>
|
||||||
<vn-quick-link
|
<vn-quick-link
|
||||||
tooltip="Route summary"
|
tooltip="Route summary"
|
||||||
state="['route.card.summary', {id: $ctrl.descriptor.id}]"
|
state="['route.card.summary', {id: $ctrl.id}]"
|
||||||
icon="icon-delivery">
|
icon="icon-delivery">
|
||||||
</vn-quick-link>
|
</vn-quick-link>
|
||||||
</btn-three>
|
</btn-three>
|
||||||
</vn-route-descriptor>
|
</vn-route-descriptor>
|
||||||
</slot-descriptor>
|
</slot-descriptor>
|
|
@ -1,36 +1,27 @@
|
||||||
<vn-descriptor-content module="route">
|
<vn-descriptor-content
|
||||||
|
module="route"
|
||||||
|
description="$ctrl.route.name">
|
||||||
<slot-menu>
|
<slot-menu>
|
||||||
<ul class="vn-list">
|
<vn-item
|
||||||
<li>
|
ng-click="$ctrl.showRouteReport()"
|
||||||
<div class="vn-item"
|
translate>
|
||||||
ng-click="$ctrl.showRouteReport()"
|
Show route report
|
||||||
translate>
|
</vn-item>
|
||||||
Show route report
|
<vn-item
|
||||||
</div>
|
ng-click="$ctrl.sendRouteReport()"
|
||||||
</li>
|
translate>
|
||||||
<li>
|
Send route report
|
||||||
<div class="vn-item"
|
</vn-item>
|
||||||
ng-click="$ctrl.sendRouteReport()"
|
<vn-item
|
||||||
translate>
|
ng-click="updateVolumeConfirmation.show()"
|
||||||
Send route report
|
vn-acl="deliveryBoss"
|
||||||
</div>
|
vn-acl-action="remove"
|
||||||
</li>
|
translate>
|
||||||
<li vn-acl="deliveryBoss">
|
Update volume
|
||||||
<div class="vn-item"
|
</vn-item>
|
||||||
ng-click="updateVolumeConfirmation.show()"
|
|
||||||
translate>
|
|
||||||
Update volume
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</slot-menu>
|
</slot-menu>
|
||||||
<slot-body>
|
<slot-body>
|
||||||
<div class="attributes">
|
<div class="attributes">
|
||||||
<h5>{{$ctrl.route.name}}</h5>
|
|
||||||
<vn-label-value
|
|
||||||
label="Id"
|
|
||||||
value="{{$ctrl.route.id}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value
|
<vn-label-value
|
||||||
label="Date"
|
label="Date"
|
||||||
value="{{$ctrl.route.created | date: 'dd/MM/yyyy'}}">
|
value="{{$ctrl.route.created | date: 'dd/MM/yyyy'}}">
|
||||||
|
|
|
@ -90,7 +90,8 @@
|
||||||
<vn-icon
|
<vn-icon
|
||||||
ng-if="ticket.notes.length"
|
ng-if="ticket.notes.length"
|
||||||
vn-tooltip="{{ticket.notes[0].description}}"
|
vn-tooltip="{{ticket.notes[0].description}}"
|
||||||
icon="insert_drive_file">
|
icon="insert_drive_file"
|
||||||
|
class="bright">
|
||||||
</vn-icon>
|
</vn-icon>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
</vn-tr>
|
</vn-tr>
|
||||||
|
|
|
@ -3,8 +3,4 @@
|
||||||
|
|
||||||
vn-route-summary .summary {
|
vn-route-summary .summary {
|
||||||
max-width: $width-lg;
|
max-width: $width-lg;
|
||||||
|
|
||||||
vn-icon[icon=insert_drive_file]{
|
|
||||||
color: $color-font-secondary;
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -78,11 +78,12 @@
|
||||||
<vn-td>{{ticket.address.postalCode}}</vn-td>
|
<vn-td>{{ticket.address.postalCode}}</vn-td>
|
||||||
<vn-td expand title="{{ticket.address.street}}">{{ticket.address.street}}</vn-td>
|
<vn-td expand title="{{ticket.address.street}}">{{ticket.address.street}}</vn-td>
|
||||||
<vn-td shrink>
|
<vn-td shrink>
|
||||||
<vn-icon-button
|
<vn-icon
|
||||||
ng-if="ticket.notes.length"
|
ng-if="ticket.notes.length"
|
||||||
title="::{{ticket.notes[0].description}}"
|
title="::{{ticket.notes[0].description}}"
|
||||||
icon="insert_drive_file">
|
icon="insert_drive_file"
|
||||||
</vn-icon-button>
|
class="bright">
|
||||||
|
</vn-icon>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
<vn-td>
|
<vn-td>
|
||||||
<vn-icon-button
|
<vn-icon-button
|
||||||
|
@ -117,10 +118,8 @@
|
||||||
</vn-crud-model>
|
</vn-crud-model>
|
||||||
<vn-dialog
|
<vn-dialog
|
||||||
vn-id="possibleTicketsDialog"
|
vn-id="possibleTicketsDialog"
|
||||||
on-response="$ctrl.setTicketsRoute($response)">
|
on-response="$ctrl.setTicketsRoute($response)"
|
||||||
<tpl-title translate>
|
message="Tickets to add">
|
||||||
Tickets to add
|
|
||||||
</tpl-title>
|
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<vn-data-viewer class="vn-pa-md" model="possibleTicketsModel">
|
<vn-data-viewer class="vn-pa-md" model="possibleTicketsModel">
|
||||||
<vn-table model="possibleTicketsModel" auto-load="false">
|
<vn-table model="possibleTicketsModel" auto-load="false">
|
||||||
|
|
|
@ -5,11 +5,9 @@
|
||||||
<vn-dialog
|
<vn-dialog
|
||||||
vn-id="dialog"
|
vn-id="dialog"
|
||||||
class="modal-form"
|
class="modal-form"
|
||||||
on-open="model.refresh()">
|
on-open="model.refresh()"
|
||||||
|
message="Stowaways to add">
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<section class="add-stowaway header vn-pa-md">
|
|
||||||
<h5><span translate>Stowaways to add</span></h5>
|
|
||||||
</section>
|
|
||||||
<vn-horizontal class="add-stowaway vn-pa-md">
|
<vn-horizontal class="add-stowaway vn-pa-md">
|
||||||
<vn-data-viewer model="model">
|
<vn-data-viewer model="model">
|
||||||
<vn-table model="model" auto-load="false">
|
<vn-table model="model" auto-load="false">
|
||||||
|
|
|
@ -1,103 +1,89 @@
|
||||||
<vn-descriptor-content module="ticket">
|
<vn-descriptor-content
|
||||||
|
module="ticket"
|
||||||
|
description="$ctrl.ticket.client.name">
|
||||||
<slot-menu>
|
<slot-menu>
|
||||||
<ul class="vn-list">
|
<vn-item
|
||||||
<li vn-acl="buyer">
|
ng-click="addTurn.show()"
|
||||||
<div class="vn-item"
|
vn-acl="buyer"
|
||||||
ng-click="addTurn.show()"
|
vn-acl-action="remove"
|
||||||
translate>
|
name="addTurn"
|
||||||
Add turn
|
translate>
|
||||||
</div>
|
Add turn
|
||||||
</li>
|
</vn-item>
|
||||||
<li>
|
<vn-item
|
||||||
<div class="vn-item"
|
ng-click="$ctrl.showDeliveryNote()"
|
||||||
ng-click="$ctrl.showDeliveryNote()"
|
translate>
|
||||||
translate>
|
Show Delivery Note
|
||||||
Show Delivery Note
|
</vn-item>
|
||||||
</div>
|
<vn-item
|
||||||
</li>
|
ng-click="confirmDeliveryNote.show()"
|
||||||
<li>
|
translate>
|
||||||
<div class="vn-item"
|
Send Delivery Note
|
||||||
ng-click="confirmDeliveryNote.show()"
|
</vn-item>
|
||||||
translate>
|
<vn-item
|
||||||
Send Delivery Note
|
ng-click="deleteConfirmation.show()"
|
||||||
</div>
|
ng-show="$ctrl.isEditable"
|
||||||
</li>
|
name="deleteTicket"
|
||||||
<li ng-show="$ctrl.isEditable">
|
translate>
|
||||||
<div class="vn-item"
|
Delete ticket
|
||||||
ng-click="deleteConfirmation.show()"
|
</vn-item>
|
||||||
translate>
|
<vn-item
|
||||||
Delete ticket
|
ng-click="$ctrl.showChangeShipped()"
|
||||||
</div>
|
ng-show="$ctrl.isEditable"
|
||||||
</li>
|
name="changeShipped"
|
||||||
<li ng-show="$ctrl.isEditable">
|
translate>
|
||||||
<div class="vn-item"
|
Change shipped hour
|
||||||
ng-click="$ctrl.showChangeShipped()"
|
</vn-item>
|
||||||
translate>
|
<vn-item
|
||||||
Change shipped hour
|
ng-click="$ctrl.sendPaymentSms()"
|
||||||
</div>
|
translate>
|
||||||
</li>
|
SMS Pending payment
|
||||||
<li>
|
</vn-item>
|
||||||
<div class="vn-item"
|
<vn-item
|
||||||
ng-click="$ctrl.sendPaymentSms()"
|
ng-click="$ctrl.sendImportSms()"
|
||||||
translate>
|
translate>
|
||||||
SMS Pending payment
|
SMS Minimum import
|
||||||
</div>
|
</vn-item>
|
||||||
</li>
|
<vn-item
|
||||||
<li>
|
ng-click="addStowaway.show()"
|
||||||
<div class="vn-item"
|
ng-show="$ctrl.canShowStowaway"
|
||||||
ng-click="$ctrl.sendImportSms()"
|
name="addStowaway"
|
||||||
translate>
|
translate>
|
||||||
SMS Minimum import
|
Add stowaway
|
||||||
</div>
|
</vn-item>
|
||||||
</li>
|
<vn-item
|
||||||
<li ng-show="$ctrl.canShowStowaway">
|
ng-click="deleteStowaway.show()"
|
||||||
<div class="vn-item"
|
ng-show="$ctrl.shouldShowDeleteStowaway"
|
||||||
ng-click="addStowaway.show()"
|
name="deleteStowaway"
|
||||||
translate>
|
translate>
|
||||||
Add stowaway
|
Delete stowaway
|
||||||
</div>
|
</vn-item>
|
||||||
</li>
|
<vn-item
|
||||||
<li ng-show="$ctrl.shouldShowDeleteStowaway">
|
ng-click="makeInvoiceConfirmation.show()"
|
||||||
<div class="vn-item"
|
ng-show="!$ctrl.isInvoiced"
|
||||||
ng-click="deleteStowaway.show()"
|
vn-acl="invoicing"
|
||||||
translate>
|
vn-acl-action="remove"
|
||||||
Delete stowaway
|
name="makeInvoice"
|
||||||
</div>
|
translate>
|
||||||
</li>
|
Make invoice
|
||||||
<li ng-show="!$ctrl.isInvoiced" vn-acl="invoicing">
|
</vn-item>
|
||||||
<div class="vn-item"
|
<vn-item
|
||||||
ng-click="makeInvoiceConfirmation.show()"
|
ng-click="regenerateInvoiceConfirmation.show()"
|
||||||
translate>
|
ng-show="$ctrl.isInvoiced"
|
||||||
Make invoice
|
vn-acl="invoicing"
|
||||||
</div>
|
vn-acl-action="remove"
|
||||||
</li>
|
translate>
|
||||||
<li ng-show="$ctrl.isInvoiced" vn-acl="invoicing">
|
Regenerate invoice
|
||||||
<div class="vn-item"
|
</vn-item>
|
||||||
ng-click="regenerateInvoiceConfirmation.show()"
|
<vn-item
|
||||||
translate>
|
ng-click="recalculateComponentsConfirmation.show()"
|
||||||
Regenerate invoice
|
ng-show="$ctrl.isEditable"
|
||||||
</div>
|
translate>
|
||||||
</li>
|
Recalculate components
|
||||||
<li ng-show="$ctrl.isEditable">
|
</vn-item>
|
||||||
<div class="vn-item"
|
|
||||||
ng-click="recalculateComponentsConfirmation.show()"
|
|
||||||
translate>
|
|
||||||
Recalculate components
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</slot-menu>
|
</slot-menu>
|
||||||
<slot-body>
|
<slot-body>
|
||||||
<div class="attributes">
|
<div class="attributes">
|
||||||
<h5>{{::$ctrl.client.name}}</h5>
|
|
||||||
<vn-label-value
|
|
||||||
label="Id"
|
|
||||||
value="{{$ctrl.ticket.id}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value
|
|
||||||
label="Client"
|
|
||||||
value="{{$ctrl.ticket.client.name}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value
|
<vn-label-value
|
||||||
label="State"
|
label="State"
|
||||||
value="{{$ctrl.ticket.state.state.name}}">
|
value="{{$ctrl.ticket.state.state.name}}">
|
||||||
|
@ -281,9 +267,9 @@
|
||||||
</vn-add-stowaway>
|
</vn-add-stowaway>
|
||||||
<vn-dialog
|
<vn-dialog
|
||||||
vn-id="changeShippedDialog"
|
vn-id="changeShippedDialog"
|
||||||
on-accept="$ctrl.changeShipped()">
|
on-accept="$ctrl.changeShipped()"
|
||||||
|
message="Change shipped hour">
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<h6 translate>Change shipped hour</h6>
|
|
||||||
<vn-input-time
|
<vn-input-time
|
||||||
ng-model="$ctrl.newShipped"
|
ng-model="$ctrl.newShipped"
|
||||||
label="Shipped hour"
|
label="Shipped hour"
|
||||||
|
|
|
@ -7,7 +7,7 @@
|
||||||
vn-id="watcher"
|
vn-id="watcher"
|
||||||
data="$ctrl.sales">
|
data="$ctrl.sales">
|
||||||
</vn-watcher>
|
</vn-watcher>
|
||||||
<vn-vertical class="vn-w-xl">
|
<div class="vn-w-xl">
|
||||||
<vn-card class="vn-pa-lg">
|
<vn-card class="vn-pa-lg">
|
||||||
<vn-horizontal class="header">
|
<vn-horizontal class="header">
|
||||||
<vn-tool-bar class="vn-mb-md">
|
<vn-tool-bar class="vn-mb-md">
|
||||||
|
@ -180,17 +180,18 @@
|
||||||
</vn-tr>
|
</vn-tr>
|
||||||
</vn-tbody>
|
</vn-tbody>
|
||||||
</vn-table>
|
</vn-table>
|
||||||
<vn-one>
|
<div>
|
||||||
<vn-icon-button vn-none
|
<vn-icon-button
|
||||||
|
vn-none
|
||||||
vn-tooltip="Add item"
|
vn-tooltip="Add item"
|
||||||
vn-bind="+"
|
vn-bind="+"
|
||||||
icon="add_circle"
|
icon="add_circle"
|
||||||
ng-click="$ctrl.add()"
|
ng-click="$ctrl.add()"
|
||||||
disabled="!$ctrl.isEditable">
|
disabled="!$ctrl.isEditable">
|
||||||
</vn-icon-button>
|
</vn-icon-button>
|
||||||
</vn-one>
|
</div>
|
||||||
</vn-card>
|
</vn-card>
|
||||||
</vn-vertical>
|
</div>
|
||||||
<vn-float-button
|
<vn-float-button
|
||||||
ng-show="$ctrl.isEditable"
|
ng-show="$ctrl.isEditable"
|
||||||
ng-click="$ctrl.newOrderFromTicket()"
|
ng-click="$ctrl.newOrderFromTicket()"
|
||||||
|
|
|
@ -74,9 +74,9 @@
|
||||||
<vn-dialog class="edit"
|
<vn-dialog class="edit"
|
||||||
vn-id="newServiceTypeDialog"
|
vn-id="newServiceTypeDialog"
|
||||||
on-accept="$ctrl.onNewServiceTypeAccept($data)"
|
on-accept="$ctrl.onNewServiceTypeAccept($data)"
|
||||||
on-close="newServiceType = null">
|
on-close="newServiceType = null"
|
||||||
|
message="New service type">
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<h5 class="vn-py-sm" translate>New service type</h5>
|
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-textfield
|
<vn-textfield
|
||||||
vn-one
|
vn-one
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
<vn-dialog
|
<vn-dialog
|
||||||
vn-id="SMSDialog"
|
vn-id="SMSDialog"
|
||||||
on-response="$ctrl.onResponse($response)">
|
on-response="$ctrl.onResponse($response)"
|
||||||
|
message="Send SMS">
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<section class="SMSDialog">
|
<section class="SMSDialog">
|
||||||
<h5 class="vn-py-sm" translate>Send SMS</h5>
|
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-textfield
|
<vn-textfield
|
||||||
vn-one
|
vn-one
|
||||||
|
|
|
@ -1,14 +1,8 @@
|
||||||
<vn-descriptor-content module="travel">
|
<vn-descriptor-content
|
||||||
|
module="travel"
|
||||||
|
description="$ctrl.travel.ref">
|
||||||
<slot-body>
|
<slot-body>
|
||||||
<div class="attributes">
|
<div class="attributes">
|
||||||
<vn-label-value
|
|
||||||
label="Id"
|
|
||||||
value="{{$ctrl.travel.id}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value
|
|
||||||
label="Reference"
|
|
||||||
value="{{$ctrl.travel.ref}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value
|
<vn-label-value
|
||||||
label="Wh. In"
|
label="Wh. In"
|
||||||
value="{{$ctrl.travel.warehouseOut.name}}">
|
value="{{$ctrl.travel.warehouseOut.name}}">
|
||||||
|
|
|
@ -88,12 +88,14 @@
|
||||||
<vn-icon
|
<vn-icon
|
||||||
ng-if="entry.notes.length"
|
ng-if="entry.notes.length"
|
||||||
vn-tooltip="{{entry.notes}}"
|
vn-tooltip="{{entry.notes}}"
|
||||||
icon="insert_drive_file">
|
icon="insert_drive_file"
|
||||||
|
class="bright">
|
||||||
</vn-icon>
|
</vn-icon>
|
||||||
<vn-icon
|
<vn-icon
|
||||||
ng-if="entry.observation.length"
|
ng-if="entry.observation.length"
|
||||||
vn-tooltip="{{entry.observation}}"
|
vn-tooltip="{{entry.observation}}"
|
||||||
icon="insert_drive_file">
|
icon="insert_drive_file"
|
||||||
|
class="bright">
|
||||||
</vn-icon>
|
</vn-icon>
|
||||||
</vn-td>
|
</vn-td>
|
||||||
</vn-tr>
|
</vn-tr>
|
||||||
|
|
|
@ -3,8 +3,4 @@
|
||||||
|
|
||||||
vn-travel-summary .summary {
|
vn-travel-summary .summary {
|
||||||
max-width: $width-lg;
|
max-width: $width-lg;
|
||||||
|
|
||||||
vn-icon[icon=insert_drive_file]{
|
|
||||||
color: $color-font-secondary;
|
|
||||||
}
|
|
||||||
}
|
}
|
|
@ -27,17 +27,15 @@
|
||||||
<vn-dialog
|
<vn-dialog
|
||||||
vn-id="createNode"
|
vn-id="createNode"
|
||||||
on-open="$ctrl.onCreateDialogOpen()"
|
on-open="$ctrl.onCreateDialogOpen()"
|
||||||
on-response="$ctrl.onCreateResponse($response)">
|
on-response="$ctrl.onCreateResponse($response)"
|
||||||
|
message="New department">
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<h5 class="vn-py-sm" translate>New department</h5>
|
<vn-textfield
|
||||||
<vn-horizontal>
|
vn-one
|
||||||
<vn-textfield
|
label="Name"
|
||||||
vn-one
|
ng-model="$ctrl.newChild.name"
|
||||||
label="Name"
|
vn-focus>
|
||||||
ng-model="$ctrl.newChild.name"
|
</vn-textfield>
|
||||||
vn-focus>
|
|
||||||
</vn-textfield>
|
|
||||||
</vn-horizontal>
|
|
||||||
</tpl-body>
|
</tpl-body>
|
||||||
<tpl-buttons>
|
<tpl-buttons>
|
||||||
<input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/>
|
<input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/>
|
||||||
|
|
|
@ -1,17 +1,11 @@
|
||||||
<vn-descriptor-content module="worker">
|
<vn-descriptor-content
|
||||||
|
module="worker"
|
||||||
|
description="$ctrl.worker.firstName +' '+ $ctrl.worker.lastName">
|
||||||
<slot-body>
|
<slot-body>
|
||||||
<div class="attributes">
|
<div class="attributes">
|
||||||
<h5 title="{{$ctrl.worker.firstName}} {{$ctrl.worker.lastName}}">
|
|
||||||
{{$ctrl.worker.firstName}} {{$ctrl.worker.lastName}}
|
|
||||||
</h5>
|
|
||||||
<vn-label-value
|
|
||||||
label="Id"
|
|
||||||
value="{{$ctrl.worker.id}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value
|
<vn-label-value
|
||||||
label="User"
|
label="User"
|
||||||
value="{{$ctrl.worker.user.name}}"
|
value="{{$ctrl.worker.user.name}}">
|
||||||
title="{{$ctrl.worker.firstName}} {{$ctrl.worker.lastName}}">
|
|
||||||
</vn-label-value>
|
</vn-label-value>
|
||||||
<vn-label-value
|
<vn-label-value
|
||||||
label="Email"
|
label="Email"
|
||||||
|
|
|
@ -92,19 +92,15 @@
|
||||||
</vn-side-menu>
|
</vn-side-menu>
|
||||||
<vn-dialog
|
<vn-dialog
|
||||||
vn-id="addTimeDialog"
|
vn-id="addTimeDialog"
|
||||||
on-response="$ctrl.addTime($response)">
|
on-response="$ctrl.addTime($response)"
|
||||||
|
message="Add time">
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<div>
|
<vn-input-time
|
||||||
<h5 style="text-align: center">
|
vn-one
|
||||||
<span translate>Add time</span>
|
ng-model="$ctrl.newTime"
|
||||||
</h5>
|
label="Hour"
|
||||||
<vn-input-time
|
vn-focus>
|
||||||
vn-one
|
</vn-input-time>
|
||||||
ng-model="$ctrl.newTime"
|
|
||||||
label="Hour"
|
|
||||||
vn-focus>
|
|
||||||
</vn-input-time>
|
|
||||||
</div>
|
|
||||||
</tpl-body>
|
</tpl-body>
|
||||||
<tpl-buttons>
|
<tpl-buttons>
|
||||||
<input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/>
|
<input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/>
|
||||||
|
|
|
@ -1,25 +1,15 @@
|
||||||
<vn-descriptor-content module="zone">
|
<vn-descriptor-content
|
||||||
|
module="zone"
|
||||||
|
description="$ctrl.zone.name">
|
||||||
<slot-menu>
|
<slot-menu>
|
||||||
<ul class="vn-list">
|
<vn-item class="vn-item"
|
||||||
<li>
|
ng-click="deleteZone.show()"
|
||||||
<div class="vn-item"
|
translate>
|
||||||
ng-click="deleteZone.show()"
|
Delete
|
||||||
translate>
|
</vn-item>
|
||||||
Delete
|
|
||||||
</div>
|
|
||||||
</li>
|
|
||||||
</ul>
|
|
||||||
</slot-menu>
|
</slot-menu>
|
||||||
<slot-body>
|
<slot-body>
|
||||||
<div class="attributes">
|
<div class="attributes">
|
||||||
<vn-label-value
|
|
||||||
label="Id"
|
|
||||||
value="{{$ctrl.zone.id}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value
|
|
||||||
label="Name"
|
|
||||||
value="{{$ctrl.zone.name}}">
|
|
||||||
</vn-label-value>
|
|
||||||
<vn-label-value
|
<vn-label-value
|
||||||
label="Warehouse"
|
label="Warehouse"
|
||||||
value="{{$ctrl.zone.warehouse.name}}">
|
value="{{$ctrl.zone.warehouse.name}}">
|
||||||
|
|
|
@ -30,15 +30,13 @@
|
||||||
vn-id="dialog"
|
vn-id="dialog"
|
||||||
on-response="$ctrl.onSave($response)">
|
on-response="$ctrl.onSave($response)">
|
||||||
<tpl-body>
|
<tpl-body>
|
||||||
<vn-vertical>
|
<vn-autocomplete
|
||||||
<vn-autocomplete
|
ng-model="$ctrl.selected.warehouseFk"
|
||||||
ng-model="$ctrl.selected.warehouseFk"
|
url="Warehouses"
|
||||||
url="Warehouses"
|
show-field="name"
|
||||||
show-field="name"
|
value-field="id"
|
||||||
value-field="id"
|
label="Warehouse">
|
||||||
label="Warehouse">
|
</vn-autocomplete>
|
||||||
</vn-autocomplete>
|
|
||||||
</vn-vertical>
|
|
||||||
</tpl-body>
|
</tpl-body>
|
||||||
<tpl-buttons>
|
<tpl-buttons>
|
||||||
<input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/>
|
<input type="button" response="cancel" translate-attr="{value: 'Cancel'}"/>
|
||||||
|
|
Loading…
Reference in New Issue