Skip to content

Commit 23d01df

Browse files
author
hikki
committed
1.7
1 parent ca5cd8f commit 23d01df

File tree

3 files changed

+72
-20
lines changed

3 files changed

+72
-20
lines changed

resources/assets/component.css

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -44,13 +44,13 @@
4444

4545
.dlp-scroll{overflow: auto}
4646
.dlp-scroll::-webkit-scrollbar{width: 3px;}
47-
.dlp-scroll::-webkit-scrollbar-thumb{border-radius: 5px;-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);background: #fff8eb;}
48-
.dlp-scroll::-webkit-scrollbar-track {-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);border-radius: 0;background: #cacbcd7a;}
47+
.dlp-scroll::-webkit-scrollbar-thumb{border-radius: 5px;-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);background: #e1e1e1;}
48+
.dlp-scroll::-webkit-scrollbar-track {-webkit-box-shadow: inset 0 0 5px rgba(0,0,0,0.2);border-radius: 0;background: rgb(255 255 255 / 20%);}
4949
.dlp-dot{
5050
width: 100%;
5151
height: 100%;
5252
display: grid;
53-
grid-template-rows: 30px auto;
53+
grid-template-rows: 35px auto;
5454
color: rgba(255,255,255,.9);
5555
box-shadow: 0 .4rem 1.2rem rgba(0,0,0,.4)!important;
5656
border-radius: 5px;
@@ -75,13 +75,38 @@
7575
padding: 5px 0 5px 5px;
7676
display: flex;
7777
border-radius: 5px 5px 0 0;
78-
background: rgb(0 0 0 / 80%);
78+
background: rgb(0 0 0 / 90%);
7979
border-top: 1px solid rgba(34,36,38,.15);
8080
border-bottom: 1px solid rgba(255,255,255,.1);
8181
}
8282
.dot-selected{width: 100%}
8383
.dot-selected>.dlp-label{background: white}
84-
.dot-select{padding: 5px 0 5px 0;background: #fff8eb;border-radius: 0 0 5px 5px;}
84+
.dot-select{padding: 5px 0 5px 0;background: rgb(43 43 43);border-radius: 0 0 5px 5px;}
85+
.dot-select-cascade{
86+
display: flex;
87+
flex-direction: row;
88+
align-items:stretch;
89+
}
90+
.dot-cascade-stack{
91+
padding: 2px 0 2px 5px;
92+
border-radius: 3px;
93+
flex-grow:1;
94+
text-align: center;
95+
}
96+
.dot-cascade-stack>.dlp-label{
97+
display: block;
98+
max-width: unset;
99+
min-width: unset;
100+
height: 20px;
101+
line-height: 20px;
102+
margin-bottom: 3px;
103+
}
104+
.dot-cascade-stack>.dlp-label-active{
105+
background: white;
106+
}
107+
.dot-cascade-stack>.dlp-label-silence{
108+
opacity: 0.5;
109+
}
85110

86111
.dlp-input{
87112
vertical-align: middle;

resources/assets/component.js

Lines changed: 30 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,10 @@ s14.946-6.691,14.946-14.946C35.146,11.861,28.455,5.169,20.201,5.169z M20.201,31.
1818
c0-6.425,5.209-11.634,11.634-11.634c6.425,0,11.633,5.209,11.633,11.634C31.834,26.541,26.626,31.749,20.201,31.749z"/>
1919
<path fill="#000" d="M26.013,10.047l1.654-2.866c-2.198-1.272-4.743-2.012-7.466-2.012h0v3.312h0
2020
C22.32,8.481,24.301,9.057,26.013,10.047z"><animateTransform attributeType="xml"attributeName="transform"
21-
type="rotate"from="0 20 20"to="360 20 20"dur="0.5s"repeatCount="indefinite"/></path></svg>`
21+
type="rotate"from="0 20 20"to="360 20 20"dur="0.5s"repeatCount="indefinite"/></path></svg>`,
22+
'check':`<svg xmlns="http://www.w3.org/2000/svg" width="16" height="16" fill="currentColor" class="bi bi-check-circle-fill" viewBox="0 0 16 16">
23+
<path d="M16 8A8 8 0 1 1 0 8a8 8 0 0 1 16 0zm-3.97-3.03a.75.75 0 0 0-1.08.022L7.477 9.417 5.384 7.323a.75.75 0 0 0-1.06 1.06L6.97 11.03a.75.75 0 0 0 1.079-.02l3.992-4.99a.75.75 0 0 0-.01-1.05z"/>
24+
</svg>`
2225
};
2326

2427
function _componentRequest(url, method = "GET", data = {}, callback = function () {
@@ -187,7 +190,7 @@ class ComponentCascadeDot {
187190
}
188191

189192
make(){
190-
let html = `<div class="dlp-dot" ><div class="dot-top"><input type="text" class="dlp dot-search" placeholder="搜索名称"><div id="${this.name}-select" class="dot-selected dlp-scroll"></div></div><div class="dot-select dlp-scroll"></div></div>
193+
let html = `<div class="dlp-dot" ><div class="dot-top"><input type="text" class="dlp dot-search" placeholder="搜索名称"><div id="${this.name}-select" class="dot-selected dlp-scroll"></div></div><div class="dot-select dot-select-cascade dlp-scroll"></div></div>
191194
<input name="${this.name}[data]" value="[]" type="hidden"><input name="${this.name}[insert]" value="[]" type="hidden"><input name="${this.name}[delete]" value="[]" type="hidden">`;
192195
this.DOM.insertAdjacentHTML('afterbegin', html);
193196
this.SELECT_DOM = document.querySelector(`#${this.name} .dot-selected`);
@@ -199,12 +202,23 @@ class ComponentCascadeDot {
199202
}
200203

201204
makeSelect(){
202-
this.dimensional = 0;
203-
this.dimensional_data = {};
204-
205+
this.dimensional_data = [];
205206
this.makeDimensional(this.select_data);
206207
console.log(this.dimensional_data);
207-
console.log(this.dimensional)
208+
for (let stack in this.dimensional_data){
209+
let data = this.dimensional_data[stack];
210+
let stackDom = document.createElement('div');
211+
stackDom.className = 'dot-cascade-stack dlp-scroll';
212+
data.forEach((v)=>{
213+
let div = document.createElement('div');
214+
div.className='dlp dlp-text dlp-label';
215+
div.setAttribute('data-id',v.key);
216+
div.textContent = v.val;
217+
div.addEventListener('click',this.select.bind(this, div));
218+
stackDom.append(div);
219+
});
220+
this.CONTENT_DOM.append(stackDom);
221+
}
208222
}
209223

210224
makeDimensional(data,dimension=0){
@@ -214,20 +228,26 @@ class ComponentCascadeDot {
214228
}
215229
return;
216230
}
217-
if(!Array.isArray(this.dimensional_data[dimension.toString()])){
218-
this.dimensional_data[dimension.toString()] = [data];
231+
if(!Array.isArray(this.dimensional_data[dimension])){
232+
this.dimensional_data[dimension] = [data];
219233
}else {
220-
this.dimensional_data[dimension.toString()].push(data);
234+
this.dimensional_data[dimension].push(data);
221235
}
222236
if(!data.hasOwnProperty('nodes')){
223-
if(dimension>this.dimensional)this.dimensional=dimension;
224237
return;
225238
}
226239
if(Array.isArray(data.nodes) == true && data.nodes.length > 0){
227240
dimension++;
228241
this.makeDimensional(data.nodes,dimension);
229242
}
230243
}
244+
245+
select(div){
246+
div.parentNode.childNodes.forEach((D)=>{
247+
D.classList.remove('dlp-label-active');
248+
});
249+
div.classList.add('dlp-label-active');
250+
}
231251
}
232252

233253
class ComponentLine {

test/index.html

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,28 @@
99
<body>
1010
<div id="test" style="width: 400px;height: 200px"></div>
1111
<div style="height: 30px"></div>
12-
<div id="test2" style="width: 650px;height: 360px"></div>
12+
<div id="test4" style="width: 650px;height: 360px"></div>
1313
<div style="height: 30px"></div>
1414
<div id="test3">点击</div>
1515
<div style="height: 30px"></div>
16-
<div id="test4" style="width: 500px;height: 320px"></div>
16+
<div id="test2" style="width: 500px;height: 320px"></div>
1717
</body>
1818
<script>
1919
new ComponentDot('test',{1:'a',2:'b',3:'c'},{1:'a',2:'b',3:'c',4:'d',5:'e',6:'f',7:'g',8:'h321321312312313',9:'i'});
2020

2121
new ComponentLine("test2",JSON.parse('{"name":{"name":"名称","type":"input"},"meta":{"name":"信息","type":"input"},"url":{"name":"链接","type":"input"},"time":{"name":"更新时间","type":"text"},"is-small":{"name":"高清[1是 2否]","type":"input","style":"width:60px"},"is-warning":{"name":"含字幕[1是 2否]","type":"input","style":"width:60px"},"tooltip":{"name":"可下载[1是 2否]","type":"input","style":"width:60px"}}'),JSON.parse('[{"name":"TushyRaw.21.04.28.Penelope.Kay.XXX.SD.MP4-KLEENEX","url":"magnet?xt=urnbtih1b771980c465052d1c96eade30be1297e1f73cff&dn=HDouban.comTushyRaw.21.04.28.Penelope.Kay.XXX.SD.MP4-KLEENEX","meta":"(246MB,3個文件)","tooltip":"2","time":"2021-05-14 000000","is-small":"2","is-warning":"2"},{"name":"T1080","url":"magnet?xt=urn tih20244eea8bafa94c27699ada817638f0a01fdbea&dn=HDouban.com TushyRaw.21.04.28.Penelope.Kay.XXX.1080p.MP4-NBQrarbg","meta":"","tooltip":"2","time":"2021-05-15 000000","is-small":"1","is-warning":"2"},{"name":"TushyRaw.21.04.28.Penelope.Kay.XXX.720p.HEVC.x265.PRT","url":"magnet?xt=urnbtih0c647fd1acb9e6c3bf617c117e60c86b29fa233c&dn=HDouban.com TushyRaw.21.04.28.Penelope.Kay.XXX.720p.HEVC.x265.PRT","meta":"(236MB,2個文件)","tooltip":"2","time":"2021-05-14 000000","is-small":"2","is-warning":"2"},{"name":"TushyRaw.21.04.28.Penelope.Kay.XXX.480p.MP4-XXX","url":"magnet?xt=urnbtih7DE13EF7EE22D9780F7DE6C459D6DD33F64D126C","meta":"251.82M","tooltip":"2","time":"2021-12-14 132446","is-small":"2","is-warning":"2"},{"name":"TushyRaw.21.04.28.Penelope.Kay.XXX.1080p.MP4-NBQrarbg","url":"magnet?xt=urnbtih20244EEA8BAFA94C27699ADA817638F0A01FDBEA","meta":"2.65G","tooltip":"2","time":"2021-12-14 132446","is-small":"2","is-warning":"2"},{"name":"TushyRaw.21.04.28.Penelope.Kay.XXX.SD.MP4-KLEENEX","url":"magnet?xt=urnbtih1B771980C465052D1C96EADE30BE1297E1F73CFF","meta":"246.64M","tooltip":"2","time":"2021-12-14 132446","is-small":"2","is-warning":"2"},{"name":"TushyRaw.21.04.28.Penelope.Kay.XXX.720p.HEVC.x265.PRT","url":"magnet?xt=urnbtih0C647FD1ACB9E6C3BF617C117E60C86B29FA233C","meta":"236.12M","tooltip":"2","time":"2021-12-14 132446","is-small":"2","is-warning":"2"},{"name":"TushyRaw.21.04.28.Penelope.Kay.XXX.1080p.HEVC.x265.PRT","url":"magnet?xt=urnbtihA4B92AFFB6A39E2B3F69064EF174598CA2D6C630","meta":"412.77M","tooltip":"2","time":"2021-12-14 132446","is-small":"2","is-warning":"2"},{"name":"TushyRaw.21.04.28.Penelope.Kay.XXX.1080p.MP4-NBQrarbg","url":"magnet?xt=urnbtih20244eea8bafa94c27699ada817638f0a01fdbea&dn=TushyRaw.21.04.28.Penelope.Kay.XXX.1080p.MP4-NBQrarbg","meta":"","tooltip":"2","time":"2022-02-08 102237","is-small":"2","is-warning":"2"}]'),JSON.parse('[]'));
2222

23-
document.getElementById('test3').addEventListener('click',function () {
23+
/*document.getElementById('test3').addEventListener('click',function () {
2424
new ComponentPlane();
25-
});
25+
});*/
2626

27-
new ComponentCascadeDot('test4',{1:'a',2:'b',3:'c'},{1:'a',2:'b',3:'c',4:'d',5:'e',6:'f',7:'g',8:'h321321312312313',9:'i'});
27+
new ComponentCascadeDot('test4',{1:'a',2:'b',3:'c'},[{'key':1,'val':'a'},
28+
{'key':2,'val':'b','nodes':[{'key':11,'val':'b1'},{'key':12,'val':'b2'},{'key':13,'val':'b3'},{'key':14,'val':'b4'}]},
29+
{'key':3,'val':'c'},
30+
{'key':4,'val':'d','nodes':[]},
31+
{'key':5,'val':'e','nodes':[{'key':21,'val':'e1'},{'key':22,'val':'e2'},{'key':23,'val':'e3'},{'key':24,'val':'e4'},{'key':25,'val':'e5'}
32+
,{'key':26,'val':'e6'},{'key':27,'val':'e7'},{'key':28,'val':'e8'},{'key':29,'val':'e9'},{'key':20,'val':'e0','nodes':[{'key':120,'val':'e00'},{'key':121,'val':'e01'}]}]},
33+
{'key':6,'val':'f','nodes':[{'key':31,'val':'f1'},{'key':32,'val':'f2'}]}
34+
]);
2835
</script>
2936
</html>

0 commit comments

Comments
 (0)