ywana-core8 0.0.838 → 0.0.839
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/dist/index.cjs +14 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.modern.js +14 -1
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +14 -0
- package/dist/index.umd.js.map +1 -1
- package/package.json +1 -1
- package/src/incubator/index.js +1 -1
- package/src/incubator/task-test.js +95 -5
- package/src/incubator/task.js +5 -2
package/package.json
CHANGED
package/src/incubator/index.js
CHANGED
@@ -1,4 +1,4 @@
|
|
1
1
|
export { Wizard, WizardContext } from './wizard'
|
2
|
-
export { TaskContextProvider, TaskContext, TaskMonitor, TaskProgress } from './task'
|
2
|
+
export { TaskContextProvider, TaskContext, TaskMonitor, TaskProgress, TASK_STATES } from './task'
|
3
3
|
export { UploadForm } from './upload'
|
4
4
|
export * from './password'
|
@@ -30,6 +30,96 @@ import { TaskContext, TaskContextProvider, TaskMonitor, TASK_STATES } from "./ta
|
|
30
30
|
|
31
31
|
**/
|
32
32
|
|
33
|
+
function Queue(name, taskContext) {
|
34
|
+
|
35
|
+
const tasks = []
|
36
|
+
|
37
|
+
function queueTaskWrapper(task, listener) {
|
38
|
+
return {
|
39
|
+
task,
|
40
|
+
listener: (task, taskContext) => {
|
41
|
+
if (task.percentage === 100) {
|
42
|
+
console.log("TASK COMPLETED: ", task);
|
43
|
+
taskContext.updateTask(Object.assign({}, task, { state: TASK_STATES.COMPLETED }));
|
44
|
+
if (listener) listener(task, taskContext);
|
45
|
+
taskContext.removeListener(task.id);
|
46
|
+
|
47
|
+
//
|
48
|
+
}
|
49
|
+
},
|
50
|
+
};
|
51
|
+
}
|
52
|
+
|
53
|
+
const queue = {
|
54
|
+
tasks,
|
55
|
+
name,
|
56
|
+
init: (task, listener) => {
|
57
|
+
const taskWrapper = queueTaskWrapper(task, listener);
|
58
|
+
taskWrapper.task.queue = name;
|
59
|
+
taskWrapper.task.percentage = 0;
|
60
|
+
taskWrapper.task.state = TASK_STATES.QUEUED;
|
61
|
+
tasks.push(taskWrapper);
|
62
|
+
return queue;
|
63
|
+
},
|
64
|
+
next: (task, listener) => {
|
65
|
+
const taskWrapper = queueTaskWrapper(task, listener);
|
66
|
+
taskWrapper.task.queue = name;
|
67
|
+
taskWrapper.task.percentage = 0;
|
68
|
+
taskWrapper.task.state = TASK_STATES.QUEUED;
|
69
|
+
tasks.push(taskWrapper);
|
70
|
+
return queue;
|
71
|
+
},
|
72
|
+
end: (task, listener) => {
|
73
|
+
const taskWrapper = queueTaskWrapper(task, listener);
|
74
|
+
taskWrapper.task.percentage = 0;
|
75
|
+
taskWrapper.task.state = TASK_STATES.QUEUED;
|
76
|
+
tasks.push(taskWrapper);
|
77
|
+
},
|
78
|
+
save: async () => {
|
79
|
+
let nextTaskId = null
|
80
|
+
for (let taskWrapper of tasks.reverse()) {
|
81
|
+
const { task, listener } = taskWrapper
|
82
|
+
task.next = nextTaskId
|
83
|
+
const createdTask = await taskContext.createTask(task, listener)
|
84
|
+
nextTaskId = createdTask.id
|
85
|
+
}
|
86
|
+
tasks.reverse()
|
87
|
+
},
|
88
|
+
start: async () => {
|
89
|
+
const taskWrapper = tasks[0]
|
90
|
+
if (!taskWrapper) return null;
|
91
|
+
const { task } = taskWrapper;
|
92
|
+
task.state = TASK_STATES.RUNNING;
|
93
|
+
taskContext.updateTask(task);
|
94
|
+
return task;
|
95
|
+
}
|
96
|
+
}
|
97
|
+
return queue
|
98
|
+
}
|
99
|
+
|
100
|
+
const QueueExample = (props) => {
|
101
|
+
|
102
|
+
function listener1(task, taskContext) {
|
103
|
+
console.log("LISTENER1: ", task)
|
104
|
+
}
|
105
|
+
|
106
|
+
const queue1 = Queue("Q1")
|
107
|
+
|
108
|
+
queue1.init({ name: "TASK1" }, listener1)
|
109
|
+
.next({ name: "TASK2" }, listener1)
|
110
|
+
.next({ name: "TASK3" }, listener1)
|
111
|
+
.end({ name: "TASK4" }, listener1)
|
112
|
+
|
113
|
+
console.log(queue1.tasks)
|
114
|
+
|
115
|
+
return (
|
116
|
+
<div>QUEUE EXAMPLE</div>
|
117
|
+
)
|
118
|
+
}
|
119
|
+
|
120
|
+
|
121
|
+
|
122
|
+
|
33
123
|
const CreateTaskButton = (props) => {
|
34
124
|
|
35
125
|
const taskContext = useContext(TaskContext)
|
@@ -37,19 +127,19 @@ const CreateTaskButton = (props) => {
|
|
37
127
|
async function run() {
|
38
128
|
|
39
129
|
const listener = async (task, taskContext) => {
|
40
|
-
|
130
|
+
|
41
131
|
console.log("LISTENER FOR TASK: ", task)
|
42
|
-
|
132
|
+
|
43
133
|
if (task.percentage === 100) {
|
44
134
|
console.log("TASK COMPLETED: ", task)
|
45
135
|
taskContext.updateTask(Object.assign({}, task, { state: TASK_STATES.COMPLETED }))
|
46
136
|
taskContext.removeListener(task.id)
|
47
|
-
} else {
|
137
|
+
} else {
|
48
138
|
const percentage = task.percentage + 10 || 0
|
49
139
|
const nextTask = Object.assign({}, task, { percentage })
|
50
140
|
await taskContext.updateTask(nextTask)
|
51
141
|
}
|
52
|
-
|
142
|
+
|
53
143
|
}
|
54
144
|
|
55
145
|
await taskContext.createTask({
|
@@ -76,7 +166,7 @@ const TaskTest = (props) => {
|
|
76
166
|
|
77
167
|
return (
|
78
168
|
<TaskContextProvider host="http://localhost:3000" frequency={1000}>
|
79
|
-
<TaskMonitor editors={taskEditors} from="2023-10-21" frequency={2000}/>
|
169
|
+
<TaskMonitor editors={taskEditors} from="2023-10-21" frequency={2000} />
|
80
170
|
<CreateTaskButton />
|
81
171
|
</TaskContextProvider>
|
82
172
|
)
|
package/src/incubator/task.js
CHANGED
@@ -19,6 +19,7 @@ export const TaskContextProvider = (props) => {
|
|
19
19
|
|
20
20
|
useEffect(() => {
|
21
21
|
const _interval = setInterval(async () => {
|
22
|
+
console.log("TASKS INTERVAL", listeners)
|
22
23
|
const taskIDs = Object.keys(listeners)
|
23
24
|
for (let i = 0; i < taskIDs.length; i++) {
|
24
25
|
const taskID = taskIDs[i]
|
@@ -111,9 +112,11 @@ export const TaskContextProvider = (props) => {
|
|
111
112
|
export const TASK_STATES = {
|
112
113
|
"CREATED": "CREATED",
|
113
114
|
"RUNNING": "RUNNING",
|
114
|
-
"COMPLETED": "
|
115
|
+
"COMPLETED": "COMPLETED",
|
115
116
|
"FAULTED": "FAULTED",
|
116
|
-
"CANCELED": "CANCELED"
|
117
|
+
"CANCELED": "CANCELED",
|
118
|
+
|
119
|
+
"QUEUED": "QUEUED",
|
117
120
|
}
|
118
121
|
|
119
122
|
/**
|