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.
- package/for-client/my-tables.js +29 -3
- package/lib/backend-plus.d.ts +2 -0
- package/lib/procedures-table.js +18 -6
- package/package.json +5 -5
package/for-client/my-tables.js
CHANGED
|
@@ -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
|
|
607
|
-
|
|
608
|
-
|
|
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(){
|
package/lib/backend-plus.d.ts
CHANGED
|
@@ -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;
|
package/lib/procedures-table.js
CHANGED
|
@@ -209,12 +209,15 @@ ProcedureTables = [
|
|
|
209
209
|
}
|
|
210
210
|
var fieldNames=updateTarget.fieldNames;
|
|
211
211
|
var values=updateTarget.values;
|
|
212
|
-
var
|
|
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())
|
|
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 =
|
|
256
|
-
'
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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",
|