Added functionality to autocomplete the inputs
This commit is contained in:
parent
1adaeca615
commit
1c6bddbfb6
|
@ -0,0 +1,36 @@
|
||||||
|
module.exports = Self => {
|
||||||
|
Self.remoteMethod('getTravelData', {
|
||||||
|
description: 'Returns the days of travel duration',
|
||||||
|
accessType: 'READ',
|
||||||
|
accepts: [{
|
||||||
|
arg: 'agencyModeFk',
|
||||||
|
type: 'number',
|
||||||
|
required: true
|
||||||
|
}],
|
||||||
|
returns: {
|
||||||
|
type: 'number',
|
||||||
|
root: true
|
||||||
|
},
|
||||||
|
http: {
|
||||||
|
path: `/getTravelData`,
|
||||||
|
verb: 'GET'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Self.getTravelData = async agencyModeFk => {
|
||||||
|
const query = `
|
||||||
|
SELECT t.warehouseInFk as warehouseIn,
|
||||||
|
t.warehouseOutFk as warehouseOut,
|
||||||
|
dayDuration
|
||||||
|
FROM travel t
|
||||||
|
JOIN (
|
||||||
|
SELECT ROUND(AVG(DATEDIFF(landed, shipped))) as dayDuration
|
||||||
|
FROM travel
|
||||||
|
WHERE agencyFk = 4) AS t2
|
||||||
|
WHERE t.agencyFk = 4
|
||||||
|
ORDER BY t.id DESC LIMIT 1;`;
|
||||||
|
|
||||||
|
const [result] = await Self.rawSql(query, [agencyModeFk, agencyModeFk]);
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
};
|
|
@ -1,44 +0,0 @@
|
||||||
|
|
||||||
const ParameterizedSQL = require('loopback-connector').ParameterizedSQL;
|
|
||||||
module.exports = Self => {
|
|
||||||
Self.remoteMethod('getTravelDaysDuration', {
|
|
||||||
description: 'Return the total days of travel',
|
|
||||||
accessType: 'READ',
|
|
||||||
accepts: {
|
|
||||||
arg: 'id',
|
|
||||||
type: 'number',
|
|
||||||
required: true,
|
|
||||||
description: 'The travel id',
|
|
||||||
http: {source: 'path'}
|
|
||||||
},
|
|
||||||
returns: {
|
|
||||||
type: 'number',
|
|
||||||
root: true
|
|
||||||
},
|
|
||||||
http: {
|
|
||||||
path: `/:id/getTravelDaysDuration`,
|
|
||||||
verb: 'GET'
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
Self.getTravelDaysDuration = async id => {
|
|
||||||
let stmt;
|
|
||||||
|
|
||||||
stmt = new ParameterizedSQL(`
|
|
||||||
SELECT
|
|
||||||
ROUND(
|
|
||||||
AVG(
|
|
||||||
DATEDIFF(landed , shipped)
|
|
||||||
)
|
|
||||||
)
|
|
||||||
FROM travel
|
|
||||||
WHERE agencyFk = ?
|
|
||||||
GROUP BY agencyFK`, [
|
|
||||||
id
|
|
||||||
]);
|
|
||||||
|
|
||||||
let result = await Self.rawStmt(stmt);
|
|
||||||
|
|
||||||
return result;
|
|
||||||
};
|
|
||||||
};
|
|
|
@ -8,6 +8,7 @@ module.exports = Self => {
|
||||||
require('../methods/travel/deleteThermograph')(Self);
|
require('../methods/travel/deleteThermograph')(Self);
|
||||||
require('../methods/travel/updateThermograph')(Self);
|
require('../methods/travel/updateThermograph')(Self);
|
||||||
require('../methods/travel/extraCommunityFilter')(Self);
|
require('../methods/travel/extraCommunityFilter')(Self);
|
||||||
|
require('../methods/travel/getTravelData')(Self);
|
||||||
require('../methods/travel/cloneWithEntries')(Self);
|
require('../methods/travel/cloneWithEntries')(Self);
|
||||||
|
|
||||||
Self.rewriteDbError(function(err) {
|
Self.rewriteDbError(function(err) {
|
||||||
|
|
|
@ -20,7 +20,9 @@
|
||||||
</vn-horizontal>
|
</vn-horizontal>
|
||||||
<vn-horizontal>
|
<vn-horizontal>
|
||||||
<vn-date-picker
|
<vn-date-picker
|
||||||
|
on-change="$ctrl.onShippedChange(value)"
|
||||||
label="Shipped"
|
label="Shipped"
|
||||||
|
id="dateShipped"
|
||||||
ng-model="$ctrl.travel.shipped">
|
ng-model="$ctrl.travel.shipped">
|
||||||
</vn-date-picker>
|
</vn-date-picker>
|
||||||
<vn-date-picker
|
<vn-date-picker
|
||||||
|
|
|
@ -7,6 +7,30 @@ class Controller extends Section {
|
||||||
this.travel = JSON.parse(this.$params.q);
|
this.travel = JSON.parse(this.$params.q);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onShippedChange(value) {
|
||||||
|
const hasFilledProperties = this.travel.landed || this.travel.warehouseInFk || this.travel.warehouseOutFk;
|
||||||
|
|
||||||
|
if (!this.travel.agencyModeFk || hasFilledProperties)
|
||||||
|
return;
|
||||||
|
|
||||||
|
const query = `travels/getTravelData`;
|
||||||
|
const params = {
|
||||||
|
agencyModeFk: this.travel.agencyModeFk
|
||||||
|
};
|
||||||
|
this.$http.get(query, {params}).then(res => {
|
||||||
|
const landed = new Date(value);
|
||||||
|
const warehouseIn = res.data.warehouseIn;
|
||||||
|
const warehouseOut = res.data.warehouseOut;
|
||||||
|
|
||||||
|
const futureDate = landed.getDate() + res.data.dayDuration;
|
||||||
|
landed.setDate(futureDate);
|
||||||
|
|
||||||
|
this.travel.landed = landed;
|
||||||
|
this.travel.warehouseInFk = warehouseIn;
|
||||||
|
this.travel.warehouseOutFk = warehouseOut;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
onSubmit() {
|
onSubmit() {
|
||||||
return this.$.watcher.submit().then(
|
return this.$.watcher.submit().then(
|
||||||
res => this.$state.go('travel.card.basicData', {id: res.data.id})
|
res => this.$state.go('travel.card.basicData', {id: res.data.id})
|
||||||
|
|
|
@ -5,10 +5,12 @@ describe('Travel Component vnTravelCreate', () => {
|
||||||
let $scope;
|
let $scope;
|
||||||
let $state;
|
let $state;
|
||||||
let controller;
|
let controller;
|
||||||
|
let $httpBackend;
|
||||||
|
|
||||||
beforeEach(ngModule('travel'));
|
beforeEach(ngModule('travel'));
|
||||||
|
|
||||||
beforeEach(inject(($componentController, $rootScope, _$state_) => {
|
beforeEach(inject(($componentController, $rootScope, _$state_, _$httpBackend_) => {
|
||||||
|
$httpBackend = _$httpBackend_;
|
||||||
$scope = $rootScope.$new();
|
$scope = $rootScope.$new();
|
||||||
$state = _$state_;
|
$state = _$state_;
|
||||||
$scope.watcher = watcher;
|
$scope.watcher = watcher;
|
||||||
|
@ -38,4 +40,39 @@ describe('Travel Component vnTravelCreate', () => {
|
||||||
expect(controller.travel).toEqual(json);
|
expect(controller.travel).toEqual(json);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
fdescribe('onShippedChange()', () => {
|
||||||
|
it(`should do nothing if there's no agencyMode or the travel has filled properties.`, () => {
|
||||||
|
controller.agencyModeFk = {};
|
||||||
|
controller.landed = {landed: 'January 30,2021, 00:00:00'};
|
||||||
|
controller.warehouseInFk = {warehouseInFk: 4};
|
||||||
|
controller.warehouseOutFk = {warehouseOutFk: 4};
|
||||||
|
|
||||||
|
const landed = {landed: 'January 30,2021, 00:00:00'};
|
||||||
|
const warehouseIn = {warehouseInFk: 4};
|
||||||
|
const warehouseOut = {warehouseOutFk: 4};
|
||||||
|
const agencyModeFk = {};
|
||||||
|
|
||||||
|
expect(controller.agencyModeFk).toEqual(agencyModeFk);
|
||||||
|
expect(controller.landed).toEqual(landed);
|
||||||
|
expect(controller.warehouseInFk).toEqual(warehouseIn);
|
||||||
|
expect(controller.warehouseOutFk).toEqual(warehouseOut);
|
||||||
|
});
|
||||||
|
|
||||||
|
it(`should do fill the fields when it's selected a date and agency.`, () => {
|
||||||
|
controller.travel = {
|
||||||
|
agencyModeFk: 4,
|
||||||
|
landed: 'January 30,2021, 00:00:00',
|
||||||
|
warehouseInFk: 4,
|
||||||
|
warehouseOutFk: 4
|
||||||
|
};
|
||||||
|
const params = {agencyModeFk: 4};
|
||||||
|
|
||||||
|
$httpBackend.expectGET(`travels/getTravelData`, params).respond({agencyModeFk: 4});
|
||||||
|
controller.onShippedChange();
|
||||||
|
// $httpBackend.flush();
|
||||||
|
|
||||||
|
expect(controller.travel.agencyModeFk).toEqual(params.agencyModeFk);
|
||||||
|
});
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
Loading…
Reference in New Issue