survery-lib 0.0.6 → 0.1.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/esm2022/lib/survery-lib.component.mjs +42 -161
- package/esm2022/lib/usecases/base/use-case.mjs +2 -0
- package/esm2022/lib/usecases/check-rule-exps.usecase.mjs +154 -0
- package/fesm2022/survery-lib.mjs +208 -177
- package/fesm2022/survery-lib.mjs.map +1 -1
- package/lib/survery-lib.component.d.ts +3 -6
- package/lib/usecases/base/use-case.d.ts +7 -0
- package/lib/usecases/check-rule-exps.usecase.d.ts +21 -0
- package/package.json +1 -1
package/fesm2022/survery-lib.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import * as i0 from '@angular/core';
|
|
2
2
|
import { Injectable, EventEmitter, Component, Output, Input, Pipe, NgModule } from '@angular/core';
|
|
3
|
-
import { Subject, BehaviorSubject, debounceTime, distinctUntilChanged
|
|
3
|
+
import { Subject, of, BehaviorSubject, debounceTime, distinctUntilChanged } from 'rxjs';
|
|
4
4
|
import * as i1 from '@ng-stack/forms';
|
|
5
5
|
import { NgsFormsModule } from '@ng-stack/forms';
|
|
6
6
|
import * as i3 from '@angular/common';
|
|
@@ -20,6 +20,35 @@ var QuestionTypeEnum;
|
|
|
20
20
|
QuestionTypeEnum[QuestionTypeEnum["Matrix"] = 6] = "Matrix";
|
|
21
21
|
})(QuestionTypeEnum || (QuestionTypeEnum = {}));
|
|
22
22
|
|
|
23
|
+
var LogicActionEnum;
|
|
24
|
+
(function (LogicActionEnum) {
|
|
25
|
+
LogicActionEnum[LogicActionEnum["Show"] = 1] = "Show";
|
|
26
|
+
LogicActionEnum[LogicActionEnum["Hide"] = 2] = "Hide";
|
|
27
|
+
LogicActionEnum[LogicActionEnum["Enable"] = 3] = "Enable";
|
|
28
|
+
LogicActionEnum[LogicActionEnum["Disable"] = 4] = "Disable";
|
|
29
|
+
LogicActionEnum[LogicActionEnum["SetAnswer"] = 5] = "SetAnswer";
|
|
30
|
+
})(LogicActionEnum || (LogicActionEnum = {}));
|
|
31
|
+
|
|
32
|
+
class SurveyLibService {
|
|
33
|
+
get surveyDataObsrv() {
|
|
34
|
+
return this.surveyDataSubject.asObservable();
|
|
35
|
+
}
|
|
36
|
+
constructor() {
|
|
37
|
+
this.surveyDataSubject = new Subject();
|
|
38
|
+
}
|
|
39
|
+
setSurveyData(survey) {
|
|
40
|
+
this.surveyDataSubject.next(survey);
|
|
41
|
+
}
|
|
42
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SurveyLibService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
43
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SurveyLibService, providedIn: 'root' }); }
|
|
44
|
+
}
|
|
45
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SurveyLibService, decorators: [{
|
|
46
|
+
type: Injectable,
|
|
47
|
+
args: [{
|
|
48
|
+
providedIn: 'root'
|
|
49
|
+
}]
|
|
50
|
+
}], ctorParameters: function () { return []; } });
|
|
51
|
+
|
|
23
52
|
var LogicPropertyEnum;
|
|
24
53
|
(function (LogicPropertyEnum) {
|
|
25
54
|
LogicPropertyEnum[LogicPropertyEnum["GreaterThan"] = 1] = "GreaterThan";
|
|
@@ -40,34 +69,153 @@ var OperatorEnum;
|
|
|
40
69
|
OperatorEnum[OperatorEnum["And"] = 8] = "And";
|
|
41
70
|
})(OperatorEnum || (OperatorEnum = {}));
|
|
42
71
|
|
|
43
|
-
|
|
44
|
-
(function (LogicActionEnum) {
|
|
45
|
-
LogicActionEnum[LogicActionEnum["Show"] = 1] = "Show";
|
|
46
|
-
LogicActionEnum[LogicActionEnum["Hide"] = 2] = "Hide";
|
|
47
|
-
LogicActionEnum[LogicActionEnum["Enable"] = 3] = "Enable";
|
|
48
|
-
LogicActionEnum[LogicActionEnum["Disable"] = 4] = "Disable";
|
|
49
|
-
LogicActionEnum[LogicActionEnum["SetAnswer"] = 5] = "SetAnswer";
|
|
50
|
-
})(LogicActionEnum || (LogicActionEnum = {}));
|
|
51
|
-
|
|
52
|
-
class SurveyLibService {
|
|
53
|
-
get surveyDataObsrv() {
|
|
54
|
-
return this.surveyDataSubject.asObservable();
|
|
55
|
-
}
|
|
72
|
+
class CheckRuleExpsUsecase {
|
|
56
73
|
constructor() {
|
|
57
|
-
this.surveyDataSubject = new Subject();
|
|
58
74
|
}
|
|
59
|
-
|
|
60
|
-
|
|
75
|
+
execute(params) {
|
|
76
|
+
var useCaseResult = {
|
|
77
|
+
exprestionResultArr: []
|
|
78
|
+
};
|
|
79
|
+
params.ruleExps.forEach(ruleExp => {
|
|
80
|
+
const index = params.questions.findIndex(x => x.questionId == ruleExp.questionId);
|
|
81
|
+
var questionGroupValue = params.questions.at(index);
|
|
82
|
+
var result;
|
|
83
|
+
if (questionGroupValue.questionType == QuestionTypeEnum.TextInput) {
|
|
84
|
+
result = this.checkRuleExpForAnswerText(ruleExp, questionGroupValue.answerText);
|
|
85
|
+
}
|
|
86
|
+
else if (questionGroupValue.questionType == QuestionTypeEnum.CheckBox) {
|
|
87
|
+
result = this.checkRuleExpForAnswerIdArr(ruleExp, questionGroupValue.answerIdArr);
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
result = this.checkRuleExpForAnswerId(ruleExp, questionGroupValue.answerId);
|
|
91
|
+
}
|
|
92
|
+
var answers = ruleExp.ruleExpAnswers.map(x => x.answerId + '-' + x.answerTitle);
|
|
93
|
+
console.log(`Question ${questionGroupValue.questionId} type ${QuestionTypeEnum[questionGroupValue.questionType]} --- ${result == true ? 'passed' : 'not passed'} ---`, ` answers (${answers.join(' , ')}) logic (${LogicPropertyEnum[ruleExp.logicPropertyId]}) operator (${OperatorEnum[ruleExp.opporator]})`);
|
|
94
|
+
useCaseResult.exprestionResultArr.push(result);
|
|
95
|
+
});
|
|
96
|
+
return of(useCaseResult);
|
|
61
97
|
}
|
|
62
|
-
|
|
63
|
-
|
|
98
|
+
checkRuleExpForAnswerId(ruleExp, answerId) {
|
|
99
|
+
var ruleExpResultArr = [];
|
|
100
|
+
if (ruleExp.logicPropertyId == LogicPropertyEnum.GreaterThan) {
|
|
101
|
+
ruleExp.ruleExpAnswers.forEach(answer => {
|
|
102
|
+
var result = answerId > answer.answerId;
|
|
103
|
+
ruleExpResultArr.push(result);
|
|
104
|
+
});
|
|
105
|
+
}
|
|
106
|
+
else if (ruleExp.logicPropertyId == LogicPropertyEnum.GreaterThanOrEqual) {
|
|
107
|
+
ruleExp.ruleExpAnswers.forEach(answer => {
|
|
108
|
+
var result = answerId >= answer.answerId;
|
|
109
|
+
ruleExpResultArr.push(result);
|
|
110
|
+
});
|
|
111
|
+
}
|
|
112
|
+
else if (ruleExp.logicPropertyId == LogicPropertyEnum.LessThan) {
|
|
113
|
+
ruleExp.ruleExpAnswers.forEach(answer => {
|
|
114
|
+
var result = answerId < answer.answerId;
|
|
115
|
+
ruleExpResultArr.push(result);
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
else if (ruleExp.logicPropertyId == LogicPropertyEnum.LessThanOrEqual) {
|
|
119
|
+
ruleExp.ruleExpAnswers.forEach(answer => {
|
|
120
|
+
var result = answerId <= answer.answerId;
|
|
121
|
+
ruleExpResultArr.push(result);
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
else if (ruleExp.logicPropertyId == LogicPropertyEnum.Equal) {
|
|
125
|
+
ruleExp.ruleExpAnswers.forEach(answer => {
|
|
126
|
+
var result = answerId == answer.answerId;
|
|
127
|
+
ruleExpResultArr.push(result);
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
else if (ruleExp.logicPropertyId == LogicPropertyEnum.NotEqual) {
|
|
131
|
+
ruleExp.ruleExpAnswers.forEach(answer => {
|
|
132
|
+
var result = answerId != answer.answerId;
|
|
133
|
+
ruleExpResultArr.push(result);
|
|
134
|
+
});
|
|
135
|
+
}
|
|
136
|
+
else if (ruleExp.logicPropertyId == LogicPropertyEnum.IsEmpty) {
|
|
137
|
+
var result = answerId == null;
|
|
138
|
+
ruleExpResultArr.push(result);
|
|
139
|
+
}
|
|
140
|
+
else if (ruleExp.logicPropertyId == LogicPropertyEnum.IsNotEmpty) {
|
|
141
|
+
var result = answerId != null;
|
|
142
|
+
ruleExpResultArr.push(result);
|
|
143
|
+
}
|
|
144
|
+
else if (ruleExp.logicPropertyId == LogicPropertyEnum.AnyOf) {
|
|
145
|
+
var answerIdArr = ruleExp.ruleExpAnswers.map(x => x.answerId);
|
|
146
|
+
var result = answerIdArr.findIndex(x => x == answerId) > -1;
|
|
147
|
+
ruleExpResultArr.push(result);
|
|
148
|
+
}
|
|
149
|
+
else if (ruleExp.logicPropertyId == LogicPropertyEnum.Then) {
|
|
150
|
+
var answerIdArr = ruleExp.ruleExpAnswers.map(x => x.answerId);
|
|
151
|
+
var result = answerIdArr.findIndex(x => x == answerId) == -1;
|
|
152
|
+
ruleExpResultArr.push(result);
|
|
153
|
+
}
|
|
154
|
+
if (ruleExpResultArr.length == 0) {
|
|
155
|
+
return false;
|
|
156
|
+
}
|
|
157
|
+
else if (ruleExp.ruleExpAnswers.length == 1) {
|
|
158
|
+
return ruleExpResultArr.filter(x => x == true).length > 0;
|
|
159
|
+
}
|
|
160
|
+
else if (ruleExp.opporator == OperatorEnum.Or) {
|
|
161
|
+
return ruleExpResultArr.filter(x => x == true).length > 0;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
return ruleExpResultArr.filter(x => x == false).length == 0;
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
checkRuleExpForAnswerIdArr(ruleExp, answerIdArr) {
|
|
168
|
+
var ruleExpResultArr = [];
|
|
169
|
+
answerIdArr?.forEach(answer => {
|
|
170
|
+
var isResult = this.checkRuleExpForAnswerId(ruleExp, answer);
|
|
171
|
+
ruleExpResultArr.push(isResult);
|
|
172
|
+
});
|
|
173
|
+
if (ruleExpResultArr.length == 0) {
|
|
174
|
+
return false;
|
|
175
|
+
}
|
|
176
|
+
else if (ruleExp.ruleExpAnswers.length == 1) {
|
|
177
|
+
return ruleExpResultArr.filter(x => x == true).length > 0;
|
|
178
|
+
}
|
|
179
|
+
else if (ruleExp.opporator == OperatorEnum.Or) {
|
|
180
|
+
return ruleExpResultArr.filter(x => x == true).length > 0;
|
|
181
|
+
}
|
|
182
|
+
else {
|
|
183
|
+
return ruleExpResultArr.filter(x => x == false).length == 0;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
checkRuleExpForAnswerText(ruleExp, answer) {
|
|
187
|
+
var ruleExpResultArr = [];
|
|
188
|
+
if (ruleExp.logicPropertyId == LogicPropertyEnum.IsEmpty) {
|
|
189
|
+
var result = answer == null || answer == '';
|
|
190
|
+
ruleExpResultArr.push(result);
|
|
191
|
+
}
|
|
192
|
+
else if (ruleExp.logicPropertyId == LogicPropertyEnum.IsNotEmpty) {
|
|
193
|
+
var result = answer != null && answer != '';
|
|
194
|
+
ruleExpResultArr.push(result);
|
|
195
|
+
}
|
|
196
|
+
if (ruleExp.ruleExpAnswers.length == 1) {
|
|
197
|
+
return ruleExpResultArr.filter(x => x == true).length > 0;
|
|
198
|
+
}
|
|
199
|
+
else if (ruleExp.opporator == OperatorEnum.Or) {
|
|
200
|
+
return ruleExpResultArr.filter(x => x == true).length > 0;
|
|
201
|
+
}
|
|
202
|
+
else {
|
|
203
|
+
return ruleExpResultArr.filter(x => x == false).length == 0;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckRuleExpsUsecase, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
|
207
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckRuleExpsUsecase, providedIn: 'root' }); }
|
|
64
208
|
}
|
|
65
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type:
|
|
209
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: CheckRuleExpsUsecase, decorators: [{
|
|
66
210
|
type: Injectable,
|
|
67
211
|
args: [{
|
|
68
212
|
providedIn: 'root'
|
|
69
213
|
}]
|
|
70
214
|
}], ctorParameters: function () { return []; } });
|
|
215
|
+
class CheckRulesUsecaseModel {
|
|
216
|
+
}
|
|
217
|
+
class CheckRulesUsecaseResult {
|
|
218
|
+
}
|
|
71
219
|
|
|
72
220
|
class SharedDataService {
|
|
73
221
|
get submitIdObsrv() {
|
|
@@ -591,10 +739,10 @@ class SurveryLibComponent {
|
|
|
591
739
|
get isLastPage() {
|
|
592
740
|
return this.fCtrls.currentPageIndex.value == (this.surveyData?.surveyPages.length - 1);
|
|
593
741
|
}
|
|
594
|
-
constructor(_surveyLibService, _formBuilder,
|
|
742
|
+
constructor(_surveyLibService, _formBuilder, _checkRuleExpsUsecase) {
|
|
595
743
|
this._surveyLibService = _surveyLibService;
|
|
596
744
|
this._formBuilder = _formBuilder;
|
|
597
|
-
this.
|
|
745
|
+
this._checkRuleExpsUsecase = _checkRuleExpsUsecase;
|
|
598
746
|
this.surveyResultEmit = new EventEmitter();
|
|
599
747
|
this.rForm = this._formBuilder.group({
|
|
600
748
|
currentPageIndex: [0],
|
|
@@ -623,7 +771,8 @@ class SurveryLibComponent {
|
|
|
623
771
|
return of(null);
|
|
624
772
|
}
|
|
625
773
|
else {
|
|
626
|
-
|
|
774
|
+
var questionArr = this.fCtrls.questionArray.value.filter(x => x.isMatrixGroup != true);
|
|
775
|
+
return of(questionArr);
|
|
627
776
|
}
|
|
628
777
|
}
|
|
629
778
|
else {
|
|
@@ -727,7 +876,8 @@ class SurveryLibComponent {
|
|
|
727
876
|
}
|
|
728
877
|
haveInValidateQuestions() {
|
|
729
878
|
const currentPageIndex = this.fCtrls.currentPageIndex.value;
|
|
730
|
-
var invalidRecords = this.
|
|
879
|
+
var invalidRecords = this.fCtrls.questionArray.value.filter(x => x.surveyPageIndex == currentPageIndex && x.isValid != true
|
|
880
|
+
&& x.isDisabled == false && x.isShow == true && x.isMatrixGroup != true);
|
|
731
881
|
if (invalidRecords.length > 0) {
|
|
732
882
|
$(`#survey-page_${currentPageIndex}`).addClass('survey-page_submitted');
|
|
733
883
|
}
|
|
@@ -735,170 +885,51 @@ class SurveryLibComponent {
|
|
|
735
885
|
}
|
|
736
886
|
checkRules() {
|
|
737
887
|
this.surveyData.surveyRules.forEach(rule => {
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
var result;
|
|
743
|
-
if (
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
888
|
+
this._checkRuleExpsUsecase.execute({
|
|
889
|
+
ruleExps: rule.ruleExps,
|
|
890
|
+
questions: this.fCtrls.questionArray.value
|
|
891
|
+
}).subscribe(result => {
|
|
892
|
+
var isPassed = result.exprestionResultArr.filter(x => x == false).length == 0;
|
|
893
|
+
if (isPassed) {
|
|
894
|
+
rule.ruleResultQuestions.forEach(resultQuestion => {
|
|
895
|
+
const index = this.fCtrls.questionArray.value.findIndex(x => x.questionId == resultQuestion.questionId);
|
|
896
|
+
var questionGroup = this.fCtrls.questionArray.at(index);
|
|
897
|
+
if (rule.logicActionId == LogicActionEnum.Show) {
|
|
898
|
+
questionGroup.controls.isShow.setValue(true);
|
|
899
|
+
}
|
|
900
|
+
else if (rule.logicActionId == LogicActionEnum.Hide) {
|
|
901
|
+
questionGroup.controls.isShow.setValue(false);
|
|
902
|
+
}
|
|
903
|
+
else if (rule.logicActionId == LogicActionEnum.Enable) {
|
|
904
|
+
questionGroup.controls.isDisabled.setValue(false);
|
|
905
|
+
}
|
|
906
|
+
else if (rule.logicActionId == LogicActionEnum.Disable) {
|
|
907
|
+
questionGroup.controls.isDisabled.setValue(true);
|
|
908
|
+
}
|
|
909
|
+
else if (rule.logicActionId == LogicActionEnum.SetAnswer) {
|
|
910
|
+
}
|
|
911
|
+
});
|
|
748
912
|
}
|
|
749
913
|
else {
|
|
750
|
-
|
|
751
|
-
|
|
752
|
-
|
|
753
|
-
|
|
754
|
-
|
|
755
|
-
|
|
756
|
-
|
|
757
|
-
const index = this.fCtrls.questionArray.value.findIndex(x => x.questionId == resultQuestion.questionId);
|
|
758
|
-
var questionGroup = this.fCtrls.questionArray.at(index);
|
|
759
|
-
if (rule.logicActionId == LogicActionEnum.Show) {
|
|
760
|
-
questionGroup.controls.isShow.setValue(true);
|
|
761
|
-
}
|
|
762
|
-
else if (rule.logicActionId == LogicActionEnum.Hide) {
|
|
763
|
-
questionGroup.controls.isShow.setValue(false);
|
|
764
|
-
}
|
|
765
|
-
else if (rule.logicActionId == LogicActionEnum.Enable) {
|
|
766
|
-
questionGroup.controls.isDisabled.setValue(false);
|
|
767
|
-
}
|
|
768
|
-
else if (rule.logicActionId == LogicActionEnum.Disable) {
|
|
769
|
-
questionGroup.controls.isDisabled.setValue(true);
|
|
770
|
-
}
|
|
771
|
-
else if (rule.logicActionId == LogicActionEnum.SetAnswer) {
|
|
772
|
-
}
|
|
773
|
-
});
|
|
774
|
-
}
|
|
775
|
-
else {
|
|
776
|
-
rule.ruleResultQuestions.forEach(resultQuestion => {
|
|
777
|
-
const index = this.fCtrls.questionArray.value.findIndex(x => x.questionId == resultQuestion.questionId);
|
|
778
|
-
var questionGroup = this.fCtrls.questionArray.at(index);
|
|
779
|
-
questionGroup.patchValue({
|
|
780
|
-
isShow: questionGroup.value.isShow_default,
|
|
781
|
-
isDisabled: questionGroup.value.isDisabled_default
|
|
914
|
+
rule.ruleResultQuestions.forEach(resultQuestion => {
|
|
915
|
+
const index = this.fCtrls.questionArray.value.findIndex(x => x.questionId == resultQuestion.questionId);
|
|
916
|
+
var questionGroup = this.fCtrls.questionArray.at(index);
|
|
917
|
+
questionGroup.patchValue({
|
|
918
|
+
isShow: questionGroup.value.isShow_default,
|
|
919
|
+
isDisabled: questionGroup.value.isDisabled_default
|
|
920
|
+
});
|
|
782
921
|
});
|
|
783
|
-
}
|
|
784
|
-
}
|
|
785
|
-
});
|
|
786
|
-
}
|
|
787
|
-
checkRuleExpForAnswerId(ruleExp, answerId) {
|
|
788
|
-
var ruleExpResultArr = [];
|
|
789
|
-
if (ruleExp.logicPropertyId == LogicPropertyEnum.GreaterThan) {
|
|
790
|
-
ruleExp.ruleExpAnswers.forEach(answer => {
|
|
791
|
-
var result = answerId > answer.answerId;
|
|
792
|
-
ruleExpResultArr.push(result);
|
|
793
|
-
});
|
|
794
|
-
}
|
|
795
|
-
else if (ruleExp.logicPropertyId == LogicPropertyEnum.GreaterThanOrEqual) {
|
|
796
|
-
ruleExp.ruleExpAnswers.forEach(answer => {
|
|
797
|
-
var result = answerId >= answer.answerId;
|
|
798
|
-
ruleExpResultArr.push(result);
|
|
799
|
-
});
|
|
800
|
-
}
|
|
801
|
-
else if (ruleExp.logicPropertyId == LogicPropertyEnum.LessThan) {
|
|
802
|
-
ruleExp.ruleExpAnswers.forEach(answer => {
|
|
803
|
-
var result = answerId < answer.answerId;
|
|
804
|
-
ruleExpResultArr.push(result);
|
|
805
|
-
});
|
|
806
|
-
}
|
|
807
|
-
else if (ruleExp.logicPropertyId == LogicPropertyEnum.LessThanOrEqual) {
|
|
808
|
-
ruleExp.ruleExpAnswers.forEach(answer => {
|
|
809
|
-
var result = answerId <= answer.answerId;
|
|
810
|
-
ruleExpResultArr.push(result);
|
|
811
|
-
});
|
|
812
|
-
}
|
|
813
|
-
else if (ruleExp.logicPropertyId == LogicPropertyEnum.Equal) {
|
|
814
|
-
ruleExp.ruleExpAnswers.forEach(answer => {
|
|
815
|
-
var result = answerId == answer.answerId;
|
|
816
|
-
ruleExpResultArr.push(result);
|
|
817
|
-
});
|
|
818
|
-
}
|
|
819
|
-
else if (ruleExp.logicPropertyId == LogicPropertyEnum.NotEqual) {
|
|
820
|
-
ruleExp.ruleExpAnswers.forEach(answer => {
|
|
821
|
-
var result = answerId != answer.answerId;
|
|
822
|
-
ruleExpResultArr.push(result);
|
|
922
|
+
}
|
|
823
923
|
});
|
|
824
|
-
}
|
|
825
|
-
else if (ruleExp.logicPropertyId == LogicPropertyEnum.IsEmpty) {
|
|
826
|
-
var result = answerId == null;
|
|
827
|
-
ruleExpResultArr.push(result);
|
|
828
|
-
}
|
|
829
|
-
else if (ruleExp.logicPropertyId == LogicPropertyEnum.IsNotEmpty) {
|
|
830
|
-
var result = answerId != null;
|
|
831
|
-
ruleExpResultArr.push(result);
|
|
832
|
-
}
|
|
833
|
-
else if (ruleExp.logicPropertyId == LogicPropertyEnum.AnyOf) {
|
|
834
|
-
var answerIdArr = ruleExp.ruleExpAnswers.map(x => x.answerId);
|
|
835
|
-
var result = answerIdArr.findIndex(x => x == answerId) > -1;
|
|
836
|
-
ruleExpResultArr.push(result);
|
|
837
|
-
}
|
|
838
|
-
else if (ruleExp.logicPropertyId == LogicPropertyEnum.Then) {
|
|
839
|
-
var answerIdArr = ruleExp.ruleExpAnswers.map(x => x.answerId);
|
|
840
|
-
var result = answerIdArr.findIndex(x => x == answerId) == -1;
|
|
841
|
-
ruleExpResultArr.push(result);
|
|
842
|
-
}
|
|
843
|
-
if (ruleExpResultArr.length == 0) {
|
|
844
|
-
return false;
|
|
845
|
-
}
|
|
846
|
-
else if (ruleExp.ruleExpAnswers.length == 1) {
|
|
847
|
-
return ruleExpResultArr.filter(x => x == true).length > 0;
|
|
848
|
-
}
|
|
849
|
-
else if (ruleExp.opporator == OperatorEnum.Or) {
|
|
850
|
-
return ruleExpResultArr.filter(x => x == true).length > 0;
|
|
851
|
-
}
|
|
852
|
-
else {
|
|
853
|
-
return ruleExpResultArr.filter(x => x == false).length == 0;
|
|
854
|
-
}
|
|
855
|
-
}
|
|
856
|
-
checkRuleExpForAnswerIdArr(ruleExp, answerIdArr) {
|
|
857
|
-
var ruleExpResultArr = [];
|
|
858
|
-
answerIdArr?.forEach(answer => {
|
|
859
|
-
var isResult = this.checkRuleExpForAnswerId(ruleExp, answer);
|
|
860
|
-
ruleExpResultArr.push(isResult);
|
|
861
924
|
});
|
|
862
|
-
if (ruleExpResultArr.length == 0) {
|
|
863
|
-
return false;
|
|
864
|
-
}
|
|
865
|
-
else if (ruleExp.ruleExpAnswers.length == 1) {
|
|
866
|
-
return ruleExpResultArr.filter(x => x == true).length > 0;
|
|
867
|
-
}
|
|
868
|
-
else if (ruleExp.opporator == OperatorEnum.Or) {
|
|
869
|
-
return ruleExpResultArr.filter(x => x == true).length > 0;
|
|
870
|
-
}
|
|
871
|
-
else {
|
|
872
|
-
return ruleExpResultArr.filter(x => x == false).length == 0;
|
|
873
|
-
}
|
|
874
|
-
}
|
|
875
|
-
checkRuleExpForAnswerText(ruleExp, answer) {
|
|
876
|
-
var ruleExpResultArr = [];
|
|
877
|
-
if (ruleExp.logicPropertyId == LogicPropertyEnum.IsEmpty) {
|
|
878
|
-
var result = answer == null || answer == '';
|
|
879
|
-
ruleExpResultArr.push(result);
|
|
880
|
-
}
|
|
881
|
-
else if (ruleExp.logicPropertyId == LogicPropertyEnum.IsNotEmpty) {
|
|
882
|
-
var result = answer != null && answer != '';
|
|
883
|
-
ruleExpResultArr.push(result);
|
|
884
|
-
}
|
|
885
|
-
if (ruleExp.ruleExpAnswers.length == 1) {
|
|
886
|
-
return ruleExpResultArr.filter(x => x == true).length > 0;
|
|
887
|
-
}
|
|
888
|
-
else if (ruleExp.opporator == OperatorEnum.Or) {
|
|
889
|
-
return ruleExpResultArr.filter(x => x == true).length > 0;
|
|
890
|
-
}
|
|
891
|
-
else {
|
|
892
|
-
return ruleExpResultArr.filter(x => x == false).length == 0;
|
|
893
|
-
}
|
|
894
925
|
}
|
|
895
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SurveryLibComponent, deps: [{ token: SurveyLibService }, { token: i1.FormBuilder }, { token:
|
|
926
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SurveryLibComponent, deps: [{ token: SurveyLibService }, { token: i1.FormBuilder }, { token: CheckRuleExpsUsecase }], target: i0.ɵɵFactoryTarget.Component }); }
|
|
896
927
|
static { this.ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "16.1.7", type: SurveryLibComponent, selector: "lib-survery-lib", outputs: { surveyResultEmit: "surveyResultEmit" }, ngImport: i0, template: "<div class=\"survay-card\">\r\n <div *ngFor=\"let surveyPage of surveyData?.surveyPages; let surveyPageIndex = index\"\r\n [attr.id]=\"'survey-page_'+surveyPageIndex\" [ngClass]=\"{'d-none': surveyPageIndex != fCtrls.currentPageIndex.value}\">\r\n <ng-container *ngFor=\"let item of surveyPage.surveyQuestionGroups\">\r\n <div class=\"survay-card\">\r\n <div class=\"survay-card-body\">\r\n <div class=\"survay-group\">\r\n <div class=\"title\">\r\n <h2 class=\"group-title\">\r\n {{item.questionGroupName}}\r\n </h2>\r\n <span class=\"group-sub-title \">\r\n {{item.questionGroupDescription}}\r\n </span>\r\n </div>\r\n <ng-container *ngFor=\"let question of item.surveyQuestions\">\r\n <lib-question-boolean-template [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.Boolean\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\"></lib-question-boolean-template>\r\n\r\n <lib-question-text-template [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.TextInput\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\"\r\n [isTextArea]=\"question.isAdvanceTextArea\"></lib-question-text-template>\r\n\r\n <lib-question-radio-button-template [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.RadioButton\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\"></lib-question-radio-button-template>\r\n\r\n <lib-question-dropdown-template [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.DropDown\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\"></lib-question-dropdown-template>\r\n\r\n <lib-question-check-box-template [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.CheckBox\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\"></lib-question-check-box-template>\r\n\r\n <lib-question-matrix-template [setQuestion]=\"question\" (emitter)=\"onUpdateAnswers($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.Matrix\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\"></lib-question-matrix-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"survay-card-footr\" *ngIf=\"surveyData != null\">\r\n <div class=\"container\" style=\" justify-content: start;\">\r\n <div class=\"survay-pagination\">\r\n <nav aria-label=\"Page navigation example\">\r\n <ul class=\"pagination\">\r\n <li class=\"page-item previous-page-item \">\r\n <a class=\"page-link\" href=\"javascript:void(0)\" (click)=\"onPaggingBack()\"\r\n [ngClass]=\"{'disable__btn':fCtrls.currentPageIndex.value == 0}\">\u0627\u0644\u0633\u0627\u0628\u0642</a>\r\n </li>\r\n <li class=\"page-item active\" *ngFor=\"let item of surveyData?.surveyPages;let i = index\"\r\n [ngClass]=\"{'active': i == fCtrls.currentPageIndex.value}\">\r\n <a class=\"page-link\" href=\"javascript:void(0)\">{{i + 1}}</a>\r\n </li>\r\n <li class=\"page-item next-page-item\">\r\n <a class=\"page-link\" href=\"javascript:void(0)\" (click)=\"onPaggingNext()\"\r\n [ngClass]=\"{'disable__btn':fCtrls.currentPageIndex.value == (surveyData.surveyPages.length - 1)}\">\u0627\u0644\u062A\u0627\u0644\u064A</a>\r\n </li>\r\n </ul>\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".disable__btn{background-color:gray!important;cursor:not-allowed}\n"], dependencies: [{ kind: "directive", type: i3.NgClass, selector: "[ngClass]", inputs: ["class", "ngClass"] }, { kind: "directive", type: i3.NgForOf, selector: "[ngFor][ngForOf]", inputs: ["ngForOf", "ngForTrackBy", "ngForTemplate"] }, { kind: "directive", type: i3.NgIf, selector: "[ngIf]", inputs: ["ngIf", "ngIfThen", "ngIfElse"] }, { kind: "component", type: QuestionTextTemplateComponent, selector: "lib-question-text-template", inputs: ["isShow", "isTextArea", "setQuestion", "isDisabled"], outputs: ["emitter"] }, { kind: "component", type: QuestionRadioButtonTemplateComponent, selector: "lib-question-radio-button-template", inputs: ["isShow", "isDisabled", "setQuestion"], outputs: ["emitter"] }, { kind: "component", type: QuestionCheckBoxTemplateComponent, selector: "lib-question-check-box-template", inputs: ["isShow", "isDisabled", "setQuestion"], outputs: ["emitter"] }, { kind: "component", type: QuestionDropdownTemplateComponent, selector: "lib-question-dropdown-template", inputs: ["isShow", "isDisabled", "setQuestion"], outputs: ["emitter"] }, { kind: "component", type: QuestionMatrixTemplateComponent, selector: "lib-question-matrix-template", inputs: ["isShow", "isDisabled", "setQuestion"], outputs: ["emitter"] }, { kind: "component", type: QuestionBooleanTemplateComponent, selector: "lib-question-boolean-template", inputs: ["isShow", "isDisabled", "setQuestion"], outputs: ["emitter"] }, { kind: "pipe", type: FilterQuestionPipe, name: "filterQuestion" }] }); }
|
|
897
928
|
}
|
|
898
929
|
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "16.1.7", ngImport: i0, type: SurveryLibComponent, decorators: [{
|
|
899
930
|
type: Component,
|
|
900
931
|
args: [{ selector: 'lib-survery-lib', template: "<div class=\"survay-card\">\r\n <div *ngFor=\"let surveyPage of surveyData?.surveyPages; let surveyPageIndex = index\"\r\n [attr.id]=\"'survey-page_'+surveyPageIndex\" [ngClass]=\"{'d-none': surveyPageIndex != fCtrls.currentPageIndex.value}\">\r\n <ng-container *ngFor=\"let item of surveyPage.surveyQuestionGroups\">\r\n <div class=\"survay-card\">\r\n <div class=\"survay-card-body\">\r\n <div class=\"survay-group\">\r\n <div class=\"title\">\r\n <h2 class=\"group-title\">\r\n {{item.questionGroupName}}\r\n </h2>\r\n <span class=\"group-sub-title \">\r\n {{item.questionGroupDescription}}\r\n </span>\r\n </div>\r\n <ng-container *ngFor=\"let question of item.surveyQuestions\">\r\n <lib-question-boolean-template [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.Boolean\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\"></lib-question-boolean-template>\r\n\r\n <lib-question-text-template [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.TextInput\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\"\r\n [isTextArea]=\"question.isAdvanceTextArea\"></lib-question-text-template>\r\n\r\n <lib-question-radio-button-template [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.RadioButton\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\"></lib-question-radio-button-template>\r\n\r\n <lib-question-dropdown-template [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.DropDown\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\"></lib-question-dropdown-template>\r\n\r\n <lib-question-check-box-template [setQuestion]=\"question\" (emitter)=\"onUpdateAnswer($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.CheckBox\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\"></lib-question-check-box-template>\r\n\r\n <lib-question-matrix-template [setQuestion]=\"question\" (emitter)=\"onUpdateAnswers($event)\"\r\n *ngIf=\"question.questionTypeId == questionTypeEnum.Matrix\"\r\n [isShow]=\" (question|filterQuestion : fCtrls.questionArray.value).isShow\"\r\n [isDisabled]=\"(question|filterQuestion : fCtrls.questionArray.value).isDisabled\"></lib-question-matrix-template>\r\n </ng-container>\r\n </div>\r\n </div>\r\n </div>\r\n </ng-container>\r\n </div>\r\n <div class=\"survay-card-footr\" *ngIf=\"surveyData != null\">\r\n <div class=\"container\" style=\" justify-content: start;\">\r\n <div class=\"survay-pagination\">\r\n <nav aria-label=\"Page navigation example\">\r\n <ul class=\"pagination\">\r\n <li class=\"page-item previous-page-item \">\r\n <a class=\"page-link\" href=\"javascript:void(0)\" (click)=\"onPaggingBack()\"\r\n [ngClass]=\"{'disable__btn':fCtrls.currentPageIndex.value == 0}\">\u0627\u0644\u0633\u0627\u0628\u0642</a>\r\n </li>\r\n <li class=\"page-item active\" *ngFor=\"let item of surveyData?.surveyPages;let i = index\"\r\n [ngClass]=\"{'active': i == fCtrls.currentPageIndex.value}\">\r\n <a class=\"page-link\" href=\"javascript:void(0)\">{{i + 1}}</a>\r\n </li>\r\n <li class=\"page-item next-page-item\">\r\n <a class=\"page-link\" href=\"javascript:void(0)\" (click)=\"onPaggingNext()\"\r\n [ngClass]=\"{'disable__btn':fCtrls.currentPageIndex.value == (surveyData.surveyPages.length - 1)}\">\u0627\u0644\u062A\u0627\u0644\u064A</a>\r\n </li>\r\n </ul>\r\n </nav>\r\n </div>\r\n </div>\r\n </div>\r\n</div>", styles: [".disable__btn{background-color:gray!important;cursor:not-allowed}\n"] }]
|
|
901
|
-
}], ctorParameters: function () { return [{ type: SurveyLibService }, { type: i1.FormBuilder }, { type:
|
|
932
|
+
}], ctorParameters: function () { return [{ type: SurveyLibService }, { type: i1.FormBuilder }, { type: CheckRuleExpsUsecase }]; }, propDecorators: { surveyResultEmit: [{
|
|
902
933
|
type: Output
|
|
903
934
|
}] } });
|
|
904
935
|
|