@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jd-data-limited/easy-fm",
3
- "version": "2.0.3",
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
@@ -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 LayourRecordManager(this);
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 LayourRecordManager {
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
- 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));
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
- extraBody.fieldData = data.fieldData;
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 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,
@@ -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 LayourRecordManager(this)
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 LayourRecordManager {
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
- 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))
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
- extraBody.fieldData = data.fieldData
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: number;
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(): fieldMetaData {
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 fieldMetaData
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 fieldMetaData || {
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 fieldMetaData
1894
+ } as FieldMetaData
1885
1895
  }
1886
1896
  else {
1887
- 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 || {
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 fieldMetaData
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 "./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
  })