diff --git a/backend/src/admin/settings/settings.controller.ts b/backend/src/admin/settings/settings.controller.ts
index 60b8885e..7f59da41 100644
--- a/backend/src/admin/settings/settings.controller.ts
+++ b/backend/src/admin/settings/settings.controller.ts
@@ -84,6 +84,10 @@ export class SettingsController {
if (!(await this.jsonFilesService.GetDashboard(dashboard_name)))
return new NotFoundException();
+ data.filters.map((filter) => {
+ filter.componentConfigs.defaultWithinFiltersOperator =
+ data.defaultWithinFiltersOperator;
+ });
for (const dashboard of dashboards) {
if (dashboard.name == dashboard_name) dashboard['explorer'] = data;
}
diff --git a/frontend/.eslintrc.js b/frontend/.eslintrc.js
index ae88a2ff..2377671c 100644
--- a/frontend/.eslintrc.js
+++ b/frontend/.eslintrc.js
@@ -1,20 +1,24 @@
/* eslint-env node */
module.exports = {
- extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'prettier'],
+ extends: [
+ 'eslint:recommended',
+ 'plugin:@typescript-eslint/recommended',
+ 'prettier',
+ ],
parser: '@typescript-eslint/parser',
plugins: ['@typescript-eslint', 'unused-imports'],
root: true,
- 'rules': {
+ rules: {
'no-unused-vars': 'off',
'unused-imports/no-unused-imports': 'error',
'unused-imports/no-unused-vars': [
'warn',
{
- 'vars': 'all',
- 'varsIgnorePattern': '^_',
- 'args': 'after-used',
- 'argsIgnorePattern': '^_'
- }
- ]
- }
+ vars: 'all',
+ varsIgnorePattern: '^_',
+ args: 'after-used',
+ argsIgnorePattern: '^_',
+ },
+ ],
+ },
};
diff --git a/frontend/.prettierrc b/frontend/.prettierrc
index dcb72794..a20502b7 100644
--- a/frontend/.prettierrc
+++ b/frontend/.prettierrc
@@ -1,4 +1,4 @@
{
"singleQuote": true,
"trailingComma": "all"
-}
\ No newline at end of file
+}
diff --git a/frontend/angular.json b/frontend/angular.json
index bc4406ea..4a4bf9e8 100644
--- a/frontend/angular.json
+++ b/frontend/angular.json
@@ -22,8 +22,14 @@
"main": "src/main.ts",
"polyfills": "src/polyfills.ts",
"tsConfig": "src/tsconfig.app.json",
- "assets": ["src/favicon.ico", "src/assets",
- { "glob": "**/*", "input": "node_modules/tinymce", "output": "/tinymce/" }
+ "assets": [
+ "src/favicon.ico",
+ "src/assets",
+ {
+ "glob": "**/*",
+ "input": "node_modules/tinymce",
+ "output": "/tinymce/"
+ }
],
"styles": [
"src/styles.scss",
@@ -64,8 +70,7 @@
},
"serve": {
"builder": "@angular-devkit/build-angular:dev-server",
- "options": {
- },
+ "options": {},
"configurations": {
"production": {
"browserTarget": "RES:build:production"
diff --git a/frontend/e2e/protractor.conf.js b/frontend/e2e/protractor.conf.js
index 86776a39..98bba709 100644
--- a/frontend/e2e/protractor.conf.js
+++ b/frontend/e2e/protractor.conf.js
@@ -5,11 +5,9 @@ const { SpecReporter } = require('jasmine-spec-reporter');
exports.config = {
allScriptsTimeout: 11000,
- specs: [
- './src/**/*.e2e-spec.ts'
- ],
+ specs: ['./src/**/*.e2e-spec.ts'],
capabilities: {
- 'browserName': 'chrome'
+ browserName: 'chrome',
},
directConnect: true,
baseUrl: 'http://localhost:4200/',
@@ -17,12 +15,14 @@ exports.config = {
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 30000,
- print: function() {}
+ print: function () {},
},
onPrepare() {
require('ts-node').register({
- project: require('path').join(__dirname, './tsconfig.e2e.json')
+ project: require('path').join(__dirname, './tsconfig.e2e.json'),
});
- jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
- }
-};
\ No newline at end of file
+ jasmine
+ .getEnv()
+ .addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
+ },
+};
diff --git a/frontend/e2e/tsconfig.e2e.json b/frontend/e2e/tsconfig.e2e.json
index d696d43d..a90b3575 100644
--- a/frontend/e2e/tsconfig.e2e.json
+++ b/frontend/e2e/tsconfig.e2e.json
@@ -4,10 +4,6 @@
"outDir": "../out-tsc/app",
"module": "commonjs",
"target": "es2018",
- "types": [
- "jasmine",
- "jasminewd2",
- "node"
- ]
+ "types": ["jasmine", "jasminewd2", "node"]
}
}
diff --git a/frontend/package-lock.json b/frontend/package-lock.json
index 13f46482..2a88aadf 100644
--- a/frontend/package-lock.json
+++ b/frontend/package-lock.json
@@ -42,6 +42,8 @@
"dayjs": "^1.11.10",
"highcharts": "^10.3.3",
"highcharts-angular": "^3.1.2",
+ "html2canvas": "^1.4.1",
+ "jspdf": "^2.5.2",
"jwt-decode": "^3.1.2",
"material-design-icons-iconfont": "^6.7.0",
"ng2-nouislider": "^2.0.0",
@@ -2538,7 +2540,7 @@
"version": "7.20.13",
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.20.13.tgz",
"integrity": "sha512-gt3PKXs0DBoL9xCvOIIZ2NEqAGZqHjAnmVbfQtB620V0uReIQutpel14KcneZuer7UioY8ALKZ7iocavvzTNFA==",
- "dev": true,
+ "devOptional": true,
"dependencies": {
"regenerator-runtime": "^0.13.11"
},
@@ -4805,6 +4807,12 @@
"integrity": "sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==",
"dev": true
},
+ "node_modules/@types/raf": {
+ "version": "3.4.3",
+ "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz",
+ "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==",
+ "optional": true
+ },
"node_modules/@types/ramda": {
"version": "0.27.34",
"resolved": "https://registry.npmjs.org/@types/ramda/-/ramda-0.27.34.tgz",
@@ -5731,6 +5739,17 @@
"integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==",
"dev": true
},
+ "node_modules/atob": {
+ "version": "2.1.2",
+ "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz",
+ "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==",
+ "bin": {
+ "atob": "bin/atob.js"
+ },
+ "engines": {
+ "node": ">= 4.5.0"
+ }
+ },
"node_modules/autoprefixer": {
"version": "10.4.13",
"resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.13.tgz",
@@ -5887,6 +5906,14 @@
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true
},
+ "node_modules/base64-arraybuffer": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz",
+ "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==",
+ "engines": {
+ "node": ">= 0.6.0"
+ }
+ },
"node_modules/base64-js": {
"version": "1.5.1",
"resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz",
@@ -6156,6 +6183,17 @@
"node": ">= 4.5.0"
}
},
+ "node_modules/btoa": {
+ "version": "1.2.1",
+ "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz",
+ "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==",
+ "bin": {
+ "btoa": "bin/btoa.js"
+ },
+ "engines": {
+ "node": ">= 0.4.0"
+ }
+ },
"node_modules/buffer": {
"version": "5.7.1",
"resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz",
@@ -6301,6 +6339,25 @@
}
]
},
+ "node_modules/canvg": {
+ "version": "3.0.10",
+ "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz",
+ "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==",
+ "optional": true,
+ "dependencies": {
+ "@babel/runtime": "^7.12.5",
+ "@types/raf": "^3.4.0",
+ "core-js": "^3.8.3",
+ "raf": "^3.4.1",
+ "regenerator-runtime": "^0.13.7",
+ "rgbcolor": "^1.0.1",
+ "stackblur-canvas": "^2.0.0",
+ "svg-pathdata": "^6.0.3"
+ },
+ "engines": {
+ "node": ">=10.0.0"
+ }
+ },
"node_modules/caseless": {
"version": "0.12.0",
"resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
@@ -6823,6 +6880,17 @@
"url": "https://github.com/sponsors/sindresorhus"
}
},
+ "node_modules/core-js": {
+ "version": "3.39.0",
+ "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.39.0.tgz",
+ "integrity": "sha512-raM0ew0/jJUqkJ0E6e8UDtl+y/7ktFivgWvqw8dNSQeNWoSDLvQ1H/RN3aPXB9tBd4/FhyR4RDPGhsNIMsAn7g==",
+ "hasInstallScript": true,
+ "optional": true,
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/core-js"
+ }
+ },
"node_modules/core-js-compat": {
"version": "3.33.1",
"resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.1.tgz",
@@ -7007,6 +7075,14 @@
"node": ">= 8"
}
},
+ "node_modules/css-line-break": {
+ "version": "2.1.0",
+ "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz",
+ "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==",
+ "dependencies": {
+ "utrie": "^1.0.2"
+ }
+ },
"node_modules/css-loader": {
"version": "6.7.3",
"resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.7.3.tgz",
@@ -7464,6 +7540,12 @@
"url": "https://github.com/fb55/domhandler?sponsor=1"
}
},
+ "node_modules/dompurify": {
+ "version": "2.5.7",
+ "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.5.7.tgz",
+ "integrity": "sha512-2q4bEI+coQM8f5ez7kt2xclg1XsecaV9ASJk/54vwlfRRNQfDqJz2pzQ8t0Ix/ToBpXlVjrRIx7pFC/o8itG2Q==",
+ "optional": true
+ },
"node_modules/domutils": {
"version": "2.8.0",
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
@@ -8783,6 +8865,11 @@
"node": ">=0.8.0"
}
},
+ "node_modules/fflate": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz",
+ "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A=="
+ },
"node_modules/figures": {
"version": "3.2.0",
"resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz",
@@ -9634,6 +9721,18 @@
"integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==",
"dev": true
},
+ "node_modules/html2canvas": {
+ "version": "1.4.1",
+ "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz",
+ "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==",
+ "dependencies": {
+ "css-line-break": "^2.1.0",
+ "text-segmentation": "^1.0.3"
+ },
+ "engines": {
+ "node": ">=8.0.0"
+ }
+ },
"node_modules/http-cache-semantics": {
"version": "4.1.1",
"resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz",
@@ -10977,6 +11076,39 @@
"node >= 0.2.0"
]
},
+ "node_modules/jspdf": {
+ "version": "2.5.2",
+ "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.2.tgz",
+ "integrity": "sha512-myeX9c+p7znDWPk0eTrujCzNjT+CXdXyk7YmJq5nD5V7uLLKmSXnlQ/Jn/kuo3X09Op70Apm0rQSnFWyGK8uEQ==",
+ "dependencies": {
+ "@babel/runtime": "^7.23.2",
+ "atob": "^2.1.2",
+ "btoa": "^1.2.1",
+ "fflate": "^0.8.1"
+ },
+ "optionalDependencies": {
+ "canvg": "^3.0.6",
+ "core-js": "^3.6.0",
+ "dompurify": "^2.5.4",
+ "html2canvas": "^1.0.0-rc.5"
+ }
+ },
+ "node_modules/jspdf/node_modules/@babel/runtime": {
+ "version": "7.26.0",
+ "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.26.0.tgz",
+ "integrity": "sha512-FDSOghenHTiToteC/QRlv2q3DhPZ/oOXTBoirfWNx1Cx3TMVcGWQtMMmQcSvb/JjpNeGzx8Pq/b4fKEJuWm1sw==",
+ "dependencies": {
+ "regenerator-runtime": "^0.14.0"
+ },
+ "engines": {
+ "node": ">=6.9.0"
+ }
+ },
+ "node_modules/jspdf/node_modules/regenerator-runtime": {
+ "version": "0.14.1",
+ "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
+ "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
+ },
"node_modules/jsprim": {
"version": "1.4.2",
"resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.2.tgz",
@@ -13179,7 +13311,7 @@
"version": "2.1.0",
"resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
"integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==",
- "dev": true
+ "devOptional": true
},
"node_modules/picocolors": {
"version": "1.0.0",
@@ -13836,6 +13968,15 @@
}
]
},
+ "node_modules/raf": {
+ "version": "3.4.1",
+ "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz",
+ "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==",
+ "optional": true,
+ "dependencies": {
+ "performance-now": "^2.1.0"
+ }
+ },
"node_modules/ramda": {
"version": "0.27.2",
"resolved": "https://registry.npmjs.org/ramda/-/ramda-0.27.2.tgz",
@@ -14029,7 +14170,7 @@
"version": "0.13.11",
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz",
"integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==",
- "dev": true
+ "devOptional": true
},
"node_modules/regenerator-transform": {
"version": "0.15.2",
@@ -14275,6 +14416,15 @@
"integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==",
"dev": true
},
+ "node_modules/rgbcolor": {
+ "version": "1.0.1",
+ "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz",
+ "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==",
+ "optional": true,
+ "engines": {
+ "node": ">= 0.8.15"
+ }
+ },
"node_modules/rimraf": {
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz",
@@ -15254,6 +15404,15 @@
"node": ">=16 || 14 >=14.17"
}
},
+ "node_modules/stackblur-canvas": {
+ "version": "2.7.0",
+ "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.7.0.tgz",
+ "integrity": "sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==",
+ "optional": true,
+ "engines": {
+ "node": ">=0.1.14"
+ }
+ },
"node_modules/statuses": {
"version": "1.5.0",
"resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz",
@@ -15439,6 +15598,15 @@
"url": "https://github.com/sponsors/ljharb"
}
},
+ "node_modules/svg-pathdata": {
+ "version": "6.0.3",
+ "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz",
+ "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==",
+ "optional": true,
+ "engines": {
+ "node": ">=12.0.0"
+ }
+ },
"node_modules/symbol-observable": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/symbol-observable/-/symbol-observable-4.0.0.tgz",
@@ -15678,6 +15846,14 @@
"url": "https://github.com/sponsors/isaacs"
}
},
+ "node_modules/text-segmentation": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz",
+ "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==",
+ "dependencies": {
+ "utrie": "^1.0.2"
+ }
+ },
"node_modules/text-table": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz",
@@ -16276,6 +16452,14 @@
"node": ">= 0.4.0"
}
},
+ "node_modules/utrie": {
+ "version": "1.0.2",
+ "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz",
+ "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==",
+ "dependencies": {
+ "base64-arraybuffer": "^1.0.2"
+ }
+ },
"node_modules/uuid": {
"version": "3.4.0",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
diff --git a/frontend/package.json b/frontend/package.json
index 1b6797f6..266dbc97 100644
--- a/frontend/package.json
+++ b/frontend/package.json
@@ -47,6 +47,8 @@
"dayjs": "^1.11.10",
"highcharts": "^10.3.3",
"highcharts-angular": "^3.1.2",
+ "html2canvas": "^1.4.1",
+ "jspdf": "^2.5.2",
"jwt-decode": "^3.1.2",
"material-design-icons-iconfont": "^6.7.0",
"ng2-nouislider": "^2.0.0",
diff --git a/frontend/src/alt.js b/frontend/src/alt.js
index 8796d282..af87dbfd 100644
--- a/frontend/src/alt.js
+++ b/frontend/src/alt.js
@@ -1,4 +1,4 @@
-!(function(e, t, n) {
+!(function (e, t, n) {
var d = 'createElement',
m = 'getElementsByTagName',
c = 'setAttribute',
@@ -15,5 +15,5 @@
);
})(
'altmetric-embed-js',
- 'https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js'
+ 'https://d1bxh8uas1mnw7.cloudfront.net/assets/embed.js',
);
diff --git a/frontend/src/app/admin/appearance/appearance.component.html b/frontend/src/app/admin/appearance/appearance.component.html
index e868e7f3..605549f2 100644
--- a/frontend/src/app/admin/appearance/appearance.component.html
+++ b/frontend/src/app/admin/appearance/appearance.component.html
@@ -2,18 +2,45 @@
+
+
+ Items label
+
+
+
Primary color
Secondary color
- Show toolbar
- Show side Nav
- Show top Nav
+
+ Show toolbar
+
+
+ Show side Nav
+
+
+ Show top Nav
+
@@ -155,10 +201,7 @@
Chart colors:
-
+
{{ color.value }}
diff --git a/frontend/src/app/admin/appearance/appearance.component.scss b/frontend/src/app/admin/appearance/appearance.component.scss
index f603eab8..0518e846 100644
--- a/frontend/src/app/admin/appearance/appearance.component.scss
+++ b/frontend/src/app/admin/appearance/appearance.component.scss
@@ -1,7 +1,7 @@
.save {
float: right;
}
-.colors{
+.colors {
display: inline-block;
padding: 10px;
}
diff --git a/frontend/src/app/admin/appearance/appearance.component.ts b/frontend/src/app/admin/appearance/appearance.component.ts
index 39c8e27f..18de06e7 100644
--- a/frontend/src/app/admin/appearance/appearance.component.ts
+++ b/frontend/src/app/admin/appearance/appearance.component.ts
@@ -28,6 +28,7 @@ export class AppearanceComponent implements OnInit {
primary_color: new UntypedFormControl(this.primary_color),
secondary_color: new UntypedFormControl(this.secondary_color),
website_name: new UntypedFormControl(''),
+ items_label: new UntypedFormControl(''),
logo: new UntypedFormControl(''),
favIcon: new UntypedFormControl(''),
tracking_code: new UntypedFormControl(''),
@@ -150,6 +151,7 @@ export class AppearanceComponent implements OnInit {
primary_color: importedItem?.primary_color,
secondary_color: importedItem?.secondary_color,
website_name: importedItem?.website_name,
+ items_label: importedItem?.items_label,
logo: importedItem?.logo,
favIcon: importedItem?.favIcon,
tracking_code: importedItem?.tracking_code,
diff --git a/frontend/src/app/admin/components/confirmation/confirmation.component.html b/frontend/src/app/admin/components/confirmation/confirmation.component.html
index 7dde011d..934f0fa4 100644
--- a/frontend/src/app/admin/components/confirmation/confirmation.component.html
+++ b/frontend/src/app/admin/components/confirmation/confirmation.component.html
@@ -1,8 +1,12 @@
-{{data.title}}
+{{ data.title }}
-
-
No close
-
Yes done
+
+
+ No close
+
+
+ Yes done
+
diff --git a/frontend/src/app/admin/components/mapping-values/form/values-form.component.html b/frontend/src/app/admin/components/mapping-values/form/values-form.component.html
index 6f12b46f..b5d86f9a 100644
--- a/frontend/src/app/admin/components/mapping-values/form/values-form.component.html
+++ b/frontend/src/app/admin/components/mapping-values/form/values-form.component.html
@@ -1,28 +1,63 @@
-
{{ data? 'Edit' :'New' }} Value Mappings
-
diff --git a/frontend/src/app/admin/components/mapping-values/form/values-form.component.scss b/frontend/src/app/admin/components/mapping-values/form/values-form.component.scss
index a26f0981..c7acb4bf 100644
--- a/frontend/src/app/admin/components/mapping-values/form/values-form.component.scss
+++ b/frontend/src/app/admin/components/mapping-values/form/values-form.component.scss
@@ -1,3 +1,3 @@
-mat-form-field{
- width: 100%;
+mat-form-field {
+ width: 100%;
}
diff --git a/frontend/src/app/admin/components/mapping-values/mapping-values.component.html b/frontend/src/app/admin/components/mapping-values/mapping-values.component.html
index 3f98fce3..865199e7 100644
--- a/frontend/src/app/admin/components/mapping-values/mapping-values.component.html
+++ b/frontend/src/app/admin/components/mapping-values/mapping-values.component.html
@@ -2,20 +2,47 @@
@@ -25,41 +52,49 @@
diff --git a/frontend/src/app/admin/components/setup/setup.component.html b/frontend/src/app/admin/components/setup/setup.component.html
index 5b192ac6..209566a4 100644
--- a/frontend/src/app/admin/components/setup/setup.component.html
+++ b/frontend/src/app/admin/components/setup/setup.component.html
@@ -3,21 +3,53 @@
Repository Setup
-
- Export
- cloud_download
+
+ Export
+ cloud_download
-
-
+
+
Import
cloud_upload
-
+
Add new repository
add
-
+
Save
@@ -34,16 +66,21 @@
[formGroup]="repoform"
>
-
-
+
+
expand_less
-
+
expand_more
Repository ({{ repoindex + 1 }})
@@ -53,10 +90,17 @@
color="warn"
mat-icon-button
>
- delete
+ delete
-
+
Repository name
@@ -71,8 +115,14 @@
Repository type
-
-
+
+
{{ plugin.name }}
@@ -81,14 +131,17 @@
- Start from page number ({{activePlugin[repoindex]?.start_page?.placeholder}}, unless you know what you
- are doing)
+ Start from page number ({{
+ activePlugin[repoindex]?.start_page?.placeholder
+ }}, unless you know what you are doing)
@@ -102,7 +155,9 @@
@@ -117,7 +172,10 @@
/>
-
+
{{ activePlugin[repoindex]?.name }} DSpace XML sitemap
@@ -125,8 +183,12 @@
@@ -163,14 +225,14 @@
color="info"
mat-button
[disabled]="
- repoform.get('type').value == null ||
- repoform.get('itemsEndPoint').value == null ||
- repoform.get('itemsEndPoint').value == ''
- "
+ repoform.get('type').value == null ||
+ repoform.get('itemsEndPoint').value == null ||
+ repoform.get('itemsEndPoint').value == ''
+ "
>
Auto import metadata structure
cloud_download
+ >cloud_download
@@ -225,7 +287,7 @@
Schema
mat-icon-button
>
delete
+ >delete
@@ -235,12 +297,14 @@ Schema
New schema
add
+ >add
@@ -293,13 +357,15 @@ Metadata fields
>
None
Language Language
Country
Date
- Datetime
+ Datetime
Lowercase Lowercase
@@ -317,7 +383,7 @@
Metadata fields
"
>
Extract years as years_{{
- form.controls.disply_name.value
+ form.controls.disply_name.value
}}
@@ -333,7 +399,7 @@
Metadata fields
mat-icon-button
>
delete
+ >delete
@@ -343,12 +409,14 @@ Metadata fields
New metadata field
add
+ >add
diff --git a/frontend/src/app/admin/components/setup/setup.component.scss b/frontend/src/app/admin/components/setup/setup.component.scss
index 44a07005..11a7e9e8 100644
--- a/frontend/src/app/admin/components/setup/setup.component.scss
+++ b/frontend/src/app/admin/components/setup/setup.component.scss
@@ -1,29 +1,29 @@
-.float-right{
- float: right;
+.float-right {
+ float: right;
}
.file {
- padding-top: 20px;
- * {
- float: left;
+ padding-top: 20px;
+ * {
+ float: left;
+ }
+ .logo {
+ position: relative;
+ max-width: 167px;
+ display: inline-block;
+ img {
+ width: 100%;
+ background-color: #ededed;
}
- .logo {
- position: relative;
- max-width: 167px;
- display: inline-block;
- img {
- width: 100%;
- background-color: #ededed;
- }
- button {
- position: absolute;
- right: 0;
- width: 24px;
- height: 24px;
- top: 0;
- }
+ button {
+ position: absolute;
+ right: 0;
+ width: 24px;
+ height: 24px;
+ top: 0;
}
}
+}
.list-fields {
max-height: 390px;
diff --git a/frontend/src/app/admin/components/shared/shared.component.html b/frontend/src/app/admin/components/shared/shared.component.html
index 1d89060a..4d134c62 100644
--- a/frontend/src/app/admin/components/shared/shared.component.html
+++ b/frontend/src/app/admin/components/shared/shared.component.html
@@ -1,9 +1,7 @@
@@ -13,31 +11,31 @@
- ID.
- {{element.id}}
+ ID.
+ {{ element.id }}
- Hashed Item
- {{element.hashedItem}}
+ Hashed Item
+ {{ element.hashedItem }}
- attr
- {{element.attr | json}}
+ attr
+ {{ element.attr | json }}
- Created At
- {{element.created_at}}
+ Created At
+ {{ element.created_at }}
- Actions
+ Actions
- open_in_new
+ open_in_new
-
+
-
+
diff --git a/frontend/src/app/admin/components/shared/shared.component.scss b/frontend/src/app/admin/components/shared/shared.component.scss
index 00e4cb9f..1922e7ff 100644
--- a/frontend/src/app/admin/components/shared/shared.component.scss
+++ b/frontend/src/app/admin/components/shared/shared.component.scss
@@ -1,3 +1,3 @@
table {
- width: 100%;
- }
\ No newline at end of file
+ width: 100%;
+}
diff --git a/frontend/src/app/admin/components/users/form/form.component.html b/frontend/src/app/admin/components/users/form/form.component.html
index fa6f01d3..f4001da2 100644
--- a/frontend/src/app/admin/components/users/form/form.component.html
+++ b/frontend/src/app/admin/components/users/form/form.component.html
@@ -1,53 +1,72 @@
-
{{ data? 'Edit' :'New' }} User
+
{{ data ? 'Edit' : 'New' }} User
diff --git a/frontend/src/app/admin/dashboard/dashboard.component.html b/frontend/src/app/admin/dashboard/dashboard.component.html
index c83270b5..0f100e6b 100644
--- a/frontend/src/app/admin/dashboard/dashboard.component.html
+++ b/frontend/src/app/admin/dashboard/dashboard.component.html
@@ -3,15 +3,31 @@
Harvest Dashboard
-
+
Commit Indexing
check
-
+
Stop harvesting and plugins
block
-
+
Refresh
refresh
@@ -23,11 +39,16 @@
-
{{availableSection.display_name}}
+ {{ availableSection.display_name }}
-
+
Stop
block
@@ -37,11 +58,20 @@ {{availableSection.display_name}}
-
+
Stop
block
-
+
Start
archive
@@ -49,17 +79,27 @@ {{availableSection.display_name}}
-
+
{{ tablesData?.[availableSection.name].active_count }}
- Active ({{ tablesData?.[availableSection.name].stuck_count }})
+ Active ({{
+ tablesData?.[availableSection.name].stuck_count
+ }})
-
+
{{ tablesData?.[availableSection.name].waiting_count }}
@@ -67,8 +107,11 @@ {{availableSection.display_name}}
Waiting
-
+
{{ tablesData?.[availableSection.name].completed_count }}
@@ -76,8 +119,11 @@ {{availableSection.display_name}}
Completed
-
+
{{ tablesData?.[availableSection.name].failed_count }}
@@ -88,17 +134,31 @@ {{availableSection.display_name}}
+ *ngIf="
+ progress?.[availableSection.name].estimation &&
+ progress?.[availableSection.name].estimation !== '00:00:00'
+ "
+ class="col-12 estimated-time"
+ color="primary"
+ >
- Estimated time {{progress?.[availableSection.name].estimation}}
+ Estimated time
+ {{ progress?.[availableSection.name].estimation }}
-
+
0" class="col-12">
-
-
{{progress?.[availableSection.name].percentage.toFixed(2)}}%
+
+
+ {{ progress?.[availableSection.name].percentage.toFixed(2) }}%
+
@@ -111,14 +171,20 @@ {{progress?.[availableSection.name].per
[pageIndex]="tablesData?.[availableSection.name].table.pageIndex"
[pageSize]="tablesData?.[availableSection.name].table.pageSize"
[totalPages]="tablesData?.[availableSection.name].table.totalPages"
- [totalRecords]="tablesData?.[availableSection.name].table.totalRecords"
+ [totalRecords]="
+ tablesData?.[availableSection.name].table.totalRecords
+ "
[availableSection]="true"
- (paginationEvent)="PaginationChanged($event, activeTables?.[availableSection.name]?.status, availableSection.name)"
+ (paginationEvent)="
+ PaginationChanged(
+ $event,
+ activeTables?.[availableSection.name]?.status,
+ availableSection.name
+ )
+ "
>
-
-
diff --git a/frontend/src/app/admin/dashboard/dashboard.component.scss b/frontend/src/app/admin/dashboard/dashboard.component.scss
index d5a169d2..4d58171e 100644
--- a/frontend/src/app/admin/dashboard/dashboard.component.scss
+++ b/frontend/src/app/admin/dashboard/dashboard.component.scss
@@ -11,7 +11,10 @@ app-info-table {
.jobs-progress-bar {
height: 20px;
- box-shadow: 0 2px 1px -1px rgba(0, 0, 0, 0.2), 0px 1px 1px 0px rgba(0, 0, 0, 0.14), 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
+ box-shadow:
+ 0 2px 1px -1px rgba(0, 0, 0, 0.2),
+ 0px 1px 1px 0px rgba(0, 0, 0, 0.14),
+ 0px 1px 3px 0px rgba(0, 0, 0, 0.12);
border-radius: 4px;
}
@@ -45,4 +48,3 @@ app-info-table {
.harvest-table-tools {
text-align: right;
}
-
diff --git a/frontend/src/app/admin/dashboard/info-table/info-table.component.html b/frontend/src/app/admin/dashboard/info-table/info-table.component.html
index 116aece9..4a7ac6f2 100644
--- a/frontend/src/app/admin/dashboard/info-table/info-table.component.html
+++ b/frontend/src/app/admin/dashboard/info-table/info-table.component.html
@@ -1,58 +1,68 @@
-
-
-
- ID.
-
- {{element.id}}
- error
-
-
-
+
+
+
+ ID.
+
+ {{ element.id }}
+ error
+
+
+
-
- Repository
- {{element.repository_name }}
-
+
+ Repository
+ {{ element.repository_name }}
+
-
- Plugin Name
- {{element.plugin_name }}
-
+
+ Plugin Name
+ {{ element.plugin_name }}
+
-
- Page
- {{element.page }}
-
+
+ Page
+ {{ element.page }}
+
-
- Created
- {{element.timestamp}}
-
+
+ Created
+ {{ element.timestamp }}
+
-
- Processed
- {{element.processedOn}}
-
+
+ Processed
+ {{ element.processedOn }}
+
-
- Finished
- {{element.finishedOn}}
-
+
+ Finished
+ {{ element.finishedOn }}
+
-
- Attempts Made
-
- {{element.attemptsMade}}
- error
-
-
-
-
-
-
+
+ Attempts Made
+
+ {{ element.attemptsMade }}
+ error
+
+
+
+
+
+
+ showFirstLastButtons
+>
diff --git a/frontend/src/app/admin/dashboard/info-table/info-table.component.scss b/frontend/src/app/admin/dashboard/info-table/info-table.component.scss
index bf35eef1..31f48410 100644
--- a/frontend/src/app/admin/dashboard/info-table/info-table.component.scss
+++ b/frontend/src/app/admin/dashboard/info-table/info-table.component.scss
@@ -2,7 +2,9 @@
min-height: 296px;
}
-th.mat-mdc-header-cell, td.mat-mdc-cell, td.mat-mdc-footer-cell {
+th.mat-mdc-header-cell,
+td.mat-mdc-cell,
+td.mat-mdc-footer-cell {
padding-left: 5px;
}
diff --git a/frontend/src/app/admin/design/components/counter/counter.component.html b/frontend/src/app/admin/design/components/counter/counter.component.html
index c81378c4..b091336d 100644
--- a/frontend/src/app/admin/design/components/counter/counter.component.html
+++ b/frontend/src/app/admin/design/components/counter/counter.component.html
@@ -1,14 +1,18 @@
-
-
- delete
-
-
- settings
-
+
+
+ delete
+
+
+ settings
+
- {{configs.componentConfigs.title}}
-
-
+ {{ configs.componentConfigs.title }}
+
diff --git a/frontend/src/app/admin/design/components/counter/counter.component.scss b/frontend/src/app/admin/design/components/counter/counter.component.scss
index 86421013..22a25075 100644
--- a/frontend/src/app/admin/design/components/counter/counter.component.scss
+++ b/frontend/src/app/admin/design/components/counter/counter.component.scss
@@ -1,4 +1,3 @@
-
mat-card-title {
font-size: 12px;
text-align: center;
diff --git a/frontend/src/app/admin/design/components/filter/filter.component.html b/frontend/src/app/admin/design/components/filter/filter.component.html
index 3eed95f7..8ac727ba 100644
--- a/frontend/src/app/admin/design/components/filter/filter.component.html
+++ b/frontend/src/app/admin/design/components/filter/filter.component.html
@@ -1,15 +1,21 @@
-
-
- {{icon}} {{iconText}}
-
-
- delete
-
-
- settings
-
-
- {{configs.componentConfigs.placeholder || configs.componentConfigs.text }}
+
+ {{ icon }} {{ iconText }}
+
+ delete
+
+
+ settings
+
+
+ {{
+ configs.componentConfigs.placeholder || configs.componentConfigs.text
+ }}
diff --git a/frontend/src/app/admin/design/components/filter/filter.component.scss b/frontend/src/app/admin/design/components/filter/filter.component.scss
index bcbb7547..1def758a 100644
--- a/frontend/src/app/admin/design/components/filter/filter.component.scss
+++ b/frontend/src/app/admin/design/components/filter/filter.component.scss
@@ -1,4 +1,3 @@
-
mat-card-title {
font-size: small;
text-align: left;
diff --git a/frontend/src/app/admin/design/components/form-dialog/form-dialog.component.html b/frontend/src/app/admin/design/components/form-dialog/form-dialog.component.html
index 60e1cedd..936dae66 100644
--- a/frontend/src/app/admin/design/components/form-dialog/form-dialog.component.html
+++ b/frontend/src/app/admin/design/components/form-dialog/form-dialog.component.html
@@ -1,83 +1,159 @@
Settings
- Closeclose
-
- Save
- done
+
+ Closeclose
+
+
+ Save done
+
diff --git a/frontend/src/app/admin/design/components/form-dialog/form-dialog.component.scss b/frontend/src/app/admin/design/components/form-dialog/form-dialog.component.scss
index b9f01ff0..2dc4ce98 100644
--- a/frontend/src/app/admin/design/components/form-dialog/form-dialog.component.scss
+++ b/frontend/src/app/admin/design/components/form-dialog/form-dialog.component.scss
@@ -1,7 +1,7 @@
-mat-form-field{
- width: 100%;
+mat-form-field {
+ width: 100%;
}
-.formd{
- min-height: 325px;
-}
\ No newline at end of file
+.formd {
+ min-height: 325px;
+}
diff --git a/frontend/src/app/admin/design/components/grid/grid.component.html b/frontend/src/app/admin/design/components/grid/grid.component.html
index e3da4a3f..086fc459 100644
--- a/frontend/src/app/admin/design/components/grid/grid.component.html
+++ b/frontend/src/app/admin/design/components/grid/grid.component.html
@@ -1,90 +1,117 @@
Please chose Grid Type
-
-
-
-
-
-
-
-
- Close close
-
-
\ No newline at end of file
+
+ Close close
+
+
diff --git a/frontend/src/app/admin/design/components/main-list/main-list.component.scss b/frontend/src/app/admin/design/components/main-list/main-list.component.scss
index 42379429..df41e9e4 100644
--- a/frontend/src/app/admin/design/components/main-list/main-list.component.scss
+++ b/frontend/src/app/admin/design/components/main-list/main-list.component.scss
@@ -1,5 +1,5 @@
- mat-form-field.base{
- float: left;
- width: 100%;
- display: block;
+mat-form-field.base {
+ float: left;
+ width: 100%;
+ display: block;
}
diff --git a/frontend/src/app/admin/design/components/sort/sort.component.html b/frontend/src/app/admin/design/components/sort/sort.component.html
index c59d3170..8700e1f6 100644
--- a/frontend/src/app/admin/design/components/sort/sort.component.html
+++ b/frontend/src/app/admin/design/components/sort/sort.component.html
@@ -1,17 +1,33 @@
-Sort sort
-
+Sort sort
-
-
-
- {{item.componentConfigs.title}}
-
-
+
+
+
+ {{ item.componentConfigs.title }}
+
+
- Close close
-
- Save
- done
+
+ Close close
+
+
+ Save done
+
diff --git a/frontend/src/app/admin/design/components/structure/structure.component.html b/frontend/src/app/admin/design/components/structure/structure.component.html
index 5555ecd7..e05070ba 100644
--- a/frontend/src/app/admin/design/components/structure/structure.component.html
+++ b/frontend/src/app/admin/design/components/structure/structure.component.html
@@ -1,57 +1,85 @@
-
-
-
-
-
-
- delete
-
-
- add_photo_alternate
- {{grid[0].scroll.icon}}
-
-
-
-
-
-
-
-
- add
-
-
-
-
-
-
-
- {{ this.grid[i].componentConfigs.title}} -
- {{ word(item.component)}}
-
-
-
- delete
-
-
- settings
-
-
-
-
-
-
- {{ icon(item.component) }}
-
-
-
-
+
+
+
+
+
+ delete
+
+
+ add_photo_alternate
+ {{ grid[0].scroll.icon }}
+
+
+
+
+
+
+
+
+ add
+
+
+
+
+
+ {{ this.grid[i].componentConfigs.title }} -
+ {{ word(item.component) }}
+
+
+ delete
+
+
+ settings
+
+
-
+
+
+ {{ icon(item.component) }}
-
-
+
+
+
+
+
diff --git a/frontend/src/app/admin/design/components/structure/structure.component.scss b/frontend/src/app/admin/design/components/structure/structure.component.scss
index afca4b63..16725126 100644
--- a/frontend/src/app/admin/design/components/structure/structure.component.scss
+++ b/frontend/src/app/admin/design/components/structure/structure.component.scss
@@ -1,16 +1,16 @@
-mat-card-content > div{
- text-align: center;
+mat-card-content > div {
+ text-align: center;
}
-mat-card-title{
- width: 100%;
- text-align: left;
+mat-card-title {
+ width: 100%;
+ text-align: left;
}
-mat-card-content{
- mat-icon{
- font-size: 80px;
- height: 80px;
- width: 80px;
- }
+mat-card-content {
+ mat-icon {
+ font-size: 80px;
+ height: 80px;
+ width: 80px;
+ }
}
diff --git a/frontend/src/app/admin/design/components/structure/structure.component.ts b/frontend/src/app/admin/design/components/structure/structure.component.ts
index 5ed0a8a4..041917b3 100644
--- a/frontend/src/app/admin/design/components/structure/structure.component.ts
+++ b/frontend/src/app/admin/design/components/structure/structure.component.ts
@@ -129,15 +129,6 @@ export class StructureComponent implements OnInit {
},
],
];
-
- if (value === 'PieComponent') {
- this.form_data.push({
- name: 'inner_size',
- label: 'Inner size',
- type: 'number',
- required: true,
- });
- }
break;
case 'MainListComponent':
@@ -219,6 +210,66 @@ export class StructureComponent implements OnInit {
];
break;
}
+
+ if (value === 'PieComponent') {
+ this.form_data.push({
+ name: 'inner_size',
+ label: 'Inner size',
+ type: 'number',
+ required: true,
+ });
+ this.form_data.push({
+ name: 'data_labels',
+ label: 'Show data labels',
+ type: 'checkbox',
+ required: false,
+ });
+ this.form_data.push({
+ name: 'data_labels_count',
+ label: 'Show data labels count',
+ type: 'checkbox',
+ required: false,
+ });
+ this.form_data.push({
+ name: 'data_labels_percentage',
+ label: 'Show data labels percentage',
+ type: 'checkbox',
+ required: false,
+ });
+ } else if (value === 'MapComponent') {
+ this.form_data.push({
+ name: 'data_labels',
+ label: 'Show data labels',
+ type: 'checkbox',
+ required: false,
+ });
+ this.form_data.push({
+ name: 'data_labels_count',
+ label: 'Show data labels count',
+ type: 'checkbox',
+ required: false,
+ });
+ } else if (value === 'BarComponent') {
+ this.form_data.push({
+ name: 'data_labels_count',
+ label: 'Show data labels count',
+ type: 'checkbox',
+ required: false,
+ });
+ } else if (value === 'ListComponent') {
+ this.form_data.push({
+ name: 'hide_total',
+ label: 'Hide total',
+ type: 'checkbox',
+ required: false,
+ });
+ this.form_data.push({
+ name: 'hide_percentage',
+ label: 'Hide percentage',
+ type: 'checkbox',
+ required: false,
+ });
+ }
}
constructor(
public dialog: MatDialog,
diff --git a/frontend/src/app/admin/design/design.component.html b/frontend/src/app/admin/design/design.component.html
index 6b043e56..c69d7d71 100644
--- a/frontend/src/app/admin/design/design.component.html
+++ b/frontend/src/app/admin/design/design.component.html
@@ -1,110 +1,186 @@
-
+
+
+
+
+
+
+
Default operator within filters
+
+ Default operator within filters
+
+ Follow the selected operator
+ Always use OR
+
+
+
+
+
+ Add Filter
+ add
+
+
+
+
-
-
-
-
-
- Add Filter
- add
-
+
+
+
+
+
+
Predefined filters
+
+ Predefined filters
+
+
+
+
+
diff --git a/frontend/src/app/admin/design/design.component.ts b/frontend/src/app/admin/design/design.component.ts
index 4e2b5e8f..1eebb586 100644
--- a/frontend/src/app/admin/design/design.component.ts
+++ b/frontend/src/app/admin/design/design.component.ts
@@ -36,6 +36,7 @@ export class DesignComponent implements OnInit {
dashboard: Array
= [];
dashboard_name: string;
exportLink: string;
+ defaultWithinFiltersOperator: any = null;
predefinedFilters: any = null;
predefinedFiltersExample = JSON.stringify([
{ terms: { FIELD_NAME: ['VALUE'] } },
@@ -82,8 +83,15 @@ export class DesignComponent implements OnInit {
await this.spinner.show();
const dashboard_name = (this.dashboard_name =
this.activeRoute.snapshot.paramMap.get('dashboard_name'));
- const { counters, filters, dashboard, footer, predefinedFilters, welcome } =
- await this.settingsService.readExplorerSettings(dashboard_name);
+ const {
+ counters,
+ filters,
+ dashboard,
+ footer,
+ predefinedFilters,
+ defaultWithinFiltersOperator,
+ welcome,
+ } = await this.settingsService.readExplorerSettings(dashboard_name);
if (welcome.componentConfigs && welcome.componentConfigs.text)
this.welcome_text = welcome.componentConfigs.text;
if (!this.welcome)
@@ -101,7 +109,10 @@ export class DesignComponent implements OnInit {
this.filters = filters;
this.dashboard = dashboard;
this.footer = footer;
- this.predefinedFilters = JSON.stringify(predefinedFilters);
+ this.defaultWithinFiltersOperator = defaultWithinFiltersOperator;
+ this.predefinedFilters = predefinedFilters
+ ? JSON.stringify(predefinedFilters)
+ : '';
this.welcome = welcome;
this.exportLink =
'data:text/json;charset=UTF-8,' +
@@ -112,6 +123,7 @@ export class DesignComponent implements OnInit {
filters: this.filters,
dashboard: this.dashboard,
footer: this.footer,
+ defaultWithinFiltersOperator: defaultWithinFiltersOperator,
predefinedFilters: predefinedFilters,
}),
);
@@ -119,8 +131,15 @@ export class DesignComponent implements OnInit {
}
populateForm(settings) {
- const { counters, filters, dashboard, footer, predefinedFilters, welcome } =
- settings;
+ const {
+ counters,
+ filters,
+ dashboard,
+ footer,
+ predefinedFilters,
+ defaultWithinFiltersOperator,
+ welcome,
+ } = settings;
if (welcome.componentConfigs && welcome.componentConfigs.text)
this.welcome_text = welcome.componentConfigs.text;
if (!this.welcome)
@@ -138,7 +157,10 @@ export class DesignComponent implements OnInit {
this.filters = filters;
this.dashboard = dashboard;
this.footer = footer;
- this.predefinedFilters = JSON.stringify(predefinedFilters);
+ this.defaultWithinFiltersOperator = defaultWithinFiltersOperator;
+ this.predefinedFilters = predefinedFilters
+ ? JSON.stringify(predefinedFilters)
+ : '';
this.welcome = welcome;
this.exportLink =
'data:text/json;charset=UTF-8,' +
@@ -149,6 +171,7 @@ export class DesignComponent implements OnInit {
filters: this.filters,
dashboard: this.dashboard,
footer: this.footer,
+ defaultWithinFiltersOperator: defaultWithinFiltersOperator,
predefinedFilters: predefinedFilters,
}),
);
@@ -280,6 +303,7 @@ export class DesignComponent implements OnInit {
filters: this.filters,
dashboard: this.dashboard,
footer: this.footer,
+ defaultWithinFiltersOperator: this.defaultWithinFiltersOperator,
predefinedFilters: predefinedFilters,
};
await this.settingsService.saveExplorerSettings(dashboard_name, data);
@@ -311,6 +335,18 @@ export class DesignComponent implements OnInit {
if (obj.inner_size) temp['inner_size'] = obj.inner_size;
+ if (obj.data_labels) temp['data_labels'] = obj.data_labels;
+
+ if (obj.data_labels_count)
+ temp['data_labels_count'] = obj.data_labels_count;
+
+ if (obj.data_labels_percentage)
+ temp['data_labels_percentage'] = obj.data_labels_percentage;
+
+ if (obj.hide_total) temp['hide_total'] = obj.hide_total;
+
+ if (obj.hide_percentage) temp['hide_percentage'] = obj.hide_percentage;
+
if (obj.source_x && obj.source_y) {
temp['source'] = [obj.source_x, obj.source_y + '.keyword'];
temp['source_y'] = obj.source_y;
@@ -427,6 +463,7 @@ export class DesignComponent implements OnInit {
filters: importedItem?.filters,
dashboard: importedItem?.dashboard,
footer: importedItem?.footer,
+ defaultWithinFiltersOperator: importedItem?.defaultWithinFiltersOperator,
predefinedFilters: importedItem?.predefinedFilters,
welcome: importedItem?.welcome,
};
diff --git a/frontend/src/app/admin/indexes-dashboard/form/form.component.html b/frontend/src/app/admin/indexes-dashboard/form/form.component.html
index aad99d2c..6c0f64ea 100644
--- a/frontend/src/app/admin/indexes-dashboard/form/form.component.html
+++ b/frontend/src/app/admin/indexes-dashboard/form/form.component.html
@@ -1,37 +1,74 @@
{{ data.event }} Dashboard
-
-
-
-
-
-
- Name is required
- Name can not contain space.
- Name can not contain lowercase.
-
-
-
-
- Select Index
-
-
- {{index.name}}
-
-
-
-
-
-
-
-
-
-
-
- Close close
-
- Submit
- done
-
+
+
+
+
+
+
+ Name is required
+ Name can not contain space.
+ Name can not contain lowercase.
+
+
+
+
+ Select Index
+
+
+ {{ index.name }}
+
+
+
+
+
+
+
+
+
+
+
+
+ Close close
+
+
+ Submit done
+
+
diff --git a/frontend/src/app/admin/indexes-dashboard/form/form.component.scss b/frontend/src/app/admin/indexes-dashboard/form/form.component.scss
index 16f8d011..b4b4e04e 100644
--- a/frontend/src/app/admin/indexes-dashboard/form/form.component.scss
+++ b/frontend/src/app/admin/indexes-dashboard/form/form.component.scss
@@ -1,7 +1,7 @@
.w-100 {
- width: 100% !important;
+ width: 100% !important;
}
::ng-deep .mat-mdc-form-field-appearance-fill .mat-mdc-form-field-flex {
- background-color: unset;
- padding: 0;
+ background-color: unset;
+ padding: 0;
}
diff --git a/frontend/src/app/admin/indexes-dashboard/indexes-dashboard.component.html b/frontend/src/app/admin/indexes-dashboard/indexes-dashboard.component.html
index 7905e778..bb4e898f 100644
--- a/frontend/src/app/admin/indexes-dashboard/indexes-dashboard.component.html
+++ b/frontend/src/app/admin/indexes-dashboard/indexes-dashboard.component.html
@@ -3,17 +3,43 @@
Dashboards
-
+
Export
- cloud_download
+ cloud_download
-
-
+
+
Import
cloud_upload
-
+
ADD
add
@@ -65,10 +91,18 @@
Is Default
- done_outline
+ done_outline
@@ -82,9 +116,7 @@
color="primary"
mat-icon-button
>
- delete
+ delete
color_lens color_lens
- layers
+ layers
find_in_page find_in_page
link link
open_in_browser open_in_browser
@@ -159,6 +190,9 @@
-
+
diff --git a/frontend/src/app/admin/indexes-dashboard/indexes-dashboard.component.scss b/frontend/src/app/admin/indexes-dashboard/indexes-dashboard.component.scss
index 983420b3..c3a4c456 100644
--- a/frontend/src/app/admin/indexes-dashboard/indexes-dashboard.component.scss
+++ b/frontend/src/app/admin/indexes-dashboard/indexes-dashboard.component.scss
@@ -8,7 +8,7 @@
}
.dashboard-default-icon.is_default {
- color: #51A351;
+ color: #51a351;
}
.dashboard-default-icon:hover {
color: #5090d0;
diff --git a/frontend/src/app/admin/indexes/form/form.component.html b/frontend/src/app/admin/indexes/form/form.component.html
index 37c584a9..4b325d64 100644
--- a/frontend/src/app/admin/indexes/form/form.component.html
+++ b/frontend/src/app/admin/indexes/form/form.component.html
@@ -2,80 +2,131 @@
{{ data.event }} Index
-
-
-
-
-
- Name is required
- Name can not contain space.
- Name can not contain lowercase.
-
-
-
- Enable Indexing
-
-
- Auto harvest
-
-
-
- Auto harvest will only trigger the harvester and will not trigger plugins.
-
-
-
-
- Interval
-
- Daily
- Weekly
- Monthly
- Yearly
-
-
-
-
-
- Month
-
- {{month.value}}
-
-
-
- Day
-
- {{monthDay}}
-
-
-
- Day
-
- {{weekDay.value}}
-
-
-
- Hour
-
- {{hour}}
-
-
-
- Minute
-
- {{minute}}
-
-
-
-
-
-
-
-
-
-
- Close close
-
- Submit
- done
-
+
+
+
+
+
+ Name is required
+ Name can not contain space.
+ Name can not contain lowercase.
+
+
+
+ Enable Indexing
+
+
+ Auto harvest
+
+
+
+ Auto harvest will only trigger the harvester and will not trigger
+ plugins.
+
+
+
+
+ Interval
+
+ Daily
+ Weekly
+ Monthly
+ Yearly
+
+
+
+
+
+ Month
+
+ {{
+ month.value
+ }}
+
+
+
+ Day
+
+ {{
+ monthDay
+ }}
+
+
+
+ Day
+
+ {{
+ weekDay.value
+ }}
+
+
+
+ Hour
+
+ {{
+ hour
+ }}
+
+
+
+ Minute
+
+ {{
+ minute
+ }}
+
+
+
+
+
+
+
+
+
+
+
+ Close close
+
+
+ Submit done
+
+
diff --git a/frontend/src/app/admin/indexes/form/form.component.scss b/frontend/src/app/admin/indexes/form/form.component.scss
index a1dc0642..b6b7b999 100644
--- a/frontend/src/app/admin/indexes/form/form.component.scss
+++ b/frontend/src/app/admin/indexes/form/form.component.scss
@@ -1,8 +1,8 @@
.w-100 {
- width: 100% !important;
+ width: 100% !important;
}
.border {
- border: 1px solid #f00;
+ border: 1px solid #f00;
}
.interval-settings {
@@ -11,5 +11,5 @@
}
.interval-settings mat-form-field:not(:first-child) {
- padding-left: .5rem;
+ padding-left: 0.5rem;
}
diff --git a/frontend/src/app/admin/indexes/indexes.component.html b/frontend/src/app/admin/indexes/indexes.component.html
index b2d4a4ec..205a9111 100644
--- a/frontend/src/app/admin/indexes/indexes.component.html
+++ b/frontend/src/app/admin/indexes/indexes.component.html
@@ -3,17 +3,43 @@
Indexes
-
- Export
- cloud_download
+
+ Export
+ cloud_download
-
-
+
+
Import
cloud_upload
-
+
ADD
add
@@ -25,73 +51,109 @@
-
-
+
- ID.
- {{element.id.substr(0,2)}}
+ ID.
+
+ {{ element.id.substr(0, 2) }}
+
- Name
- {{element.name}}
+ Name
+ {{ element.name }}
- Description
- {{element.description}}
+ Description
+ {{ element.description }}
- Created At
- {{element.created_at}}
+ Created At
+ {{ element.created_at }}
- Last Updated At
- {{element.last_update}}
+ Last Updated At
+ {{ element.last_update }}
- Actions
+ Actions
-
+
delete
-
+
edit
-
- dashboard
+
+ dashboard
-
- all_inbox
+
+ all_inbox
-
- account_tree
+
+ account_tree
-
- find_replace
+
+ find_replace
-
+
-
+
diff --git a/frontend/src/app/admin/login/login.component.html b/frontend/src/app/admin/login/login.component.html
index 0495924f..788ce009 100644
--- a/frontend/src/app/admin/login/login.component.html
+++ b/frontend/src/app/admin/login/login.component.html
@@ -1,29 +1,40 @@
- Login
-
-
-
-
- Email
-
-
-
+ Login
+
+
+
+
+ Email
+
+
+
-
-
- Password
-
-
-
+
+
+ Password
+
+
+
-
- {{ error }}
-
+
+ {{ error }}
+
-
- Login
-
-
-
-
+
+ Login
+
+
+
diff --git a/frontend/src/app/admin/login/login.component.scss b/frontend/src/app/admin/login/login.component.scss
index fd8c4afa..4e378270 100644
--- a/frontend/src/app/admin/login/login.component.scss
+++ b/frontend/src/app/admin/login/login.component.scss
@@ -1,28 +1,28 @@
:host {
- display: flex;
- justify-content: center;
- margin: 100px 0px;
- }
+ display: flex;
+ justify-content: center;
+ margin: 100px 0px;
+}
- .mat-mdc-form-field {
- width: 100%;
- min-width: 300px;
- }
+.mat-mdc-form-field {
+ width: 100%;
+ min-width: 300px;
+}
- mat-card-title,
- mat-card-content {
- display: flex;
- justify-content: center;
- }
+mat-card-title,
+mat-card-content {
+ display: flex;
+ justify-content: center;
+}
- .error {
- padding: 16px;
- width: 300px;
- color: white;
- background-color: red;
- }
+.error {
+ padding: 16px;
+ width: 300px;
+ color: white;
+ background-color: red;
+}
- .button {
- display: flex;
- justify-content: flex-end;
- }
\ No newline at end of file
+.button {
+ display: flex;
+ justify-content: flex-end;
+}
diff --git a/frontend/src/app/admin/plugins/plugin/plugin.component.html b/frontend/src/app/admin/plugins/plugin/plugin.component.html
index c50eae1e..78f326b4 100644
--- a/frontend/src/app/admin/plugins/plugin/plugin.component.html
+++ b/frontend/src/app/admin/plugins/plugin/plugin.component.html
@@ -1,91 +1,148 @@
-
- {{plugin.display_name}}
- Active
-
-
- {{plugin.description}}
-
-
-
-
-
Settings
-
-
-
-
- Add New Instance
- add
-
-
-
-
-
-
-
-
-
-
-
- {{control.label}}
-
-
-
-
-
- {{control.label}}
-
-
-
-
-
-
-
- {{item.name}}
- {{item.name}}
-
-
- {{item.name}}
- {{item.name}}
-
-
-
-
-
-
-
-
-
- {{control.label}}
-
-
-
-
-
-
-
-
- delete
-
-
+
+ {{ plugin.display_name }}
+ Active
+
+
+ {{ plugin.description }}
+
+
+
+
+
Settings
+
+
+
+ Add New Instance
+ add
+
+
+
+
+
+
+
+
+
+
+ {{ control.label }}
+
+
+
+
+
+ {{ control.label }}
+
+
+
+
+
+
+
+ {{
+ item.name
+ }}
+ {{ item.name }}
+
+
+ {{
+ item.name
+ }}
+ {{ item.name }}
+
+
+
+
+
+
+
+
+ {{ control.label }}
+
+
+
+
+
+
+
+
+ delete
+
-
-
+
+
+
+
+
diff --git a/frontend/src/app/admin/plugins/plugin/plugin.component.scss b/frontend/src/app/admin/plugins/plugin/plugin.component.scss
index 05622044..c7acb4bf 100644
--- a/frontend/src/app/admin/plugins/plugin/plugin.component.scss
+++ b/frontend/src/app/admin/plugins/plugin/plugin.component.scss
@@ -1,3 +1,3 @@
-mat-form-field{
- width: 100%;
-}
\ No newline at end of file
+mat-form-field {
+ width: 100%;
+}
diff --git a/frontend/src/app/admin/plugins/plugins.component.html b/frontend/src/app/admin/plugins/plugins.component.html
index 1aaad9cc..e2b87ca0 100644
--- a/frontend/src/app/admin/plugins/plugins.component.html
+++ b/frontend/src/app/admin/plugins/plugins.component.html
@@ -1,31 +1,58 @@
diff --git a/frontend/src/app/admin/plugins/plugins.component.scss b/frontend/src/app/admin/plugins/plugins.component.scss
index 122081cf..29eccd19 100644
--- a/frontend/src/app/admin/plugins/plugins.component.scss
+++ b/frontend/src/app/admin/plugins/plugins.component.scss
@@ -1,4 +1,3 @@
-
- .save {
- float: right;
- }
\ No newline at end of file
+.save {
+ float: right;
+}
diff --git a/frontend/src/app/admin/reporting/dialog/dialog.component.html b/frontend/src/app/admin/reporting/dialog/dialog.component.html
index 1b8f9245..ec3d8d5d 100644
--- a/frontend/src/app/admin/reporting/dialog/dialog.component.html
+++ b/frontend/src/app/admin/reporting/dialog/dialog.component.html
@@ -2,10 +2,15 @@ Confirmation
- Are you sure you want to delete"{{data.reportData.title}}" Report
+ Are you sure you want to delete"{{ data.reportData.title }}"
+ Report
-
All information associated with this report will be permanently deleted.
+
+ All information associated with this report will be permanently deleted.
+
cancel
diff --git a/frontend/src/app/admin/reporting/doc/doc.component.html b/frontend/src/app/admin/reporting/doc/doc.component.html
index df717d06..1b4959a6 100644
--- a/frontend/src/app/admin/reporting/doc/doc.component.html
+++ b/frontend/src/app/admin/reporting/doc/doc.component.html
@@ -1,54 +1,71 @@
here are some samples of how to use metadata
-
-
-
-
{{'{'}}items{{'}'}}
-
{{'{'}}citation{{'}'}}
-
https://hdl.handle.net/ {{'{'}}handle{{'}'}}
-
{{'{'}}DOI{{'}'}}
-
{{ '{' }}/items{{'}'}}
+
+
+
+
{{ '{' }}items{{ '}' }}
+
{{ '{' }}citation{{ '}' }}
+
https://hdl.handle.net/ {{ '{' }}handle{{ '}' }}
+
{{ '{' }}DOI{{ '}' }}
+
{{ '{' }}/items{{ '}' }}
+
+
+
+
+ Vipham, J.L., Amenu, K., Alonso, S., Ndahetuye, J.-B., Zereyesus, Y.,
+ Nishimwe, K., Bowers, E., Maier, D., Sah, K., Havelaar, A. and Grace, D.
+ 2020. No food security without food safety: Lessons from livestock
+ related research. Global Food Security 26: 100382.
+
+ https://hdl.handle.net/10568/108690
+ https://doi.org/10.1016/j.gfs.2020.100382
+
+
+ Colverson, K.E., Coble-Harris, L., Galiè, A., Moore, E.V., Munoz, O.,
+ McKune, S.L., Singh, N. and Mo, R. 2020. Evolution of a gender tool:
+ WEAI, WELI and livestock research. Global Food Security 26: 100375
+
+ https://hdl.handle.net/10568/108249
+ https://doi.org/10.1016/j.gfs.2020.100375
+
+
+
+ here you can see that if you included this inside your Docx file you'll get
+ that result:
+
+
- {{ '{' }}#items{{ '}' }}{{ '{' }}/items{{ '}' }} looped inside items
+
+ - the ID is: {{ '{' }}id{{ '}' }} showed the value of id for each
+ publication..same for the title
+
+
- with the same formatting style you used in the original Docx file
+
-
-
-
- Vipham, J.L., Amenu, K., Alonso, S., Ndahetuye, J.-B., Zereyesus, Y., Nishimwe, K., Bowers, E., Maier,
- D., Sah, K., Havelaar, A. and Grace, D. 2020. No food security without food safety: Lessons from
- livestock related research. Global Food Security 26: 100382.
- https://hdl.handle.net/10568/108690
- https://doi.org/10.1016/j.gfs.2020.100382
-
- Colverson, K.E., Coble-Harris, L., Galiè, A., Moore, E.V., Munoz, O., McKune, S.L., Singh, N. and Mo, R.
- 2020. Evolution of a gender tool: WEAI, WELI and livestock research. Global Food Security 26: 100375
- https://hdl.handle.net/10568/108249
- https://doi.org/10.1016/j.gfs.2020.100375
-
-
-
here you can see that if you included this inside your Docx file you'll get that result:
-
- {{'{'}}#items{{'}'}}{{ '{' }}/items{{'}'}} looped inside items
-
- the ID is: {{ '{' }}id{{'}'}} showed the value of id for each publication..same for the title
-
- with the same formatting style you used in the original Docx file
-
+
+
+
+
{{ '{' }}items{{ '}' }}
+
+ {{ '{' }}status{{ '}' }} || {{ '{' }}type{{ '}' }} || {{ '{' }}date{{
+ '}'
+ }}
+ || {{ '{' }}handle{{ '}' }}
+
+
{{ '{' }}/items{{ '}' }}
+
+
-
-
-
-
{{'{'}}items{{'}'}}
-
{{'{'}}status{{'}'}} || {{'{'}}type{{'}'}} || {{'{'}}date{{'}'}} || {{ '{' }}handle{{'}'}}
-
{{ '{'}}/items{{'}'}}
-
-
- Open access || item || 1998-04-28 || 20.500.11766/8792
+
+ Open access || item || 1998-04-28 || 20.500.11766/8792
- Open access || item || 2010-11-28 || 20.500.11766/8782
+ Open access || item || 2010-11-28 || 20.500.11766/8782
- Limited access || item || 2016-12-31 || 20.500.11766/6229
+ Limited access || item || 2016-12-31 || 20.500.11766/6229
- Limited access || item || 2006-04-24 || 20.500.11766/7793
+ Limited access || item || 2006-04-24 || 20.500.11766/7793
- Open access || item || 2018-06-08 || 20.500.11766/8617
-
-
-
-
-
\ No newline at end of file
+
Open access || item || 2018-06-08 || 20.500.11766/8617
+
+
+
+
diff --git a/frontend/src/app/admin/reporting/doc/doc.component.scss b/frontend/src/app/admin/reporting/doc/doc.component.scss
index 8d6051dc..3cce75ed 100644
--- a/frontend/src/app/admin/reporting/doc/doc.component.scss
+++ b/frontend/src/app/admin/reporting/doc/doc.component.scss
@@ -1,34 +1,34 @@
span {
- content: "\27F6";
- }
- ul {
- display: flex;
- list-style: none;
- }
- li {
- padding: 10px 25px;
- border: 1px solid black;
- margin: 0 25px;
- position: relative;
- }
- li:not(:last-child):after {
- content: '';
- height: 1px;
- background: black;
- width: 50px;
- position: absolute;
- right: -50px;
- top: 50%;
- }
- li:not(:last-child):before {
- content: '';
- position: absolute;
- width: 0;
- height: 0;
- top: 50%;
- border-style: solid;
- border-width: 7px 0 7px 20px;
- border-color: transparent transparent transparent black;
- right: -50px;
- transform: translateY(-50%);
- }
\ No newline at end of file
+ content: '\27F6';
+}
+ul {
+ display: flex;
+ list-style: none;
+}
+li {
+ padding: 10px 25px;
+ border: 1px solid black;
+ margin: 0 25px;
+ position: relative;
+}
+li:not(:last-child):after {
+ content: '';
+ height: 1px;
+ background: black;
+ width: 50px;
+ position: absolute;
+ right: -50px;
+ top: 50%;
+}
+li:not(:last-child):before {
+ content: '';
+ position: absolute;
+ width: 0;
+ height: 0;
+ top: 50%;
+ border-style: solid;
+ border-width: 7px 0 7px 20px;
+ border-color: transparent transparent transparent black;
+ right: -50px;
+ transform: translateY(-50%);
+}
diff --git a/frontend/src/app/admin/reporting/reporting.component.html b/frontend/src/app/admin/reporting/reporting.component.html
index 9ee77730..4e04adef 100644
--- a/frontend/src/app/admin/reporting/reporting.component.html
+++ b/frontend/src/app/admin/reporting/reporting.component.html
@@ -2,31 +2,75 @@
-
+
diff --git a/frontend/src/app/admin/reporting/reproting-form/reproting-form.component.html b/frontend/src/app/admin/reporting/reproting-form/reproting-form.component.html
index 874a7db5..74e952be 100644
--- a/frontend/src/app/admin/reporting/reproting-form/reproting-form.component.html
+++ b/frontend/src/app/admin/reporting/reproting-form/reproting-form.component.html
@@ -1,64 +1,115 @@
Report
-
-
- Title
-
-
+
+
+ Title
+
+
-
-
- File Type
-
- {{type.label}}
-
-
-
-
-
-
File
-
-
{{formValues.file}}
-
-
- delete
-
- {{file}}
-
-
-
-
-
-
-
-
-
-
- Data Source Label
-
-
-
-
-
-
-
-
- delete
-
-
-
-
- add_box
- Add Data source
+
+
+ File Type
+
+ {{ type.label }}
+
+
+
+
File
+
+
{{ formValues.file }}
+
+
+ delete
+
+ {{ file }}
+
+
+
+
+
+
+
+
+
+
+ Data Source Label
+
+
+
+
+
+
+
+
+ delete
+
+
+
+ add_box
+
+ Add Data source
+
- Closeclose
-
- Savedone
-
+
+ Closeclose
+
+
+ Savedone
+
diff --git a/frontend/src/app/admin/reporting/reproting-form/reproting-form.component.scss b/frontend/src/app/admin/reporting/reproting-form/reproting-form.component.scss
index 7ba5a4cc..c92cfcb8 100644
--- a/frontend/src/app/admin/reporting/reproting-form/reproting-form.component.scss
+++ b/frontend/src/app/admin/reporting/reproting-form/reproting-form.component.scss
@@ -1,3 +1,3 @@
-.content{
- max-height: 400px;
-}
\ No newline at end of file
+.content {
+ max-height: 400px;
+}
diff --git a/frontend/src/app/admin/root/root.component.html b/frontend/src/app/admin/root/root.component.html
index 5a53eb9c..dde9bd95 100644
--- a/frontend/src/app/admin/root/root.component.html
+++ b/frontend/src/app/admin/root/root.component.html
@@ -2,56 +2,101 @@
OpenRXV
-
+
-
+
Indexes
-
+
Harvest dashboard
-
+
Repositories
-
+
Plugins
-
+
Value Mappings
-
+
Dashboards
-
+
Appearance
-
+
Design dashboard layout
-
+
Reporting
-
+
Shared links
View Dashboard
-
+
Users
diff --git a/frontend/src/app/admin/root/root.component.scss b/frontend/src/app/admin/root/root.component.scss
index f55337ef..231ccf2d 100644
--- a/frontend/src/app/admin/root/root.component.scss
+++ b/frontend/src/app/admin/root/root.component.scss
@@ -1,4 +1,4 @@
-@import "../../explorer/configs/customTheme.scss";
+@import '../../explorer/configs/customTheme.scss';
.container-admin {
width: 100%;
}
@@ -28,11 +28,11 @@ mat-drawer {
text-shadow: 0 0 5px #fff;
}
-img{
+img {
max-height: 49px !important;
}
-mat-toolbar{
+mat-toolbar {
margin-top: 2px !important;
}
diff --git a/frontend/src/app/components/notfound/notfound.component.html b/frontend/src/app/components/notfound/notfound.component.html
index af18d13b..9902778f 100644
--- a/frontend/src/app/components/notfound/notfound.component.html
+++ b/frontend/src/app/components/notfound/notfound.component.html
@@ -1,11 +1,11 @@
-
-
-
-
404
-
The page you are looking for was not found.
-
Back to Home
-
-
+
+
+
+
404
+
The page you are looking for was not found.
+
Back to Home
+
-
\ No newline at end of file
+
+
diff --git a/frontend/src/app/components/notfound/notfound.component.scss b/frontend/src/app/components/notfound/notfound.component.scss
index ab8472d9..b60a5292 100644
--- a/frontend/src/app/components/notfound/notfound.component.scss
+++ b/frontend/src/app/components/notfound/notfound.component.scss
@@ -1,10 +1,10 @@
body {
- background: #dedede;
+ background: #dedede;
}
.page-wrap {
- min-height: 100vh;
+ min-height: 100vh;
}
-.display-1{
- font-size: 200px;
-}
\ No newline at end of file
+.display-1 {
+ font-size: 200px;
+}
diff --git a/frontend/src/app/explorer/configs/colorsMap.scss b/frontend/src/app/explorer/configs/colorsMap.scss
index 291c8065..8c76145d 100644
--- a/frontend/src/app/explorer/configs/colorsMap.scss
+++ b/frontend/src/app/explorer/configs/colorsMap.scss
@@ -1,20 +1,20 @@
// when you type `` it will apply 500
// for material theme
$customTheme: (
- 50 : var(--theme-primary-50),
- 100 : var(--theme-primary-100),
- 200 : var(--theme-primary-200),
- 300 : var(--theme-primary-300),
- 400 : var(--theme-primary-400),
- 500 : var(--theme-primary-500),
- 600 : var(--theme-primary-600),
- 700 : var(--theme-primary-700),
- 800 : var(--theme-primary-800),
- 900 : var(--theme-primary-900),
- A100 : var(--theme-primary-A100),
- A200 : var(--theme-primary-A200),
- A400 : var(--theme-primary-A400),
- A700 : var(--theme-primary-A700),
+ 50: var(--theme-primary-50),
+ 100: var(--theme-primary-100),
+ 200: var(--theme-primary-200),
+ 300: var(--theme-primary-300),
+ 400: var(--theme-primary-400),
+ 500: var(--theme-primary-500),
+ 600: var(--theme-primary-600),
+ 700: var(--theme-primary-700),
+ 800: var(--theme-primary-800),
+ 900: var(--theme-primary-900),
+ A100: var(--theme-primary-A100),
+ A200: var(--theme-primary-A200),
+ A400: var(--theme-primary-A400),
+ A700: var(--theme-primary-A700),
contrast: (
50: var(--theme-primary-contrast-50),
100: var(--theme-primary-contrast-100),
@@ -30,7 +30,7 @@ $customTheme: (
A200: var(--theme-primary-contrast-A200),
A400: var(--theme-primary-contrast-A400),
A700: var(--theme-primary-contrast-A700),
- )
+ ),
);
// $customTheme: (
diff --git a/frontend/src/app/explorer/configs/customTheme.scss b/frontend/src/app/explorer/configs/customTheme.scss
index 1742caf7..40872a5b 100644
--- a/frontend/src/app/explorer/configs/customTheme.scss
+++ b/frontend/src/app/explorer/configs/customTheme.scss
@@ -32,8 +32,8 @@
height: 100%;
position: absolute;
background-color: var(--theme-primary-500);
- opacity: .2;
- transition: background-color .25s ease-in;
+ opacity: 0.2;
+ transition: background-color 0.25s ease-in;
}
.border-top-light {
@@ -96,7 +96,11 @@
$plant-primary: mat.define-palette($customTheme, 500);
$plant-accent: mat.define-palette(mat.$pink-palette, A200, A100, A400);
$plant-warn: mat.define-palette(mat.$red-palette);
-$plant-theme: mat.define-light-theme($plant-primary, $plant-accent, $plant-warn);
+$plant-theme: mat.define-light-theme(
+ $plant-primary,
+ $plant-accent,
+ $plant-warn
+);
@include mat.all-component-themes($plant-theme);
diff --git a/frontend/src/app/explorer/configs/generalConfig.interface.ts b/frontend/src/app/explorer/configs/generalConfig.interface.ts
index 2e95b6b4..8160dc62 100644
--- a/frontend/src/app/explorer/configs/generalConfig.interface.ts
+++ b/frontend/src/app/explorer/configs/generalConfig.interface.ts
@@ -57,6 +57,11 @@ export interface ComponentFilterConfigs {
source: string;
placeholder: string;
expandPosition?: 'top' | 'bottom';
+ data_labels?: boolean;
+ data_labels_count?: boolean;
+ data_labels_percentage?: boolean;
+ hide_total?: boolean;
+ hide_percentage?: boolean;
}
export interface SortOption {
diff --git a/frontend/src/app/explorer/configs/tooltips.ts b/frontend/src/app/explorer/configs/tooltips.ts
index 52093928..97a670e1 100644
--- a/frontend/src/app/explorer/configs/tooltips.ts
+++ b/frontend/src/app/explorer/configs/tooltips.ts
@@ -1,8 +1,8 @@
export const orAndToolTip = `
The operator "AND" will only show results that contain all
of the details specified in the filters, without duplication.
-It is recommended for very focused lists of Information Products. The
+It is recommended for very focused lists of ##ITEMS_LABEL_PLACEHOLDER##. The
operator "OR" will show all the results that contain at least
one of the details specified in the filters, without duplication.
-It is recommended for very inclusive lists of Information Products.
+It is recommended for very inclusive lists of ##ITEMS_LABEL_PLACEHOLDER##.
`;
diff --git a/frontend/src/app/explorer/dashboard/components/bar/bar.component.html b/frontend/src/app/explorer/dashboard/components/bar/bar.component.html
index 153bd830..29b378d1 100644
--- a/frontend/src/app/explorer/dashboard/components/bar/bar.component.html
+++ b/frontend/src/app/explorer/dashboard/components/bar/bar.component.html
@@ -1,13 +1,13 @@
\ No newline at end of file
+
+
+
diff --git a/frontend/src/app/explorer/dashboard/components/bar/bar.component.ts b/frontend/src/app/explorer/dashboard/components/bar/bar.component.ts
index 240488e2..5be3cf44 100644
--- a/frontend/src/app/explorer/dashboard/components/bar/bar.component.ts
+++ b/frontend/src/app/explorer/dashboard/components/bar/bar.component.ts
@@ -37,12 +37,14 @@ export class BarComponent extends ParentChart implements OnInit {
super(cms, selectService, store, activatedRoute);
}
colors: string[];
+ items_label = 'Information Products';
async ngOnInit() {
const dashboard_name =
this.activeRoute.snapshot.paramMap.get('dashboard_name');
const appearance =
await this.settingsService.readAppearanceSettings(dashboard_name);
this.colors = appearance.chartColors;
+ this.items_label = appearance.items_label;
this.init('column');
this.buildOptions.subscribe((buckets: Array) => {
if (buckets) {
@@ -75,6 +77,12 @@ export class BarComponent extends ParentChart implements OnInit {
};
})
.flat(1);
+
+ const dataLabelsSettings = this.cms.getDataLabelAttributes(
+ this.componentConfigs,
+ 'bar',
+ );
+
this.chartOptions = {
chart: { type: 'column' },
xAxis: { categories, crosshair: true },
@@ -82,20 +90,32 @@ export class BarComponent extends ParentChart implements OnInit {
enabled: true,
useGPUTranslations: true,
},
- yAxis: { min: 0, title: { text: 'Information Products' } },
+ yAxis: {
+ min: 0,
+ title: {
+ text: this?.items_label ? this.items_label : 'Information Products',
+ },
+ },
colors: this.colors,
plotOptions: {
column: {
pointPadding: 0.2,
borderWidth: 0,
borderRadius: 2.5,
+ dataLabels: dataLabelsSettings,
},
},
tooltip: {
- headerFormat: '{point.key} ',
- pointFormat:
- '{series.name}: {point.y} ',
- footerFormat: '
',
+ formatter: function () {
+ let total = 0;
+ const points = this.points.map((point) => {
+ total += Number(point.y);
+ return `${point.series.name}: ${point.y} `;
+ });
+ return `${this.x}: ${total} ${points.join(
+ '',
+ )}
`;
+ },
shared: true,
useHTML: true,
},
diff --git a/frontend/src/app/explorer/dashboard/components/bar/rotated-lables/rotated-lables.component.html b/frontend/src/app/explorer/dashboard/components/bar/rotated-lables/rotated-lables.component.html
index 284230df..d0d968e1 100644
--- a/frontend/src/app/explorer/dashboard/components/bar/rotated-lables/rotated-lables.component.html
+++ b/frontend/src/app/explorer/dashboard/components/bar/rotated-lables/rotated-lables.component.html
@@ -8,4 +8,4 @@
[chartOptions]="chartOptions"
(expanded)="cms.disPatchSetInView($event)"
>
-
\ No newline at end of file
+
diff --git a/frontend/src/app/explorer/dashboard/components/chart/chart.component.html b/frontend/src/app/explorer/dashboard/components/chart/chart.component.html
index 610c4b1b..0da21ac2 100644
--- a/frontend/src/app/explorer/dashboard/components/chart/chart.component.html
+++ b/frontend/src/app/explorer/dashboard/components/chart/chart.component.html
@@ -1,12 +1,19 @@
-
+
{{ title }}
-
+
error
@@ -17,18 +24,39 @@
-
+
-
+
-
diff --git a/frontend/src/app/explorer/dashboard/components/list/export/export.component.html b/frontend/src/app/explorer/dashboard/components/list/export/export.component.html
index 41faa457..38bc3e3c 100644
--- a/frontend/src/app/explorer/dashboard/components/list/export/export.component.html
+++ b/frontend/src/app/explorer/dashboard/components/list/export/export.component.html
@@ -11,37 +11,56 @@
- Please, note that very lengthy lists of information products will be exported in
- more than one part to allow a quicker download. Would you like to continue?
+ Please, note that very lengthy lists of {{ items_label }} will be exported
+ in more than one part to allow a quicker download. Would you like to
+ continue?
-
-
-
-
+
+
+
-
+ }"
+ >
Preparing {{ delegation.name }}
-
+
-
+
-
+
done_all
Download {{ delegation.name }}
@@ -49,9 +68,7 @@
-
-
diff --git a/frontend/src/app/explorer/dashboard/components/list/export/export.component.ts b/frontend/src/app/explorer/dashboard/components/list/export/export.component.ts
index 19e9a75a..efd4583f 100644
--- a/frontend/src/app/explorer/dashboard/components/list/export/export.component.ts
+++ b/frontend/src/app/explorer/dashboard/components/list/export/export.component.ts
@@ -5,7 +5,7 @@ import {
ExportFilesModal,
} from '../paginated-list/filter-paginated-list/types.interface';
import { ExportService } from '../services/export/export.service';
-import { switchMap, first, last } from 'rxjs/operators';
+import { switchMap, first } from 'rxjs/operators';
import { Observable } from 'rxjs';
import { ElasticsearchQuery } from 'src/app/explorer/filters/services/interfaces';
import { environment } from 'src/environments/environment';
@@ -13,7 +13,6 @@ import { MatDialog } from '@angular/material/dialog';
import { MatSnackBar } from '@angular/material/snack-bar';
import { HttpErrorResponse } from '@angular/common/http';
import { SettingsService } from 'src/app/admin/services/settings.service';
-import { ActivatedRoute } from '@angular/router';
@Component({
selector: 'app-export',
templateUrl: './export.component.html',
@@ -33,6 +32,7 @@ export class ExportComponent implements OnInit {
exportPoint: string;
part: number;
webSiteName;
+ items_label = 'Information Products';
get finishedExporting(): boolean {
if (!this.delegationArr) {
return false;
@@ -61,6 +61,7 @@ export class ExportComponent implements OnInit {
this.dashboard,
);
this.webSiteName = this.webSiteName.website_name;
+ this.items_label = this.webSiteName.items_label;
}
prevent(e, efm: ExportFilesModal): void {
diff --git a/frontend/src/app/explorer/dashboard/components/list/list.component.html b/frontend/src/app/explorer/dashboard/components/list/list.component.html
index 31a4cf22..548241e8 100644
--- a/frontend/src/app/explorer/dashboard/components/list/list.component.html
+++ b/frontend/src/app/explorer/dashboard/components/list/list.component.html
@@ -1,33 +1,65 @@
-
-