dev #1731
|
@ -1,13 +1,16 @@
|
||||||
<vn-autocomplete
|
<vn-autocomplete
|
||||||
vn-one
|
vn-one
|
||||||
url="Workers/activeWithInheritedRole"
|
url="Workers/search"
|
||||||
ng-model="$ctrl.workerFk"
|
ng-model="$ctrl.workerFk"
|
||||||
search-function="{firstName: $search}"
|
search-function="{or: [
|
||||||
value-field="id"
|
{name: $search},
|
||||||
|
{nickname: {like: '%'+ $search +'%'}},
|
||||||
|
{code: {like: $search +'%'}}
|
||||||
|
]}"
|
||||||
label="Worker">
|
label="Worker">
|
||||||
<tpl-item>
|
<tpl-item>
|
||||||
<div>
|
<div>
|
||||||
{{firstName}} {{lastName}}
|
{{name}}
|
||||||
</div>
|
</div>
|
||||||
<div class="text-caption text-secondary">
|
<div class="text-caption text-secondary">
|
||||||
{{nickname}}, {{code}}
|
{{nickname}}, {{code}}
|
||||||
|
|
|
@ -1,8 +1,5 @@
|
||||||
import ngModule from '../../module';
|
import ngModule from '../../module';
|
||||||
import Autocomplete from '../autocomplete';
|
import Autocomplete from '../autocomplete';
|
||||||
import assignProps from '../../lib/assign-props';
|
|
||||||
import {mergeWhere} from 'vn-loopback/util/filter';
|
|
||||||
import './style.scss';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Input with option selector.
|
* Input with option selector.
|
||||||
|
@ -20,26 +17,6 @@ export default class WorkerAutocomplete extends Autocomplete {
|
||||||
constructor($element, $, $compile, $transclude) {
|
constructor($element, $, $compile, $transclude) {
|
||||||
super($element, $, $compile, $transclude);
|
super($element, $, $compile, $transclude);
|
||||||
}
|
}
|
||||||
|
|
||||||
// $postLink() {
|
|
||||||
// super.$postLink();
|
|
||||||
// this.assignDropdownProps();
|
|
||||||
// this.showField = this.$.dropDown.showField;
|
|
||||||
// this.valueField = this.$.dropDown.valueField;
|
|
||||||
// this.refreshSelection();
|
|
||||||
// }
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * @type {any} The autocomplete value.
|
|
||||||
// */
|
|
||||||
// get field() {
|
|
||||||
// return super.field;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// set field(value) {
|
|
||||||
// super.field = value;
|
|
||||||
// this.refreshSelection();
|
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
WorkerAutocomplete.$inject = ['$element', '$scope', '$compile', '$transclude'];
|
WorkerAutocomplete.$inject = ['$element', '$scope', '$compile', '$transclude'];
|
||||||
|
|
||||||
|
|
|
@ -1,30 +0,0 @@
|
||||||
@import "effects";
|
|
||||||
|
|
||||||
.vn-worker-autocomplete {
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
& > .container {
|
|
||||||
cursor: pointer;
|
|
||||||
|
|
||||||
& > .infix > .control {
|
|
||||||
overflow: hidden;
|
|
||||||
|
|
||||||
& > input {
|
|
||||||
cursor: pointer;
|
|
||||||
text-overflow: ellipsis;
|
|
||||||
white-space: nowrap;
|
|
||||||
overflow: hidden;
|
|
||||||
text-align: left;
|
|
||||||
padding-left: 0;
|
|
||||||
padding-right: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
& > .icons.pre {
|
|
||||||
min-width: 22px
|
|
||||||
}
|
|
||||||
}
|
|
||||||
&.readonly > .container > .icons.post {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -0,0 +1,61 @@
|
||||||
|
module.exports = Self => {
|
||||||
|
Self.remoteMethod('search', {
|
||||||
|
description: 'Returns an array of search from an specified worker',
|
||||||
|
accepts: [{
|
||||||
|
arg: 'filter',
|
||||||
|
type: 'Object',
|
||||||
|
description: 'Filter defining where and paginated data',
|
||||||
|
required: true
|
||||||
|
}],
|
||||||
|
returns: {
|
||||||
|
type: ['object'],
|
||||||
|
root: true
|
||||||
|
},
|
||||||
|
http: {
|
||||||
|
path: `/search`,
|
||||||
|
verb: 'GET'
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
Self.search = async filter => {
|
||||||
|
const models = Self.app.models;
|
||||||
|
|
||||||
|
delete filter.order;
|
||||||
|
delete filter.fields;
|
||||||
|
const users = await models.VnUser.find(filter);
|
||||||
|
|
||||||
|
if (filter.where) {
|
||||||
|
const indexToDelete = 2;
|
||||||
|
const filterByCode = filter.where.or.splice(indexToDelete, 1)[0];
|
||||||
|
|
||||||
|
const ids = users.map(user => parseInt(user.id));
|
||||||
|
filter.where.or = [
|
||||||
|
{id: {inq: ids}},
|
||||||
|
filterByCode
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
filter.include = {
|
||||||
|
relation: 'user',
|
||||||
|
scope: {
|
||||||
|
fields: ['name', 'nickname']
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
const workers = await models.Worker.find(filter);
|
||||||
|
|
||||||
|
const result = workers.map(worker => {
|
||||||
|
return {
|
||||||
|
id: worker.id,
|
||||||
|
code: worker.code,
|
||||||
|
name: worker.user().name,
|
||||||
|
nickname: worker.user().nickname
|
||||||
|
};
|
||||||
|
});
|
||||||
|
result.sort((a, b) => {
|
||||||
|
return a.name.localeCompare(b.name);
|
||||||
|
});
|
||||||
|
|
||||||
|
return result;
|
||||||
|
};
|
||||||
|
};
|
|
@ -16,6 +16,7 @@ module.exports = Self => {
|
||||||
require('../methods/worker/new')(Self);
|
require('../methods/worker/new')(Self);
|
||||||
require('../methods/worker/deallocatePDA')(Self);
|
require('../methods/worker/deallocatePDA')(Self);
|
||||||
require('../methods/worker/allocatePDA')(Self);
|
require('../methods/worker/allocatePDA')(Self);
|
||||||
|
require('../methods/worker/search')(Self);
|
||||||
|
|
||||||
Self.validatesUniquenessOf('locker', {
|
Self.validatesUniquenessOf('locker', {
|
||||||
message: 'This locker has already been assigned'
|
message: 'This locker has already been assigned'
|
||||||
|
|
Loading…
Reference in New Issue