@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jd-data-limited/easy-fm",
3
- "version": "2.0.2",
3
+ "version": "2.0.4",
4
4
  "dependencies": {
5
5
  "@types/btoa": "^1.2.3",
6
6
  "@types/events": "^3.0.0",
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 LayourRecordManager(this);
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 LayourRecordManager {
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
- resolve(new LayoutRecord(this.layout, -1, 0, fields));
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
- extraBody.fieldData = data.fieldData;
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 fieldMetaData {
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 LayourRecordManager(this)
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 LayourRecordManager {
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
- resolve(new LayoutRecord(this.layout, -1, 0, fields))
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
- extraBody.fieldData = data.fieldData
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: number;
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(): fieldMetaData {
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 fieldMetaData
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 fieldMetaData || {
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 fieldMetaData
1894
+ } as FieldMetaData
1882
1895
  }
1883
1896
  else {
1884
- return this.record.layout.metadata.fieldMetaData.find(i => i.name === this.id) as fieldMetaData || {
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 fieldMetaData
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 "./dist/index.js";
1
+ import FMHost from "./src/index.js";
2
2
  import * as fs from "fs";
3
- import {DOWNLOAD_MODES} from "./dist/index.js";
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("Archive")
20
- let records = await layout.records.range(0, 500).fetch()
19
+ let layout = database.getLayout("ReportsJSON")
20
+ await layout.getLayoutMeta()
21
+ console.log(layout.metadata)
21
22
 
22
- for (let i = 0; i < records.length; i++) {
23
- try {
24
- let request = await records[i].getField("Container").download(DOWNLOAD_MODES.Stream)
25
- let write_stream = fs.createWriteStream("./images/" + i + ".jpeg")
26
- request.pipe(write_stream)
27
- console.log("Downloading " + i + ".jpeg")
28
- } catch(e) {
29
- console.error(e)
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
  })