fable 3.0.118 → 3.0.120
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/debug/Example-ProgressTime.js +14 -29
- package/dist/fable.compatible.js +170 -164
- package/dist/fable.compatible.min.js +2 -2
- package/dist/fable.compatible.min.js.map +1 -1
- package/dist/fable.js +116 -110
- package/dist/fable.min.js +2 -2
- package/dist/fable.min.js.map +1 -1
- package/package.json +5 -5
- package/source/Fable.js +2 -2
- package/source/services/Fable-Service-Operation.js +22 -31
- package/source/services/Fable-Service-ProgressTracker/ProgressTracker.js +32 -0
- package/source/services/{Fable-Service-ProgressTracker.js → Fable-Service-ProgressTrackerSet.js} +19 -4
- package/test/FableOperation_tests.js +3 -3
- package/test/ProgressTracker_tests.js +79 -2
- /package/test/{PregressTime_tests.js → ProgressTime_tests.js} +0 -0
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fable",
|
|
3
|
-
"version": "3.0.
|
|
3
|
+
"version": "3.0.120",
|
|
4
4
|
"description": "Anentity behavior management and API bundling library.",
|
|
5
5
|
"main": "source/Fable.js",
|
|
6
6
|
"scripts": {
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
},
|
|
51
51
|
"homepage": "https://github.com/stevenvelozo/fable",
|
|
52
52
|
"devDependencies": {
|
|
53
|
-
"quackage": "^1.0.
|
|
53
|
+
"quackage": "^1.0.29"
|
|
54
54
|
},
|
|
55
55
|
"dependencies": {
|
|
56
56
|
"async.eachlimit": "^0.5.2",
|
|
@@ -59,12 +59,12 @@
|
|
|
59
59
|
"cachetrax": "^1.0.4",
|
|
60
60
|
"cookie": "^0.6.0",
|
|
61
61
|
"data-arithmatic": "^1.0.7",
|
|
62
|
-
"dayjs": "^1.11.
|
|
62
|
+
"dayjs": "^1.11.11",
|
|
63
63
|
"fable-log": "^3.0.13",
|
|
64
|
-
"fable-serviceproviderbase": "^3.0.
|
|
64
|
+
"fable-serviceproviderbase": "^3.0.13",
|
|
65
65
|
"fable-settings": "^3.0.9",
|
|
66
66
|
"fable-uuid": "^3.0.6",
|
|
67
|
-
"manyfest": "^1.0.
|
|
67
|
+
"manyfest": "^1.0.29",
|
|
68
68
|
"simple-get": "^4.0.1"
|
|
69
69
|
}
|
|
70
70
|
}
|
package/source/Fable.js
CHANGED
|
@@ -75,9 +75,9 @@ class Fable extends libFableServiceBase.CoreServiceProviderBase
|
|
|
75
75
|
this.addServiceType('RestClient', require('./services/Fable-Service-RestClient.js'));
|
|
76
76
|
this.addServiceType('Manifest', require('manyfest'));
|
|
77
77
|
this.addServiceType('ObjectCache', require('cachetrax'));
|
|
78
|
-
this.addServiceType('Operation', require('./services/Fable-Service-Operation.js'));
|
|
79
|
-
this.addServiceType('ProgressTracker', require('./services/Fable-Service-ProgressTracker.js'));
|
|
80
78
|
this.addAndInstantiateServiceType('ProgressTime', require('./services/Fable-Service-ProgressTime.js'));
|
|
79
|
+
this.addServiceType('ProgressTrackerSet', require('./services/Fable-Service-ProgressTrackerSet.js'));
|
|
80
|
+
this.addServiceType('Operation', require('./services/Fable-Service-Operation.js'));
|
|
81
81
|
this.addServiceType('CSVParser', require('./services/Fable-Service-CSVParser.js'));
|
|
82
82
|
this.addServiceType('FilePersistence', require('./services/Fable-Service-FilePersistence.js'));
|
|
83
83
|
}
|
|
@@ -27,9 +27,9 @@ class FableOperation extends libFableServiceBase
|
|
|
27
27
|
this.state.Metadata.Name = (typeof(this.options.Name) == 'string') ? this.options.Name : `Unnamed Operation ${this.state.Metadata.UUID}`;
|
|
28
28
|
this.name = this.state.Metadata.Name;
|
|
29
29
|
|
|
30
|
-
this.
|
|
30
|
+
this.progressTrackerSet = this.fable.instantiateServiceProviderWithoutRegistration('ProgressTrackerSet');
|
|
31
31
|
|
|
32
|
-
this.state.OverallProgressTracker = this.
|
|
32
|
+
this.state.OverallProgressTracker = this.progressTrackerSet.createProgressTracker(`Overall-${this.state.Metadata.UUID}`);
|
|
33
33
|
|
|
34
34
|
// This is here to use the pass-through logging functions in the operation itself.
|
|
35
35
|
this.log = this;
|
|
@@ -45,8 +45,8 @@ class FableOperation extends libFableServiceBase
|
|
|
45
45
|
|
|
46
46
|
let tmpAnticipate = this.fable.instantiateServiceProviderWithoutRegistration('Anticipate');
|
|
47
47
|
|
|
48
|
-
this.
|
|
49
|
-
this.
|
|
48
|
+
this.progressTrackerSet.setProgressTrackerTotalOperations(this.state.OverallProgressTracker.Hash, this.state.Status.StepCount);
|
|
49
|
+
this.progressTrackerSet.startProgressTracker(this.state.OverallProgressTracker.Hash);
|
|
50
50
|
this.info(`Operation [${this.state.Metadata.UUID}] ${this.state.Metadata.Name} starting...`);
|
|
51
51
|
|
|
52
52
|
for (let i = 0; i < this.state.Steps.length; i++)
|
|
@@ -55,7 +55,7 @@ class FableOperation extends libFableServiceBase
|
|
|
55
55
|
function(fNext)
|
|
56
56
|
{
|
|
57
57
|
this.fable.log.info(`Step #${i} [${this.state.Steps[i].GUIDStep}] ${this.state.Steps[i].Name} starting...`);
|
|
58
|
-
this.
|
|
58
|
+
this.progressTrackerSet.startProgressTracker(this.state.Steps[i].ProgressTracker.Hash);
|
|
59
59
|
return fNext();
|
|
60
60
|
}.bind(this));
|
|
61
61
|
// Steps are executed in a custom context with
|
|
@@ -65,26 +65,10 @@ class FableOperation extends libFableServiceBase
|
|
|
65
65
|
fable:this.fable,
|
|
66
66
|
options:this.state.Steps[i].Metadata,
|
|
67
67
|
metadata:this.state.Steps[i].Metadata,
|
|
68
|
-
ProgressTracker:this.
|
|
69
|
-
updateProgressTracker: function(pProgressAmount)
|
|
70
|
-
{
|
|
71
|
-
return this.progressTrackers.updateProgressTracker(this.state.Steps[i].ProgressTracker.Hash, pProgressAmount);
|
|
72
|
-
}.bind(this),
|
|
73
|
-
incrementProgressTracker: function(pProgressIncrementAmount)
|
|
74
|
-
{
|
|
75
|
-
return this.progressTrackers.incrementProgressTracker(this.state.Steps[i].ProgressTracker.Hash, pProgressIncrementAmount);
|
|
76
|
-
}.bind(this),
|
|
77
|
-
setProgressTrackerTotalOperations: function(pTotalOperationCount)
|
|
78
|
-
{
|
|
79
|
-
return this.progressTrackers.setProgressTrackerTotalOperations(this.state.Steps[i].ProgressTracker.Hash, pTotalOperationCount);
|
|
80
|
-
}.bind(this),
|
|
81
|
-
getProgressTrackerStatusString: function()
|
|
82
|
-
{
|
|
83
|
-
return this.progressTrackers.getProgressTrackerStatusString(this.state.Steps[i].ProgressTracker.Hash);
|
|
84
|
-
}.bind(this),
|
|
68
|
+
ProgressTracker:this.progressTrackerSet.getProgressTracker(this.state.Steps[i].ProgressTracker.Hash),
|
|
85
69
|
logProgressTrackerStatus: function()
|
|
86
70
|
{
|
|
87
|
-
return this.log.info(`Step #${i} [${this.state.Steps[i].GUIDStep}]: ${this.
|
|
71
|
+
return this.log.info(`Step #${i} [${this.state.Steps[i].GUIDStep}]: ${this.progressTrackerSet.getProgressTrackerStatusString(this.state.Steps[i].ProgressTracker.Hash)}`);
|
|
88
72
|
}.bind(this),
|
|
89
73
|
OperationState:this.state,
|
|
90
74
|
StepState:this.state.Steps[i]
|
|
@@ -92,13 +76,13 @@ class FableOperation extends libFableServiceBase
|
|
|
92
76
|
tmpAnticipate.anticipate(
|
|
93
77
|
function(fNext)
|
|
94
78
|
{
|
|
95
|
-
this.
|
|
96
|
-
let tmpStepTimingMessage = this.
|
|
79
|
+
this.progressTrackerSet.endProgressTracker(this.state.Steps[i].ProgressTracker.Hash);
|
|
80
|
+
let tmpStepTimingMessage = this.progressTrackerSet.getProgressTrackerStatusString(this.state.Steps[i].ProgressTracker.Hash);
|
|
97
81
|
this.fable.log.info(`Step #${i} [${this.state.Steps[i].GUIDStep}] ${this.state.Steps[i].Name} complete.`);
|
|
98
82
|
this.fable.log.info(`Step #${i} [${this.state.Steps[i].GUIDStep}] ${this.state.Steps[i].Name} ${tmpStepTimingMessage}.`);
|
|
99
83
|
|
|
100
|
-
this.
|
|
101
|
-
let tmpOperationTimingMessage = this.
|
|
84
|
+
this.progressTrackerSet.incrementProgressTracker(this.state.OverallProgressTracker.Hash, 1);
|
|
85
|
+
let tmpOperationTimingMessage = this.progressTrackerSet.getProgressTrackerStatusString(this.state.OverallProgressTracker.Hash);
|
|
102
86
|
this.fable.log.info(`Operation [${this.state.Metadata.UUID}] ${tmpOperationTimingMessage}.`);
|
|
103
87
|
return fNext();
|
|
104
88
|
}.bind(this));
|
|
@@ -114,13 +98,20 @@ class FableOperation extends libFableServiceBase
|
|
|
114
98
|
return fExecutionCompleteCallback(pError);
|
|
115
99
|
}
|
|
116
100
|
this.info(`Operation [${this.state.Metadata.UUID}] ${this.state.Metadata.Name} complete.`);
|
|
117
|
-
let tmpOperationTimingMessage = this.
|
|
118
|
-
this.
|
|
101
|
+
let tmpOperationTimingMessage = this.progressTrackerSet.getProgressTrackerStatusString(this.state.OverallProgressTracker.Hash);
|
|
102
|
+
this.progressTrackerSet.endProgressTracker(this.state.OverallProgressTracker.Hash);
|
|
119
103
|
this.fable.log.info(`Operation [${this.state.Metadata.UUID}] ${tmpOperationTimingMessage}.`);
|
|
120
104
|
return fExecutionCompleteCallback();
|
|
121
105
|
});
|
|
122
106
|
}
|
|
123
107
|
|
|
108
|
+
// There are three ways to add steps:
|
|
109
|
+
// 1. As a basic javascript function
|
|
110
|
+
// --
|
|
111
|
+
// This is the most basic, java"script" way to add a step. It will
|
|
112
|
+
// setup a "this" context that has the following properties:
|
|
113
|
+
// - log: A reference to the operation's log object
|
|
114
|
+
|
|
124
115
|
addStep(fStepFunction, pStepMetadata, pStepName, pStepDescription, pGUIDStep)
|
|
125
116
|
{
|
|
126
117
|
let tmpStep = {};
|
|
@@ -133,7 +124,7 @@ class FableOperation extends libFableServiceBase
|
|
|
133
124
|
tmpStep.Name = (typeof(pStepName) !== 'undefined') ? pStepName : `Step [${tmpStep.GUIDStep}]`;
|
|
134
125
|
tmpStep.Description = (typeof(pStepDescription) !== 'undefined') ? pStepDescription : `Step execution of ${tmpStep.Name}.`;
|
|
135
126
|
|
|
136
|
-
tmpStep.ProgressTracker = this.
|
|
127
|
+
tmpStep.ProgressTracker = this.progressTrackerSet.createProgressTracker(tmpStep.GUIDStep);
|
|
137
128
|
|
|
138
129
|
tmpStep.Metadata = (typeof(pStepMetadata) === 'object') ? pStepMetadata : {};
|
|
139
130
|
|
|
@@ -156,7 +147,7 @@ class FableOperation extends libFableServiceBase
|
|
|
156
147
|
return new Error(`Step [${pGUIDStep}] does not exist in operation [${this.state.Metadata.UUID}] ${this.state.Metadata.Name} when attempting to set total operations to ${pTotalOperationCount}.`);
|
|
157
148
|
}
|
|
158
149
|
|
|
159
|
-
this.
|
|
150
|
+
this.progressTrackerSet.setProgressTrackerTotalOperations(this.stepMap[pGUIDStep].ProgressTracker.Hash, pTotalOperationCount);
|
|
160
151
|
}
|
|
161
152
|
|
|
162
153
|
writeOperationLog(pLogLevel, pLogText, pLogObject)
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
class ProgressTracker
|
|
2
|
+
{
|
|
3
|
+
constructor(pProgressTrackerSet, pProgressTrackerHash)
|
|
4
|
+
{
|
|
5
|
+
this.progressTrackerSet = pProgressTrackerSet;
|
|
6
|
+
this.progressTrackerHash = pProgressTrackerHash;
|
|
7
|
+
|
|
8
|
+
this.data = this.progressTrackerSet.getProgressTrackerData(this.progressTrackerHash);
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
updateProgressTracker(pProgressAmount)
|
|
12
|
+
{
|
|
13
|
+
return this.progressTrackerSet.updateProgressTracker(this.progressTrackerHash, pProgressAmount);
|
|
14
|
+
}
|
|
15
|
+
|
|
16
|
+
incrementProgressTracker(pProgressIncrementAmount)
|
|
17
|
+
{
|
|
18
|
+
return this.progressTrackerSet.incrementProgressTracker(this.progressTrackerHash, pProgressIncrementAmount);
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
setProgressTrackerTotalOperations(pTotalOperationCount)
|
|
22
|
+
{
|
|
23
|
+
return this.progressTrackerSet.setProgressTrackerTotalOperations(this.progressTrackerHash, pTotalOperationCount);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
getProgressTrackerStatusString()
|
|
27
|
+
{
|
|
28
|
+
return this.progressTrackerSet.getProgressTrackerStatusString(this.progressTrackerHash);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
module.exports = ProgressTracker;
|
package/source/services/{Fable-Service-ProgressTracker.js → Fable-Service-ProgressTrackerSet.js}
RENAMED
|
@@ -1,12 +1,14 @@
|
|
|
1
1
|
const libFableServiceBase = require('fable-serviceproviderbase');
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
const libProgressTrackerClass = require('./Fable-Service-ProgressTracker/ProgressTracker.js');
|
|
4
|
+
|
|
5
|
+
class FableServiceProgressTrackerSet extends libFableServiceBase
|
|
4
6
|
{
|
|
5
7
|
constructor(pFable, pOptions, pServiceHash)
|
|
6
8
|
{
|
|
7
9
|
super(pFable, pOptions, pServiceHash);
|
|
8
10
|
|
|
9
|
-
this.serviceType = '
|
|
11
|
+
this.serviceType = 'ProgressTrackerSet';
|
|
10
12
|
|
|
11
13
|
this.progressTrackers = {};
|
|
12
14
|
|
|
@@ -27,6 +29,19 @@ class FableServiceProgressTracker extends libFableServiceBase
|
|
|
27
29
|
this.createProgressTracker(tmpProgressTrackerHash, 100);
|
|
28
30
|
}
|
|
29
31
|
|
|
32
|
+
return new libProgressTrackerClass(this, pProgressTrackerHash);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
getProgressTrackerData(pProgressTrackerHash)
|
|
36
|
+
{
|
|
37
|
+
let tmpProgressTrackerHash = (typeof(pProgressTrackerHash) == 'string') ? pProgressTrackerHash : 'Default';
|
|
38
|
+
|
|
39
|
+
if (!this.progressTrackers.hasOwnProperty(tmpProgressTrackerHash))
|
|
40
|
+
{
|
|
41
|
+
this.fable.log.warn(`ProgressTracker ${tmpProgressTrackerHash} does not exist! Creating a new tracker...`);
|
|
42
|
+
this.createProgressTracker(tmpProgressTrackerHash, 100);
|
|
43
|
+
}
|
|
44
|
+
|
|
30
45
|
return this.progressTrackers[tmpProgressTrackerHash];
|
|
31
46
|
}
|
|
32
47
|
|
|
@@ -337,7 +352,7 @@ class FableServiceProgressTracker extends libFableServiceBase
|
|
|
337
352
|
// 4. Done
|
|
338
353
|
else
|
|
339
354
|
{
|
|
340
|
-
return `ProgressTracker ${tmpProgressTracker.Hash} is done.
|
|
355
|
+
return `ProgressTracker ${tmpProgressTracker.Hash} is done. ${tmpProgressTracker.CurrentCount} / ${tmpProgressTracker.TotalCount} operations were completed in ${this.progressTimes.formatTimeDuration(tmpProgressTracker.ElapsedTime)} (median ${this.progressTimes.formatTimeDuration(tmpProgressTracker.AverageOperationTime)} per).`;
|
|
341
356
|
}
|
|
342
357
|
}
|
|
343
358
|
}
|
|
@@ -348,4 +363,4 @@ class FableServiceProgressTracker extends libFableServiceBase
|
|
|
348
363
|
}
|
|
349
364
|
}
|
|
350
365
|
|
|
351
|
-
module.exports =
|
|
366
|
+
module.exports = FableServiceProgressTrackerSet;
|
|
@@ -115,7 +115,7 @@ suite
|
|
|
115
115
|
() =>
|
|
116
116
|
{
|
|
117
117
|
this.log.info(`Work done for iteration ${i}.`);
|
|
118
|
-
this.incrementProgressTracker(1);
|
|
118
|
+
this.ProgressTracker.incrementProgressTracker(1);
|
|
119
119
|
this.logProgressTrackerStatus();
|
|
120
120
|
return fWorkComplete();
|
|
121
121
|
}, tmpDelay);
|
|
@@ -131,7 +131,7 @@ suite
|
|
|
131
131
|
{
|
|
132
132
|
let tmpShortOperationCount = 300;
|
|
133
133
|
|
|
134
|
-
this.setProgressTrackerTotalOperations(tmpShortOperationCount);
|
|
134
|
+
this.ProgressTracker.setProgressTrackerTotalOperations(tmpShortOperationCount);
|
|
135
135
|
this.logProgressTrackerStatus();
|
|
136
136
|
|
|
137
137
|
let tmpAnticipate = testFable.newAnticipate();
|
|
@@ -146,7 +146,7 @@ suite
|
|
|
146
146
|
() =>
|
|
147
147
|
{
|
|
148
148
|
this.log.info(`Leetle work done for iteration ${i}.`);
|
|
149
|
-
this.incrementProgressTracker(1);
|
|
149
|
+
this.ProgressTracker.incrementProgressTracker(1);
|
|
150
150
|
this.logProgressTrackerStatus();
|
|
151
151
|
return fWorkComplete();
|
|
152
152
|
}, tmpDelay);
|
|
@@ -13,7 +13,7 @@ var Expect = Chai.expect;
|
|
|
13
13
|
|
|
14
14
|
suite
|
|
15
15
|
(
|
|
16
|
-
'Progress Tracker Tests',
|
|
16
|
+
'Progress Tracker Set Tests',
|
|
17
17
|
function()
|
|
18
18
|
{
|
|
19
19
|
suite
|
|
@@ -28,7 +28,7 @@ suite
|
|
|
28
28
|
{
|
|
29
29
|
let testFable = new libFable();
|
|
30
30
|
|
|
31
|
-
let tmpProgressTracker = testFable.instantiateServiceProvider('
|
|
31
|
+
let tmpProgressTracker = testFable.instantiateServiceProvider('ProgressTrackerSet');
|
|
32
32
|
|
|
33
33
|
Expect(tmpProgressTracker).to.be.an('object');
|
|
34
34
|
Expect(tmpProgressTracker).to.have.property('incrementProgressTracker');
|
|
@@ -36,6 +36,83 @@ suite
|
|
|
36
36
|
return fDone();
|
|
37
37
|
}
|
|
38
38
|
);
|
|
39
|
+
test
|
|
40
|
+
(
|
|
41
|
+
'Simple Progress Tracker',
|
|
42
|
+
function(fTestComplete)
|
|
43
|
+
{
|
|
44
|
+
let testFable = new libFable();
|
|
45
|
+
let tmpProgressTracker = testFable.instantiateServiceProvider('ProgressTrackerSet');
|
|
46
|
+
|
|
47
|
+
tmpProgressTracker.createProgressTracker('TestTracker', 200);
|
|
48
|
+
tmpProgressTracker.logProgressTrackerStatus('TestTracker');
|
|
49
|
+
|
|
50
|
+
let tmpAnticipate = testFable.newAnticipate();
|
|
51
|
+
|
|
52
|
+
tmpAnticipate.anticipate(
|
|
53
|
+
function (fDone)
|
|
54
|
+
{
|
|
55
|
+
let tmpWaitTime = Math.floor(Math.random() * 10) + 10;
|
|
56
|
+
this.log.trace(`Starting tracker in ${tmpWaitTime}ms...`);
|
|
57
|
+
setTimeout(
|
|
58
|
+
() =>
|
|
59
|
+
{
|
|
60
|
+
testFable.ProgressTrackerSet.startProgressTracker('TestTracker');
|
|
61
|
+
testFable.ProgressTrackerSet.logProgressTrackerStatus('TestTracker');
|
|
62
|
+
return fDone();
|
|
63
|
+
}, tmpWaitTime);
|
|
64
|
+
}.bind(testFable));
|
|
65
|
+
|
|
66
|
+
for (let i = 0; i < 201; i++)
|
|
67
|
+
{
|
|
68
|
+
tmpAnticipate.anticipate(
|
|
69
|
+
function (fDone)
|
|
70
|
+
{
|
|
71
|
+
let tmpTracker = testFable.ProgressTrackerSet.getProgressTracker('TestTracker');
|
|
72
|
+
|
|
73
|
+
if (tmpTracker.data.PercentComplete >= 100)
|
|
74
|
+
{
|
|
75
|
+
return fDone();
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
let tmpWaitTime = Math.floor(Math.random() * 10) + 10;
|
|
79
|
+
let tmpIncrementAmount = Math.floor(Math.random() * 2) + 2;
|
|
80
|
+
|
|
81
|
+
setTimeout(
|
|
82
|
+
() =>
|
|
83
|
+
{
|
|
84
|
+
if (tmpTracker.data.PercentComplete < 100)
|
|
85
|
+
{
|
|
86
|
+
testFable.ProgressTrackerSet.incrementProgressTracker('TestTracker', tmpIncrementAmount);
|
|
87
|
+
testFable.ProgressTrackerSet.logProgressTrackerStatus('TestTracker');
|
|
88
|
+
}
|
|
89
|
+
return fDone();
|
|
90
|
+
}, tmpWaitTime);
|
|
91
|
+
}.bind(testFable));
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
tmpAnticipate.wait(
|
|
95
|
+
function (pError)
|
|
96
|
+
{
|
|
97
|
+
if (pError)
|
|
98
|
+
{
|
|
99
|
+
testFable.log.error(`Error: ${pError}`);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
let tmpWaitTime = Math.floor(Math.random() * 10) + 10;
|
|
103
|
+
this.log.trace(`Ending tracker in ${tmpWaitTime}ms...`);
|
|
104
|
+
|
|
105
|
+
setTimeout(
|
|
106
|
+
() =>
|
|
107
|
+
{
|
|
108
|
+
testFable.ProgressTrackerSet.endProgressTracker('TestTracker');
|
|
109
|
+
testFable.ProgressTrackerSet.logProgressTrackerStatus('TestTracker');
|
|
110
|
+
return fTestComplete();
|
|
111
|
+
}, tmpWaitTime);
|
|
112
|
+
}.bind(testFable));
|
|
113
|
+
|
|
114
|
+
}
|
|
115
|
+
)
|
|
39
116
|
}
|
|
40
117
|
);
|
|
41
118
|
}
|
|
File without changes
|