@nfdi4plants/arctrl 2.0.0-alpha.2 → 2.0.0-alpha.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.
Files changed (115) hide show
  1. package/ARC.js +110 -15
  2. package/Contract/ARC.js +9 -1
  3. package/Contract/Datamap.js +180 -0
  4. package/Core/ArcTypes.js +148 -121
  5. package/Core/Conversion.js +99 -67
  6. package/Core/Data.js +119 -0
  7. package/Core/{Process/DataFile.js → DataFile.js} +3 -3
  8. package/Core/Helper/Identifier.js +40 -0
  9. package/Core/OntologyAnnotation.js +14 -4
  10. package/Core/Process/ColumnIndex.js +13 -3
  11. package/Core/Process/ProcessInput.js +5 -5
  12. package/Core/Process/ProcessOutput.js +5 -5
  13. package/Core/Process/Value.js +1 -1
  14. package/Core/Table/ArcTableAux.js +14 -3
  15. package/Core/Table/CompositeCell.js +67 -10
  16. package/Core/Table/CompositeColumn.js +9 -0
  17. package/Core/Table/CompositeHeader.js +58 -68
  18. package/Core/Table/DataMap.js +166 -0
  19. package/FileSystem/FileSystemTree.js +18 -4
  20. package/Json/Assay.js +4 -4
  21. package/Json/Process/Data.js +56 -18
  22. package/Json/Process/DataFile.js +5 -5
  23. package/Json/Process/PropertyValue.js +126 -5
  24. package/Json/Study.js +6 -6
  25. package/Json/Table/CompositeCell.js +7 -6
  26. package/Spreadsheet/AnnotationTable/ArcTable.js +9 -13
  27. package/Spreadsheet/AnnotationTable/CompositeCell.js +32 -50
  28. package/Spreadsheet/AnnotationTable/CompositeColumn.js +16 -10
  29. package/Spreadsheet/AnnotationTable/CompositeHeader.js +262 -143
  30. package/Spreadsheet/ArcAssay.js +2 -2
  31. package/Spreadsheet/ArcInvestigation.js +2 -2
  32. package/Spreadsheet/ArcStudy.js +2 -2
  33. package/Spreadsheet/DataMap.js +31 -0
  34. package/Spreadsheet/DataMapTable/DataMapColumn.js +36 -0
  35. package/Spreadsheet/DataMapTable/DataMapHeader.js +417 -0
  36. package/Spreadsheet/DataMapTable/DataMapTable.js +98 -0
  37. package/Spreadsheet/Metadata/Assays.js +2 -2
  38. package/Spreadsheet/Metadata/SparseTable.js +7 -7
  39. package/Spreadsheet/Metadata/Study.js +1 -1
  40. package/Spreadsheet/Template.js +2 -2
  41. package/Xlsx.js +29 -6
  42. package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/FsSpreadsheet.fableproj +9 -3
  43. package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/FsWorksheet.fs +1 -0
  44. package/fable_modules/FsSpreadsheet.6.1.2/Json/Cell.fs +23 -0
  45. package/fable_modules/FsSpreadsheet.6.1.2/Json/Cell.fs.js +21 -0
  46. package/fable_modules/FsSpreadsheet.6.1.2/Json/Row.fs +23 -0
  47. package/fable_modules/FsSpreadsheet.6.1.2/Json/Row.fs.js +19 -0
  48. package/fable_modules/FsSpreadsheet.6.1.2/Json/Table.fs +24 -0
  49. package/fable_modules/FsSpreadsheet.6.1.2/Json/Table.fs.js +15 -0
  50. package/fable_modules/FsSpreadsheet.6.1.2/Json/Value.fs +70 -0
  51. package/fable_modules/FsSpreadsheet.6.1.2/Json/Value.fs.js +48 -0
  52. package/fable_modules/FsSpreadsheet.6.1.2/Json/Workbook.fs +20 -0
  53. package/fable_modules/FsSpreadsheet.6.1.2/Json/Workbook.fs.js +21 -0
  54. package/fable_modules/FsSpreadsheet.6.1.2/Json/Worksheet.fs +49 -0
  55. package/fable_modules/FsSpreadsheet.6.1.2/Json/Worksheet.fs.js +44 -0
  56. package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/obj/Release/netstandard2.0/FsSpreadsheet.AssemblyInfo.fs +3 -3
  57. package/fable_modules/project_cracked.json +1 -1
  58. package/package.json +1 -1
  59. package/Core/Process/Data.js +0 -55
  60. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Cells/FsCell.fs +0 -0
  61. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Cells/FsCell.fs.js +0 -0
  62. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Cells/FsCellsCollection.fs +0 -0
  63. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Cells/FsCellsCollection.fs.js +0 -0
  64. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/CellBuilder.fs +0 -0
  65. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/CellBuilder.fs.js +0 -0
  66. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/ColumnBuilder.fs +0 -0
  67. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/ColumnBuilder.fs.js +0 -0
  68. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/DSL.fs +0 -0
  69. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/DSL.fs.js +0 -0
  70. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/Expression.fs +0 -0
  71. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/Expression.fs.js +0 -0
  72. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/Operators.fs +0 -0
  73. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/Operators.fs.js +0 -0
  74. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/RowBuilder.fs +0 -0
  75. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/RowBuilder.fs.js +0 -0
  76. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/SheetBuilder.fs +0 -0
  77. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/SheetBuilder.fs.js +0 -0
  78. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/TableBuilder.fs +0 -0
  79. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/TableBuilder.fs.js +0 -0
  80. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/Transform.fs +0 -0
  81. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/Transform.fs.js +0 -0
  82. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/Types.fs +0 -0
  83. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/Types.fs.js +0 -0
  84. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/WorkbookBuilder.fs +0 -0
  85. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/DSL/WorkbookBuilder.fs.js +0 -0
  86. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/FsAddress.fs +0 -0
  87. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/FsAddress.fs.js +0 -0
  88. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/FsColumn.fs +0 -0
  89. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/FsColumn.fs.js +0 -0
  90. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/FsRow.fs +0 -0
  91. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/FsRow.fs.js +0 -0
  92. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/FsWorkbook.fs +0 -0
  93. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/FsWorkbook.fs.js +0 -0
  94. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/FsWorksheet.fs.js +0 -0
  95. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Ranges/FsRange.fs +0 -0
  96. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Ranges/FsRange.fs.js +0 -0
  97. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Ranges/FsRangeAddress.fs +0 -0
  98. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Ranges/FsRangeAddress.fs.js +0 -0
  99. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Ranges/FsRangeBase.fs +0 -0
  100. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Ranges/FsRangeBase.fs.js +0 -0
  101. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Ranges/FsRangeColumn.fs +0 -0
  102. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Ranges/FsRangeColumn.fs.js +0 -0
  103. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Ranges/FsRangeRow.fs +0 -0
  104. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Ranges/FsRangeRow.fs.js +0 -0
  105. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/SheetBuilder.fs +0 -0
  106. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/SheetBuilder.fs.js +0 -0
  107. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Tables/FsTable.fs +0 -0
  108. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Tables/FsTable.fs.js +0 -0
  109. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Tables/FsTableField.fs +0 -0
  110. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Tables/FsTableField.fs.js +0 -0
  111. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Tables/FsTableRow.fs +0 -0
  112. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/Tables/FsTableRow.fs.js +0 -0
  113. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/obj/Debug/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.fs +0 -0
  114. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/obj/Debug/netstandard2.0/FsSpreadsheet.AssemblyInfo.fs +0 -0
  115. /package/fable_modules/{FsSpreadsheet.5.1.3 → FsSpreadsheet.6.1.2}/obj/Release/netstandard2.0/.NETStandard,Version=v2.0.AssemblyAttributes.fs +0 -0
