@olenbetong/synergi-react 2.1.2 → 2.3.0

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 (197) hide show
  1. package/dist/esm/ob.react.css +1189 -27
  2. package/dist/esm/ob.react.js +45612 -708
  3. package/dist/esm/ob.react.min.css +24 -1
  4. package/dist/esm/ob.react.min.css.map +3 -3
  5. package/dist/esm/ob.react.min.js +253 -1
  6. package/dist/esm/ob.react.min.js.map +4 -4
  7. package/dist/iife/ob.react.css +1189 -27
  8. package/dist/iife/ob.react.js +45625 -720
  9. package/dist/iife/ob.react.min.css +24 -1
  10. package/dist/iife/ob.react.min.css.map +3 -3
  11. package/dist/iife/ob.react.min.js +253 -1
  12. package/dist/iife/ob.react.min.js.map +4 -4
  13. package/dist/styles/styles.css +1 -1
  14. package/dist/styles/styles.css.map +1 -1
  15. package/{src → es/components}/ColorCard/index.css +10 -6
  16. package/es/{DateNavigator → components/DateNavigator}/index.js +2 -0
  17. package/es/components/FilePond.d.ts +44 -0
  18. package/es/components/FilePond.js +205 -0
  19. package/es/{PageBanner → components/PageBanner}/index.js +0 -1
  20. package/es/{Sidebar → components/Sidebar}/index.d.ts +2 -2
  21. package/es/{SplitContainer → components/SplitContainer}/index.js +3 -3
  22. package/es/{ValueToggleGroup → components/ValueToggleGroup}/index.css +18 -16
  23. package/es/{ValueToggleGroup → components/ValueToggleGroup}/index.js +4 -2
  24. package/es/elements/ElementDamage/DamageFormButtons.d.ts +9 -0
  25. package/es/elements/ElementDamage/DamageFormButtons.js +7 -0
  26. package/es/elements/ElementDamage/DescriptionInput.d.ts +14 -0
  27. package/es/elements/ElementDamage/DescriptionInput.js +44 -0
  28. package/es/elements/ElementDamage/DuplicateDamage/DesktopView.d.ts +7 -0
  29. package/es/elements/ElementDamage/DuplicateDamage/DesktopView.js +16 -0
  30. package/es/elements/ElementDamage/DuplicateDamage/DublicateElementDamageDialog.d.ts +10 -0
  31. package/es/elements/ElementDamage/DuplicateDamage/DublicateElementDamageDialog.js +12 -0
  32. package/es/elements/ElementDamage/DuplicateDamage/PhoneView.d.ts +6 -0
  33. package/es/elements/ElementDamage/DuplicateDamage/PhoneView.js +8 -0
  34. package/es/elements/ElementDamage/DuplicateDamage/index.d.ts +36 -0
  35. package/es/elements/ElementDamage/DuplicateDamage/index.js +40 -0
  36. package/es/elements/ElementDamage/ElementNumberTextField.d.ts +10 -0
  37. package/es/elements/ElementDamage/ElementNumberTextField.js +18 -0
  38. package/es/elements/ElementDamage/HiddenDamageFields.d.ts +6 -0
  39. package/es/elements/ElementDamage/HiddenDamageFields.js +4 -0
  40. package/es/elements/ElementDamage/RegisterFix.d.ts +14 -0
  41. package/es/elements/ElementDamage/RegisterFix.js +45 -0
  42. package/es/elements/ElementDamage/SubmitButtons.d.ts +20 -0
  43. package/es/elements/ElementDamage/SubmitButtons.js +7 -0
  44. package/es/elements/ElementDamage/TransportElementSelect.d.ts +7 -0
  45. package/es/elements/ElementDamage/TransportElementSelect.js +16 -0
  46. package/es/elements/ElementDamage/index.css +3 -0
  47. package/es/elements/ElementLookup.d.ts +20 -0
  48. package/es/elements/ElementLookup.js +30 -0
  49. package/es/elements/ElementLookupDialog/BarcodeScanner/DeadIcon.d.ts +2 -0
  50. package/es/elements/ElementLookupDialog/BarcodeScanner/DeadIcon.js +5 -0
  51. package/es/elements/ElementLookupDialog/BarcodeScanner/Error.d.ts +4 -0
  52. package/es/elements/ElementLookupDialog/BarcodeScanner/Error.js +33 -0
  53. package/es/elements/ElementLookupDialog/BarcodeScanner/index.d.ts +10 -0
  54. package/es/elements/ElementLookupDialog/BarcodeScanner/index.js +37 -0
  55. package/es/elements/ElementLookupDialog/BarcodeScanner/useScanner.d.ts +16 -0
  56. package/es/elements/ElementLookupDialog/BarcodeScanner/useScanner.js +135 -0
  57. package/es/elements/ElementLookupDialog/HIDScanner/index.css +17 -0
  58. package/es/elements/ElementLookupDialog/HIDScanner/index.d.ts +4 -0
  59. package/es/elements/ElementLookupDialog/HIDScanner/index.js +36 -0
  60. package/es/elements/ElementLookupDialog/HIDScanner/useHIDScanner.d.ts +1 -0
  61. package/es/elements/ElementLookupDialog/HIDScanner/useHIDScanner.js +27 -0
  62. package/es/elements/ElementLookupDialog/Manual/ManualForm.d.ts +12 -0
  63. package/es/elements/ElementLookupDialog/Manual/ManualForm.js +48 -0
  64. package/es/elements/ElementLookupDialog/getElement.d.ts +23 -0
  65. package/es/elements/ElementLookupDialog/getElement.js +55 -0
  66. package/es/elements/ElementLookupDialog/index.d.ts +24 -0
  67. package/es/elements/ElementLookupDialog/index.js +97 -0
  68. package/es/elements/ElementLookupDialog/utils/Giai.d.ts +52 -0
  69. package/es/elements/ElementLookupDialog/utils/Giai.js +158 -0
  70. package/es/elements/ElementLookupDialog/utils/beep.d.ts +10 -0
  71. package/es/elements/ElementLookupDialog/utils/beep.js +20 -0
  72. package/es/elements/ProjectSelect.d.ts +23 -0
  73. package/es/elements/ProjectSelect.js +42 -0
  74. package/es/elements/data/dsAttachments.d.ts +15 -0
  75. package/es/elements/data/dsAttachments.js +85 -0
  76. package/es/elements/data/dsCurrentAttachment.d.ts +13 -0
  77. package/es/elements/data/dsCurrentAttachment.js +75 -0
  78. package/es/elements/data/dsDamages.d.ts +25 -0
  79. package/es/elements/data/dsDamages.js +127 -0
  80. package/es/elements/data/dsDamagesDuplicateCheck.d.ts +2 -0
  81. package/es/elements/data/dsDamagesDuplicateCheck.js +3 -0
  82. package/es/elements/data/dsElements.d.ts +8 -0
  83. package/es/elements/data/dsElements.js +47 -0
  84. package/es/elements/data/dsProjects.d.ts +8 -0
  85. package/es/elements/data/dsProjects.js +51 -0
  86. package/es/elements/data/dsReportProjects.d.ts +2 -0
  87. package/es/elements/data/dsReportProjects.js +3 -0
  88. package/es/elements/data/dsTransportElements.d.ts +10 -0
  89. package/es/elements/data/dsTransportElements.js +57 -0
  90. package/es/elements/data/index.d.ts +11 -0
  91. package/es/elements/data/index.js +11 -0
  92. package/es/elements/data/procApproveDamage.d.ts +2 -0
  93. package/es/elements/data/procApproveDamage.js +18 -0
  94. package/es/elements/data/procDeleteAttachment.d.ts +2 -0
  95. package/es/elements/data/procDeleteAttachment.js +18 -0
  96. package/es/elements/data/procDeleteDamage.d.ts +2 -0
  97. package/es/elements/data/procDeleteDamage.js +18 -0
  98. package/es/elements/data/procRemoveDamageFix.d.ts +2 -0
  99. package/es/elements/data/procRemoveDamageFix.js +18 -0
  100. package/es/elements/data/procRestoreAttachments.d.ts +2 -0
  101. package/es/elements/data/procRestoreAttachments.js +18 -0
  102. package/es/elements/index.d.ts +9 -0
  103. package/es/elements/index.js +9 -0
  104. package/es/index.css +1 -1
  105. package/es/index.d.ts +12 -11
  106. package/es/index.js +12 -11
  107. package/package.json +16 -40
  108. package/src/{Checkbox → components/Checkbox}/index.tsx +1 -1
  109. package/{es → src/components}/ColorCard/index.css +10 -6
  110. package/src/{DateNavigator → components/DateNavigator}/index.tsx +2 -0
  111. package/src/components/FilePond.tsx +312 -0
  112. package/src/{LinkedCardList → components/LinkedCardList}/index.scss +1 -1
  113. package/src/{PageBanner → components/PageBanner}/index.scss +1 -1
  114. package/src/{PageBanner → components/PageBanner}/index.tsx +0 -1
  115. package/src/{ProgressBar → components/ProgressBar}/index.scss +1 -1
  116. package/src/{Sidebar → components/Sidebar}/index.tsx +3 -2
  117. package/src/{SplitContainer → components/SplitContainer}/index.tsx +1 -1
  118. package/src/{ValueToggleGroup → components/ValueToggleGroup}/index.css +18 -16
  119. package/src/{ValueToggleGroup → components/ValueToggleGroup}/index.tsx +2 -1
  120. package/src/elements/ElementDamage/DamageFormButtons.tsx +35 -0
  121. package/src/elements/ElementDamage/DescriptionInput.tsx +111 -0
  122. package/src/elements/ElementDamage/DuplicateDamage/DesktopView.tsx +75 -0
  123. package/src/elements/ElementDamage/DuplicateDamage/DublicateElementDamageDialog.tsx +65 -0
  124. package/src/elements/ElementDamage/DuplicateDamage/PhoneView.tsx +42 -0
  125. package/src/elements/ElementDamage/DuplicateDamage/index.tsx +105 -0
  126. package/src/elements/ElementDamage/ElementNumberTextField.tsx +41 -0
  127. package/src/elements/ElementDamage/HiddenDamageFields.tsx +13 -0
  128. package/src/elements/ElementDamage/RegisterFix.tsx +100 -0
  129. package/src/elements/ElementDamage/SubmitButtons.tsx +40 -0
  130. package/src/elements/ElementDamage/TransportElementSelect.tsx +52 -0
  131. package/src/elements/ElementDamage/index.css +3 -0
  132. package/src/elements/ElementLookup.tsx +90 -0
  133. package/src/elements/ElementLookupDialog/BarcodeScanner/DeadIcon.tsx +12 -0
  134. package/src/elements/ElementLookupDialog/BarcodeScanner/Error.tsx +46 -0
  135. package/src/elements/ElementLookupDialog/BarcodeScanner/index.tsx +75 -0
  136. package/src/elements/ElementLookupDialog/BarcodeScanner/useScanner.ts +170 -0
  137. package/src/elements/ElementLookupDialog/HIDScanner/index.css +17 -0
  138. package/src/elements/ElementLookupDialog/HIDScanner/index.tsx +67 -0
  139. package/src/elements/ElementLookupDialog/HIDScanner/useHIDScanner.ts +30 -0
  140. package/src/elements/ElementLookupDialog/Manual/ManualForm.tsx +110 -0
  141. package/src/elements/ElementLookupDialog/getElement.ts +89 -0
  142. package/src/elements/ElementLookupDialog/index.tsx +211 -0
  143. package/src/elements/ElementLookupDialog/utils/Giai.ts +209 -0
  144. package/src/elements/ElementLookupDialog/utils/beep.ts +35 -0
  145. package/src/elements/ProjectSelect.tsx +128 -0
  146. package/src/elements/data/dsAttachments.ts +101 -0
  147. package/src/elements/data/dsCurrentAttachment.ts +89 -0
  148. package/src/elements/data/dsDamages.ts +166 -0
  149. package/src/elements/data/dsDamagesDuplicateCheck.ts +4 -0
  150. package/src/elements/data/dsElements.ts +56 -0
  151. package/src/elements/data/dsProjects.ts +60 -0
  152. package/src/elements/data/dsReportProjects.ts +4 -0
  153. package/src/elements/data/dsTransportElements.ts +68 -0
  154. package/src/elements/data/index.ts +11 -0
  155. package/src/elements/data/procApproveDamage.ts +19 -0
  156. package/src/elements/data/procDeleteAttachment.ts +19 -0
  157. package/src/elements/data/procDeleteDamage.ts +19 -0
  158. package/src/elements/data/procRemoveDamageFix.ts +19 -0
  159. package/src/elements/data/procRestoreAttachments.ts +19 -0
  160. package/src/elements/index.ts +9 -0
  161. package/src/index.scss +10 -10
  162. package/src/index.ts +13 -13
  163. /package/es/{Checkbox → components/Checkbox}/index.css +0 -0
  164. /package/es/{Checkbox → components/Checkbox}/index.d.ts +0 -0
  165. /package/es/{Checkbox → components/Checkbox}/index.js +0 -0
  166. /package/es/{ColorCard → components/ColorCard}/index.d.ts +0 -0
  167. /package/es/{ColorCard → components/ColorCard}/index.js +0 -0
  168. /package/es/{DateNavigator → components/DateNavigator}/index.css +0 -0
  169. /package/es/{DateNavigator → components/DateNavigator}/index.d.ts +0 -0
  170. /package/es/{LinkedCardList → components/LinkedCardList}/index.css +0 -0
  171. /package/es/{LinkedCardList → components/LinkedCardList}/index.d.ts +0 -0
  172. /package/es/{LinkedCardList → components/LinkedCardList}/index.js +0 -0
  173. /package/es/{PageBanner → components/PageBanner}/index.css +0 -0
  174. /package/es/{PageBanner → components/PageBanner}/index.d.ts +0 -0
  175. /package/es/{Portal → components/Portal}/index.d.ts +0 -0
  176. /package/es/{Portal → components/Portal}/index.js +0 -0
  177. /package/es/{ProgressBar → components/ProgressBar}/index.css +0 -0
  178. /package/es/{ProgressBar → components/ProgressBar}/index.d.ts +0 -0
  179. /package/es/{ProgressBar → components/ProgressBar}/index.js +0 -0
  180. /package/es/{Sidebar → components/Sidebar}/index.css +0 -0
  181. /package/es/{Sidebar → components/Sidebar}/index.js +0 -0
  182. /package/es/{Spinner → components/Spinner}/index.css +0 -0
  183. /package/es/{Spinner → components/Spinner}/index.d.ts +0 -0
  184. /package/es/{Spinner → components/Spinner}/index.js +0 -0
  185. /package/es/{SplitContainer → components/SplitContainer}/index.css +0 -0
  186. /package/es/{SplitContainer → components/SplitContainer}/index.d.ts +0 -0
  187. /package/es/{ValueToggleGroup → components/ValueToggleGroup}/index.d.ts +0 -0
  188. /package/src/{Checkbox → components/Checkbox}/index.scss +0 -0
  189. /package/src/{ColorCard → components/ColorCard}/index.tsx +0 -0
  190. /package/src/{DateNavigator → components/DateNavigator}/index.css +0 -0
  191. /package/src/{LinkedCardList → components/LinkedCardList}/index.tsx +0 -0
  192. /package/src/{Portal → components/Portal}/index.tsx +0 -0
  193. /package/src/{ProgressBar → components/ProgressBar}/index.tsx +0 -0
  194. /package/src/{Sidebar → components/Sidebar}/index.scss +0 -0
  195. /package/src/{Spinner → components/Spinner}/index.css +0 -0
  196. /package/src/{Spinner → components/Spinner}/index.tsx +0 -0
  197. /package/src/{SplitContainer → components/SplitContainer}/index.scss +0 -0
