mirror of
https://github.com/DSpace/dspace-angular.git
synced 2025-10-07 10:04:11 +00:00
Merge remote-tracking branch 'remotes/origin/master' into submission-miscellaneous-fixes
# Conflicts: # src/app/submission/form/collection/submission-form-collection.component.spec.ts # src/app/submission/form/collection/submission-form-collection.component.ts
This commit is contained in:
2
.gitignore
vendored
2
.gitignore
vendored
@@ -5,6 +5,8 @@
|
|||||||
/tsd_typings/
|
/tsd_typings/
|
||||||
npm-debug.log
|
npm-debug.log
|
||||||
|
|
||||||
|
/build/
|
||||||
|
|
||||||
/config/environment.dev.js
|
/config/environment.dev.js
|
||||||
/config/environment.prod.js
|
/config/environment.prod.js
|
||||||
|
|
||||||
|
@@ -180,5 +180,8 @@ module.exports = {
|
|||||||
edit: {
|
edit: {
|
||||||
undoTimeout: 10000 // 10 seconds
|
undoTimeout: 10000 // 10 seconds
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
theme: {
|
||||||
|
name: 'default',
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
20
package.json
20
package.json
@@ -17,15 +17,16 @@
|
|||||||
"clean:doc": "rimraf doc",
|
"clean:doc": "rimraf doc",
|
||||||
"clean:log": "rimraf *.log*",
|
"clean:log": "rimraf *.log*",
|
||||||
"clean:json": "rimraf *.records.json",
|
"clean:json": "rimraf *.records.json",
|
||||||
|
"clean:bld": "rimraf build",
|
||||||
"clean:node": "rimraf node_modules",
|
"clean:node": "rimraf node_modules",
|
||||||
"clean:prod": "yarn run clean:coverage && yarn run clean:doc && yarn run clean:dist && yarn run clean:log && yarn run clean:json",
|
"clean:prod": "yarn run clean:coverage && yarn run clean:doc && yarn run clean:dist && yarn run clean:log && yarn run clean:json && yarn run clean:bld",
|
||||||
"clean": "yarn run clean:prod && yarn run clean:node",
|
"clean": "yarn run clean:prod && yarn run clean:node",
|
||||||
"prebuild": "yarn run clean:dist",
|
"prebuild": "yarn run clean:bld && yarn run clean:dist",
|
||||||
"prebuild:aot": "yarn run prebuild",
|
"prebuild:aot": "yarn run prebuild",
|
||||||
"prebuild:prod": "yarn run prebuild",
|
"prebuild:prod": "yarn run prebuild",
|
||||||
"build": "node ./webpack/run-webpack.js --progress --mode development",
|
"build": "node ./scripts/webpack.js --progress --mode development",
|
||||||
"build:aot": "node ./webpack/run-webpack.js --env.aot --env.server --mode development && node ./webpack/run-webpack.js --env.aot --env.client --mode development",
|
"build:aot": "yarn run syncbuilddir && node ./scripts/webpack.js --env.aot --env.server --mode development && node ./scripts/webpack.js --env.aot --env.client --mode development",
|
||||||
"build:prod": "node ./webpack/run-webpack.js --env.aot --env.server --mode production && node ./webpack/run-webpack.js --env.aot --env.client --mode production",
|
"build:prod": "yarn run syncbuilddir && node ./scripts/webpack.js --env.aot --env.server --mode production && node ./scripts/webpack.js --env.aot --env.client --mode production",
|
||||||
"postbuild:prod": "yarn run rollup",
|
"postbuild:prod": "yarn run rollup",
|
||||||
"rollup": "rollup -c rollup.config.js",
|
"rollup": "rollup -c rollup.config.js",
|
||||||
"prestart": "yarn run build:prod",
|
"prestart": "yarn run build:prod",
|
||||||
@@ -40,7 +41,8 @@
|
|||||||
"server": "node dist/server.js",
|
"server": "node dist/server.js",
|
||||||
"server:watch": "nodemon dist/server.js",
|
"server:watch": "nodemon dist/server.js",
|
||||||
"server:watch:debug": "nodemon --debug dist/server.js",
|
"server:watch:debug": "nodemon --debug dist/server.js",
|
||||||
"webpack:watch": "node ./webpack/run-webpack.js -w --mode development",
|
"syncbuilddir": "node ./scripts/sync-build-dir.js",
|
||||||
|
"webpack:watch": "node ./scripts/webpack.js -w --mode development",
|
||||||
"watch": "yarn run build && npm-run-all -p webpack:watch server:watch",
|
"watch": "yarn run build && npm-run-all -p webpack:watch server:watch",
|
||||||
"watch:debug": "yarn run build && npm-run-all -p webpack:watch server:watch:debug",
|
"watch:debug": "yarn run build && npm-run-all -p webpack:watch server:watch:debug",
|
||||||
"predebug": "yarn run build",
|
"predebug": "yarn run build",
|
||||||
@@ -94,6 +96,7 @@
|
|||||||
"compression": "1.7.1",
|
"compression": "1.7.1",
|
||||||
"cookie-parser": "1.4.3",
|
"cookie-parser": "1.4.3",
|
||||||
"core-js": "^2.5.7",
|
"core-js": "^2.5.7",
|
||||||
|
"debug-loader": "^0.0.1",
|
||||||
"express": "4.16.2",
|
"express": "4.16.2",
|
||||||
"express-session": "1.15.6",
|
"express-session": "1.15.6",
|
||||||
"fast-json-patch": "^2.0.7",
|
"fast-json-patch": "^2.0.7",
|
||||||
@@ -121,6 +124,7 @@
|
|||||||
"reflect-metadata": "0.1.12",
|
"reflect-metadata": "0.1.12",
|
||||||
"rxjs": "6.2.2",
|
"rxjs": "6.2.2",
|
||||||
"rxjs-spy": "^7.5.1",
|
"rxjs-spy": "^7.5.1",
|
||||||
|
"sass-resources-loader": "^2.0.0",
|
||||||
"sortablejs": "1.7.0",
|
"sortablejs": "1.7.0",
|
||||||
"text-mask-core": "5.0.1",
|
"text-mask-core": "5.0.1",
|
||||||
"ts-loader": "^5.2.1",
|
"ts-loader": "^5.2.1",
|
||||||
@@ -163,6 +167,7 @@
|
|||||||
"codelyzer": "^4.4.4",
|
"codelyzer": "^4.4.4",
|
||||||
"compression-webpack-plugin": "^1.1.6",
|
"compression-webpack-plugin": "^1.1.6",
|
||||||
"copy-webpack-plugin": "^4.4.1",
|
"copy-webpack-plugin": "^4.4.1",
|
||||||
|
"copyfiles": "^2.1.0",
|
||||||
"coveralls": "3.0.0",
|
"coveralls": "3.0.0",
|
||||||
"css-loader": "1.0.0",
|
"css-loader": "1.0.0",
|
||||||
"cssnano": "^4.1.10",
|
"cssnano": "^4.1.10",
|
||||||
@@ -213,7 +218,7 @@
|
|||||||
"script-ext-html-webpack-plugin": "2.0.1",
|
"script-ext-html-webpack-plugin": "2.0.1",
|
||||||
"source-map": "0.7.3",
|
"source-map": "0.7.3",
|
||||||
"source-map-loader": "0.2.4",
|
"source-map-loader": "0.2.4",
|
||||||
"string-replace-loader": "2.1.1",
|
"string-replace-loader": "^2.1.1",
|
||||||
"to-string-loader": "1.1.5",
|
"to-string-loader": "1.1.5",
|
||||||
"ts-helpers": "1.1.2",
|
"ts-helpers": "1.1.2",
|
||||||
"ts-node": "4.1.0",
|
"ts-node": "4.1.0",
|
||||||
@@ -224,6 +229,7 @@
|
|||||||
"webpack-bundle-analyzer": "^3.3.2",
|
"webpack-bundle-analyzer": "^3.3.2",
|
||||||
"webpack-dev-middleware": "3.2.0",
|
"webpack-dev-middleware": "3.2.0",
|
||||||
"webpack-dev-server": "^3.1.5",
|
"webpack-dev-server": "^3.1.5",
|
||||||
|
"webpack-import-glob-loader": "^1.6.3",
|
||||||
"webpack-merge": "4.1.4",
|
"webpack-merge": "4.1.4",
|
||||||
"webpack-node-externals": "1.7.2"
|
"webpack-node-externals": "1.7.2"
|
||||||
}
|
}
|
||||||
|
@@ -109,6 +109,16 @@
|
|||||||
"link": {
|
"link": {
|
||||||
"simple": "Simple item page",
|
"simple": "Simple item page",
|
||||||
"full": "Full item page"
|
"full": "Full item page"
|
||||||
|
},
|
||||||
|
"journal": {
|
||||||
|
"search": {
|
||||||
|
"title": "Articles in this journal"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"person": {
|
||||||
|
"search": {
|
||||||
|
"title": "Articles by this author"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"select": {
|
"select": {
|
||||||
@@ -386,7 +396,10 @@
|
|||||||
"titleprefix": "Publication: ",
|
"titleprefix": "Publication: ",
|
||||||
"journal-title": "Journal Title",
|
"journal-title": "Journal Title",
|
||||||
"journal-issn": "Journal ISSN",
|
"journal-issn": "Journal ISSN",
|
||||||
"volume-title": "Volume Title"
|
"volume-title": "Volume Title",
|
||||||
|
"publisher": "Publisher",
|
||||||
|
"description": "Description"
|
||||||
|
|
||||||
},
|
},
|
||||||
"listelement": {
|
"listelement": {
|
||||||
"badge": "Publication"
|
"badge": "Publication"
|
||||||
@@ -609,6 +622,34 @@
|
|||||||
"birthDate": {
|
"birthDate": {
|
||||||
"placeholder": "Birth Date",
|
"placeholder": "Birth Date",
|
||||||
"head": "Birth Date"
|
"head": "Birth Date"
|
||||||
|
},
|
||||||
|
"creativeWorkPublisher": {
|
||||||
|
"placeholder": "Publisher",
|
||||||
|
"head": "Publisher"
|
||||||
|
},
|
||||||
|
"creativeWorkEditor": {
|
||||||
|
"placeholder": "Editor",
|
||||||
|
"head": "Editor"
|
||||||
|
},
|
||||||
|
"creativeWorkKeywords": {
|
||||||
|
"placeholder": "Subject",
|
||||||
|
"head": "Subject"
|
||||||
|
},
|
||||||
|
"creativeDatePublished": {
|
||||||
|
"placeholder": "Date Published",
|
||||||
|
"head": "Date Published"
|
||||||
|
},
|
||||||
|
"organizationAddressCountry": {
|
||||||
|
"placeholder": "Country",
|
||||||
|
"head": "Country"
|
||||||
|
},
|
||||||
|
"organizationAddressLocality": {
|
||||||
|
"placeholder": "City",
|
||||||
|
"head": "City"
|
||||||
|
},
|
||||||
|
"organizationFoundingDate": {
|
||||||
|
"placeholder": "Date Founded",
|
||||||
|
"head": "Date Founded"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
BIN
resources/images/banner.jpg
Normal file
BIN
resources/images/banner.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.6 MiB |
37
resources/images/dspace-logo-monochrome.svg
Normal file
37
resources/images/dspace-logo-monochrome.svg
Normal file
@@ -0,0 +1,37 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
width="231.893px" height="167.458px" viewBox="0 0 231.893 167.458" enable-background="new 0 0 231.893 167.458"
|
||||||
|
xml:space="preserve">
|
||||||
|
<path fill="#43515F" d="M51.733,143.32c0-1.94,1.65-3.202,4.562-3.202c3.303,0,6.798,1.115,9.419,3.543l3.835-5.146
|
||||||
|
c-3.202-2.963-7.476-4.516-12.621-4.516c-7.622,0-12.284,4.467-12.284,9.855c0,12.188,18.644,8.254,18.644,13.887
|
||||||
|
c0,1.893-1.797,3.592-5.632,3.592c-4.466,0-8.011-2.039-10.292-4.418l-3.787,5.39c3.058,3.059,7.525,5.153,13.788,5.153
|
||||||
|
c8.691,0,12.964-4.474,12.964-10.396C70.329,144.971,51.733,148.418,51.733,143.32z M100.682,134.484H85.534v32.386h6.895v-11.557
|
||||||
|
h8.254c6.99,0,10.875-4.759,10.875-10.391C111.558,139.243,107.722,134.484,100.682,134.484z M99.71,149.245h-7.283v-8.69h7.283
|
||||||
|
c2.72,0,4.808,1.651,4.808,4.368C104.518,147.592,102.43,149.245,99.71,149.245z M180.759,140.067c3.302,0,6.215,2.09,7.573,4.71
|
||||||
|
l5.923-2.913c-2.28-4.078-6.407-7.914-13.496-7.914c-9.759,0-17.283,6.75-17.283,16.75c0,9.954,7.524,16.76,17.283,16.76
|
||||||
|
c7.089,0,11.216-3.94,13.496-7.971l-5.923-2.865c-1.358,2.623-4.271,4.711-7.573,4.711c-5.924,0-10.194-4.517-10.194-10.635
|
||||||
|
C170.564,144.583,174.835,140.067,180.759,140.067z M131.958,134.484l-12.485,32.386h7.823l2.04-5.486h13.887l2.038,5.486h7.816
|
||||||
|
l-12.479-32.386H131.958z M131.228,155.313l5.05-13.936l5.05,13.936H131.228z M231.892,140.553v-6.069h-22.916v32.386h22.916v-6.07
|
||||||
|
H215.87v-7.379h15.684v-6.069H215.87v-6.797L231.892,140.553L231.892,140.553z"/>
|
||||||
|
<path fill="#43515F" d="M29.956,150.652c0-9.71-7.04-16.168-17.187-16.168H0v32.386h12.817
|
||||||
|
C22.916,166.87,29.956,160.458,29.956,150.652z M12.769,160.799H6.894v-20.246h5.924c6.603,0,10.098,4.418,10.098,10.099
|
||||||
|
C22.916,156.187,19.177,160.799,12.769,160.799z"/>
|
||||||
|
<path fill="#43515F" d="M120.726,58.569l0.109-0.006l0.116-0.01l0.106-0.013l0.11-0.01l0.11-0.023l0.109-0.019l0.106-0.023
|
||||||
|
l0.106-0.029l0.105-0.023l0.106-0.033l0.103-0.034l0.097-0.035l0.104-0.04l0.101-0.042l0.1-0.042v-0.001l0.096-0.045l0,0
|
||||||
|
l0.095-0.044l0.097-0.049l0.091-0.056v-0.001l0.094-0.05v-0.002l0.09-0.056v-0.001l0.093-0.06l0.083-0.056v-0.001l0.085-0.063
|
||||||
|
l0.088-0.065v-0.002l0.087-0.062v-0.001c0.816-0.683,1.393-1.646,1.561-2.738l0.013-0.104V54.72l0.014-0.101v-0.011l0.009-0.098
|
||||||
|
v-0.012l0.009-0.101V54.38l0.005-0.095v-0.016l0.002-0.105v-16.46l-0.002-0.105v-0.016l-0.005-0.095v-0.013l-0.009-0.101v-0.012
|
||||||
|
l-0.009-0.098v-0.011l-0.014-0.1v-0.01l-0.013-0.104c-0.167-1.092-0.744-2.057-1.561-2.738V34.3l-0.087-0.063v-0.002l-0.088-0.065
|
||||||
|
l-0.085-0.063v-0.001l-0.083-0.056l-0.093-0.061l0,0l-0.09-0.056V33.93l-0.094-0.05v-0.001l-0.091-0.056l-0.097-0.049l-0.095-0.043
|
||||||
|
V33.73l-0.096-0.045v-0.001l-0.1-0.043l-0.101-0.042l-0.104-0.04l-0.097-0.035l-0.103-0.031l-0.106-0.036l-0.105-0.023l-0.106-0.028
|
||||||
|
l-0.106-0.024l-0.109-0.019l-0.11-0.023l-0.11-0.009l-0.106-0.014l-0.116-0.01l-0.109-0.006l-0.114-0.005h-7.89
|
||||||
|
c-9.716,0-15.858-7.838-15.858-17.15V6.92c0-3.812-3.102-6.915-6.914-6.915H74.085c-3.813,0-6.92,3.106-6.92,6.915v16.682
|
||||||
|
c0,3.806,3.104,6.909,6.92,6.909h8.414c9.169,0,16.906,5.95,17.146,15.403v0.04c-0.24,9.453-7.978,15.402-17.146,15.402h-8.414
|
||||||
|
c-3.815,0-6.92,3.103-6.92,6.909v16.682c0,3.81,3.106,6.915,6.92,6.915H89.95c3.812,0,6.914-3.104,6.914-6.915v-9.223
|
||||||
|
c0-9.312,6.144-17.149,15.858-17.149h7.89L120.726,58.569z M154.772,9.956C148.631,3.814,140.15,0,130.816,0h-15.024v17.424h15.024
|
||||||
|
c4.526,0,8.647,1.858,11.64,4.849c2.99,2.99,4.849,7.112,4.849,11.639v24.042c0,4.538-1.853,8.665-4.832,11.655l-0.017-0.016
|
||||||
|
c-2.991,2.991-7.113,4.849-11.64,4.849h-15.024v17.424h15.024c9.333,0,17.814-3.814,23.956-9.956v-0.033
|
||||||
|
c6.142-6.143,9.955-14.614,9.955-23.923V33.912C164.727,24.578,160.914,16.097,154.772,9.956z"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 3.9 KiB |
22
scripts/sync-build-dir.js
Normal file
22
scripts/sync-build-dir.js
Normal file
@@ -0,0 +1,22 @@
|
|||||||
|
const syncBuildDir = require('copyfiles');
|
||||||
|
const path = require('path');
|
||||||
|
const {
|
||||||
|
projectRoot,
|
||||||
|
theme,
|
||||||
|
themePath,
|
||||||
|
} = require('../webpack/helpers');
|
||||||
|
|
||||||
|
const projectDepth = projectRoot('./').split(path.sep).length;
|
||||||
|
|
||||||
|
let callback;
|
||||||
|
|
||||||
|
if (theme !== null && theme !== undefined) {
|
||||||
|
callback = () => {
|
||||||
|
syncBuildDir([path.join(themePath, '**/*'), 'build'], { up: projectDepth + 2 }, () => {})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
callback = () => {};
|
||||||
|
}
|
||||||
|
|
||||||
|
syncBuildDir([projectRoot('src/**/*'), 'build'], { up: projectDepth + 1 }, callback);
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../../styles/variables.scss';
|
|
||||||
|
|
||||||
.selectable-row:hover {
|
.selectable-row:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../../styles/variables.scss';
|
|
||||||
|
|
||||||
.selectable-row:hover {
|
.selectable-row:hover {
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
@import '../../../../styles/variables.scss';
|
|
@@ -1,4 +1,4 @@
|
|||||||
<nav @slideHorizontal class="navbar navbar-dark bg-dark p-0"
|
<nav @slideHorizontal class="navbar navbar-dark p-0"
|
||||||
[ngClass]="{'active': sidebarOpen, 'inactive': sidebarClosed}"
|
[ngClass]="{'active': sidebarOpen, 'inactive': sidebarClosed}"
|
||||||
[@slideSidebar]="{
|
[@slideSidebar]="{
|
||||||
value: (!(sidebarExpanded | async) ? 'collapsed' : 'expanded'),
|
value: (!(sidebarExpanded | async) ? 'collapsed' : 'expanded'),
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../styles/variables.scss';
|
|
||||||
@import '../../../styles/mixins.scss';
|
|
||||||
$icon-z-index: 10;
|
$icon-z-index: 10;
|
||||||
|
|
||||||
:host {
|
:host {
|
||||||
@@ -8,6 +6,7 @@ $icon-z-index: 10;
|
|||||||
height: 100vh;
|
height: 100vh;
|
||||||
flex: 1 1 auto;
|
flex: 1 1 auto;
|
||||||
nav {
|
nav {
|
||||||
|
background-color: $admin-sidebar-bg;
|
||||||
height: 100%;
|
height: 100%;
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
> div {
|
> div {
|
||||||
@@ -44,7 +43,7 @@ $icon-z-index: 10;
|
|||||||
.sidebar-section {
|
.sidebar-section {
|
||||||
display: flex;
|
display: flex;
|
||||||
align-content: stretch;
|
align-content: stretch;
|
||||||
background-color: $dark;
|
background-color: $admin-sidebar-bg;
|
||||||
.nav-item {
|
.nav-item {
|
||||||
padding-top: $spacer;
|
padding-top: $spacer;
|
||||||
padding-bottom: $spacer;
|
padding-bottom: $spacer;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../../styles/variables.scss';
|
|
||||||
|
|
||||||
::ng-deep {
|
::ng-deep {
|
||||||
.fa-chevron-right {
|
.fa-chevron-right {
|
||||||
padding-left: $spacer/2;
|
padding-left: $spacer/2;
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
@import '../../styles/variables.scss';
|
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
@import '../../styles/variables.scss';
|
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
@import '../../../styles/variables.scss';
|
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
@import '../../../styles/variables.scss';
|
|
||||||
|
@@ -1,16 +1,14 @@
|
|||||||
@import '../../../styles/variables.scss';
|
|
||||||
|
|
||||||
:host {
|
:host {
|
||||||
display: block;
|
display: block;
|
||||||
margin-top: -$content-spacing;
|
margin-top: -$content-spacing;
|
||||||
margin-bottom: -$content-spacing;
|
margin-bottom: -$content-spacing;
|
||||||
}
|
}
|
||||||
|
|
||||||
.display-3 {
|
.display-3 {
|
||||||
word-break: break-word;
|
word-break: break-word;
|
||||||
}
|
}
|
||||||
|
|
||||||
.dspace-logo {
|
.dspace-logo {
|
||||||
height: 110px;
|
height: 110px;
|
||||||
width: 110px;
|
width: 110px;
|
||||||
}
|
}
|
0
src/app/+home-page/home-page.component.default.scss
Normal file
0
src/app/+home-page/home-page.component.default.scss
Normal file
@@ -1 +1,2 @@
|
|||||||
@import '../../styles/variables.scss';
|
:host {
|
||||||
|
}
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../styles/variables.scss';
|
|
||||||
|
|
||||||
.btn {
|
.btn {
|
||||||
min-width: $edit-item-button-min-width;
|
min-width: $edit-item-button-min-width;
|
||||||
}
|
}
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
@import '../../../../styles/variables.scss';
|
|
@@ -1,4 +1,3 @@
|
|||||||
@import '../../../../../styles/variables.scss';
|
|
||||||
.btn[disabled] {
|
.btn[disabled] {
|
||||||
color: $gray-600;
|
color: $gray-600;
|
||||||
border-color: $gray-600;
|
border-color: $gray-600;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../../styles/variables.scss';
|
|
||||||
|
|
||||||
.button-row {
|
.button-row {
|
||||||
.btn {
|
.btn {
|
||||||
margin-right: 0.5 * $spacer;
|
margin-right: 0.5 * $spacer;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../../styles/variables.scss';
|
|
||||||
|
|
||||||
:host {
|
:host {
|
||||||
.simple-view-element {
|
.simple-view-element {
|
||||||
margin-bottom: 15px;
|
margin-bottom: 15px;
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
@import '../../../../styles/variables.scss';
|
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
@import '../../../../styles/variables.scss';
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../../../styles/variables';
|
|
||||||
@import '../../../../../styles/mixins';
|
|
||||||
@media screen and (min-width: map-get($grid-breakpoints, md)) {
|
@media screen and (min-width: map-get($grid-breakpoints, md)) {
|
||||||
dt {
|
dt {
|
||||||
text-align: right;
|
text-align: right;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../styles/variables.scss';
|
|
||||||
|
|
||||||
:host {
|
:host {
|
||||||
div.simple-view-link {
|
div.simple-view-link {
|
||||||
text-align: center;
|
text-align: center;
|
||||||
|
@@ -21,6 +21,10 @@
|
|||||||
[fields]="['journalvolume.identifier.name']"
|
[fields]="['journalvolume.identifier.name']"
|
||||||
[label]="'publication.page.volume-title'">
|
[label]="'publication.page.volume-title'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
|
<ds-generic-item-page-field [item]="item"
|
||||||
|
[fields]="['dc.publisher']"
|
||||||
|
[label]="'publication.page.publisher'">
|
||||||
|
</ds-generic-item-page-field>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-12 col-md-6">
|
<div class="col-xs-12 col-md-6">
|
||||||
<ds-metadata-representation-list
|
<ds-metadata-representation-list
|
||||||
@@ -40,6 +44,11 @@
|
|||||||
[label]="'relationships.isJournalIssueOf' | translate">
|
[label]="'relationships.isJournalIssueOf' | translate">
|
||||||
</ds-related-items>
|
</ds-related-items>
|
||||||
<ds-item-page-abstract-field [item]="item"></ds-item-page-abstract-field>
|
<ds-item-page-abstract-field [item]="item"></ds-item-page-abstract-field>
|
||||||
|
<ds-generic-item-page-field [item]="item"
|
||||||
|
[fields]="['dc.description']"
|
||||||
|
[label]="'publication.page.description'">
|
||||||
|
</ds-generic-item-page-field>
|
||||||
|
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['dc.subject']"
|
[fields]="['dc.subject']"
|
||||||
[separator]="','"
|
[separator]="','"
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../styles/variables.scss';
|
|
||||||
|
|
||||||
.login-logo {
|
.login-logo {
|
||||||
height: $login-logo-height;
|
height: $login-logo-height;
|
||||||
width: $login-logo-width;
|
width: $login-logo-width;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../../../styles/variables.scss';
|
|
||||||
@import '../../../../../styles/mixins.scss';
|
|
||||||
|
|
||||||
.filters {
|
.filters {
|
||||||
.toggle-more-filters a {
|
.toggle-more-filters a {
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
<a *ngIf="isVisible | async" class="d-flex flex-row"
|
<a *ngIf="isVisible | async" class="d-flex flex-row"
|
||||||
[routerLink]="[getSearchLink()]"
|
[routerLink]="[getSearchLink()]"
|
||||||
[queryParams]="addQueryParams" queryParamsHandling="merge">
|
[queryParams]="addQueryParams" queryParamsHandling="merge">
|
||||||
<input type="checkbox" [checked]="false" class="my-1 align-self-stretch"/>
|
<input type="checkbox" [checked]="false" class="my-1 align-self-stretch"/>
|
||||||
<span class="filter-value px-1">{{filterValue.value}}</span>
|
<span class="filter-value px-1">{{filterValue.value}}</span>
|
||||||
<span class="float-right filter-value-count ml-auto">
|
<span class="float-right filter-value-count ml-auto">
|
||||||
<span class="badge badge-secondary badge-pill">{{filterValue.count}}</span>
|
<span class="badge badge-secondary badge-pill">{{filterValue.count}}</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../../../../styles/variables.scss';
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: $body-color;
|
color: $body-color;
|
||||||
&:hover, &focus {
|
&:hover, &focus {
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
<a *ngIf="isVisible | async" class="d-flex flex-row"
|
<a *ngIf="isVisible | async" class="d-flex flex-row"
|
||||||
[routerLink]="[getSearchLink()]"
|
[routerLink]="[getSearchLink()]"
|
||||||
[queryParams]="changeQueryParams" queryParamsHandling="merge">
|
[queryParams]="changeQueryParams" queryParamsHandling="merge">
|
||||||
<span class="filter-value px-1">{{filterValue.label}}</span>
|
<span class="filter-value px-1">{{filterValue.label}}</span>
|
||||||
<span class="float-right filter-value-count ml-auto">
|
<span class="float-right filter-value-count ml-auto">
|
||||||
<span class="badge badge-secondary badge-pill">{{filterValue.count}}</span>
|
<span class="badge badge-secondary badge-pill">{{filterValue.count}}</span>
|
||||||
</span>
|
</span>
|
||||||
</a>
|
</a>
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../../../../styles/variables.scss';
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: $link-color;
|
color: $link-color;
|
||||||
&:hover {
|
&:hover {
|
||||||
|
@@ -18,6 +18,7 @@ const rangeDelimiter = '-';
|
|||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-search-facet-range-option',
|
selector: 'ds-search-facet-range-option',
|
||||||
styleUrls: ['./search-facet-range-option.component.scss'],
|
styleUrls: ['./search-facet-range-option.component.scss'],
|
||||||
|
// templateUrl: './search-facet-range-option.component.html',
|
||||||
templateUrl: './search-facet-range-option.component.html',
|
templateUrl: './search-facet-range-option.component.html',
|
||||||
})
|
})
|
||||||
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../../../../styles/variables.scss';
|
|
||||||
|
|
||||||
a {
|
a {
|
||||||
color: $body-color;
|
color: $body-color;
|
||||||
&:hover, &focus {
|
&:hover, &focus {
|
||||||
|
@@ -1,13 +1,10 @@
|
|||||||
@import '../../../../styles/variables.scss';
|
|
||||||
@import '../../../../styles/mixins.scss';
|
|
||||||
|
|
||||||
:host .facet-filter {
|
:host .facet-filter {
|
||||||
border: 1px solid map-get($theme-colors, light);
|
border: 1px solid map-get($theme-colors, light);
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
.search-filter-wrapper.closed {
|
.search-filter-wrapper.closed {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
}
|
}
|
||||||
.filter-toggle {
|
.filter-toggle {
|
||||||
line-height: $line-height-base;
|
line-height: $line-height-base;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,3 @@
|
|||||||
@import '../../../../../styles/variables.scss';
|
|
||||||
@import '../../../../../styles/mixins.scss';
|
|
||||||
|
|
||||||
.filters {
|
.filters {
|
||||||
.toggle-more-filters a {
|
.toggle-more-filters a {
|
||||||
color: $link-color;
|
color: $link-color;
|
||||||
|
@@ -1,14 +1,10 @@
|
|||||||
@import '../../../../../styles/variables.scss';
|
|
||||||
@import '../../../../../styles/mixins.scss';
|
|
||||||
|
|
||||||
|
|
||||||
.filters {
|
.filters {
|
||||||
.toggle-more-filters a {
|
.toggle-more-filters a {
|
||||||
color: $link-color;
|
color: $link-color;
|
||||||
text-decoration: underline;
|
text-decoration: underline;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$slider-handle-width: 18px;
|
$slider-handle-width: 18px;
|
||||||
::ng-deep
|
::ng-deep
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../../../styles/variables.scss';
|
|
||||||
@import '../../../../../styles/mixins.scss';
|
|
||||||
|
|
||||||
.filters {
|
.filters {
|
||||||
.toggle-more-filters a {
|
.toggle-more-filters a {
|
||||||
|
@@ -1,2 +0,0 @@
|
|||||||
@import '../../../styles/variables.scss';
|
|
||||||
@import '../../../styles/mixins.scss';
|
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../styles/variables.scss';
|
|
||||||
@import '../../styles/mixins.scss';
|
|
||||||
|
|
||||||
@include media-breakpoint-down(md) {
|
@include media-breakpoint-down(md) {
|
||||||
.container {
|
.container {
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../styles/variables.scss';
|
|
||||||
|
|
||||||
.setting-option {
|
.setting-option {
|
||||||
border: 1px solid map-get($theme-colors, light);
|
border: 1px solid map-get($theme-colors, light);
|
||||||
}
|
}
|
||||||
|
@@ -1,6 +1,3 @@
|
|||||||
@import '../../../styles/variables.scss';
|
|
||||||
@import '../../../styles/mixins.scss';
|
|
||||||
|
|
||||||
:host {
|
:host {
|
||||||
.results {
|
.results {
|
||||||
line-height: $button-height;
|
line-height: $button-height;
|
||||||
|
@@ -9,7 +9,6 @@
|
|||||||
<ds-notifications-board
|
<ds-notifications-board
|
||||||
[options]="config.notifications">
|
[options]="config.notifications">
|
||||||
</ds-notifications-board>
|
</ds-notifications-board>
|
||||||
|
|
||||||
<main class="main-content">
|
<main class="main-content">
|
||||||
<div class="container" *ngIf="isLoading">
|
<div class="container" *ngIf="isLoading">
|
||||||
<ds-loading message="{{'loading.default' | translate}}"></ds-loading>
|
<ds-loading message="{{'loading.default' | translate}}"></ds-loading>
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
@import '../styles/variables.scss';
|
|
||||||
@import '../styles/helpers/font_awesome_imports.scss';
|
@import '../styles/helpers/font_awesome_imports.scss';
|
||||||
@import '../../node_modules/bootstrap/scss/bootstrap.scss';
|
@import '../../node_modules/bootstrap/scss/bootstrap.scss';
|
||||||
@import '../../node_modules/nouislider/distribute/nouislider.min';
|
@import '../../node_modules/nouislider/distribute/nouislider.min';
|
||||||
@@ -48,4 +47,3 @@ ds-admin-sidebar {
|
|||||||
position: fixed;
|
position: fixed;
|
||||||
z-index: $sidebar-z-index;
|
z-index: $sidebar-z-index;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -28,10 +28,10 @@ import variables from '../styles/_exposed_variables.scss';
|
|||||||
import { CSSVariableService } from './shared/sass-helper/sass-helper.service';
|
import { CSSVariableService } from './shared/sass-helper/sass-helper.service';
|
||||||
import { MenuService } from './shared/menu/menu.service';
|
import { MenuService } from './shared/menu/menu.service';
|
||||||
import { MenuID } from './shared/menu/initial-menus-state';
|
import { MenuID } from './shared/menu/initial-menus-state';
|
||||||
import { Observable } from 'rxjs/internal/Observable';
|
import { combineLatest as combineLatestObservable, Observable, of } from 'rxjs';
|
||||||
import { slideSidebarPadding } from './shared/animations/slide';
|
import { slideSidebarPadding } from './shared/animations/slide';
|
||||||
import { combineLatest as combineLatestObservable } from 'rxjs';
|
|
||||||
import { HostWindowService } from './shared/host-window.service';
|
import { HostWindowService } from './shared/host-window.service';
|
||||||
|
import { Theme } from '../config/theme.inferface';
|
||||||
|
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-app',
|
selector: 'ds-app',
|
||||||
@@ -47,6 +47,7 @@ export class AppComponent implements OnInit, AfterViewInit {
|
|||||||
slideSidebarOver: Observable<boolean>;
|
slideSidebarOver: Observable<boolean>;
|
||||||
collapsedSidebarWidth: Observable<string>;
|
collapsedSidebarWidth: Observable<string>;
|
||||||
totalSidebarWidth: Observable<string>;
|
totalSidebarWidth: Observable<string>;
|
||||||
|
theme: Observable<Theme> = of({} as any);
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
@Inject(GLOBAL_CONFIG) public config: GlobalConfig,
|
@Inject(GLOBAL_CONFIG) public config: GlobalConfig,
|
||||||
@@ -59,7 +60,7 @@ export class AppComponent implements OnInit, AfterViewInit {
|
|||||||
private router: Router,
|
private router: Router,
|
||||||
private cssService: CSSVariableService,
|
private cssService: CSSVariableService,
|
||||||
private menuService: MenuService,
|
private menuService: MenuService,
|
||||||
private windowService: HostWindowService
|
private windowService: HostWindowService,
|
||||||
) {
|
) {
|
||||||
// Load all the languages that are defined as active from the config file
|
// Load all the languages that are defined as active from the config file
|
||||||
translate.addLangs(config.languages.filter((LangConfig) => LangConfig.active === true).map((a) => a.code));
|
translate.addLangs(config.languages.filter((LangConfig) => LangConfig.active === true).map((a) => a.code));
|
||||||
@@ -83,6 +84,7 @@ export class AppComponent implements OnInit, AfterViewInit {
|
|||||||
}
|
}
|
||||||
|
|
||||||
ngOnInit() {
|
ngOnInit() {
|
||||||
|
|
||||||
const env: string = this.config.production ? 'Production' : 'Development';
|
const env: string = this.config.production ? 'Production' : 'Development';
|
||||||
const color: string = this.config.production ? 'red' : 'green';
|
const color: string = this.config.production ? 'red' : 'green';
|
||||||
console.info(`Environment: %c${env}`, `color: ${color}; font-weight: bold;`);
|
console.info(`Environment: %c${env}`, `color: ${color}; font-weight: bold;`);
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
|
|
||||||
import { ObjectCacheEffects } from './cache/object-cache.effects';
|
import { ObjectCacheEffects } from './cache/object-cache.effects';
|
||||||
import { UUIDIndexEffects } from './index/index.effects';
|
import { UUIDIndexEffects } from './index/index.effects';
|
||||||
import { RequestEffects } from './data/request.effects';
|
import { RequestEffects } from './data/request.effects';
|
||||||
|
@@ -60,6 +60,7 @@ import { HALEndpointService } from './shared/hal-endpoint.service';
|
|||||||
import { FacetValueResponseParsingService } from './data/facet-value-response-parsing.service';
|
import { FacetValueResponseParsingService } from './data/facet-value-response-parsing.service';
|
||||||
import { FacetValueMapResponseParsingService } from './data/facet-value-map-response-parsing.service';
|
import { FacetValueMapResponseParsingService } from './data/facet-value-map-response-parsing.service';
|
||||||
import { FacetConfigResponseParsingService } from './data/facet-config-response-parsing.service';
|
import { FacetConfigResponseParsingService } from './data/facet-config-response-parsing.service';
|
||||||
|
import { ResourcePolicyService } from './data/resource-policy.service';
|
||||||
import { RegistryService } from './registry/registry.service';
|
import { RegistryService } from './registry/registry.service';
|
||||||
import { RegistryMetadataschemasResponseParsingService } from './data/registry-metadataschemas-response-parsing.service';
|
import { RegistryMetadataschemasResponseParsingService } from './data/registry-metadataschemas-response-parsing.service';
|
||||||
import { RegistryMetadatafieldsResponseParsingService } from './data/registry-metadatafields-response-parsing.service';
|
import { RegistryMetadatafieldsResponseParsingService } from './data/registry-metadatafields-response-parsing.service';
|
||||||
@@ -125,6 +126,7 @@ const PROVIDERS = [
|
|||||||
MetadataService,
|
MetadataService,
|
||||||
ObjectCacheService,
|
ObjectCacheService,
|
||||||
PaginationComponentOptions,
|
PaginationComponentOptions,
|
||||||
|
ResourcePolicyService,
|
||||||
RegistryService,
|
RegistryService,
|
||||||
NormalizedObjectBuildService,
|
NormalizedObjectBuildService,
|
||||||
RemoteDataBuildService,
|
RemoteDataBuildService,
|
||||||
|
@@ -89,7 +89,7 @@ describe('ComColDataService', () => {
|
|||||||
function initMockCommunityDataService(): CommunityDataService {
|
function initMockCommunityDataService(): CommunityDataService {
|
||||||
return jasmine.createSpyObj('responseCache', {
|
return jasmine.createSpyObj('responseCache', {
|
||||||
getEndpoint: hot('--a-', { a: communitiesEndpoint }),
|
getEndpoint: hot('--a-', { a: communitiesEndpoint }),
|
||||||
getIDHref: cold('b-', { b: communityEndpoint })
|
getIDHref: communityEndpoint
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -31,7 +31,7 @@ export abstract class ComColDataService<T extends CacheableObject> extends DataS
|
|||||||
return this.halService.getEndpoint(linkPath);
|
return this.halService.getEndpoint(linkPath);
|
||||||
} else {
|
} else {
|
||||||
const scopeCommunityHrefObs = this.cds.getEndpoint().pipe(
|
const scopeCommunityHrefObs = this.cds.getEndpoint().pipe(
|
||||||
mergeMap((endpoint: string) => this.cds.getIDHref(endpoint, options.scopeID)),
|
map((endpoint: string) => this.cds.getIDHref(endpoint, options.scopeID)),
|
||||||
filter((href: string) => isNotEmpty(href)),
|
filter((href: string) => isNotEmpty(href)),
|
||||||
take(1),
|
take(1),
|
||||||
tap((href: string) => {
|
tap((href: string) => {
|
||||||
|
@@ -13,15 +13,38 @@ import { MetadataSchema } from '../metadata/metadataschema.model';
|
|||||||
import { NormalizedObjectBuildService } from '../cache/builders/normalized-object-build.service';
|
import { NormalizedObjectBuildService } from '../cache/builders/normalized-object-build.service';
|
||||||
import { HttpClient } from '@angular/common/http';
|
import { HttpClient } from '@angular/common/http';
|
||||||
import { NotificationsService } from '../../shared/notifications/notifications.service';
|
import { NotificationsService } from '../../shared/notifications/notifications.service';
|
||||||
|
import { ChangeAnalyzer } from './change-analyzer';
|
||||||
import { DefaultChangeAnalyzer } from './default-change-analyzer.service';
|
import { DefaultChangeAnalyzer } from './default-change-analyzer.service';
|
||||||
|
|
||||||
|
/* tslint:disable:max-classes-per-file */
|
||||||
|
class DataServiceImpl extends DataService<MetadataSchema> {
|
||||||
|
protected linkPath = 'metadataschemas';
|
||||||
|
protected forceBypassCache = false;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
protected requestService: RequestService,
|
||||||
|
protected rdbService: RemoteDataBuildService,
|
||||||
|
protected dataBuildService: NormalizedObjectBuildService,
|
||||||
|
protected store: Store<CoreState>,
|
||||||
|
protected objectCache: ObjectCacheService,
|
||||||
|
protected halService: HALEndpointService,
|
||||||
|
protected notificationsService: NotificationsService,
|
||||||
|
protected http: HttpClient,
|
||||||
|
protected comparator: ChangeAnalyzer<MetadataSchema>) {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
getBrowseEndpoint(options: FindAllOptions = {}, linkPath: string = this.linkPath): Observable<string> {
|
||||||
|
return this.halService.getEndpoint(linkPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A service responsible for fetching/sending data from/to the REST API on the metadataschemas endpoint
|
* A service responsible for fetching/sending data from/to the REST API on the metadataschemas endpoint
|
||||||
*/
|
*/
|
||||||
@Injectable()
|
@Injectable()
|
||||||
export class MetadataSchemaDataService extends DataService<MetadataSchema> {
|
export class MetadataSchemaDataService {
|
||||||
protected linkPath = 'metadataschemas';
|
private dataService: DataServiceImpl;
|
||||||
protected forceBypassCache = false;
|
|
||||||
|
|
||||||
constructor(
|
constructor(
|
||||||
protected requestService: RequestService,
|
protected requestService: RequestService,
|
||||||
@@ -33,17 +56,6 @@ export class MetadataSchemaDataService extends DataService<MetadataSchema> {
|
|||||||
protected dataBuildService: NormalizedObjectBuildService,
|
protected dataBuildService: NormalizedObjectBuildService,
|
||||||
protected http: HttpClient,
|
protected http: HttpClient,
|
||||||
protected notificationsService: NotificationsService) {
|
protected notificationsService: NotificationsService) {
|
||||||
super();
|
this.dataService = new DataServiceImpl(requestService, rdbService, dataBuildService, null, objectCache, halService, notificationsService, http, comparator);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the endpoint for browsing metadataschemas
|
|
||||||
* @param {FindAllOptions} options
|
|
||||||
* @returns {Observable<string>}
|
|
||||||
*/
|
|
||||||
public getBrowseEndpoint(options: FindAllOptions = {}, linkPath: string = this.linkPath): Observable<string> {
|
|
||||||
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
77
src/app/core/data/resource-policy.service.spec.ts
Normal file
77
src/app/core/data/resource-policy.service.spec.ts
Normal file
@@ -0,0 +1,77 @@
|
|||||||
|
import { cold, getTestScheduler } from 'jasmine-marbles';
|
||||||
|
import { TestScheduler } from 'rxjs/testing';
|
||||||
|
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
|
||||||
|
import { ResourcePolicy } from '../shared/resource-policy.model';
|
||||||
|
import { HALEndpointService } from '../shared/hal-endpoint.service';
|
||||||
|
import { GetRequest } from './request.models';
|
||||||
|
import { RequestService } from './request.service';
|
||||||
|
import { ResourcePolicyService } from './resource-policy.service';
|
||||||
|
import { ObjectCacheService } from '../cache/object-cache.service';
|
||||||
|
import { NotificationsService } from '../../shared/notifications/notifications.service';
|
||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
import { NormalizedObjectBuildService } from '../cache/builders/normalized-object-build.service';
|
||||||
|
|
||||||
|
describe('ResourcePolicyService', () => {
|
||||||
|
let scheduler: TestScheduler;
|
||||||
|
let service: ResourcePolicyService;
|
||||||
|
let requestService: RequestService;
|
||||||
|
let rdbService: RemoteDataBuildService;
|
||||||
|
let objectCache: ObjectCacheService;
|
||||||
|
const testObject = {
|
||||||
|
uuid: '664184ee-b254-45e8-970d-220e5ccc060b'
|
||||||
|
} as ResourcePolicy;
|
||||||
|
const requestURL = `https://rest.api/rest/api/resourcepolicies/${testObject.uuid}`;
|
||||||
|
const requestUUID = '8b3c613a-5a4b-438b-9686-be1d5b4a1c5a';
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
scheduler = getTestScheduler();
|
||||||
|
|
||||||
|
requestService = jasmine.createSpyObj('requestService', {
|
||||||
|
generateRequestId: requestUUID,
|
||||||
|
configure: true
|
||||||
|
});
|
||||||
|
rdbService = jasmine.createSpyObj('rdbService', {
|
||||||
|
buildSingle: cold('a', {
|
||||||
|
a: {
|
||||||
|
payload: testObject
|
||||||
|
}
|
||||||
|
})
|
||||||
|
});
|
||||||
|
objectCache = {} as ObjectCacheService;
|
||||||
|
const halService = {} as HALEndpointService;
|
||||||
|
const notificationsService = {} as NotificationsService;
|
||||||
|
const http = {} as HttpClient;
|
||||||
|
const comparator = {} as any;
|
||||||
|
const dataBuildService = {} as NormalizedObjectBuildService;
|
||||||
|
|
||||||
|
service = new ResourcePolicyService(
|
||||||
|
requestService,
|
||||||
|
rdbService,
|
||||||
|
dataBuildService,
|
||||||
|
objectCache,
|
||||||
|
halService,
|
||||||
|
notificationsService,
|
||||||
|
http,
|
||||||
|
comparator
|
||||||
|
)
|
||||||
|
});
|
||||||
|
|
||||||
|
describe('findByHref', () => {
|
||||||
|
it('should configure the proper GetRequest', () => {
|
||||||
|
scheduler.schedule(() => service.findByHref(requestURL));
|
||||||
|
scheduler.flush();
|
||||||
|
|
||||||
|
expect(requestService.configure).toHaveBeenCalledWith(new GetRequest(requestUUID, requestURL, null), false);
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should return a RemoteData<ResourcePolicy> for the object with the given URL', () => {
|
||||||
|
const result = service.findByHref(requestURL);
|
||||||
|
const expected = cold('a', {
|
||||||
|
a: {
|
||||||
|
payload: testObject
|
||||||
|
}
|
||||||
|
});
|
||||||
|
expect(result).toBeObservable(expected);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
67
src/app/core/data/resource-policy.service.ts
Normal file
67
src/app/core/data/resource-policy.service.ts
Normal file
@@ -0,0 +1,67 @@
|
|||||||
|
import { Injectable } from '@angular/core';
|
||||||
|
import { HttpClient } from '@angular/common/http';
|
||||||
|
|
||||||
|
import { Store } from '@ngrx/store';
|
||||||
|
import { Observable } from 'rxjs';
|
||||||
|
|
||||||
|
import { DataService } from '../data/data.service';
|
||||||
|
import { RequestService } from '../data/request.service';
|
||||||
|
import { FindAllOptions } from '../data/request.models';
|
||||||
|
import { HALEndpointService } from '../shared/hal-endpoint.service';
|
||||||
|
import { ResourcePolicy } from '../shared/resource-policy.model';
|
||||||
|
import { RemoteData } from '../data/remote-data';
|
||||||
|
import { RemoteDataBuildService } from '../cache/builders/remote-data-build.service';
|
||||||
|
import { CoreState } from '../core.reducers';
|
||||||
|
import { ObjectCacheService } from '../cache/object-cache.service';
|
||||||
|
import { NotificationsService } from '../../shared/notifications/notifications.service';
|
||||||
|
import { NormalizedObjectBuildService } from '../cache/builders/normalized-object-build.service';
|
||||||
|
import { ChangeAnalyzer } from './change-analyzer';
|
||||||
|
import { DefaultChangeAnalyzer } from '../data/default-change-analyzer.service';
|
||||||
|
import { HttpOptions } from '../dspace-rest-v2/dspace-rest-v2.service';
|
||||||
|
|
||||||
|
/* tslint:disable:max-classes-per-file */
|
||||||
|
class DataServiceImpl extends DataService<ResourcePolicy> {
|
||||||
|
protected linkPath = 'resourcepolicies';
|
||||||
|
protected forceBypassCache = false;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
protected requestService: RequestService,
|
||||||
|
protected rdbService: RemoteDataBuildService,
|
||||||
|
protected dataBuildService: NormalizedObjectBuildService,
|
||||||
|
protected store: Store<CoreState>,
|
||||||
|
protected objectCache: ObjectCacheService,
|
||||||
|
protected halService: HALEndpointService,
|
||||||
|
protected notificationsService: NotificationsService,
|
||||||
|
protected http: HttpClient,
|
||||||
|
protected comparator: ChangeAnalyzer<ResourcePolicy>) {
|
||||||
|
super();
|
||||||
|
}
|
||||||
|
|
||||||
|
getBrowseEndpoint(options: FindAllOptions = {}, linkPath: string = this.linkPath): Observable<string> {
|
||||||
|
return this.halService.getEndpoint(linkPath);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A service responsible for fetching/sending data from/to the REST API on the resourcepolicies endpoint
|
||||||
|
*/
|
||||||
|
@Injectable()
|
||||||
|
export class ResourcePolicyService {
|
||||||
|
private dataService: DataServiceImpl;
|
||||||
|
|
||||||
|
constructor(
|
||||||
|
protected requestService: RequestService,
|
||||||
|
protected rdbService: RemoteDataBuildService,
|
||||||
|
protected dataBuildService: NormalizedObjectBuildService,
|
||||||
|
protected objectCache: ObjectCacheService,
|
||||||
|
protected halService: HALEndpointService,
|
||||||
|
protected notificationsService: NotificationsService,
|
||||||
|
protected http: HttpClient,
|
||||||
|
protected comparator: DefaultChangeAnalyzer<ResourcePolicy>) {
|
||||||
|
this.dataService = new DataServiceImpl(requestService, rdbService, dataBuildService, null, objectCache, halService, notificationsService, http, comparator);
|
||||||
|
}
|
||||||
|
|
||||||
|
findByHref(href: string, options?: HttpOptions): Observable<RemoteData<ResourcePolicy>> {
|
||||||
|
return this.dataService.findByHref(href, options);
|
||||||
|
}
|
||||||
|
}
|
@@ -4,14 +4,14 @@
|
|||||||
[innerHTML]="firstMetadataValue('dc.title')"></a>
|
[innerHTML]="firstMetadataValue('dc.title')"></a>
|
||||||
<span class="text-muted">
|
<span class="text-muted">
|
||||||
<ds-truncatable-part [id]="item.id" [minLines]="1">
|
<ds-truncatable-part [id]="item.id" [minLines]="1">
|
||||||
<span *ngIf="item.allMetadata(['journalvolume.identifier.volume']).length > 0"
|
<span *ngIf="item.allMetadata(['publicationvolume.volumeNumber']).length > 0"
|
||||||
class="item-list-journal-issues">
|
class="item-list-journal-issues">
|
||||||
<span *ngFor="let value of allMetadataValues(['journalvolume.identifier.volume']); let last=last;">
|
<span *ngFor="let value of allMetadataValues(['publicationvolume.volumeNumber']); let last=last;">
|
||||||
<span [innerHTML]="value"><span [innerHTML]="value"></span></span>
|
<span [innerHTML]="value"><span [innerHTML]="value"></span></span>
|
||||||
</span>
|
</span>
|
||||||
<span *ngIf="item.allMetadata(['journalissue.identifier.number']).length > 0"
|
<span *ngIf="item.allMetadata(['publicationissue.issueNumber']).length > 0"
|
||||||
class="item-list-journal-issue-numbers">
|
class="item-list-journal-issue-numbers">
|
||||||
<span *ngFor="let value of allMetadataValues(['journalissue.identifier.number']); let last=last;">
|
<span *ngFor="let value of allMetadataValues(['publicationissue.issueNumber']); let last=last;">
|
||||||
<span> - </span><span [innerHTML]="value"><span [innerHTML]="value"></span></span>
|
<span> - </span><span [innerHTML]="value"><span [innerHTML]="value"></span></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
|
@@ -20,13 +20,13 @@ const mockItemWithMetadata: Item = Object.assign(new Item(), {
|
|||||||
value: 'This is just another title'
|
value: 'This is just another title'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'journalvolume.identifier.volume': [
|
'publicationvolume.volumeNumber': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: '1234'
|
value: '1234'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'journalissue.identifier.number': [
|
'publicationissue.issueNumber': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: '5678'
|
value: '5678'
|
||||||
|
@@ -10,9 +10,9 @@
|
|||||||
<span [innerHTML]="value"><span [innerHTML]="value"></span></span>
|
<span [innerHTML]="value"><span [innerHTML]="value"></span></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
<span *ngIf="item.allMetadata(['journalvolume.identifier.volume']).length > 0"
|
<span *ngIf="item.allMetadata(['publicationvolume.volumeNumber']).length > 0"
|
||||||
class="item-list-journal-volume-identifiers">
|
class="item-list-journal-volume-identifiers">
|
||||||
<span *ngFor="let value of allMetadataValues(['journalvolume.identifier.volume']); let last=last;">
|
<span *ngFor="let value of allMetadataValues(['publicationvolume.volumeNumber']); let last=last;">
|
||||||
<span> (</span><span [innerHTML]="value"><span [innerHTML]="value"></span></span><span>)</span>
|
<span> (</span><span [innerHTML]="value"><span [innerHTML]="value"></span></span><span>)</span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
|
@@ -26,7 +26,7 @@ const mockItemWithMetadata: Item = Object.assign(new Item(), {
|
|||||||
value: 'This is just another journal title'
|
value: 'This is just another journal title'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'journalvolume.identifier.volume': [
|
'publicationvolume.volumeNumber': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: '1234'
|
value: '1234'
|
||||||
|
@@ -4,9 +4,9 @@
|
|||||||
[innerHTML]="firstMetadataValue('dc.title')"></a>
|
[innerHTML]="firstMetadataValue('dc.title')"></a>
|
||||||
<span class="text-muted">
|
<span class="text-muted">
|
||||||
<ds-truncatable-part [id]="item.id" [minLines]="1">
|
<ds-truncatable-part [id]="item.id" [minLines]="1">
|
||||||
<span *ngIf="item.allMetadata(['journal.identifier.issn']).length > 0"
|
<span *ngIf="item.allMetadata(['creativeworkseries.issn']).length > 0"
|
||||||
class="item-list-journals">
|
class="item-list-journals">
|
||||||
<span *ngFor="let value of allMetadataValues(['journal.identifier.issn']); let last=last;">
|
<span *ngFor="let value of allMetadataValues(['creativeworkseries.issn']); let last=last;">
|
||||||
<span [innerHTML]="value"><span [innerHTML]="value"></span></span>
|
<span [innerHTML]="value"><span [innerHTML]="value"></span></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
|
@@ -20,7 +20,7 @@ const mockItemWithMetadata: Item = Object.assign(new Item(), {
|
|||||||
value: 'This is just another title'
|
value: 'This is just another title'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'journal.identifier.issn': [
|
'creativeworkseries.issn': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: '1234'
|
value: '1234'
|
||||||
|
@@ -7,11 +7,15 @@
|
|||||||
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async"></ds-thumbnail>
|
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async"></ds-thumbnail>
|
||||||
</ds-metadata-field-wrapper>
|
</ds-metadata-field-wrapper>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journalissue.identifier.number']"
|
[fields]="['publicationvolume.volumeNumber']"
|
||||||
|
[label]="'journalvolume.page.volume'">
|
||||||
|
</ds-generic-item-page-field>
|
||||||
|
<ds-generic-item-page-field [item]="item"
|
||||||
|
[fields]="['publicationissue.issueNumber']"
|
||||||
[label]="'journalissue.page.number'">
|
[label]="'journalissue.page.number'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journalissue.issuedate']"
|
[fields]="['creativework.datePublished']"
|
||||||
[label]="'journalissue.page.issuedate'">
|
[label]="'journalissue.page.issuedate'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
@@ -19,7 +23,7 @@
|
|||||||
[label]="'journalissue.page.journal-title'">
|
[label]="'journalissue.page.journal-title'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journal.identifier.issn']"
|
[fields]="['creativeworkseries.issn']"
|
||||||
[label]="'journalissue.page.journal-issn'">
|
[label]="'journalissue.page.journal-issn'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
</div>
|
</div>
|
||||||
@@ -34,11 +38,11 @@
|
|||||||
[label]="'relationships.isPublicationOfJournalIssue' | translate">
|
[label]="'relationships.isPublicationOfJournalIssue' | translate">
|
||||||
</ds-related-items>
|
</ds-related-items>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journalissue.identifier.description']"
|
[fields]="['dc.description']"
|
||||||
[label]="'journalissue.page.description'">
|
[label]="'journalissue.page.description'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journalissue.identifier.keyword']"
|
[fields]="['creativework.keywords']"
|
||||||
[label]="'journalissue.page.keyword'">
|
[label]="'journalissue.page.keyword'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<div>
|
<div>
|
||||||
|
@@ -12,25 +12,25 @@ import {
|
|||||||
const mockItem: Item = Object.assign(new Item(), {
|
const mockItem: Item = Object.assign(new Item(), {
|
||||||
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
||||||
metadata: {
|
metadata: {
|
||||||
'journalissue.identifier.number': [
|
'publicationissue.issueNumber': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: '1234'
|
value: '1234'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'journalissue.issuedate': [
|
'creativework.datePublished': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: '2018'
|
value: '2018'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'journalissue.identifier.description': [
|
'dc.description': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'desc'
|
value: 'desc'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'journalissue.identifier.keyword': [
|
'creativework.keywords': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'keyword'
|
value: 'keyword'
|
||||||
|
@@ -7,11 +7,11 @@
|
|||||||
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async"></ds-thumbnail>
|
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async"></ds-thumbnail>
|
||||||
</ds-metadata-field-wrapper>
|
</ds-metadata-field-wrapper>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journalvolume.identifier.volume']"
|
[fields]="['publicationvolume.volumeNumber']"
|
||||||
[label]="'journalvolume.page.volume'">
|
[label]="'journalvolume.page.volume'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journalvolume.issuedate']"
|
[fields]="['creativework.datePublished']"
|
||||||
[label]="'journalvolume.page.issuedate'">
|
[label]="'journalvolume.page.issuedate'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
</div>
|
</div>
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
[label]="'relationships.isIssueOf' | translate">
|
[label]="'relationships.isIssueOf' | translate">
|
||||||
</ds-related-items>
|
</ds-related-items>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journalvolume.identifier.description']"
|
[fields]="['dc.description']"
|
||||||
[label]="'journalvolume.page.description'">
|
[label]="'journalvolume.page.description'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<div>
|
<div>
|
||||||
|
@@ -12,19 +12,19 @@ import {
|
|||||||
const mockItem: Item = Object.assign(new Item(), {
|
const mockItem: Item = Object.assign(new Item(), {
|
||||||
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
||||||
metadata: {
|
metadata: {
|
||||||
'journalvolume.identifier.volume': [
|
'publicationvolume.volumeNumber': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: '1234'
|
value: '1234'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'journalvolume.issuedate': [
|
'creativework.datePublished': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: '2018'
|
value: '2018'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'journalvolume.identifier.description': [
|
'dc.description': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'desc'
|
value: 'desc'
|
||||||
|
@@ -7,15 +7,15 @@
|
|||||||
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async"></ds-thumbnail>
|
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async"></ds-thumbnail>
|
||||||
</ds-metadata-field-wrapper>
|
</ds-metadata-field-wrapper>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
||||||
[fields]="['journal.identifier.issn']"
|
[fields]="['creativeworkseries.issn']"
|
||||||
[label]="'journal.page.issn'">
|
[label]="'journal.page.issn'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
||||||
[fields]="['journal.publisher']"
|
[fields]="['creativework.publisher']"
|
||||||
[label]="'journal.page.publisher'">
|
[label]="'journal.page.publisher'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['journal.contributor.editor']"
|
[fields]="['creativework.editor']"
|
||||||
[label]="'journal.page.editor'">
|
[label]="'journal.page.editor'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
</div>
|
</div>
|
||||||
@@ -25,7 +25,7 @@
|
|||||||
[label]="'relationships.isVolumeOf' | translate">
|
[label]="'relationships.isVolumeOf' | translate">
|
||||||
</ds-related-items>
|
</ds-related-items>
|
||||||
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
<ds-generic-item-page-field class="item-page-fields" [item]="item"
|
||||||
[fields]="['journal.identifier.description']"
|
[fields]="['dc.description']"
|
||||||
[label]="'journal.page.description'">
|
[label]="'journal.page.description'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<div>
|
<div>
|
||||||
|
@@ -22,19 +22,19 @@ let fixture: ComponentFixture<JournalComponent>;
|
|||||||
const mockItem: Item = Object.assign(new Item(), {
|
const mockItem: Item = Object.assign(new Item(), {
|
||||||
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
||||||
metadata: {
|
metadata: {
|
||||||
'journal.identifier.issn': [
|
'creativeworkseries.issn': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: '1234'
|
value: '1234'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'journal.publisher': [
|
'creativework.publisher': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'a publisher'
|
value: 'a publisher'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'journal.identifier.description': [
|
'dc.description': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'desc'
|
value: 'desc'
|
||||||
|
@@ -1,13 +1,13 @@
|
|||||||
<ds-truncatable [id]="item.id">
|
<ds-truncatable [id]="item.id">
|
||||||
<a
|
<a
|
||||||
[routerLink]="['/items/' + item.id]" class="lead"
|
[routerLink]="['/items/' + item.id]" class="lead"
|
||||||
[innerHTML]="firstMetadataValue('orgunit.identifier.name')"></a>
|
[innerHTML]="firstMetadataValue('organization.legalName')"></a>
|
||||||
<span class="text-muted">
|
<span class="text-muted">
|
||||||
<ds-truncatable-part [id]="item.id" [minLines]="3">
|
<ds-truncatable-part [id]="item.id" [minLines]="3">
|
||||||
<span *ngIf="item.allMetadata(['orgunit.identifier.description']).length > 0"
|
<span *ngIf="item.allMetadata(['dc.description']).length > 0"
|
||||||
class="item-list-orgunit-description">
|
class="item-list-orgunit-description">
|
||||||
<ds-truncatable-part [id]="item.id" [minLines]="3"><span
|
<ds-truncatable-part [id]="item.id" [minLines]="3"><span
|
||||||
[innerHTML]="firstMetadataValue('orgunit.identifier.description')"></span>
|
[innerHTML]="firstMetadataValue('dc.description')"></span>
|
||||||
</ds-truncatable-part>
|
</ds-truncatable-part>
|
||||||
</span>
|
</span>
|
||||||
</ds-truncatable-part>
|
</ds-truncatable-part>
|
||||||
|
@@ -20,7 +20,7 @@ const mockItemWithMetadata: Item = Object.assign(new Item(), {
|
|||||||
value: 'This is just another title'
|
value: 'This is just another title'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'orgunit.identifier.description': [
|
'dc.description': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'A description about the OrgUnit'
|
value: 'A description about the OrgUnit'
|
||||||
|
@@ -1,13 +1,13 @@
|
|||||||
<ng-template #descTemplate>
|
<ng-template #descTemplate>
|
||||||
<span class="text-muted">
|
<span class="text-muted">
|
||||||
<span *ngIf="item.allMetadata(['orgunit.identifier.description']).length > 0"
|
<span *ngIf="item.allMetadata(['dc.description']).length > 0"
|
||||||
class="item-list-job-title">
|
class="item-list-job-title">
|
||||||
<span [innerHTML]="firstMetadataValue(['orgunit.identifier.description'])"></span>
|
<span [innerHTML]="firstMetadataValue(['dc.description'])"></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
</ng-template>
|
</ng-template>
|
||||||
<ds-truncatable [id]="item.id">
|
<ds-truncatable [id]="item.id">
|
||||||
<a [routerLink]="['/items/' + item.id]"
|
<a [routerLink]="['/items/' + item.id]"
|
||||||
[innerHTML]="firstMetadataValue('orgunit.identifier.name')"
|
[innerHTML]="firstMetadataValue('organization.legalName')"
|
||||||
[tooltip]="descTemplate"></a>
|
[tooltip]="descTemplate"></a>
|
||||||
</ds-truncatable>
|
</ds-truncatable>
|
||||||
|
@@ -1,12 +1,12 @@
|
|||||||
<ds-truncatable [id]="item.id">
|
<ds-truncatable [id]="item.id">
|
||||||
<a
|
<a
|
||||||
[routerLink]="['/items/' + item.id]" class="lead"
|
[routerLink]="['/items/' + item.id]" class="lead"
|
||||||
[innerHTML]="firstMetadataValue('dc.contributor.author')"></a>
|
[innerHTML]="firstMetadataValue('person.familyName') + ', ' + firstMetadataValue('person.givenName')"></a>
|
||||||
<span class="text-muted">
|
<span class="text-muted">
|
||||||
<ds-truncatable-part [id]="item.id" [minLines]="1">
|
<ds-truncatable-part [id]="item.id" [minLines]="1">
|
||||||
<span *ngIf="item.allMetadata(['person.identifier.jobtitle']).length > 0"
|
<span *ngIf="item.allMetadata(['person.jobTitle']).length > 0"
|
||||||
class="item-list-job-title">
|
class="item-list-job-title">
|
||||||
<span *ngFor="let value of allMetadataValues(['person.identifier.jobtitle']); let last=last;">
|
<span *ngFor="let value of allMetadataValues(['person.jobTitle']); let last=last;">
|
||||||
<span [innerHTML]="value"><span [innerHTML]="value"></span></span>
|
<span [innerHTML]="value"><span [innerHTML]="value"></span></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
|
@@ -20,7 +20,7 @@ const mockItemWithMetadata: Item = Object.assign(new Item(), {
|
|||||||
value: 'This is just another title'
|
value: 'This is just another title'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'person.identifier.jobtitle': [
|
'person.jobTitle': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'Developer'
|
value: 'Developer'
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
<ng-template #descTemplate>
|
<ng-template #descTemplate>
|
||||||
<span class="text-muted">
|
<span class="text-muted">
|
||||||
<span *ngIf="item.allMetadata(['person.identifier.jobtitle']).length > 0"
|
<span *ngIf="item.allMetadata(['person.jobTitle']).length > 0"
|
||||||
class="item-list-job-title">
|
class="item-list-job-title">
|
||||||
<span *ngFor="let value of allMetadataValues(['person.identifier.jobtitle']); let last=last;">
|
<span *ngFor="let value of allMetadataValues(['person.jobTitle']); let last=last;">
|
||||||
<span [innerHTML]="value"><span [innerHTML]="value"></span></span>
|
<span [innerHTML]="value"><span [innerHTML]="value"></span></span>
|
||||||
</span>
|
</span>
|
||||||
</span>
|
</span>
|
||||||
@@ -10,6 +10,6 @@
|
|||||||
</ng-template>
|
</ng-template>
|
||||||
<ds-truncatable [id]="item.id">
|
<ds-truncatable [id]="item.id">
|
||||||
<a [routerLink]="['/items/' + item.id]"
|
<a [routerLink]="['/items/' + item.id]"
|
||||||
[innerHTML]="firstMetadataValue('dc.contributor.author')"
|
[innerHTML]="firstMetadataValue('person.familyName') + ', ' + firstMetadataValue('person.givenName')"
|
||||||
[tooltip]="descTemplate"></a>
|
[tooltip]="descTemplate"></a>
|
||||||
</ds-truncatable>
|
</ds-truncatable>
|
||||||
|
@@ -1,16 +1,16 @@
|
|||||||
<ds-truncatable [id]="item.id">
|
<ds-truncatable [id]="item.id">
|
||||||
<a
|
<a
|
||||||
[routerLink]="['/items/' + item.id]" class="lead"
|
[routerLink]="['/items/' + item.id]" class="lead"
|
||||||
[innerHTML]="firstMetadataValue('project.identifier.name')"></a>
|
[innerHTML]="firstMetadataValue('dc.title')"></a>
|
||||||
<span class="text-muted">
|
<!--<span class="text-muted">-->
|
||||||
<ds-truncatable-part [id]="item.id" [minLines]="1">
|
<!--<ds-truncatable-part [id]="item.id" [minLines]="1">-->
|
||||||
<span *ngIf="item.allMetadata(['project.identifier.status']).length > 0"
|
<!--<span *ngIf="item.allMetadata(['project.identifier.status']).length > 0"-->
|
||||||
class="item-list-status">
|
<!--class="item-list-status">-->
|
||||||
<span *ngFor="let value of allMetadataValues(['project.identifier.status']); let last=last;">
|
<!--<span *ngFor="let value of allMetadataValues(['project.identifier.status']); let last=last;">-->
|
||||||
<span [innerHTML]="value"><span [innerHTML]="value"></span></span>
|
<!--<span [innerHTML]="value"><span [innerHTML]="value"></span></span>-->
|
||||||
</span>
|
<!--</span>-->
|
||||||
</span>
|
<!--</span>-->
|
||||||
</ds-truncatable-part>
|
<!--</ds-truncatable-part>-->
|
||||||
</span>
|
<!--</span>-->
|
||||||
</ds-truncatable>
|
</ds-truncatable>
|
||||||
|
|
||||||
|
@@ -20,12 +20,12 @@ const mockItemWithMetadata: Item = Object.assign(new Item(), {
|
|||||||
value: 'This is just another title'
|
value: 'This is just another title'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'project.identifier.status': [
|
// 'project.identifier.status': [
|
||||||
{
|
// {
|
||||||
language: 'en_US',
|
// language: 'en_US',
|
||||||
value: 'A status about the project'
|
// value: 'A status about the project'
|
||||||
}
|
// }
|
||||||
]
|
// ]
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const mockItemWithoutMetadata: Item = Object.assign(new Item(), {
|
const mockItemWithoutMetadata: Item = Object.assign(new Item(), {
|
||||||
@@ -61,27 +61,27 @@ describe('ProjectListElementComponent', () => {
|
|||||||
|
|
||||||
}));
|
}));
|
||||||
|
|
||||||
describe('When the item has a status', () => {
|
// describe('When the item has a status', () => {
|
||||||
beforeEach(() => {
|
// beforeEach(() => {
|
||||||
projectListElementComponent.item = mockItemWithMetadata;
|
// projectListElementComponent.item = mockItemWithMetadata;
|
||||||
fixture.detectChanges();
|
// fixture.detectChanges();
|
||||||
});
|
// });
|
||||||
|
//
|
||||||
it('should show the status span', () => {
|
// it('should show the status span', () => {
|
||||||
const statusField = fixture.debugElement.query(By.css('span.item-list-status'));
|
// const statusField = fixture.debugElement.query(By.css('span.item-list-status'));
|
||||||
expect(statusField).not.toBeNull();
|
// expect(statusField).not.toBeNull();
|
||||||
});
|
// });
|
||||||
});
|
// });
|
||||||
|
//
|
||||||
describe('When the item has no status', () => {
|
// describe('When the item has no status', () => {
|
||||||
beforeEach(() => {
|
// beforeEach(() => {
|
||||||
projectListElementComponent.item = mockItemWithoutMetadata;
|
// projectListElementComponent.item = mockItemWithoutMetadata;
|
||||||
fixture.detectChanges();
|
// fixture.detectChanges();
|
||||||
});
|
// });
|
||||||
|
//
|
||||||
it('should not show the status span', () => {
|
// it('should not show the status span', () => {
|
||||||
const statusField = fixture.debugElement.query(By.css('span.item-list-status'));
|
// const statusField = fixture.debugElement.query(By.css('span.item-list-status'));
|
||||||
expect(statusField).toBeNull();
|
// expect(statusField).toBeNull();
|
||||||
});
|
// });
|
||||||
});
|
// });
|
||||||
});
|
});
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
<h2 class="item-page-title-field">
|
<h2 class="item-page-title-field">
|
||||||
{{'orgunit.page.titleprefix' | translate}}<ds-metadata-values [mdValues]="item?.allMetadata(['orgunit.identifier.name'])"></ds-metadata-values>
|
{{'orgunit.page.titleprefix' | translate}}<ds-metadata-values [mdValues]="item?.allMetadata(['organization.legalName'])"></ds-metadata-values>
|
||||||
</h2>
|
</h2>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-12 col-md-4">
|
<div class="col-xs-12 col-md-4">
|
||||||
@@ -7,19 +7,19 @@
|
|||||||
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async" [defaultImage]="'assets/images/orgunit-placeholder.svg'"></ds-thumbnail>
|
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async" [defaultImage]="'assets/images/orgunit-placeholder.svg'"></ds-thumbnail>
|
||||||
</ds-metadata-field-wrapper>
|
</ds-metadata-field-wrapper>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['orgunit.identifier.dateestablished']"
|
[fields]="['organization.foundingDate']"
|
||||||
[label]="'orgunit.page.dateestablished'">
|
[label]="'orgunit.page.dateestablished'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['orgunit.identifier.city']"
|
[fields]="['organization.address.addressLocality']"
|
||||||
[label]="'orgunit.page.city'">
|
[label]="'orgunit.page.city'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['orgunit.identifier.country']"
|
[fields]="['organization.adress.addressCountry']"
|
||||||
[label]="'orgunit.page.country'">
|
[label]="'orgunit.page.country'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['orgunit.identifier.id']"
|
[fields]="['dc.identifier']"
|
||||||
[label]="'orgunit.page.id'">
|
[label]="'orgunit.page.id'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
</div>
|
</div>
|
||||||
@@ -37,7 +37,7 @@
|
|||||||
[label]="'relationships.isPublicationOf' | translate">
|
[label]="'relationships.isPublicationOf' | translate">
|
||||||
</ds-related-items>
|
</ds-related-items>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['orgunit.identifier.description']"
|
[fields]="['dc.description']"
|
||||||
[label]="'orgunit.page.description'">
|
[label]="'orgunit.page.description'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<div>
|
<div>
|
||||||
|
@@ -12,31 +12,31 @@ import {
|
|||||||
const mockItem: Item = Object.assign(new Item(), {
|
const mockItem: Item = Object.assign(new Item(), {
|
||||||
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
||||||
metadata: {
|
metadata: {
|
||||||
'orgunit.identifier.dateestablished': [
|
'organization.foundingDate': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: '2018'
|
value: '2018'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'orgunit.identifier.city': [
|
'organization.address.addressLocality': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'New York'
|
value: 'New York'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'orgunit.identifier.country': [
|
'organization.adress.addressCountry': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'USA'
|
value: 'USA'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'orgunit.identifier.id': [
|
'dc.identifier': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: '1'
|
value: '1'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'orgunit.identifier.description': [
|
'dc.description': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'desc'
|
value: 'desc'
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
<h2 class="item-page-title-field">
|
<h2 class="item-page-title-field">
|
||||||
{{'person.page.titleprefix' | translate}}<ds-metadata-values [mdValues]="item?.allMetadata(['dc.contributor.author'])"></ds-metadata-values>
|
{{'person.page.titleprefix' | translate}}<ds-metadata-values [mdValues]="[item?.firstMetadata('person.familyName'), item?.firstMetadata('person.givenName')]" [separator]="', '"></ds-metadata-values>
|
||||||
</h2>
|
</h2>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-12 col-md-4">
|
<div class="col-xs-12 col-md-4">
|
||||||
@@ -7,21 +7,21 @@
|
|||||||
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async" [defaultImage]="'assets/images/person-placeholder.svg'"></ds-thumbnail>
|
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async" [defaultImage]="'assets/images/person-placeholder.svg'"></ds-thumbnail>
|
||||||
</ds-metadata-field-wrapper>
|
</ds-metadata-field-wrapper>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['person.identifier.email']"
|
[fields]="['person.email']"
|
||||||
[label]="'person.page.email'">
|
[label]="'person.page.email'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
|
<!--<ds-generic-item-page-field [item]="item"-->
|
||||||
|
<!--[fields]="['person.identifier.orcid']"-->
|
||||||
|
<!--[label]="'person.page.orcid'">-->
|
||||||
|
<!--</ds-generic-item-page-field>-->
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['person.identifier.orcid']"
|
[fields]="['person.birthDate']"
|
||||||
[label]="'person.page.orcid'">
|
|
||||||
</ds-generic-item-page-field>
|
|
||||||
<ds-generic-item-page-field [item]="item"
|
|
||||||
[fields]="['person.identifier.birthdate']"
|
|
||||||
[label]="'person.page.birthdate'">
|
[label]="'person.page.birthdate'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<!--<ds-generic-item-page-field [item]="item"-->
|
||||||
[fields]="['person.identifier.staffid']"
|
<!--[fields]="['person.identifier.staffid']"-->
|
||||||
[label]="'person.page.staffid'">
|
<!--[label]="'person.page.staffid'">-->
|
||||||
</ds-generic-item-page-field>
|
<!--</ds-generic-item-page-field>-->
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-12 col-md-6">
|
<div class="col-xs-12 col-md-6">
|
||||||
<ds-related-items
|
<ds-related-items
|
||||||
@@ -33,15 +33,15 @@
|
|||||||
[label]="'relationships.isOrgUnitOf' | translate">
|
[label]="'relationships.isOrgUnitOf' | translate">
|
||||||
</ds-related-items>
|
</ds-related-items>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['person.identifier.jobtitle']"
|
[fields]="['person.jobTitle']"
|
||||||
[label]="'person.page.jobtitle'">
|
[label]="'person.page.jobtitle'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['person.identifier.lastname']"
|
[fields]="['person.familyName']"
|
||||||
[label]="'person.page.lastname'">
|
[label]="'person.page.lastname'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['person.identifier.firstname']"
|
[fields]="['person.givenName']"
|
||||||
[label]="'person.page.firstname'">
|
[label]="'person.page.firstname'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<div>
|
<div>
|
||||||
|
@@ -12,43 +12,43 @@ import {
|
|||||||
const mockItem: Item = Object.assign(new Item(), {
|
const mockItem: Item = Object.assign(new Item(), {
|
||||||
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
||||||
metadata: {
|
metadata: {
|
||||||
'person.identifier.email': [
|
'person.email': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'fake@email.com'
|
value: 'fake@email.com'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'person.identifier.orcid': [
|
// 'person.identifier.orcid': [
|
||||||
{
|
// {
|
||||||
language: 'en_US',
|
// language: 'en_US',
|
||||||
value: 'ORCID-1'
|
// value: 'ORCID-1'
|
||||||
}
|
// }
|
||||||
],
|
// ],
|
||||||
'person.identifier.birthdate': [
|
'person.birthDate': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: '1993'
|
value: '1993'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'person.identifier.staffid': [
|
// 'person.identifier.staffid': [
|
||||||
{
|
// {
|
||||||
language: 'en_US',
|
// language: 'en_US',
|
||||||
value: '1'
|
// value: '1'
|
||||||
}
|
// }
|
||||||
],
|
// ],
|
||||||
'person.identifier.jobtitle': [
|
'person.jobTitle': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'Developer'
|
value: 'Developer'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'person.identifier.lastname': [
|
'person.familyName': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'Doe'
|
value: 'Doe'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'person.identifier.firstname': [
|
'person.givenName': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'John'
|
value: 'John'
|
||||||
|
@@ -1,15 +1,15 @@
|
|||||||
<h2 class="item-page-title-field">
|
<h2 class="item-page-title-field">
|
||||||
{{'project.page.titleprefix' | translate}}<ds-metadata-values [mdValues]="item?.allMetadata(['project.identifier.name'])"></ds-metadata-values>
|
{{'project.page.titleprefix' | translate}}<ds-metadata-values [mdValues]="item?.allMetadata(['dc.title'])"></ds-metadata-values>
|
||||||
</h2>
|
</h2>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-xs-12 col-md-4">
|
<div class="col-xs-12 col-md-4">
|
||||||
<ds-metadata-field-wrapper>
|
<ds-metadata-field-wrapper>
|
||||||
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async" [defaultImage]="'assets/images/project-placeholder.svg'"></ds-thumbnail>
|
<ds-thumbnail [thumbnail]="this.item.getThumbnail() | async" [defaultImage]="'assets/images/project-placeholder.svg'"></ds-thumbnail>
|
||||||
</ds-metadata-field-wrapper>
|
</ds-metadata-field-wrapper>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<!--<ds-generic-item-page-field [item]="item"-->
|
||||||
[fields]="['project.identifier.status']"
|
<!--[fields]="['project.identifier.status']"-->
|
||||||
[label]="'project.page.status'">
|
<!--[label]="'project.page.status'">-->
|
||||||
</ds-generic-item-page-field>
|
<!--</ds-generic-item-page-field>-->
|
||||||
<ds-metadata-representation-list
|
<ds-metadata-representation-list
|
||||||
[label]="'project.page.contributor' | translate"
|
[label]="'project.page.contributor' | translate"
|
||||||
[representations]="contributors$ | async">
|
[representations]="contributors$ | async">
|
||||||
@@ -19,13 +19,13 @@
|
|||||||
[label]="'project.page.funder'">
|
[label]="'project.page.funder'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['project.identifier.id']"
|
[fields]="['dc.identifier']"
|
||||||
[label]="'project.page.id'">
|
[label]="'project.page.id'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<!--<ds-generic-item-page-field [item]="item"-->
|
||||||
[fields]="['project.identifier.expectedcompletion']"
|
<!--[fields]="['project.identifier.expectedcompletion']"-->
|
||||||
[label]="'project.page.expectedcompletion'">
|
<!--[label]="'project.page.expectedcompletion'">-->
|
||||||
</ds-generic-item-page-field>
|
<!--</ds-generic-item-page-field>-->
|
||||||
</div>
|
</div>
|
||||||
<div class="col-xs-12 col-md-6">
|
<div class="col-xs-12 col-md-6">
|
||||||
<ds-related-items
|
<ds-related-items
|
||||||
@@ -41,11 +41,11 @@
|
|||||||
[label]="'relationships.isOrgUnitOf' | translate">
|
[label]="'relationships.isOrgUnitOf' | translate">
|
||||||
</ds-related-items>
|
</ds-related-items>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['project.identifier.description']"
|
[fields]="['dc.description']"
|
||||||
[label]="'project.page.description'">
|
[label]="'project.page.description'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<ds-generic-item-page-field [item]="item"
|
<ds-generic-item-page-field [item]="item"
|
||||||
[fields]="['project.identifier.keyword']"
|
[fields]="['dc.subject']"
|
||||||
[label]="'project.page.keyword'">
|
[label]="'project.page.keyword'">
|
||||||
</ds-generic-item-page-field>
|
</ds-generic-item-page-field>
|
||||||
<div>
|
<div>
|
||||||
|
@@ -12,31 +12,31 @@ import {
|
|||||||
const mockItem: Item = Object.assign(new Item(), {
|
const mockItem: Item = Object.assign(new Item(), {
|
||||||
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
bitstreams: observableOf(new RemoteData(false, false, true, null, new PaginatedList(new PageInfo(), []))),
|
||||||
metadata: {
|
metadata: {
|
||||||
'project.identifier.status': [
|
// 'project.identifier.status': [
|
||||||
{
|
// {
|
||||||
language: 'en_US',
|
// language: 'en_US',
|
||||||
value: 'published'
|
// value: 'published'
|
||||||
}
|
// }
|
||||||
],
|
// ],
|
||||||
'project.identifier.id': [
|
'dc.identifier': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: '1'
|
value: '1'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'project.identifier.expectedcompletion': [
|
// 'project.identifier.expectedcompletion': [
|
||||||
{
|
// {
|
||||||
language: 'en_US',
|
// language: 'en_US',
|
||||||
value: 'exp comp'
|
// value: 'exp comp'
|
||||||
}
|
// }
|
||||||
],
|
// ],
|
||||||
'project.identifier.description': [
|
'dc.description': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'keyword'
|
value: 'keyword'
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
'project.identifier.keyword': [
|
'dc.subject': [
|
||||||
{
|
{
|
||||||
language: 'en_US',
|
language: 'en_US',
|
||||||
value: 'keyword'
|
value: 'keyword'
|
||||||
|
@@ -1,4 +1,3 @@
|
|||||||
@import '../../styles/variables.scss';
|
|
||||||
$footer-bg: $gray-100;
|
$footer-bg: $gray-100;
|
||||||
$footer-border: 1px solid darken($footer-bg, 10%);
|
$footer-border: 1px solid darken($footer-bg, 10%);
|
||||||
$footer-padding: $spacer * 1.5;
|
$footer-padding: $spacer * 1.5;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../styles/variables.scss';
|
|
||||||
|
|
||||||
@media screen and (max-width: map-get($grid-breakpoints, md)) {
|
@media screen and (max-width: map-get($grid-breakpoints, md)) {
|
||||||
:host.open {
|
:host.open {
|
||||||
background-color: $white;
|
background-color: $white;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../styles/variables.scss';
|
|
||||||
|
|
||||||
.navbar-brand img {
|
.navbar-brand img {
|
||||||
height: $header-logo-height;
|
height: $header-logo-height;
|
||||||
@media screen and (max-width: map-get($grid-breakpoints, sm)) {
|
@media screen and (max-width: map-get($grid-breakpoints, sm)) {
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../styles/variables.scss';
|
|
||||||
|
|
||||||
.dropdown-menu {
|
.dropdown-menu {
|
||||||
overflow: hidden;
|
overflow: hidden;
|
||||||
min-width: 100%;
|
min-width: 100%;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../styles/variables.scss';
|
|
||||||
|
|
||||||
nav.navbar {
|
nav.navbar {
|
||||||
border-bottom: 1px $gray-400 solid;
|
border-bottom: 1px $gray-400 solid;
|
||||||
align-items: baseline;
|
align-items: baseline;
|
||||||
@@ -35,5 +33,3 @@ nav.navbar {
|
|||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -13,8 +13,8 @@ import { GLOBAL_CONFIG, GlobalConfig } from '../../config';
|
|||||||
*/
|
*/
|
||||||
@Component({
|
@Component({
|
||||||
selector: 'ds-navbar',
|
selector: 'ds-navbar',
|
||||||
styleUrls: ['navbar.component.scss'],
|
styleUrls: ['./navbar.component.scss'],
|
||||||
templateUrl: 'navbar.component.html',
|
templateUrl: './navbar.component.html',
|
||||||
animations: [slideMobileNav]
|
animations: [slideMobileNav]
|
||||||
})
|
})
|
||||||
export class NavbarComponent extends MenuComponent implements OnInit {
|
export class NavbarComponent extends MenuComponent implements OnInit {
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
@import '../../styles/variables.scss';
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import "../../../styles/variables";
|
|
||||||
|
|
||||||
.chip-selected {
|
.chip-selected {
|
||||||
background-color: map-get($theme-colors, info) !important;
|
background-color: map-get($theme-colors, info) !important;
|
||||||
}
|
}
|
||||||
|
@@ -1 +0,0 @@
|
|||||||
@import '../../../styles/variables.scss';
|
|
@@ -1 +0,0 @@
|
|||||||
@import '../../../styles/variables.scss';
|
|
@@ -1 +0,0 @@
|
|||||||
@import '../../../styles/variables.scss';
|
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import "../../../../../../../styles/variables";
|
|
||||||
|
|
||||||
.dropdown-toggle::after {
|
.dropdown-toggle::after {
|
||||||
display:none
|
display:none
|
||||||
}
|
}
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import "../../../../../../../styles/variables";
|
|
||||||
|
|
||||||
/* style fa-spin */
|
/* style fa-spin */
|
||||||
.fa-spin {
|
.fa-spin {
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import "../../../../../../../styles/variables";
|
|
||||||
|
|
||||||
:host /deep/ .dropdown-menu {
|
:host /deep/ .dropdown-menu {
|
||||||
width: 100% !important;
|
width: 100% !important;
|
||||||
max-height: $dropdown-menu-max-height;
|
max-height: $dropdown-menu-max-height;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import "../../../styles/_variables.scss";
|
|
||||||
|
|
||||||
.ds-form-input-addon {
|
.ds-form-input-addon {
|
||||||
border-top-right-radius: 0 !important;
|
border-top-right-radius: 0 !important;
|
||||||
border-bottom-right-radius: 0 !important;
|
border-bottom-right-radius: 0 !important;
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import "../../../styles/_variables.scss";
|
|
||||||
|
|
||||||
.autocomplete {
|
.autocomplete {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
.dropdown-item {
|
.dropdown-item {
|
||||||
|
@@ -1,5 +1,3 @@
|
|||||||
@import '../../../styles/variables.scss';
|
|
||||||
|
|
||||||
.form-login .form-control:focus {
|
.form-login .form-control:focus {
|
||||||
z-index: 2;
|
z-index: 2;
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user