package/Xlsx.js CHANGED
@@ -1,18 +1,38 @@
1
- import { toFsWorkbook, fromFsWorkbook } from "./Spreadsheet/ArcAssay.js";
1
+ import { toFsWorkbook, fromFsWorkbook } from "./Spreadsheet/DataMap.js";
2
2
  import { class_type } from "./fable_modules/fable-library-js.4.16.0/Reflection.js";
3
+ import { toFsWorkbook as toFsWorkbook_1, fromFsWorkbook as fromFsWorkbook_1 } from "./Spreadsheet/ArcAssay.js";
3
4
  import { ARCtrl_ArcStudy__ArcStudy_toFsWorkbook_Static_353D0DB7, ARCtrl_ArcStudy__ArcStudy_fromFsWorkbook_Static_32154C9D } from "./Spreadsheet/ArcStudy.js";
4
5
  import { map, unwrap } from "./fable_modules/fable-library-js.4.16.0/Option.js";
5
6
  import { ofSeq } from "./fable_modules/fable-library-js.4.16.0/List.js";
6
- import { toLightFsWorkbook, toFsWorkbook as toFsWorkbook_1, fromFsWorkbook as fromFsWorkbook_1 } from "./Spreadsheet/ArcInvestigation.js";
7
+ import { toLightFsWorkbook, toFsWorkbook as toFsWorkbook_2, fromFsWorkbook as fromFsWorkbook_2 } from "./Spreadsheet/ArcInvestigation.js";
7
8
 
