Global & client style fixes

This commit is contained in:
Juan Ferrer 2019-10-01 16:17:57 +02:00
parent a4892845e0
commit 76604744d1
29 changed files with 499 additions and 511 deletions

View File

@ -175,8 +175,8 @@ export default {
firstPaymentConfirmed: 'vn-client-web-payment vn-tr:nth-child(1) vn-icon[icon="check"]' firstPaymentConfirmed: 'vn-client-web-payment vn-tr:nth-child(1) vn-icon[icon="check"]'
}, },
dms: { dms: {
deleteFileButton: 'vn-client-dms-index vn-table vn-tr:nth-child(1) vn-icon-button[icon="delete"]', deleteFileButton: 'vn-client-dms-index vn-tr:nth-child(1) vn-icon-button[icon="delete"]',
firstDocWorker: 'vn-client-dms-index vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(8) > span', firstDocWorker: 'vn-client-dms-index vn-td:nth-child(8) > span',
firstDocWorkerDescriptor: '.vn-popover.shown vn-worker-descriptor', firstDocWorkerDescriptor: '.vn-popover.shown vn-worker-descriptor',
acceptDeleteButton: 'vn-client-dms-index > vn-confirm button[response="ACCEPT"]' acceptDeleteButton: 'vn-client-dms-index > vn-confirm button[response="ACCEPT"]'
}, },
@ -494,9 +494,9 @@ export default {
}, },
ticketLog: { ticketLog: {
logButton: 'vn-left-menu a[ui-sref="ticket.card.log"]', logButton: 'vn-left-menu a[ui-sref="ticket.card.log"]',
changedBy: 'vn-ticket-log > vn-log > vn-vertical > vn-card > div > vn-vertical > vn-table > div > vn-tbody > vn-tr:nth-child(1) > vn-td:nth-child(2) > span', changedBy: 'vn-ticket-log > vn-log vn-tr:nth-child(1) > vn-td:nth-child(2) > span',
actionTaken: 'vn-ticket-log > vn-log > vn-vertical > vn-card > div > vn-vertical > vn-table > div > vn-tbody > vn-tr > vn-td:nth-child(1) > div > div:nth-child(3) > span.value.ng-scope.ng-binding', actionTaken: 'vn-ticket-log > vn-log vn-td:nth-child(1) > div > div:nth-child(3) > span.value',
id: 'vn-ticket-log > vn-log > vn-vertical > vn-card > div > vn-vertical > vn-table > div > vn-tbody > vn-tr > vn-td.before > vn-one:nth-child(1) > div > span.value.ng-scope.ng-binding' id: 'vn-ticket-log > vn-log vn-td.before > vn-one:nth-child(1) > div > span.value'
}, },
ticketService: { ticketService: {
addServiceButton: 'vn-ticket-service vn-icon-button[vn-tooltip="Add service"] > button', addServiceButton: 'vn-ticket-service vn-icon-button[vn-tooltip="Add service"] > button',

View File

@ -7,7 +7,7 @@ vn-check {
cursor: pointer; cursor: pointer;
&.disabled { &.disabled {
cursor: initial; cursor: inherit;
} }
& > .check { & > .check {
position: relative; position: relative;

View File

@ -7,7 +7,7 @@ vn-radio {
outline: none; outline: none;
&.disabled { &.disabled {
cursor: initial; cursor: inherit;
} }
& > .radio { & > .radio {
position: relative; position: relative;

View File

@ -51,14 +51,15 @@ vn-table {
} }
& > * > vn-tr, & > * > vn-tr,
& > * > a.vn-tr { & > * > a.vn-tr {
display: table-row display: table-row;
height: 3em;
} }
vn-thead, vn-tbody, vn-tfoot { vn-thead, vn-tbody, vn-tfoot {
& > * { & > * {
display: table-row; display: table-row;
& > vn-th { & > vn-th {
font-weight: bold; color: $color-font-light;
padding-top: 1em; padding-top: 1em;
padding-bottom: .8em; padding-bottom: .8em;
} }
@ -97,10 +98,10 @@ vn-table {
} }
} }
& > :last-child { & > :last-child {
padding-right: 1em; padding-right: 1.4em;
} }
& > :first-child { & > :first-child {
padding-left: 1em; padding-left: 1.4em;
} }
} }
& > a.vn-tr { & > a.vn-tr {

View File

@ -1,4 +1,3 @@
import './md-override.scss';
import './mdl-override.scss'; import './mdl-override.scss';
import './mdi-override.css'; import './mdi-override.css';
import './zoom-image.scss'; import './zoom-image.scss';

View File

@ -1,11 +0,0 @@
html {
background-color: initial;
}
// Disable ng-repeat effects
.ng-enter,
.ng-leave {
transition: none !important;
}

View File

@ -1,3 +1,4 @@
@import "variables";
/* Desktop - Laptop 1360x768 */ /* Desktop - Laptop 1360x768 */
@media (max-resolution: 119dpi) and (min-device-width: 1340px) and (max-device-width: 1899px) @media (max-resolution: 119dpi) and (min-device-width: 1340px) and (max-device-width: 1899px)
@ -46,3 +47,9 @@
{ {
body { font-size: 11pt; } body { font-size: 11pt; }
} }
.vn-hide-narrow {
@media (max-width: $mobile-width) {
display: none;
}
}

View File

@ -7,7 +7,7 @@ $mobile-width: 800px;
$width-xs: 25em; $width-xs: 25em;
$width-sm: 32em; $width-sm: 32em;
$width-md: 60em; $width-md: 50em;
$width-lg: 80em; $width-lg: 80em;
$width-xl: 100em; $width-xl: 100em;
@ -31,7 +31,8 @@ $margin-huge: 100px;
$color-header: #3d3d3d; $color-header: #3d3d3d;
$color-bg: #e5e5e5; $color-bg: #e5e5e5;
$color-bg-dark: #3d3d3d; $color-bg-dark: #3d3d3d;
$color-font: #222222; $color-font: #222;
$color-font-light: #555;
$color-font-secondary: #9b9b9b; $color-font-secondary: #9b9b9b;
$color-font-dark: white; $color-font-dark: white;
$color-font-bg: rgba(0, 0, 0, .7); $color-font-bg: rgba(0, 0, 0, .7);
@ -49,7 +50,7 @@ $color-spacer: rgba(0, 0, 0, .3);
$color-spacer-light: rgba(0, 0, 0, .12); $color-spacer-light: rgba(0, 0, 0, .12);
$color-input-underline: rgba(0, 0, 0, .12); $color-input-underline: rgba(0, 0, 0, .12);
$color-shadow: rgba(0, 0, 0, .2); $color-shadow: rgba(0, 0, 0, .2);
$color-hightlight: rgba(0, 0, 0, .15); $color-hightlight: rgba(0, 0, 0, .05);
$color-hover-cd: rgba(0, 0, 0, .1); $color-hover-cd: rgba(0, 0, 0, .1);
$color-hover-dc: .7; $color-hover-dc: .7;
$color-disabled: .6; $color-disabled: .6;
@ -72,6 +73,7 @@ $color-header: #3d3d3d;
$color-bg: #222; $color-bg: #222;
$color-bg-dark: #222; $color-bg-dark: #222;
$color-font: white; $color-font: white;
$color-font-light: #aaa;
$color-font-secondary: #777; $color-font-secondary: #777;
$color-font-dark: white; $color-font-dark: white;
$color-font-bg: rgba(0, 0, 0, .8); $color-font-bg: rgba(0, 0, 0, .8);
@ -106,5 +108,5 @@ $color-alert-light: darken($color-alert, 35%);
// Border // Border
$border-thin: .1em solid $color-spacer; $border-thin: .05em solid $color-spacer;
$border-thin-light: .1em solid $color-spacer-light; $border-thin-light: .05em solid $color-spacer-light;

View File

@ -4,7 +4,7 @@
filter="::$ctrl.filter" filter="::$ctrl.filter"
auto-load="false"> auto-load="false">
</vn-crud-model> </vn-crud-model>
<div compact> <div class="vn-w-md">
<vn-card pad-large-h> <vn-card pad-large-h>
<vn-searchbar <vn-searchbar
on-search="$ctrl.onSearch($params)" on-search="$ctrl.onSearch($params)"

View File

@ -7,36 +7,29 @@
auto-load="true"> auto-load="true">
</vn-crud-model> </vn-crud-model>
<div compact> <div compact>
<vn-card pad-large> <vn-card pad-medium>
<div <div
ng-repeat="address in $ctrl.addresses" ng-repeat="address in $ctrl.addresses"
class="address"> class="address">
<a <a
ui-sref="client.card.address.edit({addressId: {{::address.id}}})" ui-sref="client.card.address.edit({addressId: {{::address.id}}})"
class="pad-small border-solid" class="pad-small border-solid"
ng-class="{ ng-class="{'item-disabled': !address.isActive}"
'item-hightlight': $ctrl.isDefaultAddress(address),
'item-disabled': !address.isActive && !$ctrl.isDefaultAddress(address)
}"
translate-attr="{title: 'Edit address'}" translate-attr="{title: 'Edit address'}"
border-radius> border-radius>
<vn-none <vn-none
pad-small-right pad-small-right
ng-click="$ctrl.onStarClick($event)"> ng-click="$ctrl.onStarClick($event)">
<vn-icon-button <vn-icon-button
ng-if="$ctrl.isDefaultAddress(address)"
icon="star" icon="star"
ng-if="$ctrl.isDefaultAddress(address)"> translate-attr="{title: 'Default address'}">
</vn-icon-button> </vn-icon-button>
<vn-icon-button <vn-icon-button
ng-if="!address.isActive && !$ctrl.isDefaultAddress(address)" ng-if="!$ctrl.isDefaultAddress(address)"
icon="star_border" icon="star_border"
vn-tooltip="Active first to set as default"> ng-click="$ctrl.setDefault(address)"
</vn-icon-button> translate-attr="{title: 'Set as default'}">
<vn-icon-button
ng-if="address.isActive && !$ctrl.isDefaultAddress(address)"
icon="star_border"
vn-tooltip="Set as default"
ng-click="$ctrl.setDefault(address)">
</vn-icon-button> </vn-icon-button>
</vn-none> </vn-none>
<vn-one <vn-one
@ -59,6 +52,7 @@
ng-if="address.observations.length" ng-if="address.observations.length"
border-solid-left border-solid-left
pad-medium-h pad-medium-h
class="vn-hide-narrow"
style="height: 6em; overflow: auto;"> style="height: 6em; overflow: auto;">
<vn-one ng-repeat="observation in address.observations track by $index" ng-class="{'pad-small-top': $index}"> <vn-one ng-repeat="observation in address.observations track by $index" ng-class="{'pad-small-top': $index}">
<b>{{::observation.observationType.description}}:</b> <b>{{::observation.observationType.description}}:</b>

View File

@ -56,8 +56,7 @@ class Controller {
} }
isDefaultAddress(address) { isDefaultAddress(address) {
if (this.client) return this.client && this.client.defaultAddressFk === address.id;
return this.client.defaultAddressFk === address.id;
} }
/** /**

View File

@ -11,8 +11,8 @@
filter="$ctrl.filter" filter="$ctrl.filter"
data="$ctrl.clientRisks"> data="$ctrl.clientRisks">
</vn-crud-model> </vn-crud-model>
<vn-vertical> <div>
<vn-card pad-large> <vn-card class="pad-medium margin-medium-bottom">
<vn-horizontal> <vn-horizontal>
<vn-one></vn-one> <vn-one></vn-one>
<vn-one> <vn-one>
@ -23,7 +23,7 @@
url="/client/api/Companies" url="/client/api/Companies"
show-field="code" show-field="code"
value-field="id" value-field="id"
label="Select company"> label="Company">
</vn-autocomplete> </vn-autocomplete>
</vn-one> </vn-one>
<vn-one> <vn-one>
@ -38,68 +38,67 @@
</div> </div>
</vn-one> </vn-one>
</vn-horizontal> </vn-horizontal>
<vn-vertical>
<vn-table model="model">
<vn-thead>
<vn-tr>
<vn-th default-order>Date</vn-th>
<vn-th>Creation date</vn-th>
<vn-th>Employee</vn-th>
<vn-th>Reference</vn-th>
<vn-th number>Bank</vn-th>
<vn-th number>Debit</vn-th>
<vn-th number>Havings</vn-th>
<vn-th number>Balance</vn-th>
<vn-th center>Conciliated</vn-th>
<vn-th></vn-th>
</vn-tr>
</vn-thead>
<vn-tbody>
<vn-tr ng-repeat="balance in $ctrl.balances">
<vn-td>{{::balance.payed | dateTime:'dd/MM/yyyy'}}</vn-td>
<vn-td>{{::balance.created | dateTime:'dd/MM/yyyy HH:mm'}}</vn-td>
<vn-td>
<span
class="link"
ng-click="$ctrl.showWorkerDescriptor($event, balance.workerFk)">
{{::balance.userNickname}}
</span>
</vn-td>
<vn-td>
<span
ng-class="{'link': balance.isInvoice}"
ng-click="$ctrl.showInvoiceOutDescriptor($event, balance)"
ng-show="balance.ref">{{balance.isInvoice ? 'BILL' : balance.ref | translate: {ref: balance.ref} }}
</span>
</vn-td>
<vn-td number>{{::balance.bankFk}}</vn-td>
<vn-td number>{{::balance.debit | currency: 'EUR':2}}</vn-td>
<vn-td number>{{::balance.credit | currency: 'EUR':2}}</vn-td>
<vn-td number>{{balance.balance | currency: 'EUR':2}}</vn-td>
<vn-td center>
<vn-check
field="balance.isConciliate"
disabled="true">
</vn-check>
</vn-td>
<vn-td center>
<a ng-show="balance.hasPdf"
target="_blank"
href="api/InvoiceOuts/{{::balance.id}}/download?access_token={{::$ctrl.accessToken}}">
<vn-icon-button
icon="cloud_download"
title="{{'Download PDF' | translate}}">
</vn-icon-button>
</a>
</vn-td>
</vn-tr>
</vn-tbody>
</vn-table>
</vn-vertical>
<vn-pagination model="model"></vn-pagination>
</vn-card> </vn-card>
</vn-vertical> <vn-card>
<vn-table model="model">
<vn-thead>
<vn-tr>
<vn-th default-order>Date</vn-th>
<vn-th>Creation date</vn-th>
<vn-th>Employee</vn-th>
<vn-th>Reference</vn-th>
<vn-th number>Bank</vn-th>
<vn-th number>Debit</vn-th>
<vn-th number>Havings</vn-th>
<vn-th number>Balance</vn-th>
<vn-th center>Conciliated</vn-th>
<vn-th></vn-th>
</vn-tr>
</vn-thead>
<vn-tbody>
<vn-tr ng-repeat="balance in $ctrl.balances">
<vn-td>{{::balance.payed | dateTime:'dd/MM/yyyy'}}</vn-td>
<vn-td>{{::balance.created | dateTime:'dd/MM/yyyy HH:mm'}}</vn-td>
<vn-td>
<span
class="link"
ng-click="$ctrl.showWorkerDescriptor($event, balance.workerFk)">
{{::balance.userNickname}}
</span>
</vn-td>
<vn-td>
<span
ng-class="{'link': balance.isInvoice}"
ng-click="$ctrl.showInvoiceOutDescriptor($event, balance)"
ng-show="balance.ref">{{balance.isInvoice ? 'BILL' : balance.ref | translate: {ref: balance.ref} }}
</span>
</vn-td>
<vn-td number>{{::balance.bankFk}}</vn-td>
<vn-td number>{{::balance.debit | currency: 'EUR':2}}</vn-td>
<vn-td number>{{::balance.credit | currency: 'EUR':2}}</vn-td>
<vn-td number>{{balance.balance | currency: 'EUR':2}}</vn-td>
<vn-td center>
<vn-check
field="balance.isConciliate"
disabled="true">
</vn-check>
</vn-td>
<vn-td center>
<a ng-show="balance.hasPdf"
target="_blank"
href="api/InvoiceOuts/{{::balance.id}}/download?access_token={{::$ctrl.accessToken}}">
<vn-icon-button
icon="cloud_download"
title="{{'Download PDF' | translate}}">
</vn-icon-button>
</a>
</vn-td>
</vn-tr>
</vn-tbody>
</vn-table>
</vn-card>
<vn-pagination model="model"></vn-pagination>
</div>
<vn-float-button <vn-float-button
vn-acl="administrative" vn-acl="administrative"
vn-acl-action="remove" vn-acl-action="remove"
@ -109,15 +108,13 @@
fixed-bottom-right fixed-bottom-right
ng-click="$ctrl.openCreateDialog()"> ng-click="$ctrl.openCreateDialog()">
</vn-float-button> </vn-float-button>
<vn-client-balance-create
<vn-client-balance-create vn-id="balanceCreateDialog"> vn-id="balanceCreateDialog">
</vn-client-balance-create> </vn-client-balance-create>
<vn-worker-descriptor-popover <vn-worker-descriptor-popover
vn-id="workerDescriptor" vn-id="workerDescriptor"
worker-fk="$ctrl.selectedWorker"> worker-fk="$ctrl.selectedWorker">
</vn-worker-descriptor-popover> </vn-worker-descriptor-popover>
<vn-invoice-out-descriptor-popover <vn-invoice-out-descriptor-popover
vn-id="invoiceOutDescriptor" vn-id="invoiceOutDescriptor"
invoice-out-id="$ctrl.selectedInvoiceOut"> invoice-out-id="$ctrl.selectedInvoiceOut">

View File

@ -1,8 +1,8 @@
<div compact> <div class="vn-w-md">
<vn-card pad-large> <vn-card pad-medium>
<vn-horizontal <vn-horizontal
ng-repeat="classification in $ctrl.classifications track by classification.id" ng-repeat="classification in $ctrl.classifications track by classification.id"
class="pad-medium-top" class="pad-medium-bottom insurance"
style="align-items: center;"> style="align-items: center;">
<vn-one <vn-one
border-radius border-radius
@ -52,16 +52,16 @@
</vn-one> </vn-one>
</vn-horizontal> </vn-horizontal>
</vn-card> </vn-card>
<vn-float-button
ng-if="$ctrl.canCreateNew()"
vn-tooltip="New contract"
fixed-bottom-right
ui-sref="client.card.creditInsurance.create"
icon="add"
vn-bind="+"
label="Add">
</vn-float-button>
</div> </div>
<vn-float-button
ng-if="$ctrl.canCreateNew()"
vn-tooltip="New contract"
fixed-bottom-right
ui-sref="client.card.creditInsurance.create"
icon="add"
vn-bind="+"
label="Add">
</vn-float-button>
<vn-confirm <vn-confirm
vn-id="close-contract" vn-id="close-contract"
on-response="$ctrl.returnDialog(response)" on-response="$ctrl.returnDialog(response)"

View File

@ -1,7 +1,7 @@
import ngModule from '../../module'; import ngModule from '../../module';
import './style.scss';
class Controller { class Controller {
constructor($http, $scope) { constructor($http, $scope) {
this.$http = $http; this.$http = $http;
this.$scope = $scope; this.$scope = $scope;

View File

@ -0,0 +1,5 @@
vn-client-credit-insurance-index{
.insurance:last-child {
padding-bottom: 0;
}
}

View File

@ -6,34 +6,33 @@
limit="20" limit="20"
data="credits" auto-load="false"> data="credits" auto-load="false">
</vn-crud-model> </vn-crud-model>
<vn-vertical compact> <div class="vn-w-md">
<vn-card pad-large> <vn-card>
<vn-vertical> <vn-table model="model">
<vn-table model="model"> <vn-thead>
<vn-thead> <vn-tr>
<vn-tr> <vn-th field="created" default-order="DESC">Since</vn-th>
<vn-th field="amount">Credit</vn-th> <vn-th>Employee</vn-th>
<vn-th field="created" default-order="DESC">Since</vn-th> <vn-th field="amount" number>Credit</vn-th>
<vn-th>Employee</vn-th> </vn-tr>
</vn-tr> </vn-thead>
</vn-thead> <vn-tbody>
<vn-tbody> <vn-tr ng-repeat="credit in credits track by credit.id">
<vn-tr ng-repeat="credit in credits track by credit.id"> <vn-td>{{::credit.created | dateTime:'dd/MM/yyyy HH:mm'}}</vn-td>
<vn-td>{{::credit.amount | number:2}} €</vn-td> <vn-td>{{::credit.worker.user.nickname}}</vn-td>
<vn-td>{{::credit.created | dateTime:'dd/MM/yyyy HH:mm'}}</vn-td> <vn-td number>{{::credit.amount | currency:'EUR':2}}</vn-td>
<vn-td>{{::credit.worker.user.nickname}}</vn-td> </vn-tr>
</vn-tr> </vn-tbody>
</vn-tbody> </vn-table>
</vn-table>
</vn-vertical>
<vn-pagination model="model"></vn-pagination>
</vn-card> </vn-card>
</vn-vertical> <vn-pagination model="model"></vn-pagination>
</div>
<vn-float-button icon="add" fixed-bottom-right <vn-float-button
icon="add"
ui-sref="client.card.credit.create" ui-sref="client.card.credit.create"
vn-acl="teamBoss" vn-acl="teamBoss"
vn-acl-action="remove" vn-acl-action="remove"
vn-tooltip="New credit" vn-tooltip="New credit"
vn-bind="+"> vn-bind="+"
fixed-bottom-right>
</vn-float-button> </vn-float-button>

View File

@ -6,99 +6,97 @@
limit="20" limit="20"
data="$ctrl.clientDms"> data="$ctrl.clientDms">
</vn-crud-model> </vn-crud-model>
<vn-vertical> <div class="vn-w-lg">
<vn-card pad-large> <vn-card>
<vn-vertical> <vn-table model="model">
<vn-table model="model"> <vn-thead>
<vn-thead> <vn-tr>
<vn-tr> <vn-th field="dmsFk" default-order="DESC" shrink>Id</vn-th>
<vn-th field="dmsFk" default-order="DESC" shrink>Id</vn-th> <vn-th field="dmsTypeFk" shrink>Type</vn-th>
<vn-th field="dmsTypeFk" shrink>Type</vn-th> <vn-th field="hardCopyNumber" shrink number>Order</vn-th>
<vn-th field="hardCopyNumber" shrink number>Order</vn-th> <vn-th field="reference" shrink>Reference</vn-th>
<vn-th field="reference" shrink>Reference</vn-th> <vn-th expand>Description</vn-th>
<vn-th expand>Description</vn-th> <vn-th field="hasFile" shrink>Original</vn-th>
<vn-th field="hasFile" shrink>Original</vn-th> <vn-th shrink>File</vn-th>
<vn-th shrink>File</vn-th> <vn-th shrink>Employee</vn-th>
<vn-th shrink>Employee</vn-th> <vn-th field="created">Created</vn-th>
<vn-th field="created">Created</vn-th> <vn-th shrink></vn-th>
<vn-th shrink></vn-th> <vn-th shrink></vn-th>
<vn-th shrink></vn-th> <vn-th shrink></vn-th>
<vn-th shrink></vn-th> </vn-tr>
</vn-tr> </vn-thead>
</vn-thead> <vn-tbody>
<vn-tbody> <vn-tr ng-repeat="document in $ctrl.clientDms">
<vn-tr ng-repeat="document in $ctrl.clientDms"> <vn-td number shrink>{{::document.dmsFk}}</vn-td>
<vn-td number shrink>{{::document.dmsFk}}</vn-td> <vn-td shrink>
<vn-td shrink> <span title="{{::document.dms.dmsType.name}}">
<span title="{{::document.dms.dmsType.name}}"> {{::document.dms.dmsType.name}}
{{::document.dms.dmsType.name}} </span>
</span> </vn-td>
</vn-td> <vn-td shrink number>
<vn-td shrink number> <span class="chip" title="{{::document.dms.hardCopyNumber}}"
<span class="chip" title="{{::document.dms.hardCopyNumber}}" ng-class="{'message': document.dms.hardCopyNumber}">
ng-class="{'message': document.dms.hardCopyNumber}"> {{::document.dms.hardCopyNumber}}
{{::document.dms.hardCopyNumber}} </span>
</span> </vn-td>
</vn-td> <vn-td shrink>
<vn-td shrink> <span title="{{::document.dms.reference}}">
<span title="{{::document.dms.reference}}"> {{::document.dms.reference}}
{{::document.dms.reference}} </span>
</span> </vn-td>
</vn-td> <vn-td expand>
<vn-td expand> <span title="{{::document.dms.description}}">
<span title="{{::document.dms.description}}"> {{::document.dms.description}}
{{::document.dms.description}} </span>
</span> </vn-td>
</vn-td> <vn-td shrink>
<vn-td shrink> <vn-check disabled="true"
<vn-check disabled="true" field="document.dms.hasFile">
field="document.dms.hasFile"> </vn-check>
</vn-check> </vn-td>
</vn-td> <vn-td shrink>
<vn-td shrink> <a target="_blank"
<a target="_blank" title="{{'Download file' | translate}}"
title="{{'Download file' | translate}}" href="api/dms/{{::document.dmsFk}}/downloadFile?access_token={{::$ctrl.accessToken}}">{{::document.dms.file}}
href="api/dms/{{::document.dmsFk}}/downloadFile?access_token={{::$ctrl.accessToken}}">{{::document.dms.file}} </a>
</a> </vn-td>
</vn-td> <vn-td shrink>
<vn-td shrink> <span class="link"
<span class="link" ng-click="$ctrl.showWorkerDescriptor($event, document.dms.workerFk)">
ng-click="$ctrl.showWorkerDescriptor($event, document.dms.workerFk)"> {{::document.dms.worker.user.nickname | dashIfEmpty}}
{{::document.dms.worker.user.nickname | dashIfEmpty}} </span></vn-td>
</span></vn-td> <vn-td>
<vn-td> {{::document.dms.created | dateTime:'dd/MM/yyyy HH:mm'}}
{{::document.dms.created | dateTime:'dd/MM/yyyy HH:mm'}} </vn-td>
</vn-td> <vn-td shrink>
<vn-td shrink> <a target="_blank"
<a target="_blank" href="api/dms/{{::document.dmsFk}}/downloadFile?access_token={{::$ctrl.accessToken}}">
href="api/dms/{{::document.dmsFk}}/downloadFile?access_token={{::$ctrl.accessToken}}">
<vn-icon-button
icon="cloud_download"
title="{{'Download file' | translate}}">
</vn-icon-button>
</a>
</vn-td>
<vn-td shrink>
<vn-icon-button ui-sref="client.card.dms.edit({dmsId: {{::document.dmsFk}}})"
icon="edit"
title="{{'Edit file' | translate}}">
</vn-icon-button>
</vn-td>
<vn-td shrink>
<vn-icon-button <vn-icon-button
icon="delete" icon="cloud_download"
ng-click="$ctrl.showDeleteConfirm($index)" title="{{'Download file' | translate}}">
title="{{'Remove file' | translate}}"
tabindex="-1">
</vn-icon-button> </vn-icon-button>
</vn-td> </a>
</vn-tr> </vn-td>
</vn-tbody> <vn-td shrink>
</vn-table> <vn-icon-button ui-sref="client.card.dms.edit({dmsId: {{::document.dmsFk}}})"
</vn-vertical> icon="edit"
<vn-pagination model="model"></vn-pagination> title="{{'Edit file' | translate}}">
</vn-icon-button>
</vn-td>
<vn-td shrink>
<vn-icon-button
icon="delete"
ng-click="$ctrl.showDeleteConfirm($index)"
title="{{'Remove file' | translate}}"
tabindex="-1">
</vn-icon-button>
</vn-td>
</vn-tr>
</vn-tbody>
</vn-table>
</vn-card> </vn-card>
</vn-vertical> </div>
<vn-pagination model="model"></vn-pagination>
<vn-worker-descriptor-popover <vn-worker-descriptor-popover
vn-id="workerDescriptor"> vn-id="workerDescriptor">
</vn-worker-descriptor-popover> </vn-worker-descriptor-popover>

View File

@ -4,49 +4,53 @@
filter="::$ctrl.filter" filter="::$ctrl.filter"
link="{clientFk: $ctrl.$stateParams.id}" link="{clientFk: $ctrl.$stateParams.id}"
limit="20" limit="20"
data="greuges" auto-load="true"> data="greuges"
auto-load="true">
</vn-crud-model> </vn-crud-model>
<mg-ajax <mg-ajax
path="/client/api/greuges/{{$ctrl.$stateParams.id}}/sumAmount" path="/client/api/greuges/{{$ctrl.$stateParams.id}}/sumAmount"
options="mgEdit"> options="mgEdit">
</mg-ajax> </mg-ajax>
<vn-vertical compact> <div class="vn-w-md">
<vn-card pad-large> <vn-card
<vn-horizontal> ng-if="model.data.length > 0"
<div class="totalBox" ng-if="model.data.length > 0"> style="text-align: right;"
<vn-label-value label="Total" class="margin-medium-bottom pad-large">
value="{{edit.model.sumAmount | currency: 'EUR': 2}}"> <vn-label-value
</vn-label-value> label="Total"
</div> value="{{edit.model.sumAmount | currency: 'EUR': 2}}">
</vn-horizontal> </vn-label-value>
</vn-card>
<vn-card>
<vn-vertical> <vn-vertical>
<vn-table model="model" auto-load="false"> <vn-table model="model" auto-load="false">
<vn-thead> <vn-thead>
<vn-tr> <vn-tr>
<vn-th field="shipped" default-order="DESC">Date</vn-th> <vn-th field="shipped" default-order="DESC">Date</vn-th>
<vn-th field="description">Comment</vn-th> <vn-th field="description">Comment</vn-th>
<vn-th field="amount" >Amount</vn-th>
<vn-th field="greugeTypeFk">Type</vn-th> <vn-th field="greugeTypeFk">Type</vn-th>
<vn-th field="amount" number>Amount</vn-th>
</vn-tr> </vn-tr>
</vn-thead> </vn-thead>
<vn-tbody> <vn-tbody>
<vn-tr ng-repeat="greuge in greuges"> <vn-tr ng-repeat="greuge in greuges">
<vn-td>{{::greuge.shipped | dateTime:'dd/MM/yyyy HH:mm' }}</vn-td> <vn-td>{{::greuge.shipped | dateTime:'dd/MM/yyyy HH:mm' }}</vn-td>
<vn-td>{{::greuge.description}}</vn-td> <vn-td>{{::greuge.description}}</vn-td>
<vn-td>{{::greuge.amount | currency: 'EUR': 2}}</vn-td>
<vn-td>{{::greuge.greugeType.name}}</vn-td> <vn-td>{{::greuge.greugeType.name}}</vn-td>
<vn-td number>{{::greuge.amount | currency: 'EUR': 2}}</vn-td>
</vn-tr> </vn-tr>
</vn-tbody> </vn-tbody>
</vn-table> </vn-table>
</vn-vertical> </vn-vertical>
<vn-pagination model="model"></vn-pagination>
</vn-card> </vn-card>
</vn-vertical> <vn-pagination model="model"></vn-pagination>
</div>
<vn-float-button icon="add" fixed-bottom-right <vn-float-button
icon="add"
ui-sref="client.card.greuge.create" ui-sref="client.card.greuge.create"
vn-tooltip="New greuge" vn-tooltip="New greuge"
vn-acl="salesAssistant" vn-acl="salesAssistant"
vn-acl-action="remove" vn-acl-action="remove"
vn-bind="+"> vn-bind="+"
fixed-bottom-right>
</vn-float-button> </vn-float-button>

View File

@ -4,32 +4,31 @@
filter="::$ctrl.filter" filter="::$ctrl.filter"
link="{clientFk: $ctrl.$stateParams.id}" link="{clientFk: $ctrl.$stateParams.id}"
limit="20" limit="20"
data="mandates" auto-load="false"> data="mandates"
auto-load="false">
</vn-crud-model> </vn-crud-model>
<vn-vertical compact> <div class="vn-w-md">
<vn-card pad-large> <vn-card>
<vn-vertical> <vn-table model="model">
<vn-table model="model"> <vn-thead>
<vn-thead> <vn-tr>
<vn-tr> <vn-th field="id" number>Id</vn-th>
<vn-th field="id">Id</vn-th> <vn-th field="companyFk">Company</vn-th>
<vn-th field="companyFk">Company</vn-th> <vn-th field="mandateTypeFk">Type</vn-th>
<vn-th field="mandateTypeFk">Type</vn-th> <vn-th field="created" default-order="DESC">Register date</vn-th>
<vn-th field="created" default-order="DESC">Register date</vn-th> <vn-th field="finished">End date</vn-th>
<vn-th field="finished">End date</vn-th> </vn-tr>
</vn-tr> </vn-thead>
</vn-thead> <vn-tbody>
<vn-tbody> <vn-tr ng-repeat="mandate in mandates">
<vn-tr ng-repeat="mandate in mandates"> <vn-td number>{{::mandate.id}}</vn-td>
<vn-td>{{::mandate.id}}</vn-td> <vn-td>{{::mandate.company.code}}</vn-td>
<vn-td>{{::mandate.company.code}}</vn-td> <vn-td>{{::mandate.mandateType.name}}</vn-td>
<vn-td>{{::mandate.mandateType.name}}</vn-td> <vn-td>{{::mandate.created | dateTime:'dd/MM/yyyy HH:mm' }}</vn-td>
<vn-td>{{::mandate.created | dateTime:'dd/MM/yyyy HH:mm' }}</vn-td> <vn-td>{{::mandate.finished | dateTime:'dd/MM/yyyy HH:mm' || '-'}}</vn-td>
<vn-td>{{::mandate.finished | dateTime:'dd/MM/yyyy HH:mm' || '-'}}</vn-td> </vn-tr>
</vn-tr> </vn-tbody>
</vn-tbody> </vn-table>
</vn-table>
</vn-vertical>
<vn-pagination model="model"></vn-pagination>
</vn-card> </vn-card>
<vn-pagination model="model"></vn-pagination>
</vn-vertical> </vn-vertical>

View File

@ -6,15 +6,14 @@ class Controller {
this.filter = { this.filter = {
include: [ include: [
{ {
relation: "mandateType", relation: 'mandateType',
scope: { scope: {
fields: ["id", "name"] fields: ['id', 'name']
} }
}, }, {
{ relation: 'company',
relation: "company",
scope: { scope: {
fields: ["id", "code"] fields: ['id', 'code']
} }
} }
] ]

View File

@ -6,9 +6,9 @@
data="notes" data="notes"
auto-load="true"> auto-load="true">
</vn-crud-model> </vn-crud-model>
<vn-vertical compact> <div class="vn-w-md">
<vn-card pad-large> <vn-card pad-medium>
<vn-vertical <div class="note"
ng-repeat="note in notes" ng-repeat="note in notes"
pad-small pad-small
border-solid border-solid
@ -21,14 +21,12 @@
<vn-horizontal class="text"> <vn-horizontal class="text">
{{::note.text}} {{::note.text}}
</vn-horizontal> </vn-horizontal>
</vn-vertical> </div>
<vn-horizontal ng-if="model.data.length == 0"> <div ng-if="model.data.length == 0" ad-small translate>
<vn-one ad-small translate> No results
No results </div>
</vn-one>
</vn-horizontal>
</vn-card> </vn-card>
</vn-vertical> </div>
<a vn-tooltip="New note" <a vn-tooltip="New note"
ui-sref="client.card.note.create({id: $ctrl.$stateParams.id})" ui-sref="client.card.note.create({id: $ctrl.$stateParams.id})"

View File

@ -1,4 +1,5 @@
import ngModule from '../../module'; import ngModule from '../../module';
import './style.scss';
export default class Controller { export default class Controller {
constructor($stateParams) { constructor($stateParams) {

View File

@ -0,0 +1,5 @@
vn-client-note {
.note:last-child {
margin-bottom: 0;
}
}

View File

@ -1,51 +1,51 @@
<vn-crud-model <vn-crud-model
vn-id="model" vn-id="model"
url="/client/api/Recoveries" url="/client/api/Recoveries"
filter="{}"
link="{clientFk: $ctrl.$stateParams.id}" link="{clientFk: $ctrl.$stateParams.id}"
limit="20" limit="20"
data="recoveries" auto-load="false"> data="recoveries"
auto-load="false">
</vn-crud-model> </vn-crud-model>
<vn-vertical compact> <div class="vn-w-md">
<vn-card pad-large> <vn-card>
<vn-vertical> <vn-table model="model">
<vn-table model="model"> <vn-thead>
<vn-thead> <vn-tr>
<vn-tr> <vn-th></vn-th>
<vn-th></vn-th> <vn-th field="started" default-order="DESC">Since</vn-th>
<vn-th field="started" default-order="DESC">Since</vn-th> <vn-th field="finished">To</vn-th>
<vn-th field="finished">To</vn-th> <vn-th field="amount" number>Amount</vn-th>
<vn-th field="amount">Amount</vn-th> <vn-th field="period" number>Period</vn-th>
<vn-th field="period">Period</vn-th> </vn-tr>
</vn-tr> </vn-thead>
</vn-thead> <vn-tbody>
<vn-tbody> <vn-tr ng-repeat="recovery in recoveries">
<vn-tr ng-repeat="recovery in recoveries"> <vn-td>
<vn-td> <vn-icon-button
<vn-icon-button icon="lock" icon="lock"
vn-acl="administrative" vn-acl="administrative"
vn-acl-action="remove" vn-acl-action="remove"
vn-tooltip="Finish that recovery period" vn-tooltip="Finish that recovery period"
ng-if="!recovery.finished" ng-if="!recovery.finished"
ng-click="$ctrl.setFinished(recovery)"> ng-click="$ctrl.setFinished(recovery)">
</vn-icon-button> </vn-icon-button>
</vn-td> </vn-td>
<vn-td>{{::recovery.started | dateTime:'dd/MM/yyyy' }}</vn-td> <vn-td>{{::recovery.started | dateTime:'dd/MM/yyyy' }}</vn-td>
<vn-td>{{recovery.finished | dateTime:'dd/MM/yyyy' }}</vn-td> <vn-td>{{recovery.finished | dateTime:'dd/MM/yyyy' }}</vn-td>
<vn-td>{{::recovery.amount | currency: 'EUR': 0}}</vn-td> <vn-td number>{{::recovery.amount | currency: 'EUR': 0}}</vn-td>
<vn-td>{{::recovery.period}}</vn-td> <vn-td number>{{::recovery.period}}</vn-td>
</vn-tr> </vn-tr>
</vn-tbody> </vn-tbody>
</vn-table> </vn-table>
</vn-vertical>
<vn-pagination model="model"></vn-pagination>
</vn-card> </vn-card>
</vn-vertical> <vn-pagination model="model"></vn-pagination>
</div>
<vn-float-button icon="add" fixed-bottom-right <vn-float-button
icon="add"
fixed-bottom-right
vn-tooltip="New recovery" vn-tooltip="New recovery"
vn-bind="+" vn-bind="+"
vn-acl="administrative" vn-acl="administrative"
vn-acl-action="remove" vn-acl-action="remove"
ui-sref="client.card.recovery.create"> ui-sref="client.card.recovery.create">
</vn-float-button> </vn-float-button>

View File

@ -4,43 +4,40 @@
filter="::$ctrl.filter" filter="::$ctrl.filter"
link="{clientFk: $ctrl.$stateParams.id}" link="{clientFk: $ctrl.$stateParams.id}"
limit="20" limit="20"
data="samples" auto-load="false"> data="samples"
auto-load="false">
</vn-crud-model> </vn-crud-model>
<vn-vertical compact> <div class="vn-w-md">
<vn-card pad-large> <vn-card>
<vn-horizontal> <vn-table model="model">
</vn-horizontal> <vn-thead>
<vn-vertical> <vn-tr>
<vn-table model="model"> <vn-th field="created" default-order="DESC">Sent</vn-th>
<vn-thead> <vn-th>Description</vn-th>
<vn-tr> <vn-th field="workerFk">Worker</vn-th>
<vn-th field="created" default-order="DESC">Sent</vn-th> <vn-th field="companyFk">Company</vn-th>
<vn-th>Description</vn-th> </vn-tr>
<vn-th field="workerFk">Worker</vn-th> </vn-thead>
<vn-th field="companyFk">Company</vn-th> <vn-tbody>
</vn-tr> <vn-tr ng-repeat="sample in samples">
</vn-thead> <vn-td>{{::sample.created | dateTime:'dd/MM/yyyy HH:mm' }}</vn-td>
<vn-tbody> <vn-td
<vn-tr ng-repeat="sample in samples"> title="{{::sample.type.description}}">
<vn-td>{{::sample.created | dateTime:'dd/MM/yyyy HH:mm' }}</vn-td> {{::sample.type.description}}
<vn-td </vn-td>
title="{{::sample.type.description}}"> <vn-td>
{{::sample.type.description}} <span class="link"
</vn-td> ng-click="$ctrl.showWorkerDescriptor($event, sample.worker.id)">
<vn-td> {{::sample.worker.user.nickname}}
<span class="link" </span>
ng-click="$ctrl.showWorkerDescriptor($event, sample.worker.id)"> </vn-td>
{{::sample.worker.user.nickname}} <vn-td>{{::sample.company.code}}</vn-td>
</span> </vn-tr>
</vn-td> </vn-tbody>
<vn-td>{{::sample.company.code}}</vn-td> </vn-table>
</vn-tr>
</vn-tbody>
</vn-table>
</vn-vertical>
<vn-pagination model="model"></vn-pagination>
</vn-card> </vn-card>
</vn-vertical> <vn-pagination model="model"></vn-pagination>
</div>
<vn-worker-descriptor-popover <vn-worker-descriptor-popover
vn-id="workerDescriptor" vn-id="workerDescriptor"
worker-fk="$ctrl.selectedWorker"> worker-fk="$ctrl.selectedWorker">

View File

@ -1,4 +1,4 @@
Default address: Consignatario pred. Default address: Consignatario predeterminado
Total greuge: Greuge total Total greuge: Greuge total
Financial information: Datos financieros Financial information: Datos financieros
Mana: Maná Mana: Maná

View File

@ -5,50 +5,48 @@
limit="20" limit="20"
data="transactions" auto-load="false"> data="transactions" auto-load="false">
</vn-crud-model> </vn-crud-model>
<vn-vertical compact> <div class="vn-w-md">
<vn-card pad-large> <vn-card>
<vn-vertical> <vn-table model="model">
<vn-table model="model"> <vn-thead>
<vn-thead> <vn-tr>
<vn-tr> <vn-th>State</vn-th>
<vn-th>State</vn-th> <vn-th field="id"number>Id</vn-th>
<vn-th field="id">Id</vn-th> <vn-th field="amount" number>Amount</vn-th>
<vn-th field="amount" number>Amount</vn-th> <vn-th field="created" default-order="DESC">Payed</vn-th>
<vn-th field="created" default-order="DESC">Payed</vn-th> <vn-th>Confirm</vn-th>
<vn-th>Confirm</vn-th> </vn-tr>
</vn-tr> </vn-thead>
</vn-thead> <vn-tbody>
<vn-tbody> <vn-tr ng-repeat="transaction in transactions">
<vn-tr ng-repeat="transaction in transactions"> <vn-td style="width: 3em; text-align: center">
<vn-td style="width: 3em; text-align: center">
<vn-icon
vn-tooltip="{{$ctrl.getFormattedMessage(transaction)}}"
ng-show="::((transaction.errorMessage || transaction.responseMessage) && !transaction.isConfirmed)"
icon="clear">
</vn-icon>
<vn-icon <vn-icon
vn-tooltip="Confirmed" vn-tooltip="{{$ctrl.getFormattedMessage(transaction)}}"
ng-show="::(transaction.isConfirmed)" ng-show="::((transaction.errorMessage || transaction.responseMessage) && !transaction.isConfirmed)"
icon="check"> icon="clear">
</vn-icon> </vn-icon>
</vn-td> <vn-icon
<vn-td>{{::transaction.id}}</vn-td> vn-tooltip="Confirmed"
<vn-td number>{{::transaction.amount | currency: 'EUR':2}}</vn-td> ng-show="::(transaction.isConfirmed)"
<vn-td>{{::transaction.created | dateTime:'dd/MM/yyyy HH:mm'}}</vn-td> icon="check">
<vn-td style="width: 3em; text-align: center"> </vn-icon>
<vn-icon-button </vn-td>
icon="done_all" <vn-td number>{{::transaction.id}}</vn-td>
vn-acl="administrative" <vn-td number>{{::transaction.amount | currency: 'EUR':2}}</vn-td>
vn-acl-action="remove" <vn-td>{{::transaction.created | dateTime:'dd/MM/yyyy HH:mm'}}</vn-td>
vn-tooltip="Confirm transaction" <vn-td style="width: 3em; text-align: center">
ng-show="::!transaction.isConfirmed" <vn-icon-button
ng-click="$ctrl.confirm(transaction)"> icon="done_all"
</vn-icon-button> vn-acl="administrative"
</vn-td> vn-acl-action="remove"
</vn-tr> vn-tooltip="Confirm transaction"
</vn-tbody> ng-show="::!transaction.isConfirmed"
</vn-table> ng-click="$ctrl.confirm(transaction)">
</vn-vertical> </vn-icon-button>
<vn-pagination model="model"></vn-pagination> </vn-td>
</vn-tr>
</vn-tbody>
</vn-table>
</vn-card> </vn-card>
</vn-vertical> <vn-pagination model="model"></vn-pagination>
</div>

View File

@ -122,8 +122,8 @@
<vn-td>{{::ticket.warehouse}}</vn-td> <vn-td>{{::ticket.warehouse}}</vn-td>
<vn-td>{{::ticket.refFk | dashIfEmpty}}</vn-td> <vn-td>{{::ticket.refFk | dashIfEmpty}}</vn-td>
<vn-td shrink>{{::ticket.zoneLanding | dateTime: 'HH:mm'}}</vn-td> <vn-td shrink>{{::ticket.zoneLanding | dateTime: 'HH:mm'}}</vn-td>
<vn-td> <vn-td number>
<span number class="chip {{$ctrl.totalPriceColor(ticket)}}"> <span class="chip {{$ctrl.totalPriceColor(ticket)}}">
{{::ticket.total | currency: 'EUR': 2}} {{::ticket.total | currency: 'EUR': 2}}
</span> </span>
</vn-td> </vn-td>

View File

@ -7,98 +7,95 @@
limit="20" limit="20"
auto-load="true"> auto-load="true">
</vn-crud-model> </vn-crud-model>
<vn-vertical> <div>
<vn-card pad-large> <vn-card>
<vn-vertical> <vn-table model="model">
<vn-title>History</vn-title> <vn-thead>
<vn-table model="model"> <vn-tr>
<vn-thead> <vn-th field="creationDate">Date</vn-th>
<vn-tr> <vn-th field="userFk" class="expendable">Changed by</vn-th>
<vn-th field="creationDate">Date</vn-th> <vn-th field="changedModel" class="expendable">Model</vn-th>
<vn-th field="userFk" class="expendable">Changed by</vn-th> <vn-th field="action" class="expendable">Action</vn-th>
<vn-th field="changedModel" class="expendable">Model</vn-th> <vn-th field="changedModelValue" class="expendable">Name</vn-th>
<vn-th field="action" class="expendable">Action</vn-th> <vn-th>Before</vn-th>
<vn-th field="changedModelValue" class="expendable">Name</vn-th> <vn-th>After</vn-th>
<vn-th>Before</vn-th> </vn-tr>
<vn-th>After</vn-th> </vn-thead>
</vn-tr> <vn-tbody>
</vn-thead> <vn-tr ng-repeat="log in $ctrl.logs">
<vn-tbody> <vn-td>
<vn-tr ng-repeat="log in $ctrl.logs"> {{::log.creationDate | dateTime:'dd/MM/yyyy HH:mm'}}
<vn-td> <div class="changes">
{{::log.creationDate | dateTime:'dd/MM/yyyy HH:mm'}} <div>
<div class="changes"> <span translate class="label">Changed by</span><span class="label">: </span>
<div> <span
<span translate class="label">Changed by</span><span class="label">: </span> ng-class="{'link': log.user.worker.id, 'value': !log.user.worker.id}"
<span ng-click="$ctrl.showWorkerDescriptor($event, log.user.worker.id)"
ng-class="{'link': log.user.worker.id, 'value': !log.user.worker.id}" translate>{{::log.user.name | dashIfEmpty}}
ng-click="$ctrl.showWorkerDescriptor($event, log.user.worker.id)" </span>
translate>{{::log.user.name | dashIfEmpty}}
</span>
</div>
<div>
<span translate class="label">Model</span><span class="label">: </span>
<span translate class="value">{{::log.changedModel | dashIfEmpty}}</span>
</div>
<div>
<span translate class="label">Action</span><span class="label">: </span>
<span translate class="value">{{::$ctrl.actionsText[log.action] | dashIfEmpty}}</span>
</div>
<div>
<span translate class="label">Name</span><span class="label">: </span>
<span translate class="value">{{::log.changedModelValue | dashIfEmpty}}</span>
</div>
</div> </div>
</vn-td> <div>
<vn-td class="expendable"> <span translate class="label">Model</span><span class="label">: </span>
<span <span translate class="value">{{::log.changedModel | dashIfEmpty}}</span>
ng-class="{'link': log.user.worker.id, 'value': !log.user.worker.id}" </div>
ng-click="$ctrl.showWorkerDescriptor($event, log.user.worker.id)" <div>
translate>{{::log.user.name | dashIfEmpty}} <span translate class="label">Action</span><span class="label">: </span>
</span> <span translate class="value">{{::$ctrl.actionsText[log.action] | dashIfEmpty}}</span>
</vn-td> </div>
<vn-td class="expendable"> <div>
{{::log.changedModel}} <span translate class="label">Name</span><span class="label">: </span>
</vn-td> <span translate class="value">{{::log.changedModelValue | dashIfEmpty}}</span>
<vn-td translate class="expendable"> </div>
{{::$ctrl.actionsText[log.action]}} </div>
</vn-td> </vn-td>
<vn-td class="expendable"> <vn-td class="expendable">
{{::log.changedModelValue}} <span
</vn-td> ng-class="{'link': log.user.worker.id, 'value': !log.user.worker.id}"
<vn-td class="before"> ng-click="$ctrl.showWorkerDescriptor($event, log.user.worker.id)"
<vn-one ng-repeat="old in log.oldProperties"> translate>{{::log.user.name | dashIfEmpty}}
<div> </span>
<span translate class="label">{{::old.key}}</span><span class="label">: </span> </vn-td>
<span translate class="value">{{::old.value}}</span> <vn-td class="expendable">
</div> {{::log.changedModel}}
</vn-one> </vn-td>
</vn-td> <vn-td translate class="expendable">
<vn-td class="after"> {{::$ctrl.actionsText[log.action]}}
<vn-one </vn-td>
ng-repeat="new in log.newProperties" <vn-td class="expendable">
ng-if="!log.description" {{::log.changedModelValue}}
id="newInstance"> </vn-td>
<div> <vn-td class="before">
<span translate class="label">{{::new.key}}</span><span class="label">: </span> <vn-one ng-repeat="old in log.oldProperties">
<span translate class="value">{{::new.value}}</span> <div>
</div> <span translate class="label">{{::old.key}}</span><span class="label">: </span>
</vn-one> <span translate class="value">{{::old.value}}</span>
<vn-one </div>
ng-if="!log.newProperties" </vn-one>
id="description"> </vn-td>
<div> <vn-td class="after">
<span>{{log.description}}</span> <vn-one
</div> ng-repeat="new in log.newProperties"
</vn-one> ng-if="!log.description"
</vn-td> id="newInstance">
</vn-tr> <div>
</vn-tbody> <span translate class="label">{{::new.key}}</span><span class="label">: </span>
</vn-table> <span translate class="value">{{::new.value}}</span>
</vn-vertical> </div>
</vn-one>
<vn-one
ng-if="!log.newProperties"
id="description">
<div>
<span>{{log.description}}</span>
</div>
</vn-one>
</vn-td>
</vn-tr>
</vn-tbody>
</vn-table>
<vn-pagination model="model"></vn-pagination> <vn-pagination model="model"></vn-pagination>
</vn-card> </vn-card>
</vn-vertical> </div>
<vn-worker-descriptor-popover <vn-worker-descriptor-popover
vn-id="workerDescriptor" vn-id="workerDescriptor"
worker-fk="$ctrl.selectedWorker"> worker-fk="$ctrl.selectedWorker">