applay-utils 1.2.8 → 1.2.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/package.json +1 -1
  2. package/utils/mdb.js +107 -102
  3. package/utils/tools.js +48 -1
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "applay-utils",
3
- "version": "1.2.8",
3
+ "version": "1.2.11",
4
4
  "description": "Utilitary tools for Applay applications",
5
5
  "scripts": {
6
6
  "test": "echo \"Error: no test specified\" && exit 1"
package/utils/mdb.js CHANGED
@@ -2,166 +2,171 @@ var MongoBase = require('mongodb');
2
2
  var ObjectId = require('mongodb').ObjectId;
3
3
 
4
4
  var MDB = {
5
- status:{},
6
- clients:{}
5
+ status: {},
6
+ clients: {}
7
7
  }
8
8
 
9
- var connect= (alias,url,callback)=>{
10
- console.log('Conectando..',alias,' - url:',url);
11
- if(MDB.status[alias]){return callback(MDB.clients[alias]);}
12
- MongoBase.MongoClient.connect(url,{useUnifiedTopology: true}, (err, client)=>{
13
- if(err){return console.log('ERRO MDB -- TRACKING -- ',err);}
14
- MDB.status[alias]=true;
15
- MDB.clients[alias]=client;
16
- process.on('SIGTERM', internalStop(alias,true,'SIGTERM'));
17
- process.on('SIGINT' , internalStop(alias,true,'SIGINT'));
18
- process.on('uncaughtException', internalStop(alias,true,'uncaughtException'));
19
- console.log('Conectado com ',alias);
9
+ var connect = (alias, url, callback) => {
10
+ console.log('Conectando..', alias, ' - url:', url);
11
+ if (MDB.status[alias]) { return callback(MDB.clients[alias]); }
12
+ MongoBase.MongoClient.connect(url, { useUnifiedTopology: true }, (err, client) => {
13
+ if (err) { return console.log('ERRO MDB -- TRACKING -- ', err); }
14
+ MDB.status[alias] = true;
15
+ MDB.clients[alias] = client;
16
+ process.on('SIGTERM', internalStop(alias, true, 'SIGTERM'));
17
+ process.on('SIGINT', internalStop(alias, true, 'SIGINT'));
18
+ process.on('uncaughtException', internalStop(alias, true, 'uncaughtException'));
19
+ console.log('Conectado com ', alias);
20
20
  callback(client)
21
21
  });
22
22
  }
23
23
 
24
- var connectAsync = (alias, url) => new Promise(resolve => connect(alias,url,(client)=>resolve(client)));
24
+ var connectAsync = (alias, url) => new Promise(resolve => connect(alias, url, (client) => resolve(client)));
25
25
 
26
- var internalStop = (alias,finish)=>{
27
- return (code)=>{
26
+ var internalStop = (alias, finish) => {
27
+ return (code) => {
28
28
  console.log('Desconnecting...');
29
- if(!MDB.status[alias]){console.log('Mongodb OFF');return}
29
+ if (!MDB.status[alias]) { console.log('Mongodb OFF'); return }
30
30
  MDB.status[alias] = false;
31
31
  MDB.clients[alias].close();
32
- if(finish&&MDB.stopCustom){
33
- MDB.stop(alias,()=>{
34
- console.log('Mongodb',alias,'OFF');
32
+ if (finish && MDB.stopCustom) {
33
+ MDB.stop(alias, () => {
34
+ console.log('Mongodb', alias, 'OFF');
35
35
  process.exit();
36
36
  });
37
37
  }
38
- if(finish&&!MDB.stopCustom){
39
- console.log('Mongodb',alias,'OFF');
38
+ if (finish && !MDB.stopCustom) {
39
+ console.log('Mongodb', alias, 'OFF');
40
40
  process.exit();
41
41
  }
42
- if(!finish){
43
- console.log('Mongodb',alias,'OFF');
42
+ if (!finish) {
43
+ console.log('Mongodb', alias, 'OFF');
44
44
  }
45
45
  }
46
-
47
- }
48
-
49
46
 
50
- var stopCustom = (customCallback)=>{
51
- MDB.stopCustom=true;
52
- MDB.stop = customCallback;//(alias,callback)=>{}
53
47
  }
54
48
 
55
49
 
50
+ var stopCustom = (customCallback) => {
51
+ MDB.stopCustom = true;
52
+ MDB.stop = customCallback;//(alias,callback)=>{}
53
+ }
56
54
 
57
- var genOpsUpdate = (data,params) =>{
55
+ var genOpsUpdate = (data, params) => {
58
56
  var lista = [];
59
- for(var item of data){
60
- let filter = item.filter;
61
- let update = item.update;
62
- if(params && params.type=='array'){
63
- let objArray = {}
64
- let sub = params.rule.split('.');
65
- objArray[params.rule]=item[sub[1]];
66
- filter = Object.assign(objArray,params.filter)
67
- update={};
68
- update[sub[0]+'.$']=item;
69
- }
70
- let objLista = {}
71
- objLista[ 'updateOne']={
72
- filter:filter,
73
- update:{$set:update}
74
- }
75
- lista.push(objLista)
57
+ for (var item of data) {
58
+ let filter = item.filter;
59
+ let update = item.update;
60
+ if (params && params.type == 'array') {
61
+ let objArray = {}
62
+ let sub = params.rule.split('.');
63
+ objArray[params.rule] = item[sub[1]];
64
+ filter = Object.assign(objArray, params.filter)
65
+ update = {};
66
+ update[sub[0] + '.$'] = item;
67
+ }
68
+ let objLista = {}
69
+ objLista['updateOne'] = {
70
+ filter: filter,
71
+ update: { $set: update }
72
+ }
73
+ lista.push(objLista)
76
74
  }
77
75
  return lista
78
76
  }
79
77
 
80
-
81
- function genOpsFull(data,tipo) {
78
+ function genOpsFull(data, tipo) {
82
79
  var lista = [];
83
- for(var x1 in data){
80
+ for (var x1 in data) {
84
81
  var objLista = {};
85
- if(typeof data[x1] != 'object'){continue;}
86
- if(tipo=='save'&&!data[x1]._id){objLista['insertOne']={document:data[x1]};}
87
- if(tipo=='save'&&data[x1]._id&&data[x1]._id.length==24){
88
- data[x1]._id=new ObjectID(data[x1]._id+'');
89
- objLista['replaceOne']={
90
- filter:{"_id" :data[x1]._id},
91
- replacement:data[x1],
92
- upsert:true
82
+ if (typeof data[x1] != 'object') { continue; }
83
+ if (tipo == 'save' && !data[x1]._id) {
84
+ objLista['insertOne'] = { document: data[x1] };
85
+ }
86
+ if (tipo == 'save' && data[x1]._id && (data[x1]._id + '').length == 24) {
87
+ data[x1]._id = new ObjectID(data[x1]._id + '');
88
+
89
+ objLista['replaceOne'] = {
90
+ filter: { "_id": data[x1]._id },
91
+ replacement: data[x1],
92
+ upsert: true
93
93
  }
94
94
  }
95
- if(tipo=='reg'){
95
+ if (tipo == 'reg' || tipo == 'regs') {
96
96
  var copyObj = Object.assign({}, data[x1]);
97
- copyObj.regId=''
98
- if(data[x1]._id){copyObj._reg.objId = data[x1]._id+'';}
97
+ copyObj.regId = ''
98
+
99
+ if (data[x1]._id) { copyObj._reg.objId = data[x1]._id + ''; }
100
+
99
101
  delete copyObj._id;
100
- objLista['insertOne']={document:copyObj};
102
+
103
+ objLista['insertOne'] = { document: copyObj };
101
104
  }
105
+
102
106
  lista.push(objLista);
103
107
  }
104
108
  return lista;
105
109
  }
106
110
 
107
- function genOps(data,tipo){
111
+
112
+ function genOps(data, tipo) {
108
113
  var lista = [];
109
114
  var regs = [];
110
- for(var x1 in data){
115
+ for (var x1 in data) {
111
116
  var objLista = {};
112
- if(typeof data[x1] != 'object'){continue;}
113
- if(tipo=='insert'&&data[x1]._id){continue;}
114
- if(tipo=='replace'&&!data[x1]._id){continue;}
115
- if(tipo=='insert'){objLista['insertOne']={document:data[x1]};}
116
- if(tipo=='replace'){
117
- data[x1]._id=new ObjectID(data[x1]._id+'');
118
- objLista['replaceOne']={
119
- filter:{"_id" :data[x1]._id},
120
- replacement:data[x1],
121
- upsert:true
117
+ if (typeof data[x1] != 'object') { continue; }
118
+ if (tipo == 'insert' && data[x1]._id) { continue; }
119
+ if (tipo == 'replace' && !data[x1]._id) { continue; }
120
+ if (tipo == 'insert') { objLista['insertOne'] = { document: data[x1] }; }
121
+ if (tipo == 'replace') {
122
+ data[x1]._id = new ObjectID(data[x1]._id + '');
123
+ objLista['replaceOne'] = {
124
+ filter: { "_id": data[x1]._id },
125
+ replacement: data[x1],
126
+ upsert: true
122
127
  }
123
128
  }
124
- if(tipo=='regs'){
129
+ if (tipo == 'regs') {
125
130
  var copyObj = Object.assign({}, data[x1]);;
126
- copyObj.regId=''
127
- if(data[x1]._id){copyObj._reg.objId = data[x1]._id+'';}
131
+ copyObj.regId = ''
132
+ if (data[x1]._id) { copyObj._reg.objId = data[x1]._id + ''; }
128
133
  delete copyObj._id;
129
- objLista['insertOne']={document:copyObj};
134
+ objLista['insertOne'] = { document: copyObj };
130
135
  }
131
136
  lista.push(objLista);
132
137
  }
133
138
  return lista;
134
139
  }
135
140
 
136
- function build(data,model,user) {
137
- var tipo = model.slice(0,3);
141
+ function build(data, model, user) {
142
+ var tipo = model.slice(0, 3);
138
143
  var time = new Date();
139
- var letra = model.slice(3,4);
140
- if(cfg.db.types.indexOf(tipo)<0){return {status:false,msg:'Tipo de Collection não definida'};}
141
- if('ABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(letra)<0){return {status:false,msg:'Tipo de Collection não definida'};}
142
- for(var x1 in data){
144
+ var letra = model.slice(3, 4);
145
+ // if(cfg.db.types.indexOf(tipo)<0){return {status:false,msg:'Tipo de Collection não definida'};}
146
+ if ('ABCDEFGHIJKLMNOPQRSTUVWXYZ'.indexOf(letra) < 0) { return { status: false, msg: 'Tipo de Collection não definida' }; }
147
+ for (var x1 in data) {
143
148
  // console.log(x1,data[x1]);
144
149
  var create = time.getTime();
145
150
  var createtext = time.toLocaleString('pt-BR');
146
- if(data[x1]._db){
147
- create = data[x1]._db.create*1;
148
- createtext = data[x1]._db.createtext+'';
151
+ if (data[x1]._db) {
152
+ create = data[x1]._db.create * 1;
153
+ createtext = data[x1]._db.createtext + '';
149
154
  }
150
- data[x1]._db={
151
- tipo:tipo,
152
- time:time.getTime(),
153
- timetext:time.toLocaleString('pt-BR').split(' ')[0],
154
- create:create*1,
155
- createtext:createtext+'',
156
- userId:user._id+'',
157
- username:user.username
155
+ data[x1]._db = {
156
+ tipo: tipo,
157
+ time: time.getTime(),
158
+ timetext: time.toLocaleString('pt-BR').split(' ')[0],
159
+ create: create * 1,
160
+ createtext: createtext + '',
161
+ userId: user._id + '',
162
+ username: user.username
158
163
  };
159
- var objId = data[x1]._reg&&data[x1]._reg.objId?data[x1]._reg.objId:'';
160
- data[x1]._reg={
161
- regId:time.getTime()+user._id+'',
162
- collection:model,
163
- objId:objId,
164
- reg:'reg'+model.slice(0,1).toUpperCase()+model.slice(1)
164
+ var objId = data[x1]._reg && data[x1]._reg.objId ? data[x1]._reg.objId : '';
165
+ data[x1]._reg = {
166
+ regId: time.getTime() + user._id + '',
167
+ collection: model,
168
+ objId: objId,
169
+ reg: 'reg' + model.slice(0, 1).toUpperCase() + model.slice(1)
165
170
  };
166
171
  }
167
172
  return data;
package/utils/tools.js CHANGED
@@ -39,7 +39,54 @@ var tools = {
39
39
  }
40
40
  client.end()
41
41
  })
42
- })
42
+ }),
43
+ /**
44
+ * @param {number} milliseconds Valor em milisegundos para ser convertido
45
+ * @returns Retorna uma string no formato **0h 0m 0s** ou retorna **--** em caso de erro
46
+ */
47
+ 'findDistance': (posA, posB) => {
48
+ let rad;
49
+ function deg2rad(deg) {
50
+ rad = deg * Math.PI / 180; // radians = degrees * pi/180
51
+ return rad;
52
+ }
53
+ function round(x) {
54
+ return Math.round(x * 1000) / 1000;
55
+ }
56
+ var Rm = 3961; // mean radius of the earth (miles) at 39 degrees from the equator
57
+ var Rk = 6373; // mean radius of the earth (km) at 39 degrees from the equator
58
+ var t1, n1, t2, n2, lat1, lon1, lat2, lon2, dlat, dlon, a, c, dm, dk, mi, km;
59
+
60
+ // get values for lat1, lon1, lat2, and lon2
61
+ t1 = posA.lat;
62
+ n1 = posA.lng;
63
+ t2 = posB.lat;
64
+ n2 = posB.lng;
65
+
66
+ // convert coordinates to radians
67
+ lat1 = deg2rad(t1);
68
+ lon1 = deg2rad(n1);
69
+ lat2 = deg2rad(t2);
70
+ lon2 = deg2rad(n2);
71
+
72
+ // find the differences between the coordinates
73
+ dlat = lat2 - lat1;
74
+ dlon = lon2 - lon1;
75
+
76
+ // here's the heavy lifting
77
+ a = Math.pow(Math.sin(dlat / 2), 2) + Math.cos(lat1) * Math.cos(lat2) * Math.pow(Math.sin(dlon / 2), 2);
78
+ c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a)); // great circle distance in radians
79
+ dm = c * Rm; // great circle distance in miles
80
+ dk = c * Rk; // great circle distance in km
81
+
82
+ // round the results down to the nearest 1/1000
83
+ mi = round(dm);
84
+ km = round(dk);
85
+
86
+ // display the result
87
+ // frm.mi.value = mi;
88
+ return km;
89
+ }
43
90
  }
44
91
 
45
92
  module.exports = tools;