@things-factory/ccp 8.0.0-beta.8 → 8.0.0

Sign up to get free protection for your applications and to get access to all the features.
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
+ }