You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

93 lines
2.0 KiB

var match = (zone, light) => {
var mObj = (zones) => {
var o_O = {
LastActTime: new Date().valueOf(),
LastUnActTime: new Date().valueOf(),
state: false,
func: {
peopleIn: [],
peopleOut: [],
toggle: []
},
on: (event, handler) => {
if(event == "peopleIn"){
o_O.func.peopleIn.push(handler);
}
if(event == "peopleOut"){
o_O.func.peopleOut.push(handler);
}
if(event == "toggle"){
o_O.func.toggle.push(handler);
}
}
};
zones.forEach((item, index)=>{
item.on('peopleIn', ()=>{
if(!o_O.state){
o_O.state = true;
o_O.LastActTime = new Date().valueOf();
}
o_O.func.peopleIn.forEach((item)=>{
item();
});
o_O.func.toggle.forEach((item)=>{
item();
});
});
item.on('peopleOut', ()=>{
if(o_O.state){
o_O.state = false;
o_O.LastUnActTime = new Date().valueOf();
};
o_O.func.peopleOut.forEach((item)=>{
item();
});
o_O.func.toggle.forEach((item)=>{
item();
});
});
});
return o_O;
}
zone.hall[0].on('peopleIn', ()=>{
light.hall.on();
});
var hall = mObj([zone.hall[0], zone.hall[1]]);
hall.on('peopleIn', ()=>{
light.hall.on();
});
hall.on('peopleOut', ()=>{
light.hall.off();
});
var liv = mObj([zone.liv[0], zone.liv[1]]);
liv.on('peopleIn', ()=>{
light.liv.on();
});
liv.on('peopleOut', ()=>{
light.liv.off();
});
}
exports.match = match;