diff --git a/services/web/client/source/class/qxapp/Preferences.js b/services/web/client/source/class/qxapp/Preferences.js
index 36123797d00..057a3fe7ac3 100644
--- a/services/web/client/source/class/qxapp/Preferences.js
+++ b/services/web/client/source/class/qxapp/Preferences.js
@@ -1,5 +1,4 @@
/* eslint no-warning-comments: "off" */
-
qx.Class.define("qxapp.Preferences", {
extend: qx.ui.window.Window,
@@ -41,7 +40,7 @@ qx.Class.define("qxapp.Preferences", {
members: {
__tokenResources: null,
- __validTokens: null,
+ __tokensList: null,
__createPage: function(name, iconSrc = null) {
let page = new qx.ui.tabview.Page(name, iconSrc);
@@ -51,7 +50,7 @@ qx.Class.define("qxapp.Preferences", {
}));
// title
- page.add(new qx.ui.basic.Label("
" + name + " Settings
").set({
+ page.add(new qx.ui.basic.Label("" + name + " " + this.tr("Settings") + "
").set({
rich: true
}));
@@ -61,18 +60,19 @@ qx.Class.define("qxapp.Preferences", {
},
__getGeneral: function() {
- const iconUrl = qxapp.dev.Placeholders.getIcon("ion-ios-settings", 32);
- let page = this.__createPage("General", iconUrl);
+ const iconUrl = "@FontAwesome5Solid/sliders-h/24";
+ let page = this.__createPage(this.tr("General"), iconUrl);
const userEmail = qxapp.auth.Data.getInstance().getEmail();
+ let form = new qx.ui.form.Form();
// content
let username = new qx.ui.form.TextField().set({
value: userEmail.split("@")[0],
placeholder: "User Name",
readOnly: true
});
- page.add(username);
+ form.add(username, "Username");
// let fullname = new qx.ui.form.TextField().set({
// placeholder: "Full Name"
@@ -85,7 +85,9 @@ qx.Class.define("qxapp.Preferences", {
placeholder: "Email",
readOnly: true
});
- page.add(email);
+ form.add(email, this.tr("Email"));
+
+ page.add(new qx.ui.form.renderer.Single(form));
let img = new qx.ui.basic.Image().set({
source: qxapp.utils.Avatar.getUrl(email.getValue(), 200)
@@ -96,87 +98,36 @@ qx.Class.define("qxapp.Preferences", {
},
__getSecurity: function() {
- const iconUrl = qxapp.dev.Placeholders.getIcon("fa-lock", 32);
- let page = this.__createPage("Security", iconUrl);
-
- // content
- // page.add(new qx.ui.form.PasswordField().set({
- // placeholder: "Password"
- // }));
-
- // page.add(new qx.ui.form.PasswordField().set({
- // placeholder: "Re-type Password"
- // }));
+ const iconUrl = "@FontAwesome5Solid/shield-alt/24";
+ let page = this.__createPage(this.tr("Security"), iconUrl);
page.add(new qx.ui.basic.Atom("DAT-CORE
").set({
rich: true
}));
- let newTokenGrp = new qx.ui.container.Composite(new qx.ui.layout.HBox());
- let newTokenPass = new qx.ui.form.PasswordField();
- newTokenPass.set({
- placeholder: "Personal Access Token",
- alignY: "bottom"
- });
- newTokenGrp.add(newTokenPass, {
- flex: 1
- });
- const iconSize = 12;
- let newTokenBtn = new qx.ui.toolbar.Button(null, "@FontAwesome5Solid/plus/"+iconSize);
- newTokenBtn.addListener("execute", e => {
- let tokens = this.__tokenResources.tokens;
- tokens.addListenerOnce("postSuccess", ev => {
- newTokenPass.resetValue();
- let tokensList = ev.getRequest().getResponse().data;
- console.log(tokensList);
- this.__reloadTokens();
- }, this);
- tokens.addListenerOnce("getError", ev => {
- console.log(ev);
- });
- tokens.post(newTokenPass.getValue());
- }, this);
- newTokenGrp.add(newTokenBtn);
- page.add(newTokenGrp);
+ this.__tokensList = new qx.ui.container.Composite(new qx.ui.layout.VBox(10));
+ page.add(this.__tokensList);
- this.__validTokens = new qx.ui.container.Composite(new qx.ui.layout.VBox());
- page.add(this.__validTokens);
this.__reloadTokens();
return page;
},
__reloadTokens: function() {
- this.__validTokens.removeAll();
+ this.__tokensList.removeAll();
let tokens = this.__tokenResources.tokens;
tokens.addListenerOnce("getSuccess", e => {
let tokensList = e.getRequest().getResponse().data;
- for (let i=0; i {
- let token = this.__tokenResources.token;
- token.addListenerOnce("delSuccess", eve => {
- this.__reloadTokens();
- }, this);
- token.addListenerOnce("delError", eve => {
- console.log(eve);
- });
- token.del();
- }, this);
- validTokenGrp.add(newTokenBtn);
- this.__validTokens.add(validTokenGrp);
+ if (tokensList.length === 0) {
+ let emptyForm = this.__getEmptyTokenForm();
+ this.__tokensList.add(new qx.ui.form.renderer.Single(emptyForm));
+ } else {
+ for (let i=0; i {
@@ -185,9 +136,92 @@ qx.Class.define("qxapp.Preferences", {
tokens.get();
},
+ __getEmptyTokenForm: function() {
+ let form = new qx.ui.form.Form();
+
+ let newTokenKey = new qx.ui.form.TextField();
+ newTokenKey.set({
+ placeholder: "Key"
+ });
+ form.add(newTokenKey, this.tr("Key"));
+
+ let newTokenSecret = new qx.ui.form.TextField();
+ newTokenSecret.set({
+ placeholder: "Secret"
+ });
+ form.add(newTokenSecret, this.tr("Secret"));
+
+ let addTokenBtn = new qx.ui.form.Button(this.tr("Add token"));
+ addTokenBtn.setWidth(100);
+ addTokenBtn.setTextColor("black");
+ addTokenBtn.addListener("execute", e => {
+ let tokens = this.__tokenResources.tokens;
+ tokens.addListenerOnce("postSuccess", ev => {
+ this.__reloadTokens();
+ }, this);
+ tokens.addListenerOnce("getError", ev => {
+ console.log(ev);
+ });
+ const newTokenInfo = {
+ "service": "dat-core",
+ "token_key": newTokenKey.getValue(),
+ "token_secret": newTokenSecret.getValue()
+ };
+ tokens.post(newTokenInfo);
+ }, this);
+ form.addButton(addTokenBtn);
+
+ return form;
+ },
+
+ __getValidTokenForm: function(service, key, secret) {
+ let form = new qx.ui.form.Form();
+
+ let tokenService = new qx.ui.form.TextField().set({
+ value: service,
+ readOnly: true
+ });
+ form.add(tokenService, this.tr("Service"));
+
+ let tokenKey = new qx.ui.form.TextField();
+ tokenKey.set({
+ value: key,
+ readOnly: true
+ });
+ form.add(tokenKey, this.tr("Key"));
+
+ if (secret) {
+ let tokenSecret = new qx.ui.form.TextField();
+ tokenSecret.set({
+ value: secret,
+ readOnly: true
+ });
+ form.add(tokenSecret, this.tr("Secret"));
+ }
+
+ let delTokenBtn = new qx.ui.form.Button(this.tr("Delete token"));
+ delTokenBtn.setWidth(100);
+ delTokenBtn.setTextColor("black");
+ delTokenBtn.addListener("execute", e => {
+ let token = this.__tokenResources.token;
+ token.addListenerOnce("delSuccess", eve => {
+ this.__reloadTokens();
+ }, this);
+ token.addListenerOnce("delError", eve => {
+ console.log(eve);
+ });
+ token.del({
+ "service": service
+ });
+ }, this);
+ form.addButton(delTokenBtn);
+
+ return form;
+ },
+
__getDisplay: function() {
- const iconUrl = qxapp.dev.Placeholders.getIcon("fa-eye", 32);
- let page = this.__createPage("Display", iconUrl);
+ const iconUrl = "@FontAwesome5Solid/eye/24";
+ let page = this.__createPage(this.tr("Display"), iconUrl);
let themes = qx.Theme.getAll();
let select = new qx.ui.form.SelectBox("Theme");
@@ -220,8 +254,8 @@ qx.Class.define("qxapp.Preferences", {
},
__getAdvanced: function() {
- const iconUrl = qxapp.dev.Placeholders.getIcon("fa-rebel", 32);
- let page = this.__createPage("Advanced", iconUrl);
+ const iconUrl = "@FontAwesome5Solid/flask/24";
+ let page = this.__createPage(this.tr("Experimental"), iconUrl);
return page;
}
diff --git a/services/web/client/source/class/qxapp/io/rest/ResourceFactory.js b/services/web/client/source/class/qxapp/io/rest/ResourceFactory.js
index ea9b0dad785..7336cd82fbe 100644
--- a/services/web/client/source/class/qxapp/io/rest/ResourceFactory.js
+++ b/services/web/client/source/class/qxapp/io/rest/ResourceFactory.js
@@ -76,19 +76,19 @@ qx.Class.define("qxapp.io.rest.ResourceFactory", {
// Get token
get: {
method: "GET",
- url: basePath+"/my/tokens/{token_id}"
+ url: basePath+"/my/tokens/{service}"
},
// Update token
put: {
method: "PUT",
- url: basePath+"/my/tokens/{token_id}"
+ url: basePath+"/my/tokens/{service}"
},
// Delete token
del: {
method: "DELETE",
- url: basePath+"/my/tokens/{token_id}"
+ url: basePath+"/my/tokens/{service}"
}
});