case-editor-tools 1.0.0-beta.43 → 1.0.0-beta.46
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/exporter/index.js +29 -0
- package/exporter/index.js.map +1 -1
- package/expression-utils/studyEngineExpressions.d.ts +4 -2
- package/expression-utils/studyEngineExpressions.js +10 -0
- package/expression-utils/studyEngineExpressions.js.map +1 -1
- package/package.json +1 -1
- package/types/messageConfig.d.ts +50 -0
- package/types/messageConfig.js +23 -0
- package/types/messageConfig.js.map +1 -0
- package/types/study.d.ts +2 -0
package/exporter/index.js
CHANGED
|
@@ -4,6 +4,8 @@ Object.defineProperty(exports, '__esModule', { value: true });
|
|
|
4
4
|
|
|
5
5
|
var fs = require('fs');
|
|
6
6
|
var logger_logger = require('../logger/logger.js');
|
|
7
|
+
var types_messageConfig = require('../types/messageConfig.js');
|
|
8
|
+
require('../types/duration.js');
|
|
7
9
|
|
|
8
10
|
function _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }
|
|
9
11
|
|
|
@@ -22,6 +24,8 @@ const generateFilesForStudy = (study, pretty) => {
|
|
|
22
24
|
generateStudyRuleFile(study, outputRoot, pretty);
|
|
23
25
|
// Custom Study rules: (manually triggered rules)
|
|
24
26
|
generateCustomStudyRules(study, outputRoot, pretty);
|
|
27
|
+
// Message configs:
|
|
28
|
+
generateMessageConfigs(study, outputRoot, pretty);
|
|
25
29
|
};
|
|
26
30
|
const generateSurveyFiles = (study, outputPath, pretty) => {
|
|
27
31
|
if (study.surveys.length > 0) {
|
|
@@ -93,6 +97,31 @@ const generateCustomStudyRules = (study, outputPath, pretty) => {
|
|
|
93
97
|
}
|
|
94
98
|
logger_logger.Logger.success(`\t\tRule ${studyRule.name} saved`);
|
|
95
99
|
});
|
|
100
|
+
};
|
|
101
|
+
const generateMessageConfigs = (study, outputPath, pretty) => {
|
|
102
|
+
if (!study.messageConfigs || study.messageConfigs.length < 1) {
|
|
103
|
+
logger_logger.Logger.log(`\tNo message configs in the study.`);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
else {
|
|
107
|
+
logger_logger.Logger.log(`\tMessage configs:`);
|
|
108
|
+
}
|
|
109
|
+
const messageConfigPath = `${outputPath}/messageConfigs`;
|
|
110
|
+
if (!fs__default["default"].existsSync(messageConfigPath)) {
|
|
111
|
+
fs__default["default"].mkdirSync(messageConfigPath, { recursive: true });
|
|
112
|
+
}
|
|
113
|
+
study.messageConfigs.forEach(conf => {
|
|
114
|
+
const fileName = `${messageConfigPath}/${conf.label.replace(' ', '_').toLocaleLowerCase()}.json`;
|
|
115
|
+
const outputObject = types_messageConfig.buildMessageConfig(conf);
|
|
116
|
+
try {
|
|
117
|
+
fs__default["default"].writeFileSync(fileName, JSON.stringify(outputObject, undefined, pretty ? 2 : undefined));
|
|
118
|
+
}
|
|
119
|
+
catch (err) {
|
|
120
|
+
logger_logger.Logger.error(err);
|
|
121
|
+
return;
|
|
122
|
+
}
|
|
123
|
+
logger_logger.Logger.success(`\t\tConfig for "${conf.label}" saved`);
|
|
124
|
+
});
|
|
96
125
|
};
|
|
97
126
|
|
|
98
127
|
exports.generateFilesForStudy = generateFilesForStudy;
|
package/exporter/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -7,6 +7,7 @@ export declare const NativeStudyEngineExpressions: {
|
|
|
7
7
|
responseHasOnlyKeysOtherThan: (itemKey: string, responseSlotKey: string, ...optionKeys: string[]) => Expression;
|
|
8
8
|
getResponseValueAsNum: (itemKey: string, responseKey: string) => Expression;
|
|
9
9
|
getResponseValueAsStr: (itemKey: string, responseKey: string) => Expression;
|
|
10
|
+
getSelectedKeys: (itemKey: string, responseKey: string) => Expression;
|
|
10
11
|
hasResponseKey: (itemKey: string, responseKey: string) => Expression;
|
|
11
12
|
hasResponseKeyWithValue: (itemKey: string, responseKey: string, value: string) => Expression;
|
|
12
13
|
countResponseItems: (itemKey: string, responseKey: string) => Expression;
|
|
@@ -64,7 +65,7 @@ export declare const StudyEngineActions: {
|
|
|
64
65
|
reports: {
|
|
65
66
|
init: (reportKey: string) => Expression;
|
|
66
67
|
cancel: (reportKey: string) => Expression;
|
|
67
|
-
updateData: (reportKey: string, attributeKey: string, value: number | string | Expression, dtype?: "string" | "date" | "float" | "int" | "rawMessage" | undefined) => Expression;
|
|
68
|
+
updateData: (reportKey: string, attributeKey: string, value: number | string | Expression, dtype?: "string" | "date" | "float" | "int" | "rawMessage" | "keyList" | undefined) => Expression;
|
|
68
69
|
removeData: (reportKey: string, attributeKey: string) => Expression;
|
|
69
70
|
setReportIcon: (reportKey: string, icon: string) => Expression;
|
|
70
71
|
setReportMessage: (reportKey: string, content: string, asTranslationKey?: boolean | undefined) => Expression;
|
|
@@ -127,7 +128,7 @@ export declare const StudyEngine: {
|
|
|
127
128
|
reports: {
|
|
128
129
|
init: (reportKey: string) => Expression;
|
|
129
130
|
cancel: (reportKey: string) => Expression;
|
|
130
|
-
updateData: (reportKey: string, attributeKey: string, value: number | string | Expression, dtype?: "string" | "date" | "float" | "int" | "rawMessage" | undefined) => Expression;
|
|
131
|
+
updateData: (reportKey: string, attributeKey: string, value: number | string | Expression, dtype?: "string" | "date" | "float" | "int" | "rawMessage" | "keyList" | undefined) => Expression;
|
|
131
132
|
removeData: (reportKey: string, attributeKey: string) => Expression;
|
|
132
133
|
setReportIcon: (reportKey: string, icon: string) => Expression;
|
|
133
134
|
setReportMessage: (reportKey: string, content: string, asTranslationKey?: boolean | undefined) => Expression;
|
|
@@ -151,6 +152,7 @@ export declare const StudyEngine: {
|
|
|
151
152
|
responseHasOnlyKeysOtherThan: (itemKey: string, responseSlotKey: string, ...optionKeys: string[]) => Expression;
|
|
152
153
|
getResponseValueAsNum: (itemKey: string, responseKey: string) => Expression;
|
|
153
154
|
getResponseValueAsStr: (itemKey: string, responseKey: string) => Expression;
|
|
155
|
+
getSelectedKeys: (itemKey: string, responseKey: string) => Expression;
|
|
154
156
|
hasResponseKey: (itemKey: string, responseKey: string) => Expression;
|
|
155
157
|
hasResponseKeyWithValue: (itemKey: string, responseKey: string, value: string) => Expression;
|
|
156
158
|
countResponseItems: (itemKey: string, responseKey: string) => Expression;
|
|
@@ -62,6 +62,15 @@ const getResponseValueAsNum = (itemKey, responseKey) => {
|
|
|
62
62
|
const getResponseValueAsStr = (itemKey, responseKey) => {
|
|
63
63
|
return expressionUtils_expressionGen.generateExpression('getResponseValueAsStr', 'string', itemKey, responseKey);
|
|
64
64
|
};
|
|
65
|
+
/**
|
|
66
|
+
* Retrieve the selected keys from a response slot
|
|
67
|
+
* @param itemKey full key to the survey item, in the form, e.g., <surveyKey>.<groupKey>.<itemKey>
|
|
68
|
+
* @param responseKey key of the response slot, where keys should be retrieved from
|
|
69
|
+
* @returns
|
|
70
|
+
*/
|
|
71
|
+
const getSelectedKeys = (itemKey, responseKey) => {
|
|
72
|
+
return expressionUtils_expressionGen.generateExpression('getSelectedKeys', 'string', itemKey, responseKey);
|
|
73
|
+
};
|
|
65
74
|
const countResponseItems = (itemKey, responseKey) => {
|
|
66
75
|
return expressionUtils_expressionGen.generateExpression('countResponseItems', undefined, itemKey, responseKey);
|
|
67
76
|
};
|
|
@@ -357,6 +366,7 @@ const NativeStudyEngineExpressions = {
|
|
|
357
366
|
responseHasOnlyKeysOtherThan,
|
|
358
367
|
getResponseValueAsNum,
|
|
359
368
|
getResponseValueAsStr,
|
|
369
|
+
getSelectedKeys,
|
|
360
370
|
hasResponseKey,
|
|
361
371
|
hasResponseKeyWithValue,
|
|
362
372
|
countResponseItems,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"studyEngineExpressions.js","sources":[],"sourcesContent":[],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"studyEngineExpressions.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "case-editor-tools",
|
|
3
3
|
"description": "Javascript tools to simplify survey and study coding for CASE.",
|
|
4
|
-
"version": "1.0.0-beta.
|
|
4
|
+
"version": "1.0.0-beta.46",
|
|
5
5
|
"main": "index.js",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"repository": "github:case-framework/case-editor-tools",
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Expression } from "survey-engine/data_types";
|
|
2
|
+
import { Duration } from "./duration";
|
|
3
|
+
export declare type MessageType = 'registration' | 'invitation' | 'verify-email' | 'verification-code' | 'password-reset' | 'password-changed' | 'account-id-changed' | 'weekly' | 'study-reminder' | 'newsletter' | 'account-deleted';
|
|
4
|
+
export interface MessageConfig {
|
|
5
|
+
sendTo: 'study-participants' | 'all-users' | 'scheduled-participant-messages';
|
|
6
|
+
studyKey: string;
|
|
7
|
+
label: string;
|
|
8
|
+
headerOverrides?: {
|
|
9
|
+
from: string;
|
|
10
|
+
sender: string;
|
|
11
|
+
replyTo: string[];
|
|
12
|
+
};
|
|
13
|
+
messageType: MessageType;
|
|
14
|
+
sendingTime: {
|
|
15
|
+
hour: number;
|
|
16
|
+
minute: number;
|
|
17
|
+
};
|
|
18
|
+
period: Duration;
|
|
19
|
+
defaultLanguage: string;
|
|
20
|
+
condition: Expression;
|
|
21
|
+
translations: Array<{
|
|
22
|
+
lang: string;
|
|
23
|
+
subject: string;
|
|
24
|
+
}>;
|
|
25
|
+
}
|
|
26
|
+
export declare const buildMessageConfig: (props: MessageConfig) => {
|
|
27
|
+
sendTo: "study-participants" | "all-users" | "scheduled-participant-messages";
|
|
28
|
+
studyKey: string;
|
|
29
|
+
label: string;
|
|
30
|
+
headerOverrides: {
|
|
31
|
+
from: string;
|
|
32
|
+
sender: string;
|
|
33
|
+
replyTo: string[];
|
|
34
|
+
} | undefined;
|
|
35
|
+
messageType: MessageType;
|
|
36
|
+
sendingTime: {
|
|
37
|
+
hour: number;
|
|
38
|
+
minute: number;
|
|
39
|
+
};
|
|
40
|
+
condition: {
|
|
41
|
+
dtype: string;
|
|
42
|
+
exp: Expression;
|
|
43
|
+
};
|
|
44
|
+
period: number;
|
|
45
|
+
defaultLanguage: string;
|
|
46
|
+
translations: {
|
|
47
|
+
lang: string;
|
|
48
|
+
subject: string;
|
|
49
|
+
}[];
|
|
50
|
+
};
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var types_duration = require('./duration.js');
|
|
6
|
+
|
|
7
|
+
const buildMessageConfig = (props) => {
|
|
8
|
+
return {
|
|
9
|
+
sendTo: props.sendTo,
|
|
10
|
+
studyKey: props.studyKey,
|
|
11
|
+
label: props.label,
|
|
12
|
+
headerOverrides: props.headerOverrides,
|
|
13
|
+
messageType: props.messageType,
|
|
14
|
+
sendingTime: props.sendingTime,
|
|
15
|
+
condition: { dtype: 'exp', exp: props.condition },
|
|
16
|
+
period: Math.floor(types_duration.durationObjectToSeconds(props.period)),
|
|
17
|
+
defaultLanguage: props.defaultLanguage,
|
|
18
|
+
translations: props.translations,
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
|
|
22
|
+
exports.buildMessageConfig = buildMessageConfig;
|
|
23
|
+
//# sourceMappingURL=messageConfig.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"messageConfig.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;"}
|
package/types/study.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Expression } from "survey-engine/data_types";
|
|
2
2
|
import { StudyRules } from "./studyRules";
|
|
3
3
|
import { SurveyDefinition } from "../surveys/types/survey-definition";
|
|
4
|
+
import { MessageConfig } from "./messageConfig";
|
|
4
5
|
export interface Study {
|
|
5
6
|
studyKey: string;
|
|
6
7
|
outputFolderName?: string;
|
|
@@ -10,4 +11,5 @@ export interface Study {
|
|
|
10
11
|
name: string;
|
|
11
12
|
rules: Expression[];
|
|
12
13
|
}>;
|
|
14
|
+
messageConfigs?: Array<MessageConfig>;
|
|
13
15
|
}
|