@jd-data-limited/easy-fm 2.0.3 → 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 +22 -5
- package/src/index.ts +37 -13
- package/test.js +17 -14
package/package.json
CHANGED
package/src/index.js
CHANGED
|
@@ -1263,7 +1263,7 @@ export class Database extends EventEmitter {
|
|
|
1263
1263
|
}
|
|
1264
1264
|
export class Layout {
|
|
1265
1265
|
constructor(database, name) {
|
|
1266
|
-
this.records = new
|
|
1266
|
+
this.records = new LayoutRecordManager(this);
|
|
1267
1267
|
this.database = database;
|
|
1268
1268
|
this.name = name;
|
|
1269
1269
|
}
|
|
@@ -1325,7 +1325,7 @@ export class Layout {
|
|
|
1325
1325
|
});
|
|
1326
1326
|
}
|
|
1327
1327
|
}
|
|
1328
|
-
class
|
|
1328
|
+
class LayoutRecordManager {
|
|
1329
1329
|
constructor(layout) {
|
|
1330
1330
|
this.layout = layout;
|
|
1331
1331
|
}
|
|
@@ -1337,7 +1337,10 @@ class LayourRecordManager {
|
|
|
1337
1337
|
for (let _field of this.layout.metadata.fieldMetaData) {
|
|
1338
1338
|
fields[_field.name] = "";
|
|
1339
1339
|
}
|
|
1340
|
-
|
|
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));
|
|
1341
1344
|
}).catch(e => {
|
|
1342
1345
|
reject(e);
|
|
1343
1346
|
});
|
|
@@ -1463,7 +1466,8 @@ export class RecordBase extends EventEmitter {
|
|
|
1463
1466
|
delete data.modId;
|
|
1464
1467
|
if (this.recordId === -1) {
|
|
1465
1468
|
// This is a new LayoutRecord
|
|
1466
|
-
|
|
1469
|
+
for (let item of Object.keys(data))
|
|
1470
|
+
extraBody[item] = data[item];
|
|
1467
1471
|
this.layout.database.apiRequest(`${this.layout.endpoint}/records`, {
|
|
1468
1472
|
port: 443,
|
|
1469
1473
|
method: "POST",
|
|
@@ -1489,6 +1493,7 @@ export class RecordBase extends EventEmitter {
|
|
|
1489
1493
|
}
|
|
1490
1494
|
for (let item of Object.keys(data))
|
|
1491
1495
|
extraBody[item] = data[item];
|
|
1496
|
+
console.log(extraBody.portalData);
|
|
1492
1497
|
this.layout.database.apiRequest(this.endpoint, {
|
|
1493
1498
|
port: 443,
|
|
1494
1499
|
method: "PATCH",
|
|
@@ -1760,6 +1765,15 @@ export class Portal {
|
|
|
1760
1765
|
this.record = record;
|
|
1761
1766
|
this.name = name;
|
|
1762
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
|
+
}
|
|
1763
1777
|
}
|
|
1764
1778
|
export class PortalRecord extends RecordBase {
|
|
1765
1779
|
constructor(record, portal, recordId, modId = recordId, fieldData = {}) {
|
|
@@ -1777,13 +1791,16 @@ export class PortalRecord extends RecordBase {
|
|
|
1777
1791
|
toObject(fieldFilter) {
|
|
1778
1792
|
super.toObject();
|
|
1779
1793
|
let res = {
|
|
1780
|
-
recordId: this.recordId, modId: this.modId
|
|
1794
|
+
recordId: this.recordId === -1 ? undefined : this.recordId, modId: this.modId === -1 ? undefined : this.modId
|
|
1781
1795
|
};
|
|
1782
1796
|
for (let field of this.fields.filter(a => fieldFilter(a)))
|
|
1783
1797
|
res[field.id] = field.value;
|
|
1784
1798
|
// console.log(res)
|
|
1785
1799
|
return res;
|
|
1786
1800
|
}
|
|
1801
|
+
getField(field) {
|
|
1802
|
+
return this.fields.find(_field => _field.id === field) || this.fields.find(_field => _field.id === this.portal.name + "::" + field);
|
|
1803
|
+
}
|
|
1787
1804
|
}
|
|
1788
1805
|
export class RecordGetOperation {
|
|
1789
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,
|
|
@@ -1409,7 +1416,7 @@ export class Database extends EventEmitter {
|
|
|
1409
1416
|
|
|
1410
1417
|
export class Layout {
|
|
1411
1418
|
readonly database: Database;
|
|
1412
|
-
readonly records = new
|
|
1419
|
+
readonly records = new LayoutRecordManager(this)
|
|
1413
1420
|
protected name: string;
|
|
1414
1421
|
metadata: any;
|
|
1415
1422
|
|
|
@@ -1482,7 +1489,7 @@ export class Layout {
|
|
|
1482
1489
|
}
|
|
1483
1490
|
}
|
|
1484
1491
|
|
|
1485
|
-
class
|
|
1492
|
+
class LayoutRecordManager {
|
|
1486
1493
|
readonly layout: Layout
|
|
1487
1494
|
|
|
1488
1495
|
constructor(layout: Layout) {
|
|
@@ -1497,7 +1504,9 @@ class LayourRecordManager {
|
|
|
1497
1504
|
for (let _field of this.layout.metadata.fieldMetaData) {
|
|
1498
1505
|
fields[_field.name] = ""
|
|
1499
1506
|
}
|
|
1500
|
-
|
|
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))
|
|
1501
1510
|
}).catch(e => {
|
|
1502
1511
|
reject(e)
|
|
1503
1512
|
})
|
|
@@ -1640,7 +1649,7 @@ export class RecordBase extends EventEmitter {
|
|
|
1640
1649
|
|
|
1641
1650
|
if (this.recordId === -1) {
|
|
1642
1651
|
// This is a new LayoutRecord
|
|
1643
|
-
|
|
1652
|
+
for (let item of Object.keys(data)) extraBody[item] = data[item]
|
|
1644
1653
|
|
|
1645
1654
|
this.layout.database.apiRequest(`${this.layout.endpoint}/records`, {
|
|
1646
1655
|
port: 443,
|
|
@@ -1668,6 +1677,7 @@ export class RecordBase extends EventEmitter {
|
|
|
1668
1677
|
}
|
|
1669
1678
|
|
|
1670
1679
|
for (let item of Object.keys(data)) extraBody[item] = data[item]
|
|
1680
|
+
console.log((extraBody as any).portalData)
|
|
1671
1681
|
this.layout.database.apiRequest(this.endpoint, {
|
|
1672
1682
|
port: 443,
|
|
1673
1683
|
method: "PATCH",
|
|
@@ -1820,7 +1830,7 @@ export class LayoutRecord extends RecordBase {
|
|
|
1820
1830
|
|
|
1821
1831
|
export class Field {
|
|
1822
1832
|
record: RecordBase;
|
|
1823
|
-
id:
|
|
1833
|
+
id: string;
|
|
1824
1834
|
protected _value: string | number | Date;
|
|
1825
1835
|
edited: boolean;
|
|
1826
1836
|
|
|
@@ -1845,7 +1855,7 @@ export class Field {
|
|
|
1845
1855
|
this.edited = true
|
|
1846
1856
|
}
|
|
1847
1857
|
|
|
1848
|
-
get metadata():
|
|
1858
|
+
get metadata(): FieldMetaData {
|
|
1849
1859
|
if (!this.record.layout.metadata) {
|
|
1850
1860
|
// Default to a regular text field
|
|
1851
1861
|
return {
|
|
@@ -1863,10 +1873,10 @@ export class Field {
|
|
|
1863
1873
|
timeOfDay: false,
|
|
1864
1874
|
repetitionStart: 1,
|
|
1865
1875
|
repetitionEnd: 1
|
|
1866
|
-
} as
|
|
1876
|
+
} as FieldMetaData
|
|
1867
1877
|
}
|
|
1868
1878
|
if (this.record instanceof PortalRecord) {
|
|
1869
|
-
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 || {
|
|
1870
1880
|
name: this.id.toString(),
|
|
1871
1881
|
type: 'normal',
|
|
1872
1882
|
displayType: 'editText',
|
|
@@ -1881,10 +1891,10 @@ export class Field {
|
|
|
1881
1891
|
timeOfDay: false,
|
|
1882
1892
|
repetitionStart: 1,
|
|
1883
1893
|
repetitionEnd: 1
|
|
1884
|
-
} as
|
|
1894
|
+
} as FieldMetaData
|
|
1885
1895
|
}
|
|
1886
1896
|
else {
|
|
1887
|
-
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 || {
|
|
1888
1898
|
name: this.id.toString(),
|
|
1889
1899
|
type: 'normal',
|
|
1890
1900
|
displayType: 'editText',
|
|
@@ -1899,7 +1909,7 @@ export class Field {
|
|
|
1899
1909
|
timeOfDay: false,
|
|
1900
1910
|
repetitionStart: 1,
|
|
1901
1911
|
repetitionEnd: 1
|
|
1902
|
-
} as
|
|
1912
|
+
} as FieldMetaData
|
|
1903
1913
|
}
|
|
1904
1914
|
}
|
|
1905
1915
|
|
|
@@ -1976,6 +1986,16 @@ export class Portal {
|
|
|
1976
1986
|
this.record = record
|
|
1977
1987
|
this.name = name
|
|
1978
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
|
+
}
|
|
1979
1999
|
}
|
|
1980
2000
|
|
|
1981
2001
|
export class PortalRecord extends RecordBase {
|
|
@@ -2000,12 +2020,16 @@ export class PortalRecord extends RecordBase {
|
|
|
2000
2020
|
toObject(fieldFilter): any {
|
|
2001
2021
|
super.toObject()
|
|
2002
2022
|
let res = {
|
|
2003
|
-
recordId: this.recordId, modId: this.modId
|
|
2023
|
+
recordId: this.recordId === -1 ? undefined : this.recordId, modId: this.modId === - 1 ? undefined : this.modId
|
|
2004
2024
|
} as recordObject
|
|
2005
2025
|
for (let field of this.fields.filter(a => fieldFilter(a))) res[field.id] = field.value
|
|
2006
2026
|
// console.log(res)
|
|
2007
2027
|
return res
|
|
2008
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
|
+
}
|
|
2009
2033
|
}
|
|
2010
2034
|
|
|
2011
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
|
})
|