8
- export class XlsxHelper_AssayXlsx {
9
+ export class XlsxHelper_DatamapXlsx {
9
10
  constructor() {
10
11
  }
11
12
  fromFsWorkbook(fswb) {
12
13
  return fromFsWorkbook(fswb);
13
14
  }
15
+ toFsWorkbook(datamap) {
16
+ return toFsWorkbook(datamap);
17
+ }
18
+ }
19
+
20
+ export function XlsxHelper_DatamapXlsx_$reflection() {
21
+ return class_type("ARCtrl.XlsxHelper.DatamapXlsx", void 0, XlsxHelper_DatamapXlsx);
22
+ }
23
+
24
+ export function XlsxHelper_DatamapXlsx_$ctor() {
25
+ return new XlsxHelper_DatamapXlsx();
26
+ }
27
+
28
+ export class XlsxHelper_AssayXlsx {
29
+ constructor() {
30
+ }
31
+ fromFsWorkbook(fswb) {
32
+ return fromFsWorkbook_1(fswb);
33
+ }
14
34
  toFsWorkbook(assay) {
15
- return toFsWorkbook(assay);
35
+ return toFsWorkbook_1(assay);
16
36
  }
17
37
  }
18
38
 
@@ -47,10 +67,10 @@ export class XlsxHelper_InvestigationXlsx {
47
67
  constructor() {
48
68
  }
49
69
  fromFsWorkbook(fswb) {
50
- return fromFsWorkbook_1(fswb);
70
+ return fromFsWorkbook_2(fswb);
51
71
  }
52
72
  toFsWorkbook(investigation) {
53
- return toFsWorkbook_1(investigation);
73
+ return toFsWorkbook_2(investigation);
54
74
  }
55
75
  toLightFsWorkbook(investigation) {
56
76
  return toLightFsWorkbook(investigation);
@@ -68,6 +88,9 @@ export function XlsxHelper_InvestigationXlsx_$ctor() {
68
88
  export class XlsxController {
69
89
  constructor() {
70
90
  }
91
+ static get Datamap() {
92
+ return new XlsxHelper_DatamapXlsx();
93
+ }
71
94
  static get Assay() {
72
95
  return new XlsxHelper_AssayXlsx();
73
96
  }
@@ -33,6 +33,12 @@
33
33
  <Compile Include="DSL\SheetBuilder.fs" />
34
34
  <Compile Include="DSL\WorkbookBuilder.fs" />
35
35
  <Compile Include="DSL\DSL.fs" />
36
+ <Compile Include="Json\Value.fs" />
37
+ <Compile Include="Json\Cell.fs" />
38
+ <Compile Include="Json\Row.fs" />
39
+ <Compile Include="Json\Table.fs" />
40
+ <Compile Include="Json\Worksheet.fs" />
41
+ <Compile Include="Json\Workbook.fs" />
36
42
  <None Include="..\..\docs\img\logo.png" Pack="true" PackagePath="\" />
37
43
  </ItemGroup>
38
44
 
@@ -48,11 +54,11 @@
48
54
  </PropertyGroup>
49
55
 
50
56
  <ItemGroup>
51
- <Content Include="*.fsproj; **\*.fs; **\*.fsi" PackagePath="fable\" />
57
+ <PackageReference Include="Thoth.Json.Core" Version="0.2.1" />
52
58
  </ItemGroup>
53
59
 
54
60
  <ItemGroup>
55
- <PackageReference Include="Fable.Core" Version="4.0.0" />
61
+ <Content Include="*.fsproj; **\*.fs; **\*.fsi" PackagePath="fable\" />
56
62
  </ItemGroup>
57
-
63
+
58
64
  </Project>
@@ -150,6 +150,7 @@ type FsWorksheet (name, ?fsRows, ?fsTables, ?fsCellsCollection) =
150
150
  /// <summary>
151
151
  /// Returns the FsRow at the given FsRangeAddress. If it does not exist, it is created and appended first.
152
152
  /// </summary>
153
+ /// <param name="rangeAddress">The range address of the FsRow.</param>
153
154
  /// <param name="SkipSearch">If true, the FsRow is created and appended without checking if it already exists.</param>
154
155
  member self.RowWithRange(rangeAddress : FsRangeAddress, ?SkipSearch) =
155
156
  let skipSearch = defaultArg SkipSearch false
@@ -0,0 +1,23 @@
1
+ module FsSpreadsheet.Json.Cell
2
+
3
+ open FsSpreadsheet
4
+ open Thoth.Json.Core
5
+
6
+ [<Literal>]
7
+ let column = "column"
8
+
9
+ [<Literal>]
10
+ let value = "value"
11
+
12
+ let encode (cell:FsCell) =
13
+ Encode.object [
14
+ column, Encode.int cell.ColumnNumber
15
+ value, Value.encode cell.Value
16
+ ]
17
+
18
+ let decode rowNumber : Decoder<FsCell> =
19
+ Decode.object (fun builder ->
20
+ let v,dt = builder.Required.Field value (Value.decode)
21
+ let c = builder.Required.Field column Decode.int
22
+ new FsCell(v,dt,FsAddress(rowNumber,c))
23
+ )
@@ -0,0 +1,21 @@
1
+ import { Json } from "../../Thoth.Json.Core.0.2.1/Types.fs.js";
2
+ import { decode as decode_1, encode as encode_1 } from "./Value.fs.js";
3
+ import { int, object } from "../../Thoth.Json.Core.0.2.1/Decode.fs.js";
4
+ import { FsCell } from "../Cells/FsCell.fs.js";
5
+ import { FsAddress_$ctor_Z37302880 } from "../FsAddress.fs.js";
6
+
7
+ export function encode(cell) {
8
+ let value_1;
9
+ return new Json(5, [[["column", (value_1 = (cell.ColumnNumber | 0), new Json(7, [value_1 >>> 0]))], ["value", encode_1(cell.Value)]]]);
10
+ }
11
+
12
+ export function decode(rowNumber) {
13
+ return object((builder) => {
14
+ let objectArg_1;
15
+ let patternInput;
16
+ const objectArg = builder.Required;
17
+ patternInput = objectArg.Field("value", decode_1);
18
+ return new FsCell(patternInput[0], patternInput[1], FsAddress_$ctor_Z37302880(rowNumber, (objectArg_1 = builder.Required, objectArg_1.Field("column", int))));
19
+ });
20
+ }
21
+
@@ -0,0 +1,23 @@
1
+ module FsSpreadsheet.Json.Row
2
+
3
+ open FsSpreadsheet
4
+ open Thoth.Json.Core
5
+
6
+ [<Literal>]
7
+ let cells = "cells"
8
+
9
+ [<Literal>]
10
+ let number = "number"
11
+
12
+ let encode (row:FsRow) =
13
+ Encode.object [
14
+ number, Encode.int row.Index
15
+ cells, Encode.seq (row.Cells |> Seq.map Cell.encode)
16
+ ]
17
+
18
+ let decode : Decoder<int*FsCell seq> =
19
+ Decode.object (fun builder ->
20
+ let n = builder.Required.Field number Decode.int
21
+ let cs = builder.Required.Field cells (Decode.seq (Cell.decode n))
22
+ n,cs
23
+ )
@@ -0,0 +1,19 @@
1
+ import { Json } from "../../Thoth.Json.Core.0.2.1/Types.fs.js";
2
+ import { seq } from "../../Thoth.Json.Core.0.2.1/Encode.fs.js";
3
+ import { map } from "../../fable-library-js.4.16.0/Seq.js";
4
+ import { decode as decode_1, encode as encode_1 } from "./Cell.fs.js";
5
+ import { seq as seq_1, int, object } from "../../Thoth.Json.Core.0.2.1/Decode.fs.js";
6
+
7
+ export function encode(row) {
8
+ let value;
9
+ return new Json(5, [[["number", (value = (row.Index | 0), new Json(7, [value >>> 0]))], ["cells", seq(map(encode_1, row.Cells))]]]);
10
+ }
11
+
12
+ export const decode = object((builder) => {
13
+ let arg_3, objectArg_1;
14
+ let n;
15
+ const objectArg = builder.Required;
16
+ n = objectArg.Field("number", int);
17
+ return [n, (arg_3 = seq_1(decode_1(n)), (objectArg_1 = builder.Required, objectArg_1.Field("cells", arg_3)))];
18
+ });
19
+
@@ -0,0 +1,24 @@
1
+ module FsSpreadsheet.Json.Table
2
+
3
+ open FsSpreadsheet
4
+ open Thoth.Json.Core
5
+
6
+
7
+ [<Literal>]
8
+ let name = "name"
9
+
10
+ [<Literal>]
11
+ let range = "range"
12
+
13
+ let encode (sheet:FsTable) =
14
+ Encode.object [
15
+ name, Encode.string sheet.Name
16
+ range, Encode.string sheet.RangeAddress.Range
17
+ ]
18
+
19
+ let decode : Decoder<FsTable> =
20
+ Decode.object (fun builder ->
21
+ let n = builder.Required.Field name Decode.string
22
+ let r = builder.Required.Field range Decode.string
23
+ FsTable(n, FsRangeAddress(r))
24
+ )
@@ -0,0 +1,15 @@
1
+ import { Json } from "../../Thoth.Json.Core.0.2.1/Types.fs.js";
2
+ import { FsRangeAddress_$ctor_Z721C83C5, FsRangeAddress__get_Range } from "../Ranges/FsRangeAddress.fs.js";
3
+ import { FsRangeBase__get_RangeAddress } from "../Ranges/FsRangeBase.fs.js";
4
+ import { string, object } from "../../Thoth.Json.Core.0.2.1/Decode.fs.js";
5
+ import { FsTable } from "../Tables/FsTable.fs.js";
6
+
7
+ export function encode(sheet) {
8
+ return new Json(5, [[["name", new Json(0, [sheet.Name])], ["range", new Json(0, [FsRangeAddress__get_Range(FsRangeBase__get_RangeAddress(sheet))])]]]);
9
+ }
10
+
11
+ export const decode = object((builder) => {
12
+ let objectArg, objectArg_1;
13
+ return new FsTable((objectArg = builder.Required, objectArg.Field("name", string)), FsRangeAddress_$ctor_Z721C83C5((objectArg_1 = builder.Required, objectArg_1.Field("range", string))));
14
+ });
15
+
@@ -0,0 +1,70 @@
1
+ module FsSpreadsheet.Json.Value
2
+
3
+ open Thoth.Json.Core
4
+ open FsSpreadsheet
5
+
6
+ #if FABLE_COMPILER_PYTHON
7
+ module PyTime =
8
+
9
+ open Fable.Core
10
+ open Fable.Core.PyInterop
11
+
12
+ // Currently in Fable, a created datetime object will contain a timezone. This is not allowed in python xlsx, so we need to remove it.
13
+ // Unfortunately, the timezone object in python is read-only, so we need to create a new datetime object without timezone.
14
+ // For this, we use the fromtimestamp method of the datetime module and convert the timestamp to a new datetime object without timezone.
15
+
16
+ type DateTimeStatic =
17
+ [<Emit("$0.fromtimestamp(timestamp=$1)")>]
18
+ abstract member fromTimeStamp: timestamp:float -> System.DateTime
19
+
20
+ [<Import("datetime", "datetime")>]
21
+ let DateTime : DateTimeStatic = nativeOnly
22
+
23
+ let toUniversalTimePy (dt:System.DateTime) =
24
+
25
+ dt.ToUniversalTime()?timestamp()
26
+ |> DateTime.fromTimeStamp
27
+ #endif
28
+
29
+
30
+
31
+
32
+
33
+ module Decode =
34
+
35
+ let datetime: Decoder<System.DateTime> =
36
+ #if FABLE_COMPILER_PYTHON
37
+ Decode.datetimeLocal |> Decode.map PyTime.toUniversalTimePy
38
+ #else
39
+ { new Decoder<System.DateTime> with
40
+ member _.Decode(helpers, value) =
41
+ if helpers.isString value then
42
+ match System.DateTime.TryParse(helpers.asString value) with
43
+ | true, datetime -> datetime |> Ok
44
+ | _ -> ("", BadPrimitive("a datetime", value)) |> Error
45
+ else
46
+ ("", BadPrimitive("a datetime", value)) |> Error
47
+ }
48
+ #endif
49
+
50
+ let encode (value : obj) =
51
+ match value with
52
+ | :? string as s -> Encode.string s
53
+ | :? float as f -> Encode.float f
54
+ | :? int as i -> Encode.int i
55
+ | :? bool as b -> Encode.bool b
56
+ | :? System.DateTime as d ->
57
+ d.ToString("O", System.Globalization.CultureInfo.InvariantCulture).Split('+').[0]
58
+ |> Encode.string
59
+ | _ -> Encode.nil
60
+
61
+
62
+
63
+ let decode =
64
+ Decode.oneOf [
65
+ Decode.bool |> Decode.map (fun b -> b :> obj, DataType.Boolean)
66
+ Decode.int |> Decode.map (fun i -> i :> obj, DataType.Number)
67
+ Decode.float |> Decode.map (fun f -> f :> obj, DataType.Number)
68
+ Decode.datetime |> Decode.map (fun d -> d :> obj, DataType.Date)
69
+ Decode.string |> Decode.map (fun s -> s :> obj, DataType.String)
70
+ ]
@@ -0,0 +1,48 @@
1
+ import { toString, tryParse, minValue } from "../../fable-library-js.4.16.0/Date.js";
2
+ import { FSharpRef } from "../../fable-library-js.4.16.0/Types.js";
3
+ import { FSharpResult$2 } from "../../fable-library-js.4.16.0/Result.js";
4
+ import { Json, ErrorReason$1 } from "../../Thoth.Json.Core.0.2.1/Types.fs.js";
5
+ import { item } from "../../fable-library-js.4.16.0/Array.js";
6
+ import { string, float, int, bool, map, oneOf } from "../../Thoth.Json.Core.0.2.1/Decode.fs.js";
7
+ import { DataType } from "../Cells/FsCell.fs.js";
8
+ import { ofArray } from "../../fable-library-js.4.16.0/List.js";
9
+
10
+ export const Decode_datetime = {
11
+ Decode(helpers, value) {
12
+ if (helpers.isString(value)) {
13
+ let matchValue;
14
+ let outArg = minValue();
15
+ matchValue = [tryParse(helpers.asString(value), new FSharpRef(() => outArg, (v) => {
16
+ outArg = v;
17
+ })), outArg];
18
+ return matchValue[0] ? (new FSharpResult$2(0, [matchValue[1]])) : (new FSharpResult$2(1, [["", new ErrorReason$1(0, ["a datetime", value])]]));
19
+ }
20
+ else {
21
+ return new FSharpResult$2(1, [["", new ErrorReason$1(0, ["a datetime", value])]]);
22
+ }
23
+ },
24
+ };
25
+
26
+ export function encode(value) {
27
+ if (typeof value === "string") {
28
+ return new Json(0, [value]);
29
+ }
30
+ else if (typeof value === "number") {
31
+ return new Json(2, [value]);
32
+ }
33
+ else if (typeof value === "number") {
34
+ return new Json(7, [value >>> 0]);
35
+ }
36
+ else if (typeof value === "boolean") {
37
+ return new Json(4, [value]);
38
+ }
39
+ else if (value instanceof Date) {
40
+ return new Json(0, [item(0, toString(value, "O", {}).split("+"))]);
41
+ }
42
+ else {
43
+ return new Json(3, []);
44
+ }
45
+ }
46
+
47
+ export const decode = oneOf(ofArray([map((b) => [b, new DataType(1, [])], bool), map((i) => [i, new DataType(2, [])], int), map((f) => [f, new DataType(2, [])], float), map((d_3) => [d_3, new DataType(3, [])], Decode_datetime), map((s) => [s, new DataType(0, [])], string)]));
48
+
@@ -0,0 +1,20 @@
1
+ module FsSpreadsheet.Json.Workbook
2
+
3
+ open FsSpreadsheet
4
+ open Thoth.Json.Core
5
+
6
+ [<Literal>]
7
+ let sheets = "sheets"
8
+
9
+ let encode (wb:FsWorkbook) =
10
+ Encode.object [
11
+ sheets, Encode.seq (wb.GetWorksheets() |> Seq.map Worksheet.encode)
12
+ ]
13
+
14
+ let decode : Decoder<FsWorkbook> =
15
+ Decode.object (fun builder ->
16
+ let wb = new FsWorkbook()
17
+ let ws = builder.Required.Field sheets (Decode.seq Worksheet.decode)
18
+ wb.AddWorksheets(ws)
19
+ wb
20
+ )
@@ -0,0 +1,21 @@
1
+ import { seq } from "../../Thoth.Json.Core.0.2.1/Encode.fs.js";
2
+ import { map } from "../../fable-library-js.4.16.0/Seq.js";
3
+ import { decode as decode_1, encode as encode_1 } from "./Worksheet.fs.js";
4
+ import { Json } from "../../Thoth.Json.Core.0.2.1/Types.fs.js";
5
+ import { seq as seq_1, object } from "../../Thoth.Json.Core.0.2.1/Decode.fs.js";
6
+ import { FsWorkbook } from "../FsWorkbook.fs.js";
7
+
8
+ export function encode(wb) {
9
+ return new Json(5, [[["sheets", seq(map(encode_1, wb.GetWorksheets()))]]]);
10
+ }
11
+
12
+ export const decode = object((builder) => {
13
+ const wb = new FsWorkbook();
14
+ let ws;
15
+ const arg_1 = seq_1(decode_1);
16
+ const objectArg = builder.Required;
17
+ ws = objectArg.Field("sheets", arg_1);
18
+ wb.AddWorksheets(ws);
19
+ return wb;
20
+ });
21
+
@@ -0,0 +1,49 @@
1
+ module FsSpreadsheet.Json.Worksheet
2
+
3
+ open FsSpreadsheet
4
+ open Thoth.Json.Core
5
+
6
+ [<Literal>]
7
+ let name = "name"
8
+
9
+ [<Literal>]
10
+ let rows = "rows"
11
+
12
+ [<Literal>]
13
+ let tables = "tables"
14
+
15
+ let encode (sheet:FsWorksheet) =
16
+ sheet.RescanRows()
17
+ Encode.object [
18
+ name, Encode.string sheet.Name
19
+ if Seq.isEmpty sheet.Tables |> not then
20
+ tables, Encode.seq (sheet.Tables |> Seq.map Table.encode)
21
+ rows, Encode.seq (sheet.Rows |> Seq.map Row.encode)
22
+
23
+ ]
24
+
25
+ let decode : Decoder<FsWorksheet> =
26
+ Decode.object (fun builder ->
27
+ let n = builder.Required.Field name Decode.string
28
+ let ts = builder.Optional.Field tables (Decode.seq Table.decode)
29
+ let rs = builder.Required.Field rows (Decode.seq Row.decode)
30
+ let sheet = new FsWorksheet(n)
31
+ rs
32
+ |> Seq.iter (fun (rowI,cells) ->
33
+ let r = sheet.Row(rowI)
34
+ cells
35
+ |> Seq.iter (fun cell ->
36
+ let c = r[cell.ColumnNumber]
37
+ c.Value <- cell.Value
38
+ c.DataType <- cell.DataType
39
+ )
40
+ )
41
+ match ts with
42
+ | Some ts ->
43
+ ts
44
+ |> Seq.iter (fun t ->
45
+ sheet.AddTable(t) |> ignore
46
+ )
47
+ | None -> ()
48
+ sheet
49
+ )
@@ -0,0 +1,44 @@
1
+ import { iterate, empty, map, isEmpty, singleton, append, delay, toList } from "../../fable-library-js.4.16.0/Seq.js";
2
+ import { Json } from "../../Thoth.Json.Core.0.2.1/Types.fs.js";
3
+ import { seq } from "../../Thoth.Json.Core.0.2.1/Encode.fs.js";
4
+ import { decode as decode_1, encode as encode_1 } from "./Table.fs.js";
5
+ import { decode as decode_2, encode as encode_2 } from "./Row.fs.js";
6
+ import { seq as seq_1, string, object } from "../../Thoth.Json.Core.0.2.1/Decode.fs.js";
7
+ import { FsWorksheet } from "../FsWorksheet.fs.js";
8
+
9
+ export function encode(sheet) {
10
+ sheet.RescanRows();
11
+ return new Json(5, [toList(delay(() => append(singleton(["name", new Json(0, [sheet.Name])]), delay(() => append(!isEmpty(sheet.Tables) ? singleton(["tables", seq(map(encode_1, sheet.Tables))]) : empty(), delay(() => singleton(["rows", seq(map(encode_2, sheet.Rows))])))))))]);
12
+ }
13
+
14
+ export const decode = object((builder) => {
15
+ let n;
16
+ const objectArg = builder.Required;
17
+ n = objectArg.Field("name", string);
18
+ let ts;
19
+ const arg_3 = seq_1(decode_1);
20
+ const objectArg_1 = builder.Optional;
21
+ ts = objectArg_1.Field("tables", arg_3);
22
+ let rs;
23
+ const arg_5 = seq_1(decode_2);
24
+ const objectArg_2 = builder.Required;
25
+ rs = objectArg_2.Field("rows", arg_5);
26
+ const sheet = new FsWorksheet(n);
27
+ iterate((tupledArg) => {
28
+ const r = sheet.Row(tupledArg[0]);
29
+ iterate((cell) => {
30
+ const c = r.Item(cell.ColumnNumber);
31
+ c.Value = cell.Value;
32
+ c.DataType = cell.DataType;
33
+ }, tupledArg[1]);
34
+ }, rs);
35
+ if (ts == null) {
36
+ }
37
+ else {
38
+ iterate((t) => {
39
+ sheet.AddTable(t);
40
+ }, ts);
41
+ }
42
+ return sheet;
43
+ });
44
+
@@ -10,10 +10,10 @@ open System.Reflection
10
10
  [<assembly: System.Reflection.AssemblyCompanyAttribute("Heinrich Lukas Weil, Oliver Maus, Kevin Schneider, Kevin Frey, Timo Mühlhaus")>]
11
11
  [<assembly: System.Reflection.AssemblyConfigurationAttribute("Release")>]
12
12
  [<assembly: System.Reflection.AssemblyDescriptionAttribute("Fable compliant Spreadsheet creation and manipulation in FSharp")>]
13
- [<assembly: System.Reflection.AssemblyFileVersionAttribute("5.1.3.0")>]
14
- [<assembly: System.Reflection.AssemblyInformationalVersionAttribute("5.1.3")>]
13
+ [<assembly: System.Reflection.AssemblyFileVersionAttribute("6.1.2.0")>]
14
+ [<assembly: System.Reflection.AssemblyInformationalVersionAttribute("6.1.2")>]
15
15
  [<assembly: System.Reflection.AssemblyProductAttribute("FsSpreadsheet")>]
16
16
  [<assembly: System.Reflection.AssemblyTitleAttribute("FsSpreadsheet")>]
17
- [<assembly: System.Reflection.AssemblyVersionAttribute("5.1.3.0")>]
17
+ [<assembly: System.Reflection.AssemblyVersionAttribute("6.1.2.0")>]
18
18
  [<assembly: System.Reflection.AssemblyMetadataAttribute("RepositoryUrl", "https://github.com/CSBiology/FsSpreadsheet")>]
19
19
  do()