这是使用PyQT5作为UI的首次提交,将后端和UI合并到1个工程中,统一使用了Python,没有使用JS和HTML
This commit is contained in:
1
web/2.15.14_lib_index.js
Normal file
1
web/2.15.14_lib_index.js
Normal file
File diff suppressed because one or more lines are too long
86
web/DTM_entry.html
Normal file
86
web/DTM_entry.html
Normal file
@@ -0,0 +1,86 @@
|
||||
<!DOCTYPE html>
|
||||
<html charset="utf-8">
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" />
|
||||
<title>HYSZ DTM DEMO--1</title>
|
||||
<!-- 引入样式 -->
|
||||
<!--
|
||||
<link rel="stylesheet" href="https://unpkg.com/element-ui/lib/theme-chalk/index.css">
|
||||
-->
|
||||
|
||||
<link rel="stylesheet" href="element-ui@2.15.12\lib\theme-chalk\index.css">
|
||||
|
||||
<script src="vue.min.js"></script>
|
||||
<!--
|
||||
<script src="https://cdn.jsdelivr.net/npm/vue@2/dist/vue.js"></script>
|
||||
-->
|
||||
<script src="element-ui@2.15.12\lib\index.js"></script>
|
||||
|
||||
<script src="DtmSysNavi.umd.js"></script>
|
||||
<script src="axios.min.js"></script>
|
||||
<script src="socket.io.js"></script>
|
||||
<link rel="stylesheet" href="../src/asserts/extendicon/iconfont.css">
|
||||
<script src="https://cdn.jsdelivr.net/npm/dayjs"></script>
|
||||
<script src="eel.js"></script>
|
||||
</head>
|
||||
|
||||
<body style="font-family:Roboto, Arial, sans-serif;'overflow-y':'hidden';padding:0;margin: 0">
|
||||
<div id="element-App" :style="{'overflow-y':'hidden'}">
|
||||
<dtm-sys-navi></dtm-sys-navi>
|
||||
</div>
|
||||
<script>
|
||||
var serverUrl = 'http://127.0.0.1:5050';
|
||||
var wsUrl = "ws://127.0.0.1:5080/ws";
|
||||
console.log("serverUrl=",serverUrl)
|
||||
function adjustEleInViewPort(){
|
||||
console.log('window resize in vue.edit.html')
|
||||
}
|
||||
//window.addEventListener( "resize",adjustEleInViewPort,false);
|
||||
// create instance
|
||||
const VueVM = (window.app = new Vue({
|
||||
components: {
|
||||
'dtm-sys-navi':DtmSysNavi,
|
||||
},
|
||||
data: {
|
||||
destroy: false,
|
||||
projectResource:{},
|
||||
project:{name:"CB-IHU12"},
|
||||
edittingTask:null,
|
||||
fullTaskEditorVisible:false
|
||||
},
|
||||
methods:{
|
||||
|
||||
},
|
||||
mounted() {
|
||||
const baseURL='http://localhost:2990/jira/rest/api/2';
|
||||
return ;//cyx
|
||||
|
||||
}
|
||||
}));
|
||||
// mount gantt to DOM
|
||||
VueVM.$mount('#element-App');
|
||||
function destroy() {
|
||||
VueVM.destroy = true;
|
||||
}
|
||||
</script>
|
||||
|
||||
<style scoped >
|
||||
/*
|
||||
.el-dialog__body{
|
||||
padding: 2px 2px 2px 2px;
|
||||
margin: 2px 2px 2px 2px;
|
||||
}
|
||||
.el-dialog__header {
|
||||
background: lightblue;
|
||||
font-size: 28px;
|
||||
padding: 2px 2px;
|
||||
height: 40px;
|
||||
}*/
|
||||
.el-divider--horizontal{
|
||||
margin: 4px 2px 4px 2px;
|
||||
}
|
||||
</style>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
43153
web/DtmSysNavi.umd.js
Normal file
43153
web/DtmSysNavi.umd.js
Normal file
File diff suppressed because one or more lines are too long
2
web/axios.min.js
vendored
Normal file
2
web/axios.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
173
web/eel.js
Normal file
173
web/eel.js
Normal file
@@ -0,0 +1,173 @@
|
||||
eel = {
|
||||
_host: window.location.origin,
|
||||
|
||||
set_host: function (hostname) {
|
||||
eel._host = hostname
|
||||
},
|
||||
|
||||
expose: function(f, name) {
|
||||
if(name === undefined){
|
||||
name = f.toString();
|
||||
let i = 'function '.length, j = name.indexOf('(');
|
||||
name = name.substring(i, j).trim();
|
||||
}
|
||||
|
||||
eel._exposed_functions[name] = f;
|
||||
},
|
||||
|
||||
guid: function() {
|
||||
return eel._guid;
|
||||
},
|
||||
|
||||
// These get dynamically added by library when file is served
|
||||
/** _py_functions **/
|
||||
/** _start_geometry **/
|
||||
|
||||
_guid: ([1e7]+-1e3+-4e3+-8e3+-1e11).replace(/[018]/g, c =>
|
||||
(c ^ crypto.getRandomValues(new Uint8Array(1))[0] & 15 >> c / 4).toString(16)
|
||||
),
|
||||
|
||||
_exposed_functions: {},
|
||||
|
||||
_mock_queue: [],
|
||||
|
||||
_mock_py_functions: function() {
|
||||
for(let i = 0; i < eel._py_functions.length; i++) {
|
||||
let name = eel._py_functions[i];
|
||||
eel[name] = function() {
|
||||
let call_object = eel._call_object(name, arguments);
|
||||
eel._mock_queue.push(call_object);
|
||||
return eel._call_return(call_object);
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_import_py_function: function(name) {
|
||||
let func_name = name;
|
||||
eel[name] = function() {
|
||||
let call_object = eel._call_object(func_name, arguments);
|
||||
eel._websocket.send(eel._toJSON(call_object));
|
||||
return eel._call_return(call_object);
|
||||
}
|
||||
},
|
||||
|
||||
_call_number: 0,
|
||||
|
||||
_call_return_callbacks: {},
|
||||
|
||||
_call_object: function(name, args) {
|
||||
let arg_array = [];
|
||||
for(let i = 0; i < args.length; i++){
|
||||
arg_array.push(args[i]);
|
||||
}
|
||||
|
||||
let call_id = (eel._call_number += 1) + Math.random();
|
||||
return {'call': call_id, 'name': name, 'args': arg_array};
|
||||
},
|
||||
|
||||
_sleep: function(ms) {
|
||||
return new Promise(resolve => setTimeout(resolve, ms));
|
||||
},
|
||||
|
||||
_toJSON: function(obj) {
|
||||
return JSON.stringify(obj, (k, v) => v === undefined ? null : v);
|
||||
},
|
||||
|
||||
_call_return: function(call) {
|
||||
return function(callback = null) {
|
||||
if(callback != null) {
|
||||
eel._call_return_callbacks[call.call] = {resolve: callback};
|
||||
} else {
|
||||
return new Promise(function(resolve, reject) {
|
||||
eel._call_return_callbacks[call.call] = {resolve: resolve, reject: reject};
|
||||
});
|
||||
}
|
||||
}
|
||||
},
|
||||
|
||||
_position_window: function(page) {
|
||||
let size = eel._start_geometry['default'].size;
|
||||
let position = eel._start_geometry['default'].position;
|
||||
|
||||
if(page in eel._start_geometry.pages) {
|
||||
size = eel._start_geometry.pages[page].size;
|
||||
position = eel._start_geometry.pages[page].position;
|
||||
}
|
||||
|
||||
if(size != null){
|
||||
window.resizeTo(size[0], size[1]);
|
||||
}
|
||||
|
||||
if(position != null){
|
||||
window.moveTo(position[0], position[1]);
|
||||
}
|
||||
},
|
||||
|
||||
_init: function() {
|
||||
eel._mock_py_functions();
|
||||
|
||||
document.addEventListener("DOMContentLoaded", function(event) {
|
||||
let page = window.location.pathname.substring(1);
|
||||
eel._position_window(page);
|
||||
|
||||
let websocket_addr = (eel._host + '/eel').replace('http', 'ws');
|
||||
websocket_addr += ('?page=' + page);
|
||||
eel._websocket = new WebSocket(websocket_addr);
|
||||
|
||||
eel._websocket.onopen = function() {
|
||||
for(let i = 0; i < eel._py_functions.length; i++){
|
||||
let py_function = eel._py_functions[i];
|
||||
eel._import_py_function(py_function);
|
||||
}
|
||||
|
||||
while(eel._mock_queue.length > 0) {
|
||||
let call = eel._mock_queue.shift();
|
||||
eel._websocket.send(eel._toJSON(call));
|
||||
}
|
||||
};
|
||||
|
||||
eel._websocket.onmessage = function (e) {
|
||||
let message = JSON.parse(e.data);
|
||||
if(message.hasOwnProperty('call') ) {
|
||||
// Python making a function call into us
|
||||
if(message.name in eel._exposed_functions) {
|
||||
try {
|
||||
let return_val = eel._exposed_functions[message.name](...message.args);
|
||||
eel._websocket.send(eel._toJSON({'return': message.call, 'status':'ok', 'value': return_val}));
|
||||
} catch(err) {
|
||||
debugger
|
||||
eel._websocket.send(eel._toJSON(
|
||||
{'return': message.call,
|
||||
'status':'error',
|
||||
'error': err.message,
|
||||
'stack': err.stack}));
|
||||
}
|
||||
}
|
||||
} else if(message.hasOwnProperty('return')) {
|
||||
// Python returning a value to us
|
||||
if(message['return'] in eel._call_return_callbacks) {
|
||||
if(message['status']==='ok'){
|
||||
eel._call_return_callbacks[message['return']].resolve(message.value);
|
||||
}
|
||||
else if(message['status']==='error' && eel._call_return_callbacks[message['return']].reject) {
|
||||
eel._call_return_callbacks[message['return']].reject(message['error']);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
throw 'Invalid message ' + message;
|
||||
}
|
||||
|
||||
};
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
eel._init();
|
||||
|
||||
if(typeof require !== 'undefined'){
|
||||
// Avoid name collisions when using Electron, so jQuery etc work normally
|
||||
window.nodeRequire = require;
|
||||
delete window.require;
|
||||
delete window.exports;
|
||||
delete window.module;
|
||||
}
|
||||
1
web/element-ui@2.15.12/lib/index.js
Normal file
1
web/element-ui@2.15.12/lib/index.js
Normal file
File diff suppressed because one or more lines are too long
BIN
web/element-ui@2.15.12/lib/theme-chalk/fonts/element-icons.ttf
Normal file
BIN
web/element-ui@2.15.12/lib/theme-chalk/fonts/element-icons.ttf
Normal file
Binary file not shown.
BIN
web/element-ui@2.15.12/lib/theme-chalk/fonts/element-icons.woff
Normal file
BIN
web/element-ui@2.15.12/lib/theme-chalk/fonts/element-icons.woff
Normal file
Binary file not shown.
1
web/element-ui@2.15.12/lib/theme-chalk/index.css
Normal file
1
web/element-ui@2.15.12/lib/theme-chalk/index.css
Normal file
File diff suppressed because one or more lines are too long
6161
web/socket.io.js
Normal file
6161
web/socket.io.js
Normal file
File diff suppressed because it is too large
Load Diff
1
web/theme-chalk_index.css
Normal file
1
web/theme-chalk_index.css
Normal file
File diff suppressed because one or more lines are too long
11
web/vue.min.js
vendored
Normal file
11
web/vue.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user