@jd-data-limited/easy-fm 2.0.2 → 2.0.4
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/package.json +1 -1
- package/src/index.js +24 -5
- package/src/index.ts +40 -13
- package/test.js +17 -14
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -1124,6 +1124,8 @@ export class Database extends EventEmitter {
|
|
|
1124
1124
|
}
|
|
1125
1125
|
login() {
|
|
1126
1126
|
return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () {
|
|
1127
|
+
// Reset cookies
|
|
1128
|
+
this.cookies = {};
|
|
1127
1129
|
try {
|
|
1128
1130
|
yield this.host.getMetadata();
|
|
1129
1131
|
}
|
|
@@ -1261,7 +1263,7 @@ export class Database extends EventEmitter {
|
|
|
1261
1263
|
}
|
|
1262
1264
|
export class Layout {
|
|
1263
1265
|
constructor(database, name) {
|
|
1264
|
-
this.records = new
|
|
1266
|
+
this.records = new LayoutRecordManager(this);
|
|
1265
1267
|
this.database = database;
|
|
1266
1268
|
this.name = name;
|
|
1267
1269
|
}
|
|
@@ -1323,7 +1325,7 @@ export class Layout {
|
|
|
1323
1325
|
});
|
|
1324
1326
|
}
|
|
1325
1327
|
}
|
|
1326
|
-
class
|
|
1328
|
+
class LayoutRecordManager {
|
|
1327
1329
|
constructor(layout) {
|
|
1328
1330
|
this.layout = layout;
|
|
1329
1331
|
}
|
|
@@ -1335,7 +1337,10 @@ class LayourRecordManager {
|
|
|
1335
1337
|
for (let _field of this.layout.metadata.fieldMetaData) {
|
|
1336
1338
|
fields[_field.name] = "";
|
|
1337
1339
|
}
|
|
1338
|
-
|
|
1340
|
+
let portals = {};
|
|
1341
|
+
for (let _portal of Object.keys(this.layout.metadata.portalMetaData))
|
|
1342
|
+
portals[_portal] = [];
|
|
1343
|
+
resolve(new LayoutRecord(this.layout, -1, 0, fields, portals));
|
|
1339
1344
|
}).catch(e => {
|
|
1340
1345
|
reject(e);
|
|
1341
1346
|
});
|
|
@@ -1461,7 +1466,8 @@ export class RecordBase extends EventEmitter {
|
|
|
1461
1466
|
delete data.modId;
|
|
1462
1467
|
if (this.recordId === -1) {
|
|
1463
1468
|
// This is a new LayoutRecord
|
|
1464
|
-
|
|
1469
|
+
for (let item of Object.keys(data))
|
|
1470
|
+
extraBody[item] = data[item];
|
|
1465
1471
|
this.layout.database.apiRequest(`${this.layout.endpoint}/records`, {
|
|
1466
1472
|
port: 443,
|
|
1467
1473
|
method: "POST",
|
|
@@ -1487,6 +1493,7 @@ export class RecordBase extends EventEmitter {
|
|
|
1487
1493
|
}
|
|
1488
1494
|
for (let item of Object.keys(data))
|
|
1489
1495
|
extraBody[item] = data[item];
|
|
1496
|
+
console.log(extraBody.portalData);
|
|
1490
1497
|
this.layout.database.apiRequest(this.endpoint, {
|
|
1491
1498
|
port: 443,
|
|
1492
1499
|
method: "PATCH",
|
|
@@ -1758,6 +1765,15 @@ export class Portal {
|
|
|
1758
1765
|
this.record = record;
|
|
1759
1766
|
this.name = name;
|
|
1760
1767
|
}
|
|
1768
|
+
create() {
|
|
1769
|
+
let fields = {};
|
|
1770
|
+
for (let _field of this.record.layout.metadata.portalMetaData[this.name]) {
|
|
1771
|
+
fields[_field.name] = "";
|
|
1772
|
+
}
|
|
1773
|
+
let record = new PortalRecord(this.record, this, -1, -1, fields);
|
|
1774
|
+
this.records.push(record);
|
|
1775
|
+
return record;
|
|
1776
|
+
}
|
|
1761
1777
|
}
|
|
1762
1778
|
export class PortalRecord extends RecordBase {
|
|
1763
1779
|
constructor(record, portal, recordId, modId = recordId, fieldData = {}) {
|
|
@@ -1775,13 +1791,16 @@ export class PortalRecord extends RecordBase {
|
|
|
1775
1791
|
toObject(fieldFilter) {
|
|
1776
1792
|
super.toObject();
|
|
1777
1793
|
let res = {
|
|
1778
|
-
recordId: this.recordId, modId: this.modId
|
|
1794
|
+
recordId: this.recordId === -1 ? undefined : this.recordId, modId: this.modId === -1 ? undefined : this.modId
|
|
1779
1795
|
};
|
|
1780
1796
|
for (let field of this.fields.filter(a => fieldFilter(a)))
|
|
1781
1797
|
res[field.id] = field.value;
|
|
1782
1798
|
// console.log(res)
|
|
1783
1799
|
return res;
|
|
1784
1800
|
}
|
|
1801
|
+
getField(field) {
|
|
1802
|
+
return this.fields.find(_field => _field.id === field) || this.fields.find(_field => _field.id === this.portal.name + "::" + field);
|
|
1803
|
+
}
|
|
1785
1804
|
}
|
|
1786
1805
|
export class RecordGetOperation {
|
|
1787
1806
|
constructor(layout) {
|
package/src/index.ts
CHANGED
|
@@ -1120,7 +1120,7 @@ interface portalDataObject {
|
|
|
1120
1120
|
[key: string]: recordObject
|
|
1121
1121
|
}
|
|
1122
1122
|
|
|
1123
|
-
interface
|
|
1123
|
+
interface FieldMetaData {
|
|
1124
1124
|
name: string,
|
|
1125
1125
|
type: string,
|
|
1126
1126
|
displayType: string,
|
|
@@ -1137,6 +1137,13 @@ interface fieldMetaData {
|
|
|
1137
1137
|
repetitionEnd: number
|
|
1138
1138
|
}
|
|
1139
1139
|
|
|
1140
|
+
interface LayoutMetaData {
|
|
1141
|
+
fieldMetaData: FieldMetaData[],
|
|
1142
|
+
portalMetaData?: {
|
|
1143
|
+
[key: string]: FieldMetaData[]
|
|
1144
|
+
}
|
|
1145
|
+
}
|
|
1146
|
+
|
|
1140
1147
|
interface FMHostMetadata {
|
|
1141
1148
|
productInfo: {
|
|
1142
1149
|
buildDate: Date,
|
|
@@ -1259,6 +1266,9 @@ export class Database extends EventEmitter {
|
|
|
1259
1266
|
|
|
1260
1267
|
login() {
|
|
1261
1268
|
return new Promise<string>(async (resolve, reject) => {
|
|
1269
|
+
// Reset cookies
|
|
1270
|
+
this.cookies = {}
|
|
1271
|
+
|
|
1262
1272
|
try {
|
|
1263
1273
|
await this.host.getMetadata()
|
|
1264
1274
|
} catch (e) {
|
|
@@ -1406,7 +1416,7 @@ export class Database extends EventEmitter {
|
|
|
1406
1416
|
|
|
1407
1417
|
export class Layout {
|
|
1408
1418
|
readonly database: Database;
|
|
1409
|
-
readonly records = new
|
|
1419
|
+
readonly records = new LayoutRecordManager(this)
|
|
1410
1420
|
protected name: string;
|
|
1411
1421
|
metadata: any;
|
|
1412
1422
|
|
|
@@ -1479,7 +1489,7 @@ export class Layout {
|
|
|
1479
1489
|
}
|
|
1480
1490
|
}
|
|
1481
1491
|
|
|
1482
|
-
class
|
|
1492
|
+
class LayoutRecordManager {
|
|
1483
1493
|
readonly layout: Layout
|
|
1484
1494
|
|
|
1485
1495
|
constructor(layout: Layout) {
|
|
@@ -1494,7 +1504,9 @@ class LayourRecordManager {
|
|
|
1494
1504
|
for (let _field of this.layout.metadata.fieldMetaData) {
|
|
1495
1505
|
fields[_field.name] = ""
|
|
1496
1506
|
}
|
|
1497
|
-
|
|
1507
|
+
let portals = {}
|
|
1508
|
+
for (let _portal of Object.keys(this.layout.metadata.portalMetaData)) portals[_portal] = []
|
|
1509
|
+
resolve(new LayoutRecord(this.layout, -1, 0, fields, portals))
|
|
1498
1510
|
}).catch(e => {
|
|
1499
1511
|
reject(e)
|
|
1500
1512
|
})
|
|
@@ -1637,7 +1649,7 @@ export class RecordBase extends EventEmitter {
|
|
|
1637
1649
|
|
|
1638
1650
|
if (this.recordId === -1) {
|
|
1639
1651
|
// This is a new LayoutRecord
|
|
1640
|
-
|
|
1652
|
+
for (let item of Object.keys(data)) extraBody[item] = data[item]
|
|
1641
1653
|
|
|
1642
1654
|
this.layout.database.apiRequest(`${this.layout.endpoint}/records`, {
|
|
1643
1655
|
port: 443,
|
|
@@ -1665,6 +1677,7 @@ export class RecordBase extends EventEmitter {
|
|
|
1665
1677
|
}
|
|
1666
1678
|
|
|
1667
1679
|
for (let item of Object.keys(data)) extraBody[item] = data[item]
|
|
1680
|
+
console.log((extraBody as any).portalData)
|
|
1668
1681
|
this.layout.database.apiRequest(this.endpoint, {
|
|
1669
1682
|
port: 443,
|
|
1670
1683
|
method: "PATCH",
|
|
@@ -1817,7 +1830,7 @@ export class LayoutRecord extends RecordBase {
|
|
|
1817
1830
|
|
|
1818
1831
|
export class Field {
|
|
1819
1832
|
record: RecordBase;
|
|
1820
|
-
id:
|
|
1833
|
+
id: string;
|
|
1821
1834
|
protected _value: string | number | Date;
|
|
1822
1835
|
edited: boolean;
|
|
1823
1836
|
|
|
@@ -1842,7 +1855,7 @@ export class Field {
|
|
|
1842
1855
|
this.edited = true
|
|
1843
1856
|
}
|
|
1844
1857
|
|
|
1845
|
-
get metadata():
|
|
1858
|
+
get metadata(): FieldMetaData {
|
|
1846
1859
|
if (!this.record.layout.metadata) {
|
|
1847
1860
|
// Default to a regular text field
|
|
1848
1861
|
return {
|
|
@@ -1860,10 +1873,10 @@ export class Field {
|
|
|
1860
1873
|
timeOfDay: false,
|
|
1861
1874
|
repetitionStart: 1,
|
|
1862
1875
|
repetitionEnd: 1
|
|
1863
|
-
} as
|
|
1876
|
+
} as FieldMetaData
|
|
1864
1877
|
}
|
|
1865
1878
|
if (this.record instanceof PortalRecord) {
|
|
1866
|
-
return this.record.layout.metadata.portalMetaData[this.record.portal.name || "portal not attached"].find(i => i.name === this.id) as
|
|
1879
|
+
return this.record.layout.metadata.portalMetaData[this.record.portal.name || "portal not attached"].find(i => i.name === this.id) as FieldMetaData || {
|
|
1867
1880
|
name: this.id.toString(),
|
|
1868
1881
|
type: 'normal',
|
|
1869
1882
|
displayType: 'editText',
|
|
@@ -1878,10 +1891,10 @@ export class Field {
|
|
|
1878
1891
|
timeOfDay: false,
|
|
1879
1892
|
repetitionStart: 1,
|
|
1880
1893
|
repetitionEnd: 1
|
|
1881
|
-
} as
|
|
1894
|
+
} as FieldMetaData
|
|
1882
1895
|
}
|
|
1883
1896
|
else {
|
|
1884
|
-
return this.record.layout.metadata.fieldMetaData.find(i => i.name === this.id) as
|
|
1897
|
+
return this.record.layout.metadata.fieldMetaData.find(i => i.name === this.id) as FieldMetaData || {
|
|
1885
1898
|
name: this.id.toString(),
|
|
1886
1899
|
type: 'normal',
|
|
1887
1900
|
displayType: 'editText',
|
|
@@ -1896,7 +1909,7 @@ export class Field {
|
|
|
1896
1909
|
timeOfDay: false,
|
|
1897
1910
|
repetitionStart: 1,
|
|
1898
1911
|
repetitionEnd: 1
|
|
1899
|
-
} as
|
|
1912
|
+
} as FieldMetaData
|
|
1900
1913
|
}
|
|
1901
1914
|
}
|
|
1902
1915
|
|
|
@@ -1973,6 +1986,16 @@ export class Portal {
|
|
|
1973
1986
|
this.record = record
|
|
1974
1987
|
this.name = name
|
|
1975
1988
|
}
|
|
1989
|
+
|
|
1990
|
+
create() {
|
|
1991
|
+
let fields = {}
|
|
1992
|
+
for (let _field of this.record.layout.metadata.portalMetaData[this.name]) {
|
|
1993
|
+
fields[_field.name] = ""
|
|
1994
|
+
}
|
|
1995
|
+
let record = new PortalRecord(this.record, this, -1, -1, fields)
|
|
1996
|
+
this.records.push(record)
|
|
1997
|
+
return record
|
|
1998
|
+
}
|
|
1976
1999
|
}
|
|
1977
2000
|
|
|
1978
2001
|
export class PortalRecord extends RecordBase {
|
|
@@ -1997,12 +2020,16 @@ export class PortalRecord extends RecordBase {
|
|
|
1997
2020
|
toObject(fieldFilter): any {
|
|
1998
2021
|
super.toObject()
|
|
1999
2022
|
let res = {
|
|
2000
|
-
recordId: this.recordId, modId: this.modId
|
|
2023
|
+
recordId: this.recordId === -1 ? undefined : this.recordId, modId: this.modId === - 1 ? undefined : this.modId
|
|
2001
2024
|
} as recordObject
|
|
2002
2025
|
for (let field of this.fields.filter(a => fieldFilter(a))) res[field.id] = field.value
|
|
2003
2026
|
// console.log(res)
|
|
2004
2027
|
return res
|
|
2005
2028
|
}
|
|
2029
|
+
|
|
2030
|
+
getField(field) {
|
|
2031
|
+
return this.fields.find(_field => _field.id === field) || this.fields.find(_field => _field.id === this.portal.name + "::" + field)
|
|
2032
|
+
}
|
|
2006
2033
|
}
|
|
2007
2034
|
|
|
2008
2035
|
export class RecordGetOperation {
|
package/test.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import FMHost from "./
|
|
1
|
+
import FMHost from "./src/index.js";
|
|
2
2
|
import * as fs from "fs";
|
|
3
|
-
import {DOWNLOAD_MODES} from "./
|
|
3
|
+
import {DOWNLOAD_MODES} from "./src/index.js";
|
|
4
4
|
|
|
5
5
|
process.env.NODE_TLS_REJECT_UNAUTHORIZED = '0';
|
|
6
6
|
|
|
@@ -16,17 +16,20 @@ const database = host.database({
|
|
|
16
16
|
})
|
|
17
17
|
database.login()
|
|
18
18
|
.then(async () => {
|
|
19
|
-
let layout = database.getLayout("
|
|
20
|
-
|
|
19
|
+
let layout = database.getLayout("ReportsJSON")
|
|
20
|
+
await layout.getLayoutMeta()
|
|
21
|
+
console.log(layout.metadata)
|
|
21
22
|
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
23
|
+
let record = (await layout.records.range(4, 9).fetch())[0]
|
|
24
|
+
|
|
25
|
+
record.getField("In|PartnerID").set("42565F30-5F5D-44A4-83A0-E52128974581")
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
let portal = record.getPortal("Reports|Archive")
|
|
29
|
+
let portal_record = portal.create()
|
|
30
|
+
portal_record.getField("SampleClass").set("Hello!")
|
|
31
|
+
|
|
32
|
+
await record.commit()
|
|
33
|
+
await record.get()
|
|
34
|
+
console.log(record.getField("__PrimaryKey").value)
|
|
32
35
|
})
|