From 0890704801cc9ea25ee0b24abadc50d19484e784 Mon Sep 17 00:00:00 2001 From: Dauren777 Date: Thu, 11 Jun 2026 06:48:02 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20IndexedDB=20file=20storage=20on=20stable?= =?UTF-8?q?=20base=20=E2=80=94=20no=20localStorage=20quota=20issues?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- index.html | 89 +++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 71 insertions(+), 18 deletions(-) diff --git a/index.html b/index.html index 5007601..3bbb5b8 100644 --- a/index.html +++ b/index.html @@ -967,6 +967,46 @@ var brs=["Дирекция производственной безопаснос var stn={warn:"В процессе",late:"Просрочено",done:"Исполнено"}; var stc={warn:"a",late:"r",done:"g"}; var USR={curator:{n:"Куратор ПБ",bg:0},admin:{n:"Администратор",bg:0},dpp:{n:"Директор ДПБ",bg:0},ivanov:{n:"Иванов Иван",bg:1},petrov:{n:"Петров Петр",bg:2},sidorov:{n:"Сидоров Сидор",bg:3},kozhin:{n:"Кожин А.М.",bg:4},ismailov:{n:"Исмаилов Р.К.",bg:1},nurpeisov:{n:"Нурпеисов Д.А.",bg:5},suleimenov:{n:"Сулейменов К.Т.",bg:6},kassenov:{n:"Касенов Б.Б.",bg:7},serikov:{n:"Сериков Е.С.",bg:8},zhunusov:{n:"Жунусов А.А.",bg:2},muratov:{n:"Муратов А.Т.",bg:3},bakirov:{n:"Бакиров Т.Н.",bg:4}}; +var DBNAME="hse_fv3";var DBVER=1;var gdb=null; +function openDB(cb){ + if(gdb){cb(gdb);return} + var r=indexedDB.open(DBNAME,DBVER); + r.onupgradeneeded=function(e){e.target.result.createObjectStore("files",{keyPath:"id"})}; + r.onsuccess=function(e){gdb=e.target.result;cb(gdb)}; + r.onerror=function(){cb(null)} +} +function idbPut(id,blob,name,size,type,cb){ + openDB(function(db){if(!db){cb(false);return} + var tx=db.transaction("files","readwrite");var st=tx.objectStore("files"); + var fr=new FileReader();fr.onload=function(){ + st.put({id:id,name:name,size:size,type:type,data:fr.result}); + tx.oncomplete=function(){cb(true)};tx.onerror=function(){cb(false)} + };fr.readAsArrayBuffer(new Blob([blob],{type:type||"application/octet-stream"})) + }) +} +function idbGetAll(prefix,cb){ + openDB(function(db){if(!db){cb([]);return} + var tx=db.transaction("files","readonly");var st=tx.objectStore("files"); + var rq=st.getAll();rq.onsuccess=function(){ + var all=rq.result||[];var res=[]; + for(var i=0;i/g,">").replace(/"/g,""") @@ -1283,7 +1323,28 @@ function openEv(id,subIdx){ h+="
"; h+="
"; h+=""; - showModal(h) + showModal(h); + idbGetAll(fk+"_m"+selMonth,function(files){ + var fdiv=document.getElementById("fl_"+e.id);if(!fdiv)return; + if(!files||!files.length){fdiv.innerHTML="\u041D\u0435\u0442 \u0444\u0430\u0439\u043B\u043E\u0432";return} + var fh="";var groups={}; + for(var i=0;i"+esc(brs[bi])+":"; + for(var j=0;j0?0:0);var ds=""; + try{var dd=new Date(parseInt(f.id.split("_").pop()));ds=dd.getDate()+"."+String(dd.getMonth()+1).padStart(2,"0")+"."+dd.getFullYear()}catch(e){} + fh+="" + } + } + fdiv.innerHTML=fh||"\u041D\u0435\u0442 \u0444\u0430\u0439\u043B\u043E\u0432" + }) } function showModal(html){ @@ -1340,23 +1401,15 @@ function upFile(id){ var inp=document.getElementById("fu_"+id); if(!inp||!inp.files||!inp.files[0])return; var f=inp.files[0]; - if(f.size>3145728){alert("\u0424\u0430\u0439\u043B \u0431\u043E\u043B\u044C\u0448\u0435 3MB");return} - var fr=new FileReader(); - var subKey=curSub!==null?"_s"+curSub:""; var inm=document.getElementById("evm_"+id); - var monthKey=inm?"_m"+inm.value:""; - var brKey="_b"+(cu?cu.bg:0); - fr.onload=function(){ - var key="sf_"+id+monthKey+subKey+brKey; - var arr=[]; - var ex=localStorage.getItem(key); - if(ex){try{arr=JSON.parse(ex)}catch(e){}} - var d=new Date(); - arr.push({n:f.name,s:f.size,d:d.getDate()+"."+String(d.getMonth()+1).padStart(2,"0")+"."+d.getFullYear(),u:cu?cu.n:"",data:fr.result}); - try{localStorage.setItem(key,JSON.stringify(arr))}catch(e){alert("\u041E\u0448\u0438\u0431\u043A\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F")} - openEv(id,curSub!==null?curSub:undefined) - }; - fr.readAsDataURL(f) + var mk=inm?"_m"+inm.value:"_m0"; + var sk=curSub!==null?"_s"+curSub:""; + var bk="_b"+(cu?cu.bg:0); + var fileId="sf_"+id+mk+sk+bk+"_"+Date.now(); + idbPut(fileId,f,f.name,f.size,f.type,function(ok){ + if(ok){openEv(id,curSub!==null?curSub:undefined)} + else{alert("\u041E\u0448\u0438\u0431\u043A\u0430 \u0441\u043E\u0445\u0440\u0430\u043D\u0435\u043D\u0438\u044F")} + }) } function dlFile(id,idx){ var inm=document.getElementById("evm_"+id); @@ -1992,6 +2045,6 @@ function dlAnalyticsWord(){ var a=document.createElement("a");a.href=URL.createObjectURL(blob);a.download="analytics.doc";a.click() } - +