Skip to content

Commit 1ee7be3

Browse files
1. Horizontal line to separate list of modules
2. Filter of selected modules
1 parent dafb18f commit 1ee7be3

File tree

3 files changed

+36
-12
lines changed

3 files changed

+36
-12
lines changed

css/editor.css

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,16 @@ ul {
33
padding-inline-start: 2em;
44
}
55

6+
hr {
7+
display: block;
8+
margin-top: 0.5em;
9+
margin-bottom: 0.5em;
10+
margin-left: auto;
11+
margin-right: auto;
12+
border-style: inset;
13+
border-width: 1px;
14+
}
15+
616
.collapsed-list {
717
display: none;
818
}
@@ -76,4 +86,4 @@ ul {
7686
100% {
7787
color: inherit;
7888
}
79-
}
89+
}

js/editor.js

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ $(document).ready(function () {
66
$("#browseWorkspace").click(onBrowseWorkspaceHandler);
77
$("#loadModulesBtn").click(onLoadModulesHandler);
88
$("#importProjectBtn").click(onImportProjectHandler);
9+
$("input#useSelected").click(onFilterChange);
910
$("input#filterModules").on("input", onFilterChange);
1011
$("#resetFilter").click(onResetFilter);
1112
});
@@ -66,8 +67,9 @@ function onImportProjectHandler () {
6667
function onFilterChange () {
6768
const topLevel = $("div#moduleList > ul");
6869
let filter = $("input#filterModules").val().toLowerCase().trim();
69-
if (filter && filter.length > 0) {
70-
filterModules(topLevel, filter);
70+
const useSelected = $("input#useSelected").prop("checked");
71+
if ((filter && filter.length > 0) || (true === useSelected)) {
72+
filterModules(topLevel, filter, useSelected);
7173
} else {
7274
resetFilteredModules();
7375
}
@@ -96,19 +98,21 @@ function disableImportBtn (enabled) {
9698
$("#importProjectBtn").attr("disabled", enabled);
9799
}
98100

99-
function disableFilterTxt (enabled) {
101+
function disableFilterSet (enabled) {
100102
$("input#filterModules").attr("disabled", enabled);
101103
$("#resetFilter").attr("disabled", enabled);
104+
$("input#useSelected").attr("disabled", enabled);
102105
}
103106

104107
function clearFilter () {
105108
$("input#filterModules").val("");
109+
$("input#useSelected").prop("checked", false);
106110
}
107111

108112
function clearModules () {
109113
$("#moduleList").empty();
110114
disableImportBtn(true);
111-
disableFilterTxt(true);
115+
disableFilterSet(true);
112116
clearFilter();
113117
}
114118

@@ -133,7 +137,7 @@ function listModules (message) {
133137
if (modules !== null) {
134138
if (modules.length > 0) {
135139
disableImportBtn(false);
136-
disableFilterTxt(false);
140+
disableFilterSet(false);
137141
const topList = $("<ul></ul>").appendTo("div#moduleList");
138142
for (i = 0; i < modules.length; i++) {
139143
addNode(modules[i], topList);
@@ -179,14 +183,17 @@ function addNode (module, parentNode) {
179183
}
180184
}
181185

182-
function filterModules (parentNode, filter) {
186+
function filterModules (parentNode, filter, useSelected) {
183187
let filtered = false;
184188
parentNode.children("li").each(function () {
185189
const cbNode = $(this).children("input").first();
186190
let filteredModule = cbNode.attr("name").toLowerCase().includes(filter);
191+
if (true === useSelected) {
192+
filteredModule = filteredModule && cbNode.prop("checked");
193+
}
187194
const nested = $(this).children("ul").first();
188195
if (nested && nested.length) {
189-
const nestedFiltered = filterModules(nested, filter);
196+
const nestedFiltered = filterModules(nested, filter, useSelected);
190197
filteredModule = (filteredModule || nestedFiltered);
191198
}
192199
filtered = (filtered || filteredModule);

src/editor.ts

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -84,12 +84,19 @@ export function getWebviewContent(panel: vscode.WebviewPanel, extCtx: vscode.Ext
8484
<button id="loadModulesBtn" style="height: 1.5em;">Load modules</button>
8585
<button id="importProjectBtn" style="height: 1.5em;" disabled>Start import</button>
8686
</div>
87-
<br><br>
87+
<br>
8888
<div>
89-
<label for="filterModules">Filter modules:</label>
90-
<input type="text" id="filterModules" name="filterModules" style="width: 50%; height: 1.5em;" disabled>
91-
<button id="resetFilter" name="resetFilter" style="height: 1.5em;" disabled>Reset filter</button>
89+
<div>
90+
<label for="filterModules">Filter modules:</label>
91+
<input type="text" id="filterModules" name="filterModules" style="width: 50%; height: 1.5em;" disabled>
92+
<button id="resetFilter" name="resetFilter" style="height: 1.5em;" disabled>Reset filter</button>
93+
</div>
94+
<div>
95+
<input type="checkbox" id="useSelected" />
96+
<label for="useSelected">Filter selected modules</label>
97+
</div>
9298
</div>
99+
<hr>
93100
94101
<div id="moduleList" style="width: 100%; height: 50%; overflow-y: scroll;">
95102
</div>

0 commit comments

Comments
 (0)