@@ -0,0 +1,128 @@
1
+ import { Autocomplete, ListItem, ListItemText, type SxProps, TextField, type Theme } from "@mui/material";
2
+ import { getLocalizedString } from "@olenbetong/appframe-core";
3
+ import { useDataWithFilter, useDebounce } from "@olenbetong/appframe-react";
4
+ import { useMemo, useRef, useState } from "react";
5
+ import { dsProjects, type ProjectsRecord } from "./data/dsProjects";
6
+ import { dsReportProjects } from "./data/dsReportProjects";
7
+
8
+ type ProjectSelectProps = {
9
+ className?: string;
10
+ disabled?: boolean;
11
+ id?: string;
12
+ names?: {
13
+ domain?: string;
14
+ projectId?: string;
15
+ name?: string;
16
+ };
17
+ nullable?: boolean;
18
+ readOnly?: boolean;
19
+ required?: boolean;
20
+ onChange?: (project: Partial<ProjectsRecord> | null) => void;
21
+ defaultValue?: Partial<ProjectsRecord> | null;
22
+ value?: Partial<ProjectsRecord> | null;
23
+ label?: string;
24
+ sx?: SxProps<Theme> | undefined;
25
+ report?: boolean;
26
+ };
27
+
28
+ export function ProjectSelect({
29
+ className,
30
+ disabled,
31
+ id,
32
+ names,
33
+ onChange,
34
+ readOnly,
35
+ required,
36
+ defaultValue,
37
+ value,
38
+ label,
39
+ sx,
40
+ report,
41
+ }: ProjectSelectProps) {
42
+ let [selected, setSelected] = useState<Partial<ProjectsRecord | null>>(defaultValue ?? null);
43
+ let [query, setQuery] = useState("");
44
+ let search = useDebounce(query);
45
+ let projects = useDataWithFilter(
46
+ report ? dsReportProjects : dsProjects,
47
+ search ? `[SearchColumn] LIKE '%${search}%'` : "",
48
+ );
49
+
50
+ let highlightRef = useRef<Partial<ProjectsRecord | null>>(null);
51
+
52
+ function handleSelect(value: Partial<ProjectsRecord> | null) {
53
+ highlightRef.current = null;
54
+
55
+ if (!disabled && !readOnly) {
56
+ if (onChange) {
57
+ onChange(value);
58
+ } else {
59
+ setSelected(value);
60
+ }
61
+ }
62
+ }
63
+
64
+ let current = value === undefined ? selected : value;
65
+
66
+ const duplicatedNames = useMemo(() => {
67
+ const nameCount = new Map<string, number>();
68
+ projects.forEach((opt) => {
69
+ nameCount.set(opt.ProjectName, (nameCount.get(opt.ProjectName) || 0) + 1);
70
+ });
71
+
72
+ return new Set([...nameCount.entries()].filter(([, count]) => count > 1).map(([name]) => name));
73
+ }, [projects]);
74
+
75
+ return (
76
+ <>
77
+ <Autocomplete<Partial<ProjectsRecord>>
78
+ sx={sx}
79
+ autoHighlight
80
+ autoSelect
81
+ clearOnEscape
82
+ className={className}
83
+ options={projects}
84
+ disabled={disabled}
85
+ getOptionLabel={(option) =>
86
+ option?.ProjectID !== undefined ? `${option.ProjectID}: ${option.ProjectName}` : ""
87
+ }
88
+ isOptionEqualToValue={(option, value) => option.Domain === value.Domain && option.ProjectID === value.ProjectID}
89
+ onChange={(_, value) => handleSelect(value)}
90
+ onClose={() => setQuery("")}
91
+ value={value !== undefined ? value : selected}
92
+ renderInput={(params) => (
93
+ <TextField
94
+ {...(params as any)}
95
+ label={label ? label : getLocalizedString("Project ID")}
96
+ id={id ?? "ProjectLookup"}
97
+ fullWidth
98
+ slotProps={{
99
+ htmlInput: {
100
+ readOnly,
101
+ ...params.inputProps,
102
+ },
103
+ }}
104
+ autoComplete="off"
105
+ variant="filled"
106
+ required={required}
107
+ onChange={(evt) => setQuery(evt.target.value)}
108
+ value={query}
109
+ />
110
+ )}
111
+ renderOption={(props, option) => {
112
+ let isDuplicated = option.ProjectName && duplicatedNames.has(option.ProjectName);
113
+ return (
114
+ <ListItem {...props}>
115
+ <ListItemText
116
+ primary={isDuplicated ? `${option.ProjectName} (${option.Domain})` : option.ProjectName}
117
+ secondary={option.ProjectID}
118
+ />
119
+ </ListItem>
120
+ );
121
+ }}
122
+ />
123
+ <input name={names?.domain ?? "Domain"} type="hidden" value={current?.Domain ?? ""} />
124
+ <input name={names?.name ?? "ProjectName"} type="hidden" value={current?.ProjectName ?? ""} />
125
+ <input name={names?.projectId ?? "ProjectID"} type="hidden" value={current?.ProjectID ?? ""} />
126
+ </>
127
+ );
128
+ }
@@ -0,0 +1,101 @@
1
+ /*
2
+ auto-generated by CLI:
3
+ af resources generate atbv_Production_ElementsAttachments \
4
+ --id dsAttachments \
5
+ --unique atbv_Production_ElementsAttachments \
6
+ --types \
7
+ --max-records 100 \
8
+ --permissions IUD \
9
+ --fields PrimKey,Domain,FileName,FileSize,FileRef,ProjectID,ElementID,Title,ElementRef,Damage,DamageID,ElementNumber
10
+ */
11
+ import { generateApiDataObject } from "@olenbetong/appframe-data";
12
+
13
+ export type AttachmentsRecord = {
14
+ PrimKey: string;
15
+ Domain: string;
16
+ FileName: string | null;
17
+ FileSize: number | null;
18
+ FileRef: string | null;
19
+ ProjectID: string | null;
20
+ ElementID: string | null;
21
+ Title: string | null;
22
+ ElementRef: string | null;
23
+ Damage: boolean;
24
+ DamageID: number | null;
25
+ ElementNumber: string | null;
26
+ };
27
+
28
+ export const dsAttachments = generateApiDataObject<AttachmentsRecord>({
29
+ resource: "atbv_Production_ElementsAttachments",
30
+ uniqueName: "atbv_Production_ElementsAttachments",
31
+ id: "dsAttachments",
32
+ allowUpdate: true,
33
+ allowInsert: true,
34
+ allowDelete: true,
35
+ dynamicLoading: false,
36
+ fields: [
37
+ {
38
+ name: "PrimKey",
39
+ type: "string",
40
+ nullable: false,
41
+ },
42
+ {
43
+ name: "Domain",
44
+ type: "string",
45
+ nullable: false,
46
+ },
47
+ {
48
+ name: "FileName",
49
+ type: "string",
50
+ nullable: true,
51
+ },
52
+ {
53
+ name: "FileSize",
54
+ type: "number",
55
+ nullable: true,
56
+ },
57
+ {
58
+ name: "FileRef",
59
+ type: "string",
60
+ nullable: true,
61
+ },
62
+ {
63
+ name: "ProjectID",
64
+ type: "string",
65
+ nullable: true,
66
+ },
67
+ {
68
+ name: "ElementID",
69
+ type: "string",
70
+ nullable: true,
71
+ },
72
+ {
73
+ name: "Title",
74
+ type: "string",
75
+ nullable: true,
76
+ },
77
+ {
78
+ name: "ElementRef",
79
+ type: "string",
80
+ nullable: true,
81
+ },
82
+ {
83
+ name: "Damage",
84
+ type: "boolean",
85
+ nullable: false,
86
+ },
87
+ {
88
+ name: "DamageID",
89
+ type: "number",
90
+ nullable: true,
91
+ },
92
+ {
93
+ name: "ElementNumber",
94
+ type: "string",
95
+ nullable: true,
96
+ },
97
+ ],
98
+ parameters: {
99
+ maxRecords: 100,
100
+ },
101
+ });
@@ -0,0 +1,89 @@
1
+ /*
2
+ auto-generated by CLI:
3
+ af resources generate atbv_Production_ElementsAttachments \
4
+ --id dsCurrentAttachment \
5
+ --unique atbv_Production_ElementsAttachments \
6
+ --types \
7
+ --max-records 100 \
8
+ --permissions IUD \
9
+ --fields PrimKey,Domain,FileName,FileSize,FileRef,ProjectID,ElementID,ElementRef,Damage,DamageID
10
+ */
11
+ import { generateApiDataObject } from "@olenbetong/appframe-data";
12
+
13
+ export type CurrentAttachmentRecord = {
14
+ PrimKey: string;
15
+ Domain: string;
16
+ FileName: string | null;
17
+ FileSize: number | null;
18
+ FileRef: string | null;
19
+ ProjectID: string | null;
20
+ ElementID: string | null;
21
+ ElementRef: string | null;
22
+ Damage: boolean;
23
+ DamageID: number | null;
24
+ };
25
+
26
+ export const dsCurrentAttachment = generateApiDataObject<CurrentAttachmentRecord>({
27
+ resource: "atbv_Production_ElementsAttachments",
28
+ uniqueName: "atbv_Production_ElementsAttachments",
29
+ id: "dsCurrentAttachment",
30
+ allowUpdate: true,
31
+ allowInsert: true,
32
+ allowDelete: true,
33
+ dynamicLoading: false,
34
+ fields: [
35
+ {
36
+ name: "PrimKey",
37
+ type: "string",
38
+ nullable: false,
39
+ },
40
+ {
41
+ name: "Domain",
42
+ type: "string",
43
+ nullable: false,
44
+ },
45
+ {
46
+ name: "FileName",
47
+ type: "string",
48
+ nullable: true,
49
+ },
50
+ {
51
+ name: "FileSize",
52
+ type: "number",
53
+ nullable: true,
54
+ },
55
+ {
56
+ name: "FileRef",
57
+ type: "string",
58
+ nullable: true,
59
+ },
60
+ {
61
+ name: "ProjectID",
62
+ type: "string",
63
+ nullable: true,
64
+ },
65
+ {
66
+ name: "ElementID",
67
+ type: "string",
68
+ nullable: true,
69
+ },
70
+ {
71
+ name: "ElementRef",
72
+ type: "string",
73
+ nullable: true,
74
+ },
75
+ {
76
+ name: "Damage",
77
+ type: "boolean",
78
+ nullable: false,
79
+ },
80
+ {
81
+ name: "DamageID",
82
+ type: "number",
83
+ nullable: true,
84
+ },
85
+ ],
86
+ parameters: {
87
+ maxRecords: 100,
88
+ },
89
+ });
@@ -0,0 +1,166 @@
1
+ import { expose } from "@olenbetong/appframe-core";
2
+ import { generateApiDataObject } from "@olenbetong/appframe-data";
3
+
4
+ /*
5
+ auto-generated by CLI:
6
+ af resources generate aviw_Production_ElementsDamages \
7
+ --id dsDamages \
8
+ --unique atbx_Production_ElementsDamages \
9
+ --global \
10
+ --types \
11
+ --max-records 100 \
12
+ --permissions IUD \
13
+ --expose \
14
+ --dynamic
15
+ */
16
+ export type DamagesRecord = {
17
+ PrimKey: string;
18
+ Created: Date;
19
+ CreatedBy: string;
20
+ Updated: Date;
21
+ UpdatedBy: string;
22
+ Domain: string;
23
+ ProjectID: string;
24
+ ProjectName: string;
25
+ ElementID: string | null;
26
+ ElementNumber: string | null;
27
+ Name: string | null;
28
+ DisplayName: string | null;
29
+ ID: number;
30
+ Date: Date;
31
+ Description: string | null;
32
+ Action: string | null;
33
+ RegisteredFix: Date | null;
34
+ RegisteredFixBy: string | null;
35
+ RegisteredFixFullName: string | null;
36
+ Cause: string | null;
37
+ SearchColumn: string;
38
+ ElementRef: string | null;
39
+ };
40
+
41
+ export const dsDamages = generateApiDataObject<DamagesRecord>({
42
+ resource: "aviw_Production_ElementsDamages",
43
+ uniqueName: "atbx_Production_ElementsDamages",
44
+ id: "dsDamages",
45
+ allowUpdate: true,
46
+ allowInsert: true,
47
+ allowDelete: true,
48
+ dynamicLoading: true,
49
+ fields: [
50
+ {
51
+ name: "PrimKey",
52
+ type: "string",
53
+ nullable: false,
54
+ },
55
+ {
56
+ name: "Created",
57
+ type: "datetime",
58
+ nullable: false,
59
+ },
60
+ {
61
+ name: "CreatedBy",
62
+ type: "string",
63
+ nullable: false,
64
+ },
65
+ {
66
+ name: "Updated",
67
+ type: "datetime",
68
+ nullable: false,
69
+ },
70
+ {
71
+ name: "UpdatedBy",
72
+ type: "string",
73
+ nullable: false,
74
+ },
75
+ {
76
+ name: "Domain",
77
+ type: "string",
78
+ nullable: false,
79
+ },
80
+ {
81
+ name: "ProjectID",
82
+ type: "string",
83
+ nullable: false,
84
+ },
85
+ {
86
+ name: "ProjectName",
87
+ type: "string",
88
+ nullable: false,
89
+ },
90
+ {
91
+ name: "ElementID",
92
+ type: "string",
93
+ nullable: true,
94
+ },
95
+ {
96
+ name: "ElementNumber",
97
+ type: "string",
98
+ nullable: true,
99
+ },
100
+ {
101
+ name: "Name",
102
+ type: "string",
103
+ nullable: true,
104
+ },
105
+ {
106
+ name: "DisplayName",
107
+ type: "string",
108
+ nullable: true,
109
+ },
110
+ {
111
+ name: "ID",
112
+ type: "number",
113
+ nullable: false,
114
+ },
115
+ {
116
+ name: "Date",
117
+ type: "date",
118
+ nullable: false,
119
+ },
120
+ {
121
+ name: "Description",
122
+ type: "string",
123
+ nullable: true,
124
+ },
125
+ {
126
+ name: "Action",
127
+ type: "string",
128
+ nullable: true,
129
+ },
130
+ {
131
+ name: "RegisteredFix",
132
+ type: "datetime",
133
+ nullable: true,
134
+ },
135
+ {
136
+ name: "RegisteredFixBy",
137
+ type: "string",
138
+ nullable: true,
139
+ },
140
+ {
141
+ name: "RegisteredFixFullName",
142
+ type: "string",
143
+ nullable: true,
144
+ },
145
+ {
146
+ name: "Cause",
147
+ type: "string",
148
+ nullable: true,
149
+ },
150
+ {
151
+ name: "SearchColumn",
152
+ type: "string",
153
+ nullable: false,
154
+ },
155
+ {
156
+ name: "ElementRef",
157
+ type: "string",
158
+ nullable: true,
159
+ },
160
+ ],
161
+ parameters: {
162
+ maxRecords: 100,
163
+ },
164
+ });
165
+
166
+ expose("af.article.dataObjects.dsDamages", dsDamages, { overwrite: true });
@@ -0,0 +1,4 @@
1
+ import { DataObject } from "@olenbetong/appframe-data";
2
+ import { dsDamages } from "./dsDamages";
3
+
4
+ export let dsDamagesDuplicateCheck = new DataObject({ ...dsDamages.options });
@@ -0,0 +1,56 @@
1
+ /*
2
+ auto-generated by CLI:
3
+ af resources generate aviw_Production_Elements_All \
4
+ --id dsElements \
5
+ --types \
6
+ --max-records 100 \
7
+ --fields PrimKey,ProjectID,ElementID,ProjectName,Name
8
+ */
9
+ import { generateApiDataObject } from "@olenbetong/appframe-data";
10
+
11
+ export type ElementsRecord = {
12
+ PrimKey: string;
13
+ ProjectID: string;
14
+ ProjectName: string;
15
+ ElementID: string | null;
16
+ Name: string | null;
17
+ };
18
+
19
+ export const dsElements = generateApiDataObject<ElementsRecord>({
20
+ resource: "aviw_Production_Elements_All",
21
+ id: "dsElements",
22
+ allowUpdate: false,
23
+ allowInsert: false,
24
+ allowDelete: false,
25
+ dynamicLoading: false,
26
+ fields: [
27
+ {
28
+ name: "PrimKey",
29
+ type: "string",
30
+ nullable: false,
31
+ },
32
+ {
33
+ name: "ProjectID",
34
+ type: "string",
35
+ nullable: false,
36
+ },
37
+ {
38
+ name: "ProjectName",
39
+ type: "string",
40
+ nullable: false,
41
+ },
42
+ {
43
+ name: "ElementID",
44
+ type: "string",
45
+ nullable: true,
46
+ },
47
+ {
48
+ name: "Name",
49
+ type: "string",
50
+ nullable: true,
51
+ },
52
+ ],
53
+ parameters: {
54
+ maxRecords: 100,
55
+ },
56
+ });
@@ -0,0 +1,60 @@
1
+ /*
2
+ auto-generated by CLI:
3
+ af resources generate atbx_Accounting_Projects \
4
+ --id dsProjects \
5
+ --types \
6
+ --max-records 100 \
7
+ --sort-order Created:DESC,ProjectID:ASC,Domain:ASC \
8
+ --where "Category=2" \
9
+ --fields PrimKey,Created,Domain,ProjectID,ProjectName
10
+ */
11
+ import { generateApiDataObject, SortOrder } from "@olenbetong/appframe-data";
12
+
13
+ export type ProjectsRecord = {
14
+ PrimKey: string;
15
+ Created: Date;
16
+ Domain: string;
17
+ ProjectID: string;
18
+ ProjectName: string;
19
+ };
20
+
21
+ export const dsProjects = generateApiDataObject<ProjectsRecord>({
22
+ resource: "atbx_Accounting_Projects",
23
+ id: "dsProjects",
24
+ allowUpdate: false,
25
+ allowInsert: false,
26
+ allowDelete: false,
27
+ dynamicLoading: false,
28
+ fields: [
29
+ {
30
+ name: "PrimKey",
31
+ type: "string",
32
+ nullable: false,
33
+ },
34
+ {
35
+ name: "Created",
36
+ type: "datetime",
37
+ nullable: false,
38
+ },
39
+ {
40
+ name: "Domain",
41
+ type: "string",
42
+ nullable: false,
43
+ },
44
+ {
45
+ name: "ProjectID",
46
+ type: "string",
47
+ nullable: false,
48
+ },
49
+ {
50
+ name: "ProjectName",
51
+ type: "string",
52
+ nullable: false,
53
+ },
54
+ ],
55
+ parameters: {
56
+ maxRecords: 100,
57
+ sortOrder: [{ Created: SortOrder.Desc }, { ProjectID: SortOrder.Asc }, { Domain: SortOrder.Asc }],
58
+ whereClause: "Category=2",
59
+ },
60
+ });
@@ -0,0 +1,4 @@
1
+ import { DataObject } from "@olenbetong/appframe-data";
2
+ import { dsProjects } from "./dsProjects";
3
+
4
+ export let dsReportProjects = new DataObject({ ...dsProjects.options });
@@ -0,0 +1,68 @@
1
+ /*
2
+ auto-generated by CLI:
3
+ af resources generate aviw_Fleet_DeliveryTickets_Elements \
4
+ --id dsTransportElements \
5
+ --types \
6
+ --max-records 100 \
7
+ --fields PrimKey,DeliveryTicketID,ProjectID,ProjectName,ElementID,Name,Domain
8
+ */
9
+ import { generateApiDataObject } from "@olenbetong/appframe-data";
10
+
11
+ export type TransportElementsRecord = {
12
+ PrimKey: string;
13
+ DeliveryTicketID: number;
14
+ Domain: string;
15
+ ProjectID: string;
16
+ ProjectName: string;
17
+ ElementID: string | null;
18
+ Name: string | null;
19
+ };
20
+
21
+ export const dsTransportElements = generateApiDataObject<TransportElementsRecord>({
22
+ resource: "aviw_Fleet_DeliveryTickets_Elements",
23
+ id: "dsTransportElements",
24
+ allowUpdate: false,
25
+ allowInsert: false,
26
+ allowDelete: false,
27
+ dynamicLoading: false,
28
+ fields: [
29
+ {
30
+ name: "PrimKey",
31
+ type: "string",
32
+ nullable: false,
33
+ },
34
+ {
35
+ name: "DeliveryTicketID",
36
+ type: "number",
37
+ nullable: false,
38
+ },
39
+ {
40
+ name: "Domain",
41
+ type: "string",
42
+ nullable: false,
43
+ },
44
+ {
45
+ name: "ProjectID",
46
+ type: "string",
47
+ nullable: false,
48
+ },
49
+ {
50
+ name: "ProjectName",
51
+ type: "string",
52
+ nullable: false,
53
+ },
54
+ {
55
+ name: "ElementID",
56
+ type: "string",
57
+ nullable: true,
58
+ },
59
+ {
60
+ name: "Name",
61
+ type: "string",
62
+ nullable: true,
63
+ },
64
+ ],
65
+ parameters: {
66
+ maxRecords: 100,
67
+ },
68
+ });
@@ -0,0 +1,11 @@
1
+ export * from "./dsAttachments.js";
2
+ export * from "./dsCurrentAttachment.js";
3
+ export * from "./dsDamages.js";
4
+ export * from "./dsDamagesDuplicateCheck.js";
5
+ export * from "./dsElements.js";
6
+ export * from "./dsProjects.js";
7
+ export * from "./procApproveDamage.js";
8
+ export * from "./procDeleteAttachment.js";
9
+ export * from "./procDeleteDamage.js";
10
+ export * from "./procRemoveDamageFix.js";
11
+ export * from "./procRestoreAttachments.js";
@@ -0,0 +1,19 @@
1
+ /*
2
+ auto-generated by CLI:
3
+ af resources generate astp_Production_Elements_ApproveDamage \
4
+ --id procApproveDamage
5
+ */
6
+ import { ProcedureAPI } from "@olenbetong/appframe-data";
7
+
8
+ export const procApproveDamage = new ProcedureAPI({
9
+ procedureId: "astp_Production_Elements_ApproveDamage",
10
+ parameters: [
11
+ {
12
+ name: "ID",
13
+ type: "number",
14
+ hasDefault: false,
15
+ required: false,
16
+ },
17
+ ],
18
+ timeout: 30000,
19
+ });