backend-plus 1.17.0 → 1.17.1

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.
@@ -596,6 +596,7 @@ myOwn.tableGrid = function tableGrid(tableName, mainElement, opts){
596
596
  return row[fieldName]
597
597
  })
598
598
  };
599
+ var tick = Math.random();
599
600
  rows.forEach(function(row){
600
601
  var primaryKeyValuesForRow = getPrimaryKeyValues(primaryKey, row);
601
602
  var depot = grid.depots.find(function(depot){
@@ -603,16 +604,41 @@ myOwn.tableGrid = function tableGrid(tableName, mainElement, opts){
603
604
  return sameValue(JSON.stringify(primaryKeyValuesForRow),JSON.stringify(primaryKeyValuesForDepotRow))
604
605
  });
605
606
  //chequeo que exista depot por las dudas
606
- if(depot && !sameValue(JSON.stringify(row),JSON.stringify(depot.row))){
607
- //grid.retrieveRowAndRefresh(depot);
608
- grid.depotRefresh(depot,{updatedRow:row, sendedForUpdate:{}},{noDispatchEvents:true});
607
+ if (depot) {
608
+ if (!sameValue(JSON.stringify(row),JSON.stringify(depot.row))) {
609
+ //grid.retrieveRowAndRefresh(depot);
610
+ grid.depotRefresh(depot,{updatedRow:row, sendedForUpdate:{}},{noDispatchEvents:true});
611
+ }
612
+ depot.tick = tick
613
+ } else if (!depot) {
614
+ var depot = grid.createDepotFromRow(row);
615
+ grid.depots.push(depot);
616
+ grid.createRowElements(-1, depot);
617
+ grid.updateRowData(depot);
618
+ depot.tick = tick
609
619
  }
610
620
  })
621
+ var i = 0;
622
+ while (i < grid.depots.length) {
623
+ var depot = grid.depots[i];
624
+ if (depot.tick != tick) {
625
+ depot.manager.displayAsDeleted(depot);
626
+ } else {
627
+ i++;
628
+ }
629
+ }
611
630
  })
612
631
  }
613
632
  if(grid.def.refrescable){
614
633
  window.currentAutofrefresh = setInterval(grid.refreshAllRows,8000);
615
634
  }
635
+ if (grid.def.selfRefresh) {
636
+ var refresh = function refresh(){
637
+ grid.refreshAllRows();
638
+ }
639
+ grid.dom.main.addEventListener('deletedRowOk', refresh);
640
+ grid.dom.main.addEventListener('savedRowOk', refresh);
641
+ }
616
642
  });
