ywana-core8 0.0.837 → 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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ywana-core8",
3
- "version": "0.0.837",
3
+ "version": "0.0.839",
4
4
  "description": "ywana-core8",
5
5
  "homepage": "https://ywana.github.io/workspace",
6
6
  "author": "Ernesto Roldan Garcia",
package/src/html/table.js CHANGED
@@ -178,7 +178,7 @@ const DataTableCell = ({ index, row, column, cell, editable }) => {
178
178
 
179
179
 
180
180
  if (id === "checked") {
181
- return row.canCheck && row.canCheck === false ? null : <CheckBox id={id} value={cell} onChange={(id, value) => onChange(row.id, id, value)} />
181
+ return row.checkDisabled ? null : <CheckBox id={id} value={cell} onChange={(id, value) => onChange(row.id, id, value)} />
182
182
  } else if (editable && onChange) {
183
183
  switch (type) {
184
184
  case "ICON": return <Icon icon={cell} />
@@ -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
  )
@@ -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": "COMPPLETED",
115
+ "COMPLETED": "COMPLETED",
115
116
  "FAULTED": "FAULTED",
116
- "CANCELED": "CANCELED"
117
+ "CANCELED": "CANCELED",
118
+
119
+ "QUEUED": "QUEUED",
117
120
  }
118
121
 
119
122
  /**