Files
tools-legacy/public/clockio/app.js
T

118 lines
3.9 KiB
JavaScript
Raw Normal View History

var app = new Vue({
el: '#app',
data: {
domain: { },
errorMessage: '',
staff: { reference: '' },
department: '-',
departments: {},
started: false,
ready: false,
socket: null,
savedDepartments: [],
latestReportDate: new Date().toLocaleTimeString(),
lastProfile: 'None',
configuring: false
},
created: function () {
this.socket = io();
this.socket.on("connect", () => { })
this.socket.on("config", (data) => {
let deptStr = localStorage.getItem("idid-departments");
if (deptStr) this.savedDepartments = JSON.parse(deptStr);
data.departments.forEach(d => {
d.name = d.name.replace('*', '');
d.checked = this.savedDepartments.includes(d.id);
return d;
});
this.domain = data;
this.started = data.started;
this.today = new Date().toDateString();
this.records = data.records;
this.ready = true;
});
//#region Verify handlers
this.socket.on("fprint-verify-start-done", (data) => {
console.log({ event: 'fprint-verify-start-done', data});
this.started = true;
});
this.socket.on("fprint-verify-start-error", (data) => {
console.log({ event: 'fprint-verify-start-error', data });
swal("Oops!", `Operation failed. ${data}.`, "error");
});
this.socket.on("fprint-verify-stop-done", (data) => {
console.log({ event: 'fprint-verify-stop-done', data});
this.started = false;
});
this.socket.on("fprint-verify-stop-error", (data) => {
console.log({ event: 'fprint-verify-stop-error', data});
});
//#endregion
//#region Identify handlers
this.socket.on("fprint-identify-start-done", (data) => {
console.log({ event: 'fprint-identify-start-done', data});
this.started = true;
});
this.socket.on("fprint-identify-done", (data) => {
console.log({ event: 'fprint-identify-done', data});
if (data.ok)
this.lastProfile = data.name;
else
this.lastProfile = "No Match";
this.latestReportDate = new Date().toLocaleTimeString();
});
this.socket.on("fprint-identify-start-error", (data) => {
console.log({ event: 'fprint-identify-start-error', data});
console.log({ event: 'identify-error', data });
swal("Oops!", `Operation failed. ${data}.`, "error");
});
this.socket.on("fprint-identify-stop-done", (data) => {
console.log({ event: 'fprint-identify-stop-done', data});
this.started = false;
});
this.socket.on("fprint-identify-stop-error", (data) => {
console.log({ event: 'fprint-identify-stop-error', data});
});
//#endregion
},
methods: {
toggleIdentifyMode: async function () {
console.log("toggling clockin status ...");
this.socket.emit(`fprint-identify-${this.started ?'stop' : 'start'}`, {
departmentId: this.department
});
},
toggleCheck: async function (d) {
if (!d.checked) {
let dpts = this.domain.departments.filter(q => q.checked);
if (dpts.length == 10)
return alert("Maximum number of departments, 10, selected.");
}
d.checked = !d.checked;
},
saveDepartments() {
let tmp = this.domain.departments.filter(q => q.checked).map(d => d.id);
this.savedDepartments = tmp;
localStorage.setItem("idid-departments", JSON.stringify(tmp));
this.configuring = false;
}
}
})