Skip to content

Commit 2799d9b

Browse files
authored
FilePicker + ServiceBrowser (#829)
FilePicker Removed border Buttons inside toolbar with appropriate width New ProgressBar adapted to toolbar ProgressBar inside toolbar Removed unused ProgressBar inside FilePicker ServiceBrowser Simplified code in service description column Added padding to service elements Applied ServiceFilters to the ServiceBrowser and removed the old filters Removed versions column and added smaller SelectBox besides "Description" section.
1 parent 84bdc8b commit 2799d9b

File tree

8 files changed

+202
-201
lines changed

8 files changed

+202
-201
lines changed

services/web/client/source/class/qxapp/desktop/ServiceBrowser.js

Lines changed: 37 additions & 145 deletions
Original file line numberDiff line numberDiff line change
@@ -92,9 +92,6 @@ qx.Class.define("qxapp.desktop.ServiceBrowser", {
9292
const servicesList = this.__createServicesList();
9393
servicesLayout.add(servicesList);
9494

95-
const versionsList = this.__createVersionsList();
96-
servicesLayout.add(versionsList);
97-
9895
const serviceDescription = this.__createServiceDescription();
9996
servicesLayout.add(serviceDescription, {
10097
flex: 1
@@ -106,34 +103,11 @@ qx.Class.define("qxapp.desktop.ServiceBrowser", {
106103
__createServicesList: function() {
107104
const servicesLayout = this.__createVBoxWLabel(this.tr("Services"));
108105

109-
const filterStrLayout = this.__createFilterStringLayout();
110-
servicesLayout.add(filterStrLayout);
111-
112-
const typeBtns = [
113-
"Computational",
114-
"Dynamic"
115-
];
116-
const typeResp = this.__createFilterByLayout(this.tr("Type"), typeBtns);
117-
const filterTypeLayout = typeResp["layout"];
118-
this.__filterByType = typeResp["radioGroup"];
119-
servicesLayout.add(filterTypeLayout);
120-
121-
const catBtns = [
122-
"Data",
123-
"Modeling",
124-
"Simulator",
125-
"Solver",
126-
"PostPro",
127-
"Notebook"
128-
];
129-
const catResp = this.__createFilterByLayout(this.tr("Category"), catBtns);
130-
const filterCatLayout = catResp["layout"];
131-
this.__filterByCategory = catResp["radioGroup"];
132-
servicesLayout.add(filterCatLayout);
106+
const serviceFilters = new qxapp.desktop.ServiceFilters("serviceBrowser");
107+
servicesLayout.add(serviceFilters);
133108

134109
const servicesList = this.__servicesList = new qx.ui.form.List().set({
135110
orientation: "vertical",
136-
spacing: 10,
137111
minWidth: 500,
138112
height: 600,
139113
appearance: "pb-list"
@@ -157,25 +131,23 @@ qx.Class.define("qxapp.desktop.ServiceBrowser", {
157131
servCtrl.setDelegate({
158132
createItem: () => {
159133
const item = new qxapp.desktop.ServiceBrowserListItem();
134+
item.subscribeToFilterGroup("serviceBrowser");
160135
item.addListener("tap", e => {
161-
// const serviceKey = item.getModel();
162-
// this.__serviceSelected(serviceKey);
163136
servicesList.setSelection([item]);
164137
});
165138
return item;
166139
},
167140
bindItem: (ctrl, item, id) => {
168141
ctrl.bindProperty("key", "model", null, item, id);
169-
ctrl.bindProperty("key", "title", null, item, id);
170-
ctrl.bindProperty("name", "name", null, item, id);
142+
ctrl.bindProperty("name", "title", null, item, id);
143+
ctrl.bindProperty("description", "description", null, item, id);
171144
ctrl.bindProperty("type", "type", null, item, id);
172145
ctrl.bindProperty("category", "category", null, item, id);
173146
ctrl.bindProperty("contact", "contact", null, item, id);
174147
}
175148
});
176149
servicesLayout.add(servicesList);
177150

178-
179151
// Workaround to the list.changeSelection
180152
servCtrl.addListener("changeValue", e => {
181153
if (e.getData() && e.getData().length>0) {
@@ -186,113 +158,35 @@ qx.Class.define("qxapp.desktop.ServiceBrowser", {
186158
}
187159
}, this);
188160

189-
// create the filter
190-
const searchIn = [
191-
"key",
192-
"name",
193-
"type",
194-
"contact",
195-
"category"
196-
];
197-
let filterObj = new qxapp.component.workbench.servicesCatalogue.SearchTypeFilter(servCtrl, searchIn);
198-
let dlgt = servCtrl.getDelegate();
199-
dlgt["filter"] = filterObj["filter"];
200-
// set the filter
201-
servCtrl.setDelegate(dlgt);
202-
203-
// make every input in the textfield update the controller
204-
this.__searchTextfield.bind("changeValue", filterObj, "searchString");
205-
206-
this.__filterByType.addListener("changeValue", e => {
207-
const sel = e.getData();
208-
filterObj.removeFilter("type");
209-
if (sel) {
210-
filterObj.addFilter("type", sel.getLabel());
211-
}
212-
servCtrl.update();
213-
}, this);
214-
215-
this.__filterByCategory.addListener("changeValue", e => {
216-
const sel = e.getData();
217-
filterObj.removeFilter("category");
218-
if (sel) {
219-
filterObj.addFilter("category", sel.getLabel());
220-
}
221-
servCtrl.update();
222-
}, this);
223-
224161
return servicesLayout;
225162
},
226163

227-
__createFilterStringLayout: function() {
228-
let filterLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));
229-
let searchLabel = new qx.ui.basic.Label(this.tr("Search"));
230-
filterLayout.add(searchLabel);
231-
232-
let textfield = this.__searchTextfield = new qx.ui.form.TextField();
233-
textfield.setLiveUpdate(true);
234-
filterLayout.add(textfield, {
235-
flex: 1
236-
});
237-
return filterLayout;
238-
},
239-
240-
__createFilterByLayout: function(label, btns) {
241-
let filterTypeLayout = new qx.ui.container.Composite(new qx.ui.layout.HBox(5));
242-
let typeLabel = new qx.ui.basic.Label(label);
243-
filterTypeLayout.add(typeLabel);
164+
__createServiceDescription: function() {
165+
const descriptionView = new qx.ui.container.Composite(new qx.ui.layout.VBox(10));
166+
const titleContainer = new qx.ui.container.Composite(new qx.ui.layout.HBox(10));
167+
const descriptionContainer = this.__serviceDescription = new qx.ui.container.Scroll();
244168

245-
let group = new qx.ui.form.RadioGroup().set({
246-
allowEmptySelection: true
169+
const label = new qx.ui.basic.Label(this.tr("Description")).set({
170+
font: qx.bom.Font.fromConfig(qxapp.theme.Font.fonts["nav-bar-label"]),
171+
minWidth: 150
247172
});
248-
btns.forEach(cat => {
249-
let button = new qx.ui.form.ToggleButton(cat).set({
250-
maxWidth: 150
251-
});
252-
group.add(button);
253-
filterTypeLayout.add(button, {
254-
flex: 1
255-
});
256-
}, this);
257-
258-
return {
259-
layout: filterTypeLayout,
260-
radioGroup: group
261-
};
262-
},
173+
titleContainer.add(label);
263174

264-
__createVersionsList: function() {
265-
let versionsLayout = this.__createVBoxWLabel(this.tr("Versions"));
175+
titleContainer.add(new qx.ui.basic.Atom(this.tr("Version")));
176+
const versions = this.__versionsList = new qx.ui.form.SelectBox();
177+
titleContainer.add(versions);
266178

267-
let versionsList = this.__versionsList = new qx.ui.form.List().set({
268-
orientation: "vertical",
269-
spacing: 10,
270-
minWidth: 100,
271-
height: 600,
272-
appearance: "pb-list"
273-
});
274-
versionsList.addListener("changeSelection", e => {
275-
if (e.getData() && e.getData().length>0) {
276-
const selectedVersion = e.getData()[0].getLabel();
277-
this.__versionSelected(selectedVersion, true);
179+
versions.addListener("changeSelection", e => {
180+
if (e.getData() && e.getData().length) {
181+
this.__versionSelected(e.getData()[0].getLabel());
278182
}
279183
}, this);
280-
versionsLayout.add(versionsList);
281-
282-
return versionsLayout;
283-
},
284184

285-
__createServiceDescription: function() {
286-
let descriptionLayout = this.__createVBoxWLabel(this.tr("Description"));
287-
288-
let serviceDescription = this.__serviceDescription = new qx.ui.container.Composite(new qx.ui.layout.Canvas());
289-
let scroller = new qx.ui.container.Scroll();
290-
scroller.add(serviceDescription);
291-
descriptionLayout.add(scroller, {
185+
descriptionView.add(titleContainer);
186+
descriptionView.add(descriptionContainer, {
292187
flex: 1
293188
});
294-
295-
return descriptionLayout;
189+
return descriptionView;
296190
},
297191

298192
__createVBoxWLabel: function(text) {
@@ -309,15 +203,19 @@ qx.Class.define("qxapp.desktop.ServiceBrowser", {
309203

310204
__serviceSelected: function(serviceKey) {
311205
if (this.__versionsList) {
312-
let versionsList = this.__versionsList;
206+
const versionsList = this.__versionsList;
313207
versionsList.removeAll();
314208
if (serviceKey in this.__allServices) {
315-
let versions = qxapp.utils.Services.getVersions(this.__allServices, serviceKey);
316-
for (let i = versions.length; i--;) {
317-
let listItem = new qx.ui.form.ListItem(versions[i]);
318-
versionsList.add(listItem);
319-
if (i === versions.length-1) {
320-
versionsList.setSelection([listItem]);
209+
const versions = qxapp.utils.Services.getVersions(this.__allServices, serviceKey);
210+
if (versions) {
211+
let lastItem = null;
212+
versions.forEach(version => {
213+
lastItem = new qx.ui.form.ListItem(version);
214+
versionsList.add(lastItem);
215+
});
216+
if (lastItem) {
217+
versionsList.setSelection([lastItem]);
218+
this.__versionSelected(lastItem.getLabel());
321219
}
322220
}
323221
}
@@ -329,21 +227,15 @@ qx.Class.define("qxapp.desktop.ServiceBrowser", {
329227
if (serviceSelection.length > 0) {
330228
const serviceKey = serviceSelection[0].getModel();
331229
const selectedService = qxapp.utils.Services.getFromObject(this.__allServices, serviceKey, versionKey);
332-
this.__updateServciceDescription(selectedService);
230+
this.__updateServiceDescription(selectedService);
333231
}
334232
},
335233

336-
__updateServciceDescription: function(selectedService) {
337-
let serviceDescription = this.__serviceDescription;
338-
serviceDescription.removeAll();
234+
__updateServiceDescription: function(selectedService) {
235+
const serviceDescription = this.__serviceDescription;
339236
if (selectedService && serviceDescription) {
340237
let jsonTreeWidget = new qxapp.component.widget.JsonTreeWidget(selectedService, "serviceDescription");
341-
serviceDescription.add(jsonTreeWidget, {
342-
top: -30,
343-
right: 0,
344-
bottom: 0,
345-
left: -60
346-
});
238+
serviceDescription.add(jsonTreeWidget);
347239
}
348240
},
349241

0 commit comments

Comments
 (0)