themblem/web/src/main.js
2024-09-01 21:51:50 +01:00

150 lines
3.8 KiB
JavaScript

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from './store'
import CoreuiVue from '@coreui/vue'
import CIcon from '@coreui/icons-vue'
import { iconsSet as icons } from '@/assets/icons'
import axios from 'axios'
import VueAxios from 'vue-axios'
import { library } from '@fortawesome/fontawesome-svg-core'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'
import GenericManager from './components/generic-manager'
import Modal from './components/modal'
import { fas } from '@fortawesome/free-solid-svg-icons'
import { fab } from '@fortawesome/free-brands-svg-icons'
library.add(fas,fab)
const app = createApp(App)
app.use(VueAxios, axios)
app.use(store)
app.use(router)
app.use(CoreuiVue)
app.provide('icons', icons)
app.component('CIcon', CIcon)
app.component('font-awesome-icon', FontAwesomeIcon)
app.component('GenericManager', GenericManager)
app.component('Modal', Modal)
app.mixin({
data: function() {
var oss = {
bucket: 'emblem-archive',
endpoint: 'oss-cn-shenzhen.aliyuncs.com',
};
var estor_url = 'https://emblem-estor.hond.cloud';
var testenv = false;
if (testenv) {
oss = {
bucket: 'emblem-archive-test',
endpoint: 'oss-eu-west-1.aliyuncs.com',
};
estor_url = 'http://127.0.0.1:3000';
}
return {
// The local address for estor httppost job
emblem_processor_url: 'http://127.0.0.1:13389',
estor_url,
estor_token: '3b1ce86e-f7b6-4f81-ac4e-0f99e990a616',
oss,
};
},
methods: {
base_url() {
return window.location.protocol + "//" + window.location.host;
},
sms_verified_action(title, description, action) {
this.$root.$refs.sms_verify_modal.show(title, description, action);
},
show_size(s) {
var n = s;
var unit = "B";
if (s > 1000000000) {
n = Math.round(s / 100000000) / 10;
unit = "GB";
} else if (s > 1000000) {
n = Math.round(s / 100000) / 10;
unit = "MB";
} else if (s > 1000) {
n = Math.round(s / 100) / 10;
unit = "KB";
}
return n + unit;
},
gen_random_string: function(len) {
var l = len || 10;
var r = '';
while (r.length < l) {
var a = Math.random().toString(36).substring(2, 15);
r = r + a;
}
return r.substring(0, l);
},
display_field: function(val, field) {
var md = field.metadata;
if (val == null) {
return '';
}
if (md.type == 'datetime') {
return this.format_timestamp(val);
}
if (md.type == 'related') {
var df = val['display_field'];
if (df) {
return val[df];
}
}
if (field.name == 'succeeded') {
return val ? "成功" : "失败";
}
if (md.type == 'boolean') {
return val ? "是" : "否";
}
if (md.multiline) {
return "<pre>" + val + "</pre>";
}
return val;
},
format_timestamp: function(ts, dateonly) {
var d = new Date(ts * 1000);
if (dateonly) {
return d.toLocaleDateString();
} else {
return d.toLocaleString();
}
},
sleep: function(ms) {
return new Promise((accept) => {
setTimeout(accept, ms);
});
},
batch_dir(batch_name, subdir) {
var r = this.$root.batches_dir + "/" + batch_name;
if (subdir) {
r = r + '/' + subdir;
}
return r;
},
state_file(batch_name) {
return this.batch_dir(batch_name, "emblem.json")
},
async get_batch_state(batch_name) {
var p = this.state_file(batch_name);
var r = await this.$root.estor_get(p);
return r;
},
async set_batch_state(batch_name, st) {
var p = this.state_file(batch_name);
await this.$root.estor_put(p, st);
},
},
})
app.mount('#app')