added silent mode to the block data transfer API

This commit is contained in:
Bogdan Pilyugin 2024-03-28 16:04:41 +02:00
parent 2431f43f73
commit 6e57bb53e2
2 changed files with 23 additions and 20 deletions

View File

@ -15,17 +15,12 @@
<q-btn class="btn q-ma-xs" flat label="DOWNLOAD" @click="DownloadFile"></q-btn>
<q-btn class="btn q-ma-xs" flat label="UPLOAD" @click="UploadFile"></q-btn>
<q-btn class="btn q-ma-xs" flat label="DELETE" @click="DeleteFile"></q-btn>
<q-btn class="btn q-ma-xs" flat label="GET ART" @click="GetArtnetTest"></q-btn>
<q-btn class="btn q-ma-xs" flat label="PUT ART" @click="PutArtnetTest"></q-btn>
</div>
</q-card-section>
</q-card>
</template>
<script setup>
import { GetArtnetTest, PutArtnetTest } from "assets/dimmer"
import { computed, onUnmounted, reactive, onMounted, ref } from "vue";
import { GetBlockObject, PutBlockObject, PostData } from "components/webguicomp//network";
import { useQuasar, Dialog } from 'quasar';
@ -66,13 +61,13 @@ async function DownloadFile() {
if (selected.value[0]) {
const buf = new Uint8Array(selected.value[0].size);
//await ReveiveFileChunks(buf);
await GetBlockObject('file_block', selected.value[0].name, selected.value[0].size, buf);
await GetBlockObject('file_block', selected.value[0].name, selected.value[0].size, buf, true);
SaveFile(buf, selected.value[0].name);
}
}
async function SendFile(buf) {
await PutBlockObject('file_block', file.value.name, file.value.size, buf);
await PutBlockObject('file_block', file.value.name, file.value.size, buf, true);
PostData(data, 2, 0, null);
}

View File

@ -33,18 +33,20 @@ function base64ToArrayBuffer(base64) {
return bytes;
}
async function GetBlockObject(namespase, name, size, buf) {
async function GetBlockObject(namespase, name, size, buf, verb) {
let partsnum = Math.floor(size / BLOCK_SIZE);
if (size % BLOCK_SIZE)
partsnum++;
console.log(`Found ${partsnum} blocks in file ${name}`)
let i;
let resp;
const dialog = Dialog.create({ message: `File "${name}" download 0%`, progress: true, persistent: true, ok: false, style: 'border: none; box-shadow: none;' })
let resp, dialog;
if (verb)
dialog = Dialog.create({ message: `File "${name}" download 0%`, progress: true, persistent: true, ok: false, style: 'border: none; box-shadow: none;' })
for (i = 0; i < partsnum; i++) {
resp = await ReceiveChunk(i, partsnum, name, namespase);
if (typeof resp[namespase] === 'string' || resp[namespase] instanceof String) {
dialog.hide();
if (verb)
dialog.hide();
Notify.create({ color: "negative", position: "top", message: resp[namespase], icon: "report_problem", });
return;
}
@ -52,9 +54,11 @@ async function GetBlockObject(namespase, name, size, buf) {
let decoded = base64ToArrayBuffer(resp[namespase].dat);
for (let k = 0; k < decoded.byteLength; k++)
buf[i * BLOCK_SIZE + k] = decoded[k];
dialog.update({ message: `File "${name}" download ${Math.floor(i * 100 / partsnum)}%` })
if (verb)
dialog.update({ message: `File "${name}" download ${Math.floor(i * 100 / partsnum)}%` })
}
dialog.hide();
if (verb)
dialog.hide();
}
function ToBase64(bytes) {
@ -82,7 +86,7 @@ function SendChunk(cur, total, name, namespase, buf) {
part: cur,
parts: total,
mem_object: name,
size: length,
size: arr.byteLength,
dat: encode
}
};
@ -92,24 +96,28 @@ function SendChunk(cur, total, name, namespase, buf) {
})
}
async function PutBlockObject(namespase, name, size, buf) {
async function PutBlockObject(namespase, name, size, buf, verb) {
let partsnum = Math.floor(size / BLOCK_SIZE);
if (size % BLOCK_SIZE)
partsnum++;
console.log(`Found ${partsnum} blocks in file`)
let i;
let resp;
const dialog = Dialog.create({ message: `File "${name}" upload 0%`, progress: true, persistent: true, ok: false, style: 'border: none; box-shadow: none;' })
let resp, dialog;
if (verb)
dialog = Dialog.create({ message: `File "${name}" upload 0%`, progress: true, persistent: true, ok: false, style: 'border: none; box-shadow: none;' })
for (i = 0; i < partsnum; i++) {
resp = await SendChunk(i, partsnum, name, namespase, buf);
if (typeof resp[namespase] === 'string' || resp[namespase] instanceof String) {
dialog.hide();
if (verb)
dialog.hide();
Notify.create({ color: "negative", position: "top", message: resp[namespase], icon: "report_problem", });
return;
}
dialog.update({ message: `File "${name}" upload ${Math.floor(i * 100 / partsnum)}%` })
if (verb)
dialog.update({ message: `File "${name}" upload ${Math.floor(i * 100 / partsnum)}%` })
}
dialog.hide();
if (verb)
dialog.hide();
}
function PostDataControlled(varlist, messtype, applytype, onfinished, enable) {