@things-factory/ccp 8.0.0-beta.8 → 8.0.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@things-factory/ccp",
3
- "version": "8.0.0-beta.8",
3
+ "version": "8.0.0",
4
4
  "main": "dist-server/index.js",
5
5
  "browser": "client/index.js",
6
6
  "things-factory": true,
@@ -24,9 +24,9 @@
24
24
  "migration:create": "node ../../node_modules/typeorm/cli.js migration:create ./server/migrations/migration"
25
25
  },
26
26
  "dependencies": {
27
- "@operato/dataset": "^8.0.0-beta",
28
- "@things-factory/dataset": "^8.0.0-beta.8",
29
- "@things-factory/shell": "^8.0.0-beta.5"
27
+ "@operato/dataset": "^8.0.0",
28
+ "@things-factory/dataset": "^8.0.0",
29
+ "@things-factory/shell": "^8.0.0"
30
30
  },
31
- "gitHead": "bf5206511b2d84dfb95edc3dae7f54f6cbb9bcca"
31
+ "gitHead": "07ef27d272dd9a067a9648ac7013748510556a18"
32
32
  }
@@ -0,0 +1,88 @@
1
+ import { DataItemSpecSet, DataUseCase, EvaluationResult } from '@things-factory/dataset'
2
+
3
+ export class DataUseCaseCCP implements DataUseCase {
4
+ getSpecification(): DataItemSpecSet {
5
+ return {
6
+ name: 'CCP',
7
+ description: 'Critical Control Point Data Spec',
8
+ help: '',
9
+ specs: [
10
+ {
11
+ type: 'ccp-limits' /* A value which seperates acceptability from unacceptability */,
12
+ label: 'critical limits',
13
+ name: 'criticalLimits'
14
+ },
15
+ {
16
+ type: 'ccp-limits',
17
+ label: 'target limits',
18
+ name: 'targetLimits'
19
+ }
20
+ ]
21
+ }
22
+ }
23
+
24
+ evaluate(spec: any, values: any | any[]): EvaluationResult {
25
+ if (!spec || values == null) {
26
+ return
27
+ }
28
+
29
+ if (!(values instanceof Array)) {
30
+ values = [values]
31
+ }
32
+
33
+ const {
34
+ minimum: criticalMinimum,
35
+ maximum: criticalMaximum,
36
+ acceptables: criticalAcceptables
37
+ } = spec['criticalLimits'] || {}
38
+
39
+ const {
40
+ minimum: targetMinimum,
41
+ maximum: targetMaximum,
42
+ acceptables: targetAcceptables
43
+ } = spec['targetLimits'] || {}
44
+
45
+ var oos = false
46
+ var ooc = false
47
+
48
+ for (let i = 0; i < values.length; i++) {
49
+ const value = values[i]
50
+
51
+ if (criticalMinimum != null && value < criticalMinimum) {
52
+ oos = true
53
+ break
54
+ }
55
+
56
+ if (criticalMaximum != null && value > criticalMaximum) {
57
+ oos = true
58
+ break
59
+ }
60
+
61
+ if (criticalAcceptables != null && !criticalAcceptables.includes(value)) {
62
+ oos = true
63
+ break
64
+ }
65
+ }
66
+
67
+ for (let i = 0; i < values.length; i++) {
68
+ const value = values[i]
69
+
70
+ if (targetMinimum != null && value < targetMinimum) {
71
+ ooc = true
72
+ break
73
+ }
74
+
75
+ if (targetMaximum != null && value > targetMaximum) {
76
+ ooc = true
77
+ break
78
+ }
79
+
80
+ if (targetAcceptables != null && !targetAcceptables.includes(value)) {
81
+ ooc = true
82
+ break
83
+ }
84
+ }
85
+
86
+ return { oos, ooc }
87
+ }
88
+ }
@@ -0,0 +1 @@
1
+ export * from './data-use-case-ccp'
@@ -0,0 +1,9 @@
1
+ import { DataUseCase } from '@things-factory/dataset'
2
+
3
+ import { DataUseCaseCCP } from './controllers'
4
+
5
+ process.on('bootstrap-module-start' as any, async ({ app, config, schema }: any) => {
6
+ DataUseCase.registerUseCase('CCP', new DataUseCaseCCP())
7
+
8
+ console.log('[ccp:bootstrap] CCP has just registered as a DataUseCase.')
9
+ })
package/tsconfig.json ADDED
@@ -0,0 +1,9 @@
1
+ {
2
+ "extends": "../tsconfig-base.json",
3
+ "compilerOptions": {
4
+ "outDir": "./dist-server",
5
+ "baseUrl": "./"
6
+ },
7
+ "include": ["./server/**/*"],
8
+ "exclude": ["**/*.spec.ts"]
9
+ }