617
643
  grid.waitForReady = function waitForReady(fun){
618
644
  return preparing.then(function(){
@@ -307,6 +307,8 @@ export type TableDefinition = EditableDbDefinition & {
307
307
  exportJsonFieldAsColumns?:string
308
308
  importCuidado?:boolean
309
309
  specialValidator?:string
310
+ saveAfter?:boolean
311
+ selfRefresh?:boolean
310
312
  }
311
313
  export interface DetailTable { table?: string, fields: FieldsForConnectDetailTable, abr: string, label?: string, refreshParent?:boolean, refreshFromParent?:boolean, wScreen?:string, condition?:string }
312
314
  export type TableDefinitionFunction = (context: ContextForDump, opts?:any) => TableDefinition;
@@ -209,12 +209,15 @@ ProcedureTables = [
209
209
  }
210
210
  var fieldNames=updateTarget.fieldNames;
211
211
  var values=updateTarget.values;
212
- var updates=likeAr(otherUpdates.tables).map(function(data,name){
212
+ var updatesOthers=likeAr(otherUpdates.tables).map(function(data,name){
213
213
  var tableDef=be.tableStructures[name](context);
214
214
  return {defTable:changing(tableDef, ((mainDefTable.sql.otherTableDefs||{})[name])||{}), ...data};
215
215
  }).array().concat(likeAr(otherUpdates.tableNames).map(function(data,name){
216
216
  return {defTable:mainDefTable.otherTableDefs[name], ...data};
217
- }).array()).concat(plainUpdate.values.length?[changing({defTable:mainDefTable,main:true},plainUpdate)]:[]);
217
+ }).array());
218
+ var updates = updatesOthers.filter(u => !u.defTable.saveAfter)
219
+ .concat(plainUpdate.values.length?[changing({defTable:mainDefTable,main:true},plainUpdate)]:[])
220
+ .concat(updatesOthers.filter(u => u.defTable.saveAfter));
218
221
  var globalPrimaryKeyValue={}
219
222
  mainDefTable.primaryKey.forEach(function(name,i){
220
223
  globalPrimaryKeyValue[name]=parameters.primaryKeyValues[i];
@@ -249,13 +252,18 @@ ProcedureTables = [
249
252
  var primaryKeyValuesForUpdate=[]
250
253
  var primaryKeyValueObject={};
251
254
  defTable.primaryKey.forEach(function(name,i){
252
- var value = main?parameters.primaryKeyValues[i]:coalesce(parameters.newRow[name],parameters.oldRow[name]);
255
+ var value = main?parameters.primaryKeyValues[i]:coalesce(parameters.newRow[name],parameters.oldRow[name],undefined);
253
256
  if(value===undefined){
254
257
  var defField = defTable.field[name];
255
- value = 'defaultValue' in defField?defField.defaultValue:(
256
- 'specialDefaultValue' in defField?new Error("my.specialDefaultValue[defField.specialDefaultValue](name, {row:{}}, {row:previousRow})"):null
257
- )
258
+ value = defTable.prefilledField && name in defTable.prefilledField ? defTable.prefilledField[name] : (
259
+ 'defaultValue' in defField?defField.defaultValue:(
260
+ 'specialDefaultValue' in defField?new Error("my.specialDefaultValue[defField.specialDefaultValue](name, {row:{}}, {row:previousRow})"):undefined
261
+ ))
262
+ if(value===undefined){
263
+ value = mainResult?.row?.[name]
264
+ }
258
265
  }
266
+ value = value ?? null
259
267
  primaryKeyValues[i]=value;
260
268
  primaryKeyValueObject[name]=value;
261
269
  if(globalPrimaryKeyValue[name]!==undefined){
@@ -263,6 +271,10 @@ ProcedureTables = [
263
271
  }else{
264
272
  primaryKeyValuesForUpdate[i]=value;
265
273
  }
274
+ if(!fieldNames4Insert.includes(name) && value != null){
275
+ fieldNames4Insert.push(name);
276
+ values4Insert.push(value);
277
+ }
266
278
  });
267
279
  if(main){
268
280
  expectedMainPrimaryKeyValues=primaryKeyValues;
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "backend-plus",
3
3
  "description": "Backend for typed controls",
4
- "version": "1.17.0",
4
+ "version": "1.17.1",
5
5
  "author": "Codenautas <codenautas@googlegroups.com>",
6
6
  "license": "MIT",
7
7
  "repository": "codenautas/backend-plus",
@@ -56,7 +56,7 @@
56
56
  "multiparty": "^4.2.3",
57
57
  "nodemailer": "^6.9.1",
58
58
  "numeral": "^2.0.6",
59
- "pg-promise-strict": "^1.3.1",
59
+ "pg-promise-strict": "^1.3.2",
60
60
  "pikaday": "^1.8.2",
61
61
  "pug": "^3.0.2",
62
62
  "read-yaml-promise": "^1.0.2",
@@ -68,7 +68,7 @@
68
68
  "sql-tools": "^0.1.2",
69
69
  "stack-trace": "^0.0.10",
70
70
  "stylus": "0.59.0",
71
- "type-store": "^0.3.0",
71
+ "type-store": "^0.3.1",
72
72
  "typed-controls": "^0.11.0",
73
73
  "xlsx": "^0.18.5",
74
74
  "xlsx-style": "^0.8.13"
@@ -76,13 +76,13 @@
76
76
  "devDependencies": {
77
77
  "@types/big.js": "^6.1.6",
78
78
  "@types/expect.js": "~0.3.29",
79
- "@types/express": "^4.17.16",
79
+ "@types/express": "^4.17.17",
80
80
  "@types/express-useragent": "^1.0.2",
81
81
  "@types/fs-extra": "^11.0.1",
82
82
  "@types/js-yaml": "^4.0.5",
83
83
  "@types/mocha": "^10.0.1",
84
84
  "@types/multiparty": "~0.0.33",
85
- "@types/node": "^18.11.18",
85
+ "@types/node": "^18.13.0",
86
86
  "@types/nodemailer": "^6.4.7",
87
87
  "@types/numeral": "~2.0.2",
88
88
  "@types/session-file-store": "^1.2.2",