init: add workspace files
This commit is contained in:
49
os/task/events.js
Normal file
49
os/task/events.js
Normal file
@@ -0,0 +1,49 @@
|
||||
|
||||
EVENTS = function () {
|
||||
|
||||
}
|
||||
EVENTS.inherits(BASE);
|
||||
|
||||
EVENTS.add = function (item) {
|
||||
if (!item || !item.id) return;
|
||||
Object.setPrototypeOf(item, EVENT_BASE);
|
||||
const items = WORLD.USER_EVENTS;
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
if (items[i].id == item.id) {
|
||||
items[i] = item;
|
||||
return this.notify(item, 1);
|
||||
}
|
||||
}
|
||||
items.push(item);
|
||||
this.notify(item, 0);
|
||||
}
|
||||
EVENTS.ACTIONS = ['add', 'update', 'finish'];
|
||||
EVENTS.notify = function (item, act) {
|
||||
let users = WORLD.USERS;
|
||||
let msg = `{type: "dialog", dialog: "events",${EVENTS.ACTIONS[act]}:1}`;
|
||||
for (let user of users) {
|
||||
if (!user.socket) continue;
|
||||
if (item.check && !item.check(user))
|
||||
continue;
|
||||
user.send(msg);
|
||||
}
|
||||
}
|
||||
EVENTS.remove = function (id) {
|
||||
if (!id) return;
|
||||
const items = WORLD.USER_EVENTS;
|
||||
for (var i = 0; i < items.length; i++) {
|
||||
if (items[i].id == id) {
|
||||
EVENTS.notify(items[i], 2);
|
||||
return items.splice(i, 1);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
const EVENT_BASE = {
|
||||
query_desc: function () {
|
||||
return this.desc;
|
||||
},
|
||||
query_grade: function () {
|
||||
return this.grade;
|
||||
}
|
||||
};
|
||||
Reference in New Issue
Block a user