stats.js 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. (()=>{
  2. const NOW = Date.now();
  3. let tmp = new Date();
  4. tmp.setHours(0);
  5. tmp.setMinutes(0);
  6. tmp.setSeconds(0);
  7. let today = tmp.getTime();
  8. if (tmp.getDay() === 0)
  9. tmp.setDate(tmp.getDate() -7);
  10. if (tmp.getDay() !== 1)
  11. tmp.setDate(tmp.getDate()-tmp.getDay() +1);
  12. const ONE_WEEK = tmp.getTime();
  13. console.log(tmp);
  14. tmp.setTime(today);
  15. tmp.setDate(1);
  16. const ONE_MONTH = tmp.getTime();
  17. console.log(tmp);
  18. for (let i of ["All"].concat(Object.keys(ACCESS.reduce((acc, i) => { acc[i.publicId] = true; return acc; }, {})).sort())) {
  19. let node = document.createElement("option");
  20. node.textContent = i;
  21. document.getElementById("relSource").appendChild(node);
  22. }
  23. function selectSource(source) {
  24. let _access = source === "All" ? ACCESS : ACCESS.filter(i => i.publicId === source);
  25. let lastAccess = _access.reduce((prev, i) => (prev && prev.accessTime > i.accessTime) ? prev : i, null)
  26. document.getElementById("size").textContent = FILE_SIZE +'o';
  27. document.getElementById('totalAccessCount').textContent = _access.length;
  28. document.getElementById('weekAccess').textContent = _access.reduce((acc, i) => acc + (i.accessTime >= NOW -ONE_WEEK ? 1 : 0), 0);
  29. document.getElementById('monthAccess').textContent = _access.reduce((acc, i) => acc + (i.accessTime >= NOW -ONE_MONTH ? 1 : 0), 0);
  30. document.getElementById('lastAccess').textContent = new Date(lastAccess?.accessTime);
  31. }
  32. selectSource(document.getElementById("relSource").selectedOptions?.[0]?.textContent || "All");
  33. document.getElementById("relSource").addEventListener("change", () => selectSource(document.getElementById("relSource").selectedOptions?.[0]?.textContent || "All"));
  34. })();