ywana-core8 0.0.838 → 0.0.840
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 +21 -0
- package/dist/index.cjs.map +1 -1
- package/dist/index.modern.js +21 -1
- package/dist/index.modern.js.map +1 -1
- package/dist/index.umd.js +21 -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 +11 -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]
|
@@ -81,6 +82,11 @@ export const TaskContextProvider = (props) => {
|
|
81
82
|
setListeners(next)
|
82
83
|
}
|
83
84
|
|
85
|
+
function addListeners(newListeners) {
|
86
|
+
const next = { ...listeners, ...newListeners }
|
87
|
+
setListeners(next)
|
88
|
+
}
|
89
|
+
|
84
90
|
function removeListener(taskID) {
|
85
91
|
const next = { ...listeners }
|
86
92
|
delete next[taskID]
|
@@ -95,6 +101,7 @@ export const TaskContextProvider = (props) => {
|
|
95
101
|
removeTask,
|
96
102
|
listeners,
|
97
103
|
addListener,
|
104
|
+
addListeners,
|
98
105
|
removeListener
|
99
106
|
};
|
100
107
|
|
@@ -111,9 +118,11 @@ export const TaskContextProvider = (props) => {
|
|
111
118
|
export const TASK_STATES = {
|
112
119
|
"CREATED": "CREATED",
|
113
120
|
"RUNNING": "RUNNING",
|
114
|
-
"COMPLETED": "
|
121
|
+
"COMPLETED": "COMPLETED",
|
115
122
|
"FAULTED": "FAULTED",
|
116
|
-
"CANCELED": "CANCELED"
|
123
|
+
"CANCELED": "CANCELED",
|
124
|
+
|
125
|
+
"QUEUED": "QUEUED",
|
117
126
|
}
|
118
127
|
|
119
128
|
/**
|