mdkcontroller 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/Cores/file/dk.css +99 -0
- package/Cores/file/dk.js +154 -0
- package/Cores/file/dk_table.css +63 -0
- package/Cores/file/dk_table.js +252 -0
- package/Cores/file/error.png +0 -0
- package/Cores/file/information.png +0 -0
- package/Cores/file/jquery-3.2.1.min.js +4 -0
- package/Cores/file/success.png +0 -0
- package/Cores/file/warning.png +0 -0
- package/Cores/login/css/main.css +462 -0
- package/Cores/login/css/util.css +2993 -0
- package/Cores/login/fonts/font-awesome-4.7.0/HELP-US-OUT.txt +7 -0
- package/Cores/login/fonts/font-awesome-4.7.0/css/font-awesome.css +2337 -0
- package/Cores/login/fonts/font-awesome-4.7.0/css/font-awesome.min.css +4 -0
- package/Cores/login/fonts/font-awesome-4.7.0/fonts/FontAwesome.otf +0 -0
- package/Cores/login/fonts/font-awesome-4.7.0/fonts/fontawesome-webfont.eot +0 -0
- package/Cores/login/fonts/font-awesome-4.7.0/fonts/fontawesome-webfont.svg +2671 -0
- package/Cores/login/fonts/font-awesome-4.7.0/fonts/fontawesome-webfont.ttf +0 -0
- package/Cores/login/fonts/font-awesome-4.7.0/fonts/fontawesome-webfont.woff +0 -0
- package/Cores/login/fonts/font-awesome-4.7.0/fonts/fontawesome-webfont.woff2 +0 -0
- package/Cores/login/fonts/font-awesome-4.7.0/less/animated.less +34 -0
- package/Cores/login/fonts/font-awesome-4.7.0/less/bordered-pulled.less +25 -0
- package/Cores/login/fonts/font-awesome-4.7.0/less/core.less +12 -0
- package/Cores/login/fonts/font-awesome-4.7.0/less/fixed-width.less +6 -0
- package/Cores/login/fonts/font-awesome-4.7.0/less/font-awesome.less +18 -0
- package/Cores/login/fonts/font-awesome-4.7.0/less/icons.less +789 -0
- package/Cores/login/fonts/font-awesome-4.7.0/less/larger.less +13 -0
- package/Cores/login/fonts/font-awesome-4.7.0/less/list.less +19 -0
- package/Cores/login/fonts/font-awesome-4.7.0/less/mixins.less +60 -0
- package/Cores/login/fonts/font-awesome-4.7.0/less/path.less +15 -0
- package/Cores/login/fonts/font-awesome-4.7.0/less/rotated-flipped.less +20 -0
- package/Cores/login/fonts/font-awesome-4.7.0/less/screen-reader.less +5 -0
- package/Cores/login/fonts/font-awesome-4.7.0/less/stacked.less +20 -0
- package/Cores/login/fonts/font-awesome-4.7.0/less/variables.less +800 -0
- package/Cores/login/fonts/font-awesome-4.7.0/scss/_animated.scss +34 -0
- package/Cores/login/fonts/font-awesome-4.7.0/scss/_bordered-pulled.scss +25 -0
- package/Cores/login/fonts/font-awesome-4.7.0/scss/_core.scss +12 -0
- package/Cores/login/fonts/font-awesome-4.7.0/scss/_fixed-width.scss +6 -0
- package/Cores/login/fonts/font-awesome-4.7.0/scss/_icons.scss +789 -0
- package/Cores/login/fonts/font-awesome-4.7.0/scss/_larger.scss +13 -0
- package/Cores/login/fonts/font-awesome-4.7.0/scss/_list.scss +19 -0
- package/Cores/login/fonts/font-awesome-4.7.0/scss/_mixins.scss +60 -0
- package/Cores/login/fonts/font-awesome-4.7.0/scss/_path.scss +15 -0
- package/Cores/login/fonts/font-awesome-4.7.0/scss/_rotated-flipped.scss +20 -0
- package/Cores/login/fonts/font-awesome-4.7.0/scss/_screen-reader.scss +5 -0
- package/Cores/login/fonts/font-awesome-4.7.0/scss/_stacked.scss +20 -0
- package/Cores/login/fonts/font-awesome-4.7.0/scss/_variables.scss +800 -0
- package/Cores/login/fonts/font-awesome-4.7.0/scss/font-awesome.scss +18 -0
- package/Cores/login/fonts/montserrat/Montserrat-Black.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-BlackItalic.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-Bold.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-BoldItalic.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-ExtraBold.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-ExtraBoldItalic.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-ExtraLight.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-ExtraLightItalic.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-Italic.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-Light.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-LightItalic.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-Medium.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-MediumItalic.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-Regular.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-SemiBold.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-SemiBoldItalic.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-Thin.ttf +0 -0
- package/Cores/login/fonts/montserrat/Montserrat-ThinItalic.ttf +0 -0
- package/Cores/login/fonts/montserrat/OFL.txt +93 -0
- package/Cores/login/fonts/poppins/Poppins-Black.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-BlackItalic.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-Bold.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-BoldItalic.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-ExtraBold.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-ExtraBoldItalic.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-ExtraLight.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-ExtraLightItalic.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-Italic.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-Light.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-LightItalic.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-Medium.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-MediumItalic.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-Regular.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-SemiBold.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-SemiBoldItalic.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-Thin.ttf +0 -0
- package/Cores/login/fonts/poppins/Poppins-ThinItalic.ttf +0 -0
- package/Cores/login/images/icons/favicon.ico +0 -0
- package/Cores/login/images/img-01.png +0 -0
- package/Cores/login/index.html +146 -0
- package/Cores/login/js/main.js +57 -0
- package/Cores/login/register.html +191 -0
- package/Cores/login/vendor/animate/animate.css +1579 -0
- package/Cores/login/vendor/bootstrap/css/bootstrap-grid.css +1353 -0
- package/Cores/login/vendor/bootstrap/css/bootstrap-grid.css.map +1 -0
- package/Cores/login/vendor/bootstrap/css/bootstrap-grid.min.css +2 -0
- package/Cores/login/vendor/bootstrap/css/bootstrap-grid.min.css.map +1 -0
- package/Cores/login/vendor/bootstrap/css/bootstrap-reboot.css +330 -0
- package/Cores/login/vendor/bootstrap/css/bootstrap-reboot.css.map +1 -0
- package/Cores/login/vendor/bootstrap/css/bootstrap-reboot.min.css +2 -0
- package/Cores/login/vendor/bootstrap/css/bootstrap-reboot.min.css.map +1 -0
- package/Cores/login/vendor/bootstrap/css/bootstrap.css +8185 -0
- package/Cores/login/vendor/bootstrap/css/bootstrap.css.map +1 -0
- package/Cores/login/vendor/bootstrap/css/bootstrap.min.css +7 -0
- package/Cores/login/vendor/bootstrap/css/bootstrap.min.css.map +1 -0
- package/Cores/login/vendor/bootstrap/js/bootstrap.js +3831 -0
- package/Cores/login/vendor/bootstrap/js/bootstrap.min.js +6 -0
- package/Cores/login/vendor/bootstrap/js/popper.js +2448 -0
- package/Cores/login/vendor/bootstrap/js/popper.min.js +5 -0
- package/Cores/login/vendor/bootstrap/js/tooltip.js +539 -0
- package/Cores/login/vendor/css-hamburgers/hamburgers.css +626 -0
- package/Cores/login/vendor/css-hamburgers/hamburgers.min.css +7 -0
- package/Cores/login/vendor/jquery/jquery-3.2.1.min.js +4 -0
- package/Cores/login/vendor/select2/select2.css +484 -0
- package/Cores/login/vendor/select2/select2.js +6450 -0
- package/Cores/login/vendor/select2/select2.min.css +1 -0
- package/Cores/login/vendor/select2/select2.min.js +3 -0
- package/Cores/login/vendor/tilt/tilt.jquery.min.js +1 -0
- package/app.js +105 -0
- package/dk_modules/authorization.js +47 -0
- package/dk_modules/autoSequence.js +23 -0
- package/dk_modules/autohtml.js +99 -0
- package/dk_modules/dkdb.js +7 -0
- package/dk_modules/dkvar.js +50 -0
- package/dk_modules/users.js +143 -0
- package/package.json +17 -0
- package/projectDB.js +5 -0
- package/projectVar.js +3 -0
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
.dk-loader {
|
|
2
|
+
position: absolute;
|
|
3
|
+
width: 350px;
|
|
4
|
+
height: 350px;
|
|
5
|
+
border-radius: 50%;
|
|
6
|
+
background: linear-gradient(#f07e6e, #84cdfa, #5ad1cd);
|
|
7
|
+
animation: dk-animate 1.2s linear infinite;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
@keyframes dk-animate {
|
|
11
|
+
0% {
|
|
12
|
+
transform: rotate(0deg);
|
|
13
|
+
}
|
|
14
|
+
100% {
|
|
15
|
+
transform: rotate(360deg);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
.dk-loader span {
|
|
20
|
+
position: absolute;
|
|
21
|
+
width: 100%;
|
|
22
|
+
height: 100%;
|
|
23
|
+
border-radius: 50%;
|
|
24
|
+
background: linear-gradient(#f07e6e, #84cdfa, #5ad1cd);
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
.dk-loader span:nth-child(1) {
|
|
28
|
+
filter: blur(5px);
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
.dk-loader span:nth-child(2) {
|
|
32
|
+
filter: blur(10px);
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
.dk-loader span:nth-child(3) {
|
|
36
|
+
filter: blur(25px);
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
.dk-loader span:nth-child(4) {
|
|
40
|
+
filter: blur(50px);
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
.dk-loader:after {
|
|
44
|
+
content: "";
|
|
45
|
+
position: absolute;
|
|
46
|
+
top: 10px;
|
|
47
|
+
left: 10px;
|
|
48
|
+
right: 10px;
|
|
49
|
+
bottom: 10px;
|
|
50
|
+
background: #f1f1f1;
|
|
51
|
+
border: solid white 10px;
|
|
52
|
+
border-radius: 50%;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
.dk-overlay {
|
|
56
|
+
display: none;
|
|
57
|
+
position: fixed;
|
|
58
|
+
top: 0;
|
|
59
|
+
left: 0;
|
|
60
|
+
width: 100%;
|
|
61
|
+
height: 100%;
|
|
62
|
+
backdrop-filter: blur(3px);
|
|
63
|
+
z-index: 9999;
|
|
64
|
+
color: black;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
.dk-overlay .dk-overlay_boder {
|
|
68
|
+
width: 100%;
|
|
69
|
+
height: 100%;
|
|
70
|
+
display: flex;
|
|
71
|
+
flex-direction: column;
|
|
72
|
+
justify-content: center;
|
|
73
|
+
align-items: center;
|
|
74
|
+
}
|
|
75
|
+
.dk-overlay .dk-overlay_boder > strong {
|
|
76
|
+
z-index: 10;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
.dk-overlay .dk-overlay_boder .dk-overlay_box {
|
|
80
|
+
border: 2px solid #8f32b0ba;
|
|
81
|
+
border-radius: 10px;
|
|
82
|
+
box-shadow: 0 0 9px 6px #8f32b0a3;
|
|
83
|
+
padding: 15px;
|
|
84
|
+
background-color: white;
|
|
85
|
+
min-width: 380px;
|
|
86
|
+
min-height: 200px;
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
.dk-overlay .dk-overlay_boder > span {
|
|
90
|
+
font-size: 40px;
|
|
91
|
+
cursor: pointer;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
.dk-transiton500 {
|
|
95
|
+
transition: all ease 0.5s;
|
|
96
|
+
}
|
|
97
|
+
.dk-transiton300 {
|
|
98
|
+
transition: all ease 0.3s;
|
|
99
|
+
}
|
package/Cores/file/dk.js
ADDED
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
const DK = {
|
|
2
|
+
varHide: {
|
|
3
|
+
showBusyCache: {},
|
|
4
|
+
currentScriptPath: ''
|
|
5
|
+
},
|
|
6
|
+
showBusy: (show, mess) => {
|
|
7
|
+
const temp = DK.varHide.showBusyCache;
|
|
8
|
+
if (show) {
|
|
9
|
+
temp[mess] = (temp[mess] ?? 0) + 1;
|
|
10
|
+
} else {
|
|
11
|
+
temp[mess] = (temp[mess] ?? 0) - 1;
|
|
12
|
+
if (temp[mess] <= 0)
|
|
13
|
+
delete temp[mess];
|
|
14
|
+
}
|
|
15
|
+
const keys = Object.keys(temp);
|
|
16
|
+
let textShow = '';
|
|
17
|
+
keys.forEach((k) => {
|
|
18
|
+
textShow += `${k} x ${temp[k]} <br/>`;
|
|
19
|
+
});
|
|
20
|
+
const overlayId = 'dkoverlay_busy';
|
|
21
|
+
let dk_overlay = document.getElementById(overlayId);
|
|
22
|
+
if (!dk_overlay) {
|
|
23
|
+
dk_overlay = document.createElement('div');
|
|
24
|
+
dk_overlay.style.zIndex = 10000;
|
|
25
|
+
dk_overlay.id = overlayId;
|
|
26
|
+
dk_overlay.classList.add('dk-overlay');
|
|
27
|
+
const overlay_boder = document.createElement('div');
|
|
28
|
+
overlay_boder.classList.add('dk-overlay_boder');
|
|
29
|
+
const loader = document.createElement('div');
|
|
30
|
+
loader.classList.add('dk-loader');
|
|
31
|
+
const span1 = document.createElement('span');
|
|
32
|
+
const span2 = document.createElement('span');
|
|
33
|
+
const span3 = document.createElement('span');
|
|
34
|
+
const span4 = document.createElement('span');
|
|
35
|
+
|
|
36
|
+
const strong = document.createElement('strong');
|
|
37
|
+
strong.id = dk_overlay.id + '_content';
|
|
38
|
+
loader.appendChild(span1);
|
|
39
|
+
loader.appendChild(span2);
|
|
40
|
+
loader.appendChild(span3);
|
|
41
|
+
loader.appendChild(span4);
|
|
42
|
+
overlay_boder.appendChild(loader);
|
|
43
|
+
overlay_boder.appendChild(strong);
|
|
44
|
+
dk_overlay.appendChild(overlay_boder);
|
|
45
|
+
document.body.appendChild(dk_overlay);
|
|
46
|
+
}
|
|
47
|
+
const strongContent = document.getElementById(overlayId + '_content');
|
|
48
|
+
if (textShow) {
|
|
49
|
+
strongContent.innerHTML = textShow;
|
|
50
|
+
dk_overlay.style.display = 'block';
|
|
51
|
+
} else {
|
|
52
|
+
dk_overlay.style.display = 'none';
|
|
53
|
+
}
|
|
54
|
+
},
|
|
55
|
+
generateRandomToken: (length = 20) => {
|
|
56
|
+
const characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789`~!@#$%^&*()?<>:{}/*-+';
|
|
57
|
+
let token = '';
|
|
58
|
+
for (let i = 0; i < length; i++) {
|
|
59
|
+
const randomIndex = Math.floor(Math.random() * characters.length);
|
|
60
|
+
token += characters.charAt(randomIndex);
|
|
61
|
+
}
|
|
62
|
+
return token;
|
|
63
|
+
},
|
|
64
|
+
showMessage: (mess, type = 1, layer = 10001) => {
|
|
65
|
+
let imageName = 'information.png';
|
|
66
|
+
switch (type) {
|
|
67
|
+
case 1: imageName = 'information.png'; break;
|
|
68
|
+
case 2: imageName = 'success.png'; break;
|
|
69
|
+
case 3: imageName = 'warning.png'; break;
|
|
70
|
+
case 4: imageName = 'error.png'; break;
|
|
71
|
+
default: break;
|
|
72
|
+
}
|
|
73
|
+
const overlayId = 'dkoverlay_message_' + DK.generateRandomToken();
|
|
74
|
+
let dk_overlay = document.getElementById(overlayId);
|
|
75
|
+
if (!dk_overlay) {
|
|
76
|
+
dk_overlay = document.createElement('div');
|
|
77
|
+
dk_overlay.style.zIndex = layer;
|
|
78
|
+
dk_overlay.id = overlayId;
|
|
79
|
+
dk_overlay.classList.add('dk-overlay');
|
|
80
|
+
const overlay_boder = document.createElement('div');
|
|
81
|
+
overlay_boder.classList.add('dk-overlay_boder');
|
|
82
|
+
if (overlay_boder) {
|
|
83
|
+
const overlay_box = document.createElement('div');
|
|
84
|
+
overlay_box.classList.add('dk-overlay_box');
|
|
85
|
+
if (overlay_box) {
|
|
86
|
+
const closeX = document.createElement('span');
|
|
87
|
+
closeX.innerText = 'X';
|
|
88
|
+
closeX.onclick = () => {
|
|
89
|
+
document.body.removeChild(dk_overlay);
|
|
90
|
+
};
|
|
91
|
+
closeX.style.cssText = `font-size: 25px;cursor: pointer;float: right;font-weight: bold;color: #157272a6;margin: -18px -8px 0 0;`;
|
|
92
|
+
|
|
93
|
+
const divImage = document.createElement('div');
|
|
94
|
+
divImage.style.cssText = `height: 100%;display: flex;flex-direction: column;align-items: center;justify-content: center;`;
|
|
95
|
+
divImage.innerHTML = `<img style='position: fixed;opacity: 0.1;width: 150px;' src='${(DK.varHide.currentScriptPath + '/' + imageName)}'/>`;
|
|
96
|
+
const overlay_inner = document.createElement('span');
|
|
97
|
+
overlay_inner.style.cssText = 'font-weight: bold;overflow-wrap: anywhere;max-width: 500px;z-index: 1;overflow: auto;';
|
|
98
|
+
overlay_inner.classList.add('dk-overlay_inner');
|
|
99
|
+
|
|
100
|
+
overlay_box.appendChild(closeX);
|
|
101
|
+
overlay_box.appendChild(divImage);
|
|
102
|
+
divImage.appendChild(overlay_inner);
|
|
103
|
+
}
|
|
104
|
+
overlay_boder.appendChild(overlay_box);
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
dk_overlay.appendChild(overlay_boder);
|
|
108
|
+
document.body.appendChild(dk_overlay);
|
|
109
|
+
}
|
|
110
|
+
var dialog = dk_overlay.getElementsByClassName('dk-overlay_inner')[0];
|
|
111
|
+
dialog.innerHTML = mess;
|
|
112
|
+
const scripts = dialog.getElementsByTagName('script');
|
|
113
|
+
for (let i = 0; i < scripts.length; i++) {
|
|
114
|
+
const script = scripts[i];
|
|
115
|
+
const scriptContent = script.textContent || script.innerText;
|
|
116
|
+
const scriptFunction = new Function(scriptContent);
|
|
117
|
+
scriptFunction();
|
|
118
|
+
}
|
|
119
|
+
const maxWidthSpan = document.body.clientWidth - 60;
|
|
120
|
+
dialog.style.maxWidth = (maxWidthSpan > 800 ? 800 : maxWidthSpan) + 'px';
|
|
121
|
+
dk_overlay.style.display = 'block';
|
|
122
|
+
const imgTag = dk_overlay.getElementsByTagName('img')[0];
|
|
123
|
+
imgTag.style.height = dialog.parentNode.parentNode.clientHeight + 'px';
|
|
124
|
+
},
|
|
125
|
+
ImportCss: (src) => {
|
|
126
|
+
var link = document.createElement("link");
|
|
127
|
+
link.href = src;
|
|
128
|
+
link.type = "text/css";
|
|
129
|
+
link.rel = "stylesheet";
|
|
130
|
+
link.media = "screen,print";
|
|
131
|
+
|
|
132
|
+
document.getElementsByTagName("head")[0].appendChild(link);
|
|
133
|
+
},
|
|
134
|
+
ImportJS: (src) => {
|
|
135
|
+
var scriptJS = document.createElement("script");
|
|
136
|
+
scriptJS.src = src;
|
|
137
|
+
document.getElementsByTagName("head")[0].appendChild(scriptJS);
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
document.addEventListener('DOMContentLoaded', () => {
|
|
141
|
+
const scriptElements = document.getElementsByTagName('script');
|
|
142
|
+
for (let x = 0; x < scriptElements.length; x++) {
|
|
143
|
+
const currentScript = scriptElements[x];
|
|
144
|
+
const scriptPath = currentScript.src;
|
|
145
|
+
if (scriptPath.endsWith('/dk.js')) {
|
|
146
|
+
DK.varHide.currentScriptPath = scriptPath.substring(0, scriptPath.lastIndexOf('/dk.js'))
|
|
147
|
+
DK.ImportCss(DK.varHide.currentScriptPath + '/dk.css');
|
|
148
|
+
setTimeout(() => {
|
|
149
|
+
DK.ImportJS(DK.varHide.currentScriptPath + '/dk_table.js');
|
|
150
|
+
DK.ImportCss(DK.varHide.currentScriptPath + '/dk_table.css');
|
|
151
|
+
}, 100);
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
});
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
.dk-table-x1 {
|
|
2
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
3
|
+
border-collapse: collapse;
|
|
4
|
+
width: 100%;
|
|
5
|
+
min-width: 800px;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.dk-table-x1 th {
|
|
9
|
+
padding: 5px;
|
|
10
|
+
font-size: 15px;
|
|
11
|
+
}
|
|
12
|
+
.dk-table-x1 td {
|
|
13
|
+
font-size: 13px;
|
|
14
|
+
border: 1px solid #ddd;
|
|
15
|
+
}
|
|
16
|
+
.dk-table-x1 tr:nth-child(even) {
|
|
17
|
+
background-color: #f2f2f2;
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
.dk-table-x1 tr:hover {
|
|
21
|
+
background-color: #ddd;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
.dk-table-x1 th {
|
|
25
|
+
padding-top: 12px;
|
|
26
|
+
padding-bottom: 12px;
|
|
27
|
+
text-align: left;
|
|
28
|
+
background-color: #04aa6d;
|
|
29
|
+
color: white;
|
|
30
|
+
font-weight: bold;
|
|
31
|
+
border: 1px solid;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
.dk-table-x1 input[type="checkbox"] {
|
|
35
|
+
min-height: 22px;
|
|
36
|
+
width: 30px;
|
|
37
|
+
margin: auto;
|
|
38
|
+
display: block;
|
|
39
|
+
}
|
|
40
|
+
.dk-table-x1 input[type="checkbox"]:disabled {
|
|
41
|
+
cursor: not-allowed;
|
|
42
|
+
}
|
|
43
|
+
.dk-table-x1 input:not([type="checkbox"]) {
|
|
44
|
+
width: 100%;
|
|
45
|
+
}
|
|
46
|
+
.dk-table-x1 input:not(:disabled) {
|
|
47
|
+
display: block;
|
|
48
|
+
color: #495057;
|
|
49
|
+
background-color: #fff;
|
|
50
|
+
background-image: none;
|
|
51
|
+
background-clip: padding-box;
|
|
52
|
+
border: 1px solid rgba(0, 0, 0, 0.15);
|
|
53
|
+
border-radius: 0.25rem;
|
|
54
|
+
transition: border-color ease-in-out 0.15s, box-shadow ease-in-out 0.15s;
|
|
55
|
+
}
|
|
56
|
+
.dk-actionsBar {
|
|
57
|
+
padding: 5px 10px;
|
|
58
|
+
width: max-content;
|
|
59
|
+
}
|
|
60
|
+
.dk-actionsBar button {
|
|
61
|
+
border-radius: 6px;
|
|
62
|
+
border: none;
|
|
63
|
+
}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
const DKTable = {
|
|
2
|
+
rowOnFocus: {},
|
|
3
|
+
rowClick: (sender) => {
|
|
4
|
+
const trTag = sender.currentTarget;
|
|
5
|
+
const table = trTag.upParent('table');
|
|
6
|
+
if (trTag.dataset.editting == "true") return;
|
|
7
|
+
const cellIndex = sender.target.cellIndex;
|
|
8
|
+
if (DKTable.rowOnFocus[table.id]) {
|
|
9
|
+
const lastRow = DKTable.rowOnFocus[table.id];
|
|
10
|
+
DKTable.hideUpdateRecord(lastRow, table, false);
|
|
11
|
+
}
|
|
12
|
+
DKTable.rowOnFocus[table.id] = trTag;
|
|
13
|
+
|
|
14
|
+
const storeData = JSON.parse(table.dataset.store);
|
|
15
|
+
const fieldTypes = JSON.parse(table.dataset.fieldType);
|
|
16
|
+
const primaryKey = table.dataset.primaryKey;
|
|
17
|
+
const currentKeyValue = trTag.dataset.primaryValue;
|
|
18
|
+
|
|
19
|
+
const cache = JSON.parse(table.dataset.cache || JSON.stringify({ updated: [], deleted: [] }));
|
|
20
|
+
let objectCurrent = cache.updated.find(f => f[primaryKey] == currentKeyValue);
|
|
21
|
+
if (!objectCurrent) {
|
|
22
|
+
objectCurrent = storeData.find(f => f[primaryKey] == currentKeyValue);
|
|
23
|
+
}
|
|
24
|
+
DKTable.hideLoadRecord(trTag, objectCurrent, fieldTypes, sender.target);
|
|
25
|
+
console.log('Your input is: ', sender.target);
|
|
26
|
+
var cell = trTag.cells[cellIndex];
|
|
27
|
+
if (cell?.children[0]) {
|
|
28
|
+
cell.children[0].focus();
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
hideUpdateRecord: (trTag = new HTMLElement(), table = new HTMLElement(), isClear = false) => {
|
|
32
|
+
if (trTag.dataset.editting == 'false') {
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
const storeData = JSON.parse(table.dataset.store);
|
|
36
|
+
const fieldTypes = JSON.parse(table.dataset.fieldType);
|
|
37
|
+
const primaryKey = table.dataset.primaryKey;
|
|
38
|
+
const currentKeyValue = trTag.dataset.primaryValue;
|
|
39
|
+
const objectCurrent = storeData.find(f => f[primaryKey] == currentKeyValue) || {};
|
|
40
|
+
///
|
|
41
|
+
const cache = JSON.parse(table.dataset.cache || JSON.stringify({ updated: [], deleted: [] }));
|
|
42
|
+
let itemOnCache = cache.updated.find(f => f[primaryKey] == currentKeyValue);
|
|
43
|
+
if (!itemOnCache) {
|
|
44
|
+
if (isClear) {
|
|
45
|
+
itemOnCache = objectCurrent;
|
|
46
|
+
DKTable.rowOnFocus[table.id] = undefined;
|
|
47
|
+
} else {
|
|
48
|
+
cache.updated.push({ ...objectCurrent });
|
|
49
|
+
itemOnCache = cache.updated.find(f => f[primaryKey] == currentKeyValue);
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (!isClear) {
|
|
53
|
+
fieldTypes.forEach(field => {
|
|
54
|
+
const input = trTag.querySelector(`input[name="${field.fieldName}"]`).closest('input');
|
|
55
|
+
if (input) {
|
|
56
|
+
switch (input.type) {
|
|
57
|
+
case 'checkbox':
|
|
58
|
+
itemOnCache[field.fieldName] = input.checked;
|
|
59
|
+
break;
|
|
60
|
+
default:
|
|
61
|
+
itemOnCache[field.fieldName] = input.value;
|
|
62
|
+
break;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
trTag.dataset.primaryValue = itemOnCache[primaryKey];
|
|
68
|
+
trTag.innerHTML = "";
|
|
69
|
+
fieldTypes.forEach(field => {
|
|
70
|
+
const td = document.createElement('td');
|
|
71
|
+
switch (field.dataType) {
|
|
72
|
+
case "boolean":
|
|
73
|
+
td.innerHTML = `<input type="checkbox" ${(itemOnCache[field.fieldName] ? 'checked' : '')} onclick='DKTable.inputCheckboxReadOnly(event)'>`; break;
|
|
74
|
+
default:
|
|
75
|
+
td.innerText = itemOnCache[field.fieldName]; break;
|
|
76
|
+
}
|
|
77
|
+
trTag.appendChild(td);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
let areEqual = true;
|
|
81
|
+
let hasChild = false;
|
|
82
|
+
for (const key in itemOnCache) {
|
|
83
|
+
hasChild = true;
|
|
84
|
+
if (objectCurrent[key] !== itemOnCache[key]) {
|
|
85
|
+
areEqual = false;
|
|
86
|
+
break;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
if (areEqual && hasChild) {
|
|
90
|
+
cache.updated = cache.updated.filter(obj => obj[primaryKey] !== itemOnCache[primaryKey]);
|
|
91
|
+
}
|
|
92
|
+
trTag.dataset.editting = "false";
|
|
93
|
+
table.dataset.cache = JSON.stringify(cache);
|
|
94
|
+
},
|
|
95
|
+
hideLoadRecord: (trTag = new HTMLElement(), data = {}, fieldTypes = []) => {
|
|
96
|
+
const inputWs = [];
|
|
97
|
+
for (let index = 0; index < trTag.children.length; index++) {
|
|
98
|
+
const element = trTag.children[index];
|
|
99
|
+
inputWs.push(element.clientWidth);
|
|
100
|
+
}
|
|
101
|
+
trTag.innerHTML = "";
|
|
102
|
+
let firsttd = null;
|
|
103
|
+
let ccinput = 0;
|
|
104
|
+
fieldTypes.forEach(field => {
|
|
105
|
+
const td = document.createElement('td');
|
|
106
|
+
td.style.minWidth = inputWs[ccinput++] + 'px';
|
|
107
|
+
switch (field.dataType) {
|
|
108
|
+
case "boolean":
|
|
109
|
+
td.innerHTML = `<input name="${field.fieldName}" type="checkbox" ${data[field.fieldName] ? 'checked' : ''}>`;
|
|
110
|
+
break;
|
|
111
|
+
case "number":
|
|
112
|
+
td.innerHTML = `<input name="${field.fieldName}" type='number' value='${data[field.fieldName] || 0}'>`;
|
|
113
|
+
break;
|
|
114
|
+
case "date":
|
|
115
|
+
td.innerHTML = `<input name="${field.fieldName}" type='date' value='${data[field.fieldName] || ""}'>`;
|
|
116
|
+
break;
|
|
117
|
+
default:
|
|
118
|
+
td.innerHTML = `<input name="${field.fieldName}" type='text' value='${data[field.fieldName] || ""}'>`;
|
|
119
|
+
break;
|
|
120
|
+
}
|
|
121
|
+
firsttd = firsttd || td;
|
|
122
|
+
trTag.appendChild(td);
|
|
123
|
+
});
|
|
124
|
+
// firsttd.children[0].focus();
|
|
125
|
+
trTag.dataset.editting = "true";
|
|
126
|
+
},
|
|
127
|
+
CommitDataTable: (table = new HTMLElement()) => {
|
|
128
|
+
const storeData = JSON.parse(table.dataset.store);
|
|
129
|
+
if (DKTable.rowOnFocus[table.id]) {
|
|
130
|
+
const lastRow = DKTable.rowOnFocus[table.id];
|
|
131
|
+
DKTable.hideUpdateRecord(lastRow, table, false);
|
|
132
|
+
}
|
|
133
|
+
|
|
134
|
+
const cache = JSON.parse(table.dataset.cache || JSON.stringify({ updated: [], deleted: [] }));
|
|
135
|
+
const host = document.location.origin;
|
|
136
|
+
DK.showBusy(true, "Đang cập nhật thông tin phân quyền video");
|
|
137
|
+
fetch(host + table.dataset.postTo, {
|
|
138
|
+
method: "POST",
|
|
139
|
+
headers: {
|
|
140
|
+
'Content-Type': 'application/json'
|
|
141
|
+
},
|
|
142
|
+
body: JSON.stringify(cache)
|
|
143
|
+
})
|
|
144
|
+
.then(response => {
|
|
145
|
+
if (response.ok) {
|
|
146
|
+
return response.json();
|
|
147
|
+
} else {
|
|
148
|
+
throw new Error('API request failed');
|
|
149
|
+
}
|
|
150
|
+
})
|
|
151
|
+
.then(res => {
|
|
152
|
+
DK.showBusy(false, "Đang cập nhật thông tin phân quyền video");
|
|
153
|
+
if (res.success) {
|
|
154
|
+
DK.showMessage("Đã cập nhật thành công", 1);
|
|
155
|
+
}
|
|
156
|
+
else {
|
|
157
|
+
DK.showMessage(res.message, 4);
|
|
158
|
+
}
|
|
159
|
+
})
|
|
160
|
+
.catch(error => {
|
|
161
|
+
DK.showBusy(false, "Đang cập nhật thông tin phân quyền video");
|
|
162
|
+
DK.showMessage(error, 4);
|
|
163
|
+
});;
|
|
164
|
+
},
|
|
165
|
+
DeleteRowCurrent: (table = new HTMLElement()) => {
|
|
166
|
+
if (DKTable.rowOnFocus[table.id]) {
|
|
167
|
+
const storeData = JSON.parse(table.dataset.store);
|
|
168
|
+
const primaryKey = table.dataset.primaryKey;
|
|
169
|
+
const lastRow = DKTable.rowOnFocus[table.id];
|
|
170
|
+
const currentKeyValue = lastRow.dataset.primaryValue;
|
|
171
|
+
const objectOriginal = storeData.find(f => f[primaryKey] == currentKeyValue);
|
|
172
|
+
///
|
|
173
|
+
const cache = JSON.parse(table.dataset.cache || JSON.stringify({ updated: [], deleted: [] }));
|
|
174
|
+
let objectCache = cache.updated.find(f => f[primaryKey] == currentKeyValue);
|
|
175
|
+
if (objectOriginal) {
|
|
176
|
+
cache.deleted.push(objectOriginal);
|
|
177
|
+
}
|
|
178
|
+
cache.updated = cache.updated.filter(obj => obj[primaryKey] !== objectCache[primaryKey]);
|
|
179
|
+
table.dataset.cache = JSON.stringify(cache);
|
|
180
|
+
lastRow.remove();
|
|
181
|
+
delete DKTable.rowOnFocus[table.id];
|
|
182
|
+
}
|
|
183
|
+
},
|
|
184
|
+
AddNewRow: (table = new HTMLElement()) => {
|
|
185
|
+
const fieldTypes = JSON.parse(table.dataset.fieldType);
|
|
186
|
+
const primaryKey = table.dataset.primaryKey;
|
|
187
|
+
const cache = JSON.parse(table.dataset.cache || JSON.stringify({ updated: [], deleted: [] }));
|
|
188
|
+
|
|
189
|
+
const tbody = table.downChild('tbody');
|
|
190
|
+
const trTag = document.createElement('tr');
|
|
191
|
+
trTag.onclick = () => { DKTable.rowClick(trTag) };
|
|
192
|
+
const currentTicks = new Date().getTime();
|
|
193
|
+
if (!fieldTypes.find(f => f.fieldName == primaryKey)) {
|
|
194
|
+
trTag.dataset.primaryValue = "AutoGenerate_" + currentTicks.toString();
|
|
195
|
+
cache.updated.push(JSON.parse(`{"${primaryKey}":"${trTag.dataset.primaryValue}"}`));
|
|
196
|
+
table.dataset.cache = JSON.stringify(cache);
|
|
197
|
+
}
|
|
198
|
+
trTag.innerHTML = "";
|
|
199
|
+
fieldTypes.forEach(field => {
|
|
200
|
+
const td = document.createElement('td');
|
|
201
|
+
switch (field.dataType) {
|
|
202
|
+
case "boolean":
|
|
203
|
+
td.innerHTML = `<input type="checkbox" disabled>`;
|
|
204
|
+
break;
|
|
205
|
+
case "number":
|
|
206
|
+
td.innerText = 0;
|
|
207
|
+
break;
|
|
208
|
+
default:
|
|
209
|
+
td.innerText = "";
|
|
210
|
+
break;
|
|
211
|
+
}
|
|
212
|
+
trTag.appendChild(td);
|
|
213
|
+
});
|
|
214
|
+
trTag.dataset.editting = "false";
|
|
215
|
+
tbody.appendChild(trTag);
|
|
216
|
+
},
|
|
217
|
+
keyDownOnTable: (keyCode, sender) => {
|
|
218
|
+
// ESC
|
|
219
|
+
if (keyCode == 27) {
|
|
220
|
+
const table = sender;
|
|
221
|
+
if (DKTable.rowOnFocus[table.id]) {
|
|
222
|
+
const lastRow = DKTable.rowOnFocus[table.id];
|
|
223
|
+
DKTable.hideUpdateRecord(lastRow, table, true);
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
},
|
|
227
|
+
inputCheckboxReadOnly: (event) => {
|
|
228
|
+
event.preventDefault();
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
HTMLElement.prototype.upParent = function (name) {
|
|
232
|
+
if (this.parentNode.tagName.toLowerCase() == name.toLowerCase()) {
|
|
233
|
+
return this.parentNode;
|
|
234
|
+
}
|
|
235
|
+
if (this.parentNode) {
|
|
236
|
+
return this.parentNode.upParent(name);
|
|
237
|
+
}
|
|
238
|
+
return null;
|
|
239
|
+
}
|
|
240
|
+
HTMLElement.prototype.downChild = function (name) {
|
|
241
|
+
for (let index = 0; index < this.children.length; index++) {
|
|
242
|
+
const element = this.children[index];
|
|
243
|
+
if (element.tagName.toLowerCase() == name.toLowerCase()) {
|
|
244
|
+
return element;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
const downTry = element.downChild(name);
|
|
248
|
+
if (downTry)
|
|
249
|
+
return downTry;
|
|
250
|
+
}
|
|
251
|
+
return null;
|
|
252
|
+
}
|
|
Binary file
|
|
Binary file
|