Skip to content

Commit 1b48e3c

Browse files
fix(time log diagram): made time log diagram responsive
#2
1 parent 6512a0c commit 1b48e3c

File tree

2 files changed

+97
-66
lines changed

2 files changed

+97
-66
lines changed

script.js

+69-15
Original file line numberDiff line numberDiff line change
@@ -576,16 +576,13 @@ function toggleTimeLogArrowColor(timeLog, color) {
576576

577577
function nextTimeLog(timeLog) {
578578
let timeLogTableDiv = document.getElementById("time-log-table-div");
579+
timeLogTableDiv.innerHTML = '';
579580

580-
let arrowHTML = `
581-
<p id = "remain-ready" class = "arrow">&rarr;</p>
582-
<p id = "ready-running" class = "arrow">&#10554;</p>
583-
<p id = "running-ready" class = "arrow">&#10554;</p>
584-
<p id = "running-terminate" class = "arrow">&rarr;</p>
585-
<p id = "running-block" class = "arrow">&rarr;</p>
586-
<p id = "block-ready" class = "arrow">&rarr;</p>
587-
`;
588-
timeLogTableDiv.innerHTML = arrowHTML;
581+
let remainReady = `<p id = "remain-ready" class = "arrow">&rarr;</p>`
582+
let readyRunning = `<div><p id = "running-ready" class = "arrow">&#10554;</p><p id = "ready-running" class = "arrow">&#10554;</p></div>`
583+
let runningTerminate = `<p id = "running-terminate" class = "arrow">&rarr;</p>`
584+
let runningBlock = `<p id = "running-block" class = "arrow">&rarr;</p>`
585+
let blockReady = `<p id = "block-ready" class = "arrow">&rarr;</p>`
589586

590587
let remainTable = document.createElement("table");
591588
remainTable.id = "remain-table";
@@ -600,7 +597,6 @@ function nextTimeLog(timeLog) {
600597
let remainTableValue = remainTableBodyRow.insertCell(0);
601598
remainTableValue.innerHTML = 'P' + (timeLog.remain[i] + 1);
602599
}
603-
timeLogTableDiv.appendChild(remainTable);
604600

605601
let readyTable = document.createElement("table");
606602
readyTable.id = "ready-table";
@@ -615,7 +611,6 @@ function nextTimeLog(timeLog) {
615611
let readyTableValue = readyTableBodyRow.insertCell(0);
616612
readyTableValue.innerHTML = 'P' + (timeLog.ready[i] + 1);
617613
}
618-
timeLogTableDiv.appendChild(readyTable);
619614

620615
let runningTable = document.createElement("table");
621616
runningTable.id = "running-table";
@@ -630,7 +625,6 @@ function nextTimeLog(timeLog) {
630625
let runningTableValue = runningTableBodyRow.insertCell(0);
631626
runningTableValue.innerHTML = 'P' + (timeLog.running[i] + 1);
632627
}
633-
timeLogTableDiv.appendChild(runningTable);
634628

635629
let blockTable = document.createElement("table");
636630
blockTable.id = "block-table";
@@ -645,7 +639,6 @@ function nextTimeLog(timeLog) {
645639
let blockTableValue = blockTableBodyRow.insertCell(0);
646640
blockTableValue.innerHTML = 'P' + (timeLog.block[i] + 1);
647641
}
648-
timeLogTableDiv.appendChild(blockTable);
649642

650643
let terminateTable = document.createElement("table");
651644
terminateTable.id = "terminate-table";
@@ -660,15 +653,76 @@ function nextTimeLog(timeLog) {
660653
let terminateTableValue = terminateTableBodyRow.insertCell(0);
661654
terminateTableValue.innerHTML = 'P' + (timeLog.terminate[i] + 1);
662655
}
663-
timeLogTableDiv.appendChild(terminateTable);
656+
657+
const timeLogSkeletonTableConfig = [
658+
[
659+
{type: "blank", content: ''},
660+
{type: "blank", content: ''},
661+
{type: "blank", content: ''},
662+
{type: "element", content: terminateTable},
663+
{type: "blank", content: ''},
664+
{type: "blank", content: ''},
665+
{type: "blank", content: ''},
666+
],
667+
[
668+
{type: "blank", content: ''},
669+
{type: "blank", content: ''},
670+
{type: "html", content: runningBlock, className: 'southwest-arrow'},
671+
{type: "blank", content: ''},
672+
{type: "html", content: blockReady, className: 'northwest-arrow'},
673+
{type: "blank", content: ''},
674+
{type: "blank", content: ''},
675+
],
676+
[
677+
{type: "element", content: blockTable},
678+
{type: "html", content: runningTerminate},
679+
{type: "element", content: runningTable},
680+
{type: "html", content: readyRunning},
681+
{type: "element", content: readyTable},
682+
{type: "html", content: remainReady},
683+
{type: "element", content: remainTable},
684+
],
685+
];
686+
687+
let timeLogSkeletonTable = document.createElement("table");
688+
timeLogSkeletonTable.id = "diagram-skeleton";
689+
690+
timeLogSkeletonTableConfig.forEach((row) => {
691+
let skeletonTableRow = timeLogSkeletonTable.insertRow(0);
692+
(row || [])?.forEach(({type = 'blank', content = '', className = ''}) => {
693+
let skeletonTableCell = skeletonTableRow.insertCell(0);
694+
let skeletonTableCellDiv = document.createElement("div");
695+
696+
if(className){
697+
skeletonTableCellDiv.className = `diagram-cell ${className}`
698+
} else {
699+
skeletonTableCellDiv.className = "diagram-cell";
700+
}
701+
skeletonTableCell.appendChild(skeletonTableCellDiv);
702+
switch(type){
703+
case 'element':
704+
skeletonTableCellDiv.appendChild(content);
705+
break;
706+
case 'html':
707+
skeletonTableCellDiv.innerHTML = content;
708+
break;
709+
default: {
710+
skeletonTableCellDiv.innerHTML = '';
711+
}
712+
713+
}
714+
})
715+
})
716+
timeLogTableDiv.appendChild(timeLogSkeletonTable);
717+
664718
document.getElementById("time-log-time").innerHTML = "Time : " + timeLog.time;
665719
}
666720

667721
function showTimeLog(output, outputDiv) {
668722
reduceTimeLog(output.timeLog);
669723
let timeLogDiv = document.createElement("div");
670724
timeLogDiv.id = "time-log-div";
671-
timeLogDiv.style.height = (15 * process) + 300 + "px";
725+
timeLogDiv.style.height = (20 * process) + 300 + "px";
672726
let startTimeLogButton = document.createElement("button");
673727
startTimeLogButton.id = "start-time-log";
674728
startTimeLogButton.innerHTML = "Start Time Log";

style.css

+28-51
Original file line numberDiff line numberDiff line change
@@ -112,73 +112,50 @@ thead {
112112
font-weight: bold;
113113
}
114114

115-
#time-log-table-div {
116-
margin-top: 10vh;
117-
position: relative;
118-
}
119-
120-
.time-log-table {
121-
width: 10%;
122-
position: absolute;
123-
}
124-
125-
#remain-table {
126-
left: 7.5%;
127-
}
128-
129-
#ready-table {
130-
left: 32.5%;
131-
}
132-
133-
#running-table {
134-
right: 32.5%;
135-
}
136-
137-
#block-table {
138-
left: 45%;
139-
top: 8vw;
140-
}
141-
142-
#terminate-table {
143-
right: 7.5%;
144-
}
145-
146115
.arrow {
147-
position: absolute;
148-
font-size: 100px;
149-
}
150-
151-
#remain-ready {
152-
left: 20.5%;
153-
top: -62px;
116+
font-size: 70px;
154117
}
155118

156119
#ready-running {
157120
transform: rotate(180deg);
158-
left: 47%;
159-
top: -15px;
160121
font-size: 80px;
122+
161123
}
162124

163125
#running-ready {
164-
left: 47%;
165-
top: -60px;
166126
font-size: 80px;
167-
}
168-
169-
#running-terminate {
170-
right: 20.5%;
171-
top: -62px;
127+
height: 30px;
172128
}
173129

174130
#running-block {
175131
transform: rotate(135deg);
176-
left: 52%;
177-
top: 20px;
132+
font-size: 60px;
178133
}
179134

180135
#block-ready {
136+
font-size: 60px;
181137
transform: rotate(225deg);
182-
left: 40%;
183-
top: 20px;
138+
}
139+
140+
#diagram-skeleton {
141+
width: 100%;
142+
border: 0;
143+
}
144+
145+
#diagram-skeleton td {
146+
border: 0;
147+
}
148+
149+
.diagram-cell{
150+
border: 0;
151+
display: flex;
152+
justify-content: center;
153+
align-items: center;
154+
}
155+
.northwest-arrow{
156+
justify-content: flex-end;
157+
}
158+
159+
.southwest-arrow{
160+
justify-content: flex-start;
184161
}

0 commit comments

Comments
 (0)