diff --git a/.gitignore b/.gitignore
index d150e2eb8..79682d0c1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1,20 @@
dmp-frontend/dist.7z
+.idea/
+*.iml
+dmp-backend/src/main/ui-resources/static/vendor.bundle.js.map
+dmp-backend/src/main/ui-resources/static/vendor.bundle.js
+dmp-backend/src/main/ui-resources/static/unauthorized.module.chunk.js.map
+dmp-backend/src/main/ui-resources/static/unauthorized.module.chunk.js
+dmp-backend/src/main/ui-resources/static/styles.bundle.js.map
+dmp-backend/src/main/ui-resources/static/styles.bundle.js
+dmp-backend/src/main/ui-resources/static/polyfills.bundle.js.map
+dmp-backend/src/main/ui-resources/static/polyfills.bundle.js
+dmp-backend/src/main/ui-resources/static/main.bundle.js.map
+dmp-backend/src/main/ui-resources/static/main.bundle.js
+dmp-backend/src/main/ui-resources/static/lang/en.json
+dmp-backend/src/main/ui-resources/static/inline.bundle.js.map
+dmp-backend/src/main/ui-resources/static/inline.bundle.js
+dmp-backend/src/main/ui-resources/static/index.html
+dmp-backend/src/main/ui-resources/static/favicon.ico
+dmp-backend/src/main/ui-resources/static/assets/lang/en.json
+dmp-frontend/new 3.xml
diff --git a/dmp-admin/package-lock.json b/dmp-admin/package-lock.json
index ca43201dd..976e4eca1 100644
--- a/dmp-admin/package-lock.json
+++ b/dmp-admin/package-lock.json
@@ -1241,6 +1241,7 @@
"requires": {
"anymatch": "1.3.2",
"async-each": "1.0.1",
+ "fsevents": "1.1.3",
"glob-parent": "2.0.0",
"inherits": "2.0.3",
"is-binary-path": "1.0.1",
@@ -2964,6 +2965,910 @@
"integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=",
"dev": true
},
+ "fsevents": {
+ "version": "1.1.3",
+ "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-1.1.3.tgz",
+ "integrity": "sha512-WIr7iDkdmdbxu/Gh6eKEZJL6KPE74/5MEsf2whTOFNxbIoIixogroLdKYqB6FDav4Wavh/lZdzzd3b2KxIXC5Q==",
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "nan": "2.7.0",
+ "node-pre-gyp": "0.6.39"
+ },
+ "dependencies": {
+ "abbrev": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ajv": {
+ "version": "4.11.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "co": "4.6.0",
+ "json-stable-stringify": "1.0.1"
+ }
+ },
+ "ansi-regex": {
+ "version": "2.1.1",
+ "bundled": true,
+ "dev": true
+ },
+ "aproba": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "are-we-there-yet": {
+ "version": "1.1.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "delegates": "1.0.0",
+ "readable-stream": "2.2.9"
+ }
+ },
+ "asn1": {
+ "version": "0.2.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "assert-plus": {
+ "version": "0.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "asynckit": {
+ "version": "0.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "aws-sign2": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "aws4": {
+ "version": "1.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "balanced-match": {
+ "version": "0.4.2",
+ "bundled": true,
+ "dev": true
+ },
+ "bcrypt-pbkdf": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "tweetnacl": "0.14.5"
+ }
+ },
+ "block-stream": {
+ "version": "0.0.9",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "inherits": "2.0.3"
+ }
+ },
+ "boom": {
+ "version": "2.10.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "brace-expansion": {
+ "version": "1.1.7",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "balanced-match": "0.4.2",
+ "concat-map": "0.0.1"
+ }
+ },
+ "buffer-shims": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "caseless": {
+ "version": "0.12.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "co": {
+ "version": "4.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "code-point-at": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "combined-stream": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "delayed-stream": "1.0.0"
+ }
+ },
+ "concat-map": {
+ "version": "0.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "console-control-strings": {
+ "version": "1.1.0",
+ "bundled": true,
+ "dev": true
+ },
+ "core-util-is": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "cryptiles": {
+ "version": "2.0.5",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "boom": "2.10.1"
+ }
+ },
+ "dashdash": {
+ "version": "1.14.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "assert-plus": "1.0.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "debug": {
+ "version": "2.6.8",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ms": "2.0.0"
+ }
+ },
+ "deep-extend": {
+ "version": "0.4.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "delayed-stream": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "delegates": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "detect-libc": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "ecc-jsbn": {
+ "version": "0.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "0.1.1"
+ }
+ },
+ "extend": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "extsprintf": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "forever-agent": {
+ "version": "0.6.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "form-data": {
+ "version": "2.1.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "asynckit": "0.4.0",
+ "combined-stream": "1.0.5",
+ "mime-types": "2.1.15"
+ }
+ },
+ "fs.realpath": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "fstream": {
+ "version": "1.0.11",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "graceful-fs": "4.1.11",
+ "inherits": "2.0.3",
+ "mkdirp": "0.5.1",
+ "rimraf": "2.6.1"
+ }
+ },
+ "fstream-ignore": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "fstream": "1.0.11",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4"
+ }
+ },
+ "gauge": {
+ "version": "2.7.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "aproba": "1.1.1",
+ "console-control-strings": "1.1.0",
+ "has-unicode": "2.0.1",
+ "object-assign": "4.1.1",
+ "signal-exit": "3.0.2",
+ "string-width": "1.0.2",
+ "strip-ansi": "3.0.1",
+ "wide-align": "1.1.2"
+ }
+ },
+ "getpass": {
+ "version": "0.1.7",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "assert-plus": "1.0.0"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "glob": {
+ "version": "7.1.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "fs.realpath": "1.0.0",
+ "inflight": "1.0.6",
+ "inherits": "2.0.3",
+ "minimatch": "3.0.4",
+ "once": "1.4.0",
+ "path-is-absolute": "1.0.1"
+ }
+ },
+ "graceful-fs": {
+ "version": "4.1.11",
+ "bundled": true,
+ "dev": true
+ },
+ "har-schema": {
+ "version": "1.0.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "har-validator": {
+ "version": "4.2.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "ajv": "4.11.8",
+ "har-schema": "1.0.5"
+ }
+ },
+ "has-unicode": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "hawk": {
+ "version": "3.1.3",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "boom": "2.10.1",
+ "cryptiles": "2.0.5",
+ "hoek": "2.16.3",
+ "sntp": "1.0.9"
+ }
+ },
+ "hoek": {
+ "version": "2.16.3",
+ "bundled": true,
+ "dev": true
+ },
+ "http-signature": {
+ "version": "1.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "assert-plus": "0.2.0",
+ "jsprim": "1.4.0",
+ "sshpk": "1.13.0"
+ }
+ },
+ "inflight": {
+ "version": "1.0.6",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "once": "1.4.0",
+ "wrappy": "1.0.2"
+ }
+ },
+ "inherits": {
+ "version": "2.0.3",
+ "bundled": true,
+ "dev": true
+ },
+ "ini": {
+ "version": "1.3.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "is-fullwidth-code-point": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "number-is-nan": "1.0.1"
+ }
+ },
+ "is-typedarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "isarray": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true
+ },
+ "isstream": {
+ "version": "0.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "jodid25519": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "jsbn": "0.1.1"
+ }
+ },
+ "jsbn": {
+ "version": "0.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "json-schema": {
+ "version": "0.2.3",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "json-stable-stringify": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "jsonify": "0.0.0"
+ }
+ },
+ "json-stringify-safe": {
+ "version": "5.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "jsonify": {
+ "version": "0.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "jsprim": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "assert-plus": "1.0.0",
+ "extsprintf": "1.0.2",
+ "json-schema": "0.2.3",
+ "verror": "1.3.6"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "mime-db": {
+ "version": "1.27.0",
+ "bundled": true,
+ "dev": true
+ },
+ "mime-types": {
+ "version": "2.1.15",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "mime-db": "1.27.0"
+ }
+ },
+ "minimatch": {
+ "version": "3.0.4",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "brace-expansion": "1.1.7"
+ }
+ },
+ "minimist": {
+ "version": "0.0.8",
+ "bundled": true,
+ "dev": true
+ },
+ "mkdirp": {
+ "version": "0.5.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "minimist": "0.0.8"
+ }
+ },
+ "ms": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "node-pre-gyp": {
+ "version": "0.6.39",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "detect-libc": "1.0.2",
+ "hawk": "3.1.3",
+ "mkdirp": "0.5.1",
+ "nopt": "4.0.1",
+ "npmlog": "4.1.0",
+ "rc": "1.2.1",
+ "request": "2.81.0",
+ "rimraf": "2.6.1",
+ "semver": "5.3.0",
+ "tar": "2.2.1",
+ "tar-pack": "3.4.0"
+ }
+ },
+ "nopt": {
+ "version": "4.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "abbrev": "1.1.0",
+ "osenv": "0.1.4"
+ }
+ },
+ "npmlog": {
+ "version": "4.1.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "are-we-there-yet": "1.1.4",
+ "console-control-strings": "1.1.0",
+ "gauge": "2.7.4",
+ "set-blocking": "2.0.0"
+ }
+ },
+ "number-is-nan": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "oauth-sign": {
+ "version": "0.8.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "object-assign": {
+ "version": "4.1.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "once": {
+ "version": "1.4.0",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "wrappy": "1.0.2"
+ }
+ },
+ "os-homedir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "os-tmpdir": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "osenv": {
+ "version": "0.1.4",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "os-homedir": "1.0.2",
+ "os-tmpdir": "1.0.2"
+ }
+ },
+ "path-is-absolute": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "performance-now": {
+ "version": "0.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "process-nextick-args": {
+ "version": "1.0.7",
+ "bundled": true,
+ "dev": true
+ },
+ "punycode": {
+ "version": "1.4.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "qs": {
+ "version": "6.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "rc": {
+ "version": "1.2.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "deep-extend": "0.4.2",
+ "ini": "1.3.4",
+ "minimist": "1.2.0",
+ "strip-json-comments": "2.0.1"
+ },
+ "dependencies": {
+ "minimist": {
+ "version": "1.2.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "readable-stream": {
+ "version": "2.2.9",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "buffer-shims": "1.0.0",
+ "core-util-is": "1.0.2",
+ "inherits": "2.0.3",
+ "isarray": "1.0.0",
+ "process-nextick-args": "1.0.7",
+ "string_decoder": "1.0.1",
+ "util-deprecate": "1.0.2"
+ }
+ },
+ "request": {
+ "version": "2.81.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "aws-sign2": "0.6.0",
+ "aws4": "1.6.0",
+ "caseless": "0.12.0",
+ "combined-stream": "1.0.5",
+ "extend": "3.0.1",
+ "forever-agent": "0.6.1",
+ "form-data": "2.1.4",
+ "har-validator": "4.2.1",
+ "hawk": "3.1.3",
+ "http-signature": "1.1.1",
+ "is-typedarray": "1.0.0",
+ "isstream": "0.1.2",
+ "json-stringify-safe": "5.0.1",
+ "mime-types": "2.1.15",
+ "oauth-sign": "0.8.2",
+ "performance-now": "0.2.0",
+ "qs": "6.4.0",
+ "safe-buffer": "5.0.1",
+ "stringstream": "0.0.5",
+ "tough-cookie": "2.3.2",
+ "tunnel-agent": "0.6.0",
+ "uuid": "3.0.1"
+ }
+ },
+ "rimraf": {
+ "version": "2.6.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "glob": "7.1.2"
+ }
+ },
+ "safe-buffer": {
+ "version": "5.0.1",
+ "bundled": true,
+ "dev": true
+ },
+ "semver": {
+ "version": "5.3.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "set-blocking": {
+ "version": "2.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "signal-exit": {
+ "version": "3.0.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "sntp": {
+ "version": "1.0.9",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "hoek": "2.16.3"
+ }
+ },
+ "sshpk": {
+ "version": "1.13.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "asn1": "0.2.3",
+ "assert-plus": "1.0.0",
+ "bcrypt-pbkdf": "1.0.1",
+ "dashdash": "1.14.1",
+ "ecc-jsbn": "0.1.1",
+ "getpass": "0.1.7",
+ "jodid25519": "1.0.2",
+ "jsbn": "0.1.1",
+ "tweetnacl": "0.14.5"
+ },
+ "dependencies": {
+ "assert-plus": {
+ "version": "1.0.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ }
+ }
+ },
+ "string-width": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "code-point-at": "1.1.0",
+ "is-fullwidth-code-point": "1.0.0",
+ "strip-ansi": "3.0.1"
+ }
+ },
+ "string_decoder": {
+ "version": "1.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "safe-buffer": "5.0.1"
+ }
+ },
+ "stringstream": {
+ "version": "0.0.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "strip-ansi": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "ansi-regex": "2.1.1"
+ }
+ },
+ "strip-json-comments": {
+ "version": "2.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "tar": {
+ "version": "2.2.1",
+ "bundled": true,
+ "dev": true,
+ "requires": {
+ "block-stream": "0.0.9",
+ "fstream": "1.0.11",
+ "inherits": "2.0.3"
+ }
+ },
+ "tar-pack": {
+ "version": "3.4.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "debug": "2.6.8",
+ "fstream": "1.0.11",
+ "fstream-ignore": "1.0.5",
+ "once": "1.4.0",
+ "readable-stream": "2.2.9",
+ "rimraf": "2.6.1",
+ "tar": "2.2.1",
+ "uid-number": "0.0.6"
+ }
+ },
+ "tough-cookie": {
+ "version": "2.3.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "punycode": "1.4.1"
+ }
+ },
+ "tunnel-agent": {
+ "version": "0.6.0",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "safe-buffer": "5.0.1"
+ }
+ },
+ "tweetnacl": {
+ "version": "0.14.5",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "uid-number": {
+ "version": "0.0.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "util-deprecate": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ },
+ "uuid": {
+ "version": "3.0.1",
+ "bundled": true,
+ "dev": true,
+ "optional": true
+ },
+ "verror": {
+ "version": "1.3.6",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "extsprintf": "1.0.2"
+ }
+ },
+ "wide-align": {
+ "version": "1.1.2",
+ "bundled": true,
+ "dev": true,
+ "optional": true,
+ "requires": {
+ "string-width": "1.0.2"
+ }
+ },
+ "wrappy": {
+ "version": "1.0.2",
+ "bundled": true,
+ "dev": true
+ }
+ }
+ },
"fstream": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.11.tgz",
diff --git a/dmp-admin/src/app/app.component.css b/dmp-admin/src/app/app.component.css
index 8e856d79c..75fcc7987 100644
--- a/dmp-admin/src/app/app.component.css
+++ b/dmp-admin/src/app/app.component.css
@@ -17,4 +17,12 @@
.cursor{
cursor: pointer;
+}
+
+.hide{
+ display:none;
+}
+
+.show {
+ display:block;
}
\ No newline at end of file
diff --git a/dmp-admin/src/app/app.component.html b/dmp-admin/src/app/app.component.html
index 503b172b9..8033861af 100644
--- a/dmp-admin/src/app/app.component.html
+++ b/dmp-admin/src/app/app.component.html
@@ -39,7 +39,8 @@
-
+
+
diff --git a/dmp-admin/src/app/app.module.ts b/dmp-admin/src/app/app.module.ts
index 035f88606..6f798be24 100644
--- a/dmp-admin/src/app/app.module.ts
+++ b/dmp-admin/src/app/app.module.ts
@@ -1,9 +1,19 @@
+import { CheckBoxComponent } from './components/checkbox/checkbox-component';
+import { FreeTextData } from './models/DataField/FreeTextData';
+import { BooleanDecisionComponent } from './components/booleanDecision/booleanDecision-component';
+import { FreeTextComponent } from './components/freetext/freetext-component';
+import { TextAreaComponent } from './components/textarea/textarea-component';
+import { RadioBoxComponent } from './components/radiobox/radiobox-component';
+import { WordlistComponent } from './components/wordlist/wordlist-component';
+import { AutocompleteComponent } from './components/autocomplete/autocomplete-component';
+import { ComboboxComponent } from './components/combobox/combobox-component';
+
+
import { BrowserModule } from '@angular/platform-browser';
import { RouterModule, Routes } from '@angular/router';
import { NgModule } from '@angular/core';
-//import { HttpModule, Http, Response, RequestOptions, RequestMethod, Headers, URLSearchParams } from '@angular/http';
import { HttpClientModule, HttpClient, HTTP_INTERCEPTORS } from '@angular/common/http';
-import { HttpModule} from '@angular/http';
+import { HttpModule } from '@angular/http';
import { DataTableModule } from "angular2-datatable";
import { NgbModule } from '@ng-bootstrap/ng-bootstrap';
import { DialogService } from "ng2-bootstrap-modal";
@@ -27,7 +37,7 @@ import { DatarepoService } from './services/datarepo-service';
import { GlobalInterceptor } from './services/interceptor';
import { Toolbox } from './services/toolbox';
-import { DataFilterPipe } from './pipes/data-filter.pipe';
+import { DataFilterPipe } from './pipes/data-filter.pipe';
import { DatasetProfileTableFilterPipe } from './pipes/datasetprofile-table-filter.pipe';
import { DmpTableFilterPipe } from './pipes/dmp-table-filter.pipe';
import { ServiceTableFilterPipe } from './pipes/service-table-filter.pipe';
@@ -61,6 +71,15 @@ import { DatareposEditorComponent } from './managers/datarepos-editor/datarepos-
import { DatasetprofileEditorComponent } from './managers/datasetprofile-editor/datasetprofile-editor.component';
import { DatasetProfileGUIEditorComponent } from './dataset-profile-gui-editor/dataset-profile-gui-editor.component';
+import { FieldFormComponent } from './dataset-profile-form/field-form/field-form.component';
+import { FormComponent } from './dataset-profile-form/form/form.component';
+import { GroupFieldFormComponent } from './dataset-profile-form/groupfield-form/groupfield-form.component';
+import { RuleFormComponent } from './dataset-profile-form/rule-component/rule.component';
+import { SectionFormComponent } from './dataset-profile-form/section-form/section-form.component';
+import { PageFormComponent } from './dataset-profile-form/page-form/page-component';
+import { CompositeFieldFormComponent } from './dataset-profile-form/compositefield-form/compositefield-form.component';
+
+
@NgModule({
@@ -75,9 +94,20 @@ import { DatasetProfileGUIEditorComponent } from './dataset-profile-gui-editor/d
ServiceTableFilterPipe,
ResearcherTableFilterPipe,
DatarepoTableFilterPipe,
-
+
AppComponent,
GooggleSignInComponent,
+ FieldFormComponent,
+ FormComponent,
+ GroupFieldFormComponent,
+ RuleFormComponent,
+ SectionFormComponent,
+ PageFormComponent,
+ CompositeFieldFormComponent,
+ ComboboxComponent,
+ AutocompleteComponent,
+ WordlistComponent,
+ RadioBoxComponent,
DatasetsViewerComponent,
ProfileEditorComponent,
PropertiesEditorComponent,
@@ -94,7 +124,11 @@ import { DatasetProfileGUIEditorComponent } from './dataset-profile-gui-editor/d
ResearcherEditorComponent,
DatareposEditorComponent,
DatasetprofileEditorComponent,
- DatasetProfileGUIEditorComponent
+ DatasetProfileGUIEditorComponent,
+ TextAreaComponent,
+ CheckBoxComponent,
+ BooleanDecisionComponent,
+ FreeTextComponent
],
imports: [
BrowserModule,
@@ -109,13 +143,13 @@ import { DatasetProfileGUIEditorComponent } from './dataset-profile-gui-editor/d
AppRouting
],
providers: [{
- provide: HTTP_INTERCEPTORS,
- useClass: GlobalInterceptor,
- multi: true,
- },
- DatasetsServiceService, TokenService, DmpsServiceService, ResearcherService,
- DialogService, DatasetProfileService, ProjectService, OrganisationService, DatarepoService,
- DmpProfileService, RegistryService, ServiceService, NativeLoginService, HttpModule, Toolbox, HttpClient, RestBase],
+ provide: HTTP_INTERCEPTORS,
+ useClass: GlobalInterceptor,
+ multi: true,
+ },
+ DatasetsServiceService, TokenService, DmpsServiceService, ResearcherService,
+ DialogService, DatasetProfileService, ProjectService, OrganisationService, DatarepoService,
+ DmpProfileService, RegistryService, ServiceService, NativeLoginService, HttpModule, Toolbox, HttpClient, RestBase],
bootstrap: [AppComponent]
})
export class AppModule { }
diff --git a/dmp-admin/src/app/bootstrap/profile-editor/profile-editor.component.ts b/dmp-admin/src/app/bootstrap/profile-editor/profile-editor.component.ts
index 2e510c887..ef479a242 100644
--- a/dmp-admin/src/app/bootstrap/profile-editor/profile-editor.component.ts
+++ b/dmp-admin/src/app/bootstrap/profile-editor/profile-editor.component.ts
@@ -12,7 +12,7 @@ declare function simple_notifier(type: string, title: string, message:string): a
})
export class ProfileEditorComponent implements OnInit {
- @Input('profileID') profileID: string = null;
+ public profileID: string = null;
profile : any = new Array();
diff --git a/dmp-admin/src/app/common/validationTypes.ts b/dmp-admin/src/app/common/validationTypes.ts
new file mode 100644
index 000000000..7dbeabd02
--- /dev/null
+++ b/dmp-admin/src/app/common/validationTypes.ts
@@ -0,0 +1,4 @@
+export enum ValidationTypes {
+ None = 0,
+ Required = 1
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/autocomplete/autocomplete-component.html b/dmp-admin/src/app/components/autocomplete/autocomplete-component.html
new file mode 100644
index 000000000..aa75c0aff
--- /dev/null
+++ b/dmp-admin/src/app/components/autocomplete/autocomplete-component.html
@@ -0,0 +1,13 @@
+
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/autocomplete/autocomplete-component.ts b/dmp-admin/src/app/components/autocomplete/autocomplete-component.ts
new file mode 100644
index 000000000..28fbcb69e
--- /dev/null
+++ b/dmp-admin/src/app/components/autocomplete/autocomplete-component.ts
@@ -0,0 +1,23 @@
+import { AutocompleteData } from '../../models/DataField/AutocompleteData';
+import { Field } from '../../models/DataSetProfile/Field';
+import { FormGroup } from '@angular/forms';
+import { Component, Input, OnInit } from '@angular/core';
+import { FormArray } from '@angular/forms/src/model';
+
+@Component({
+ selector: 'autocomplete-component',
+ templateUrl: './autocomplete-component.html'
+})
+export class AutocompleteComponent implements OnInit{
+ @Input() dataModel: Field;
+ @Input() form: FormGroup;
+ private data:AutocompleteData = new AutocompleteData();
+
+ ngOnInit(){
+ this.data.type= "autocomplete";
+ let autocomplete: AutocompleteData = new AutocompleteData();
+ //this.dataModel.data = new JsonSerializer().fromJSONObject(this.data,AutocompleteData);
+ //(this.form.get("data")).push(autocomplete.buildForm());
+ this.form.addControl("data", this.data.buildForm());
+ }
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/booleanDecision/booleanDecision-component.html b/dmp-admin/src/app/components/booleanDecision/booleanDecision-component.html
new file mode 100644
index 000000000..2411edac1
--- /dev/null
+++ b/dmp-admin/src/app/components/booleanDecision/booleanDecision-component.html
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/booleanDecision/booleanDecision-component.ts b/dmp-admin/src/app/components/booleanDecision/booleanDecision-component.ts
new file mode 100644
index 000000000..c5f844075
--- /dev/null
+++ b/dmp-admin/src/app/components/booleanDecision/booleanDecision-component.ts
@@ -0,0 +1,19 @@
+import { Field } from '../../models/DataSetProfile/Field';
+import { BooleanDecisionData } from '../../models/DataField/BooleanDecisionData';
+import { FormGroup } from '@angular/forms';
+import { Component, Input, OnInit } from '@angular/core';
+import { FormArray } from '@angular/forms/src/model';
+
+@Component({
+ selector: 'booleanDecision-component',
+ templateUrl: './booleanDecision-component.html'
+})
+export class BooleanDecisionComponent implements OnInit{
+ @Input() dataModel: Field;
+ @Input() form: FormGroup;
+ private data:BooleanDecisionData = new BooleanDecisionData();
+
+ ngOnInit(){
+ this.form.addControl("data", this.data.buildForm());
+ }
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/checkbox/checkbox-component.html b/dmp-admin/src/app/components/checkbox/checkbox-component.html
new file mode 100644
index 000000000..2411edac1
--- /dev/null
+++ b/dmp-admin/src/app/components/checkbox/checkbox-component.html
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/checkbox/checkbox-component.ts b/dmp-admin/src/app/components/checkbox/checkbox-component.ts
new file mode 100644
index 000000000..d8553c086
--- /dev/null
+++ b/dmp-admin/src/app/components/checkbox/checkbox-component.ts
@@ -0,0 +1,20 @@
+import { Field } from '../../models/DataSetProfile/Field';
+import { CheckBoxData } from '../../models/DataField/CheckBoxData';
+import { BooleanDecisionData } from '../../models/DataField/BooleanDecisionData';
+import { FormGroup } from '@angular/forms';
+import { Component, Input, OnInit } from '@angular/core';
+import { FormArray } from '@angular/forms/src/model';
+
+@Component({
+ selector: 'checkbox-component',
+ templateUrl: './checkbox-component.html'
+})
+export class CheckBoxComponent implements OnInit{
+ @Input() dataModel: Field;
+ @Input() form: FormGroup;
+ private data:CheckBoxData = new CheckBoxData();
+
+ ngOnInit(){
+ this.form.addControl("data", this.data.buildForm());
+ }
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/combobox/combobox-component.html b/dmp-admin/src/app/components/combobox/combobox-component.html
new file mode 100644
index 000000000..a3eb851a1
--- /dev/null
+++ b/dmp-admin/src/app/components/combobox/combobox-component.html
@@ -0,0 +1,16 @@
+
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/combobox/combobox-component.ts b/dmp-admin/src/app/components/combobox/combobox-component.ts
new file mode 100644
index 000000000..661018b15
--- /dev/null
+++ b/dmp-admin/src/app/components/combobox/combobox-component.ts
@@ -0,0 +1,25 @@
+import { Field } from '../../models/DataSetProfile/Field';
+import { FormGroup } from '@angular/forms';
+import { Component, Input, OnInit } from '@angular/core';
+
+@Component({
+ selector: 'combobox-component',
+ templateUrl: './combobox-component.html'
+})
+export class ComboboxComponent implements OnInit{
+ @Input() dataModel: Field;
+ @Input() form: FormGroup;
+ type: string;
+ options = [{id:"autocomplete", value: "autocomplete"}, {id:"wordlist", value: "wordlist"}];
+
+ ngOnInit(){
+ if (this.dataModel.data){
+ this.type = this.form.get("data").get("type").value;
+ }
+
+ }
+
+ onchangeCombo(){
+ if (this.form.get("data")) this.form.removeControl("data");
+ }
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/freetext/freetext-component.html b/dmp-admin/src/app/components/freetext/freetext-component.html
new file mode 100644
index 000000000..2411edac1
--- /dev/null
+++ b/dmp-admin/src/app/components/freetext/freetext-component.html
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/freetext/freetext-component.ts b/dmp-admin/src/app/components/freetext/freetext-component.ts
new file mode 100644
index 000000000..0e1077469
--- /dev/null
+++ b/dmp-admin/src/app/components/freetext/freetext-component.ts
@@ -0,0 +1,21 @@
+import { Field } from '../../models/DataSetProfile/Field';
+import { FreeTextData } from '../../models/DataField/FreeTextData';
+import { CheckBoxData } from '../../models/DataField/CheckBoxData';
+import { BooleanDecisionData } from '../../models/DataField/BooleanDecisionData';
+import { FormGroup } from '@angular/forms';
+import { Component, Input, OnInit } from '@angular/core';
+import { FormArray } from '@angular/forms/src/model';
+
+@Component({
+ selector: 'freetext-component',
+ templateUrl: './freetext-component.html'
+})
+export class FreeTextComponent implements OnInit{
+ @Input() dataModel: Field;
+ @Input() form: FormGroup;
+ private data:FreeTextData = new FreeTextData();
+
+ ngOnInit(){
+ this.form.addControl("data", this.data.buildForm());
+ }
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/radiobox/radiobox-component.html b/dmp-admin/src/app/components/radiobox/radiobox-component.html
new file mode 100644
index 000000000..7e309f987
--- /dev/null
+++ b/dmp-admin/src/app/components/radiobox/radiobox-component.html
@@ -0,0 +1,28 @@
+
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/radiobox/radiobox-component.ts b/dmp-admin/src/app/components/radiobox/radiobox-component.ts
new file mode 100644
index 000000000..e7064d84c
--- /dev/null
+++ b/dmp-admin/src/app/components/radiobox/radiobox-component.ts
@@ -0,0 +1,32 @@
+import { FormGroup } from '@angular/forms';
+import { Field } from '../../models/DataSetProfile/Field';
+import { Component, Input, OnInit } from '@angular/core';
+import { RadioBoxData } from '../../models/DataField/RadioBoxData';
+import { FormArray } from '@angular/forms/src/model';
+import { ListingItem } from '../../models/Commons/ListingItem';
+import { JsonSerializer } from '../../utilities/JsonSerializer';
+
+@Component({
+ selector: 'radiobox-component',
+ templateUrl: './radiobox-component.html'
+})
+export class RadioBoxComponent implements OnInit{
+ @Input() dataModel: Field;
+ @Input() form: FormGroup;
+ private data: RadioBoxData = new RadioBoxData();
+ private options = new Array();
+
+ ngOnInit(){
+ if (this.form.get("data")) this.form.removeControl("data");
+ this.form.addControl("data", this.data.buildForm());
+ this.addNewRow();
+ }
+
+ addNewRow(){
+ let radioListOptions:ListingItem = new ListingItem();
+ (this.form.get("data").get("options")).push(radioListOptions.buildForm());
+ this.data.options = [];
+ this.data.options.push(radioListOptions);
+ this.dataModel.data = new JsonSerializer().fromJSONObject(this.data,RadioBoxData);
+ }
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/textarea/textarea-component.html b/dmp-admin/src/app/components/textarea/textarea-component.html
new file mode 100644
index 000000000..2411edac1
--- /dev/null
+++ b/dmp-admin/src/app/components/textarea/textarea-component.html
@@ -0,0 +1,9 @@
+
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/textarea/textarea-component.ts b/dmp-admin/src/app/components/textarea/textarea-component.ts
new file mode 100644
index 000000000..2a04a5566
--- /dev/null
+++ b/dmp-admin/src/app/components/textarea/textarea-component.ts
@@ -0,0 +1,22 @@
+import { Field } from '../../models/DataSetProfile/Field';
+import { TextArea } from '../../models/DataField/TextArea';
+import { FreeTextData } from '../../models/DataField/FreeTextData';
+import { CheckBoxData } from '../../models/DataField/CheckBoxData';
+import { BooleanDecisionData } from '../../models/DataField/BooleanDecisionData';
+import { FormGroup } from '@angular/forms';
+import { Component, Input, OnInit } from '@angular/core';
+import { FormArray } from '@angular/forms/src/model';
+
+@Component({
+ selector: 'textarea-component',
+ templateUrl: './textarea-component.html'
+})
+export class TextAreaComponent implements OnInit{
+ @Input() dataModel: Field;
+ @Input() form: FormGroup;
+ private data:TextArea = new TextArea();
+
+ ngOnInit(){
+ this.form.addControl("data", this.data.buildForm());
+ }
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/wordlist/wordlist-component.html b/dmp-admin/src/app/components/wordlist/wordlist-component.html
new file mode 100644
index 000000000..73da25ad7
--- /dev/null
+++ b/dmp-admin/src/app/components/wordlist/wordlist-component.html
@@ -0,0 +1,28 @@
+
\ No newline at end of file
diff --git a/dmp-admin/src/app/components/wordlist/wordlist-component.ts b/dmp-admin/src/app/components/wordlist/wordlist-component.ts
new file mode 100644
index 000000000..00c33f8b9
--- /dev/null
+++ b/dmp-admin/src/app/components/wordlist/wordlist-component.ts
@@ -0,0 +1,34 @@
+import { FormGroup } from '@angular/forms';
+import { Field } from '../../models/DataSetProfile/Field';
+import { Component, Input, OnInit } from '@angular/core';
+import { WordListData } from '../../models/DataField/WordListData';
+import { FormArray } from '@angular/forms/src/model';
+import { ListingItem } from '../../models/Commons/ListingItem';
+import { JsonSerializer } from '../../utilities/JsonSerializer';
+
+@Component({
+ selector: 'wordlist-component',
+ templateUrl: './wordlist-component.html'
+})
+export class WordlistComponent implements OnInit{
+ @Input() dataModel: Field;
+ @Input() form: FormGroup;
+ private data: WordListData = new WordListData();
+ private options = new Array();
+
+ ngOnInit(){
+ this.data.type = "wordlist";
+ // if (this.form.get("data")) this.form.removeControl("data");
+ this.form.addControl("data", this.data.buildForm());
+ if(!this.dataModel.data)
+ this.addNewRow();
+ }
+
+ addNewRow(){
+ let wordListOptions:ListingItem = new ListingItem();
+ (this.form.get("data").get("options")).push(wordListOptions.buildForm());
+ this.data.options = [];
+ this.data.options.push(wordListOptions);
+ this.dataModel.data = new JsonSerializer().fromJSONObject(this.data,WordListData);
+ }
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/dataset-profile-form/compositefield-form/compositefield-form.component.html b/dmp-admin/src/app/dataset-profile-form/compositefield-form/compositefield-form.component.html
new file mode 100644
index 000000000..7424f1e1c
--- /dev/null
+++ b/dmp-admin/src/app/dataset-profile-form/compositefield-form/compositefield-form.component.html
@@ -0,0 +1,83 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dmp-admin/src/app/dataset-profile-form/compositefield-form/compositefield-form.component.ts b/dmp-admin/src/app/dataset-profile-form/compositefield-form/compositefield-form.component.ts
new file mode 100644
index 000000000..0ee11f88a
--- /dev/null
+++ b/dmp-admin/src/app/dataset-profile-form/compositefield-form/compositefield-form.component.ts
@@ -0,0 +1,57 @@
+import { Component, Input } from '@angular/core';
+import { FormGroup } from '@angular/forms';
+import { FieldSet } from 'app/models/DataSetProfile/FieldSet';
+import { Field } from 'app/models/DataSetProfile/Field';
+import { FormArray, FormControl } from '@angular/forms/src/model';
+
+@Component({
+ selector: 'compositefield-form',
+ templateUrl: './compositefield-form.component.html',
+ styleUrls: []
+})
+
+export class CompositeFieldFormComponent {
+ @Input() form: FormGroup;
+ @Input() dataModel: FieldSet;
+ @Input() indexPath: string;
+
+ isComposite: boolean = false;
+ isMultiplicityEnabled: boolean = false;
+
+ constructon() { }
+
+ ngOnInit() {
+ //this.addNewField();
+ if(this.form.get("multiplicity"))
+ if (this.form.get("multiplicity").value.min >1 || this.form.get("multiplicity").value.max >1 )
+ this.isMultiplicityEnabled= true;
+ this.isComposite = this.dataModel.fields.length > 1;
+ }
+
+ onIsCompositeChange(isComposite: boolean) {
+ if (!isComposite && (this.form.get("fields")).length > 1) {
+ for(let i = 0; i < (this.form.get("fields")).length - 1; i++) {
+ (this.form.get("fields")).removeAt(1);
+ }
+ this.dataModel.fields.splice(1);
+ }
+ }
+
+ onIsMultiplicityEnabledChange(isMultiplicityEnabled: boolean) {
+ if (!isMultiplicityEnabled) {
+ (this.form.get('multiplicity').get("min")).setValue(0);
+ (this.form.get('multiplicity').get("max")).setValue(0);
+ }
+ }
+
+ addNewField() {
+ let field: Field = new Field();
+ this.dataModel.fields.push(field);
+ (this.form.get("fields")).push(field.buildForm());
+ }
+
+ DeleteField(index) {
+ this.dataModel.fields.splice(index, 1);
+ (this.form.get("fields")).removeAt(index);
+ }
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/dataset-profile-form/field-form/field-form.component.html b/dmp-admin/src/app/dataset-profile-form/field-form/field-form.component.html
new file mode 100644
index 000000000..8de843522
--- /dev/null
+++ b/dmp-admin/src/app/dataset-profile-form/field-form/field-form.component.html
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dmp-admin/src/app/dataset-profile-form/field-form/field-form.component.ts b/dmp-admin/src/app/dataset-profile-form/field-form/field-form.component.ts
new file mode 100644
index 000000000..41c89f1dd
--- /dev/null
+++ b/dmp-admin/src/app/dataset-profile-form/field-form/field-form.component.ts
@@ -0,0 +1,53 @@
+import { Field } from '../../models/DataSetProfile/Field';
+import { Rule } from '../../models/DataSetProfile/Rule';
+import { Component, Input } from '@angular/core';
+import { FormGroup, FormControl, FormArray } from '@angular/forms';
+import { ValidationTypes } from 'app/common/validationTypes';
+
+@Component({
+ selector: 'field-form',
+ templateUrl: './field-form.component.html',
+ styleUrls: []
+})
+
+export class FieldFormComponent {
+ @Input() form: FormGroup;
+ @Input() dataModel: Field;
+ @Input() showMultiplicity: boolean = true;
+ @Input() indexPath: string;
+ validationsOptions: Array;
+ isFieldMultiplicityEnabled: boolean = false;
+
+ constructon() {
+ }
+
+ ngOnInit() {
+ if (this.form.get("multiplicity"))
+ if (this.form.get("multiplicity").value.min > 1 || this.form.get("multiplicity").value.max > 1)
+ this.isFieldMultiplicityEnabled = true;
+ this.validationsOptions = [{ key: 0, value: ValidationTypes[0] }, { key: 1, value: ValidationTypes[1] }]
+ // this.addNewRule();
+ }
+
+ onIsFieldMultiplicityEnabledChange(isFieldMultiplicityEnabled: boolean) {
+ if (!isFieldMultiplicityEnabled) {
+ (this.form.get('multiplicity').get("min")).setValue(0);
+ (this.form.get('multiplicity').get("max")).setValue(0);
+ }
+ }
+
+ addNewRule() {
+ let rule: Rule = new Rule();
+ this.dataModel.visible.rules.push(rule);
+ (this.form.get("visible").get("rules")).push(rule.buildForm());
+ }
+
+ DeleteRule(index) {
+ this.dataModel.visible.rules.splice(index, 1);
+ (this.form.get("visible").get("rules")).removeAt(index);
+ }
+
+ onchangeCombo() {
+ debugger;
+ }
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/dataset-profile-form/form/form.component.html b/dmp-admin/src/app/dataset-profile-form/form/form.component.html
new file mode 100644
index 000000000..388ca31ce
--- /dev/null
+++ b/dmp-admin/src/app/dataset-profile-form/form/form.component.html
@@ -0,0 +1,73 @@
+
\ No newline at end of file
diff --git a/dmp-admin/src/app/dataset-profile-form/form/form.component.ts b/dmp-admin/src/app/dataset-profile-form/form/form.component.ts
new file mode 100644
index 000000000..b16ca40e2
--- /dev/null
+++ b/dmp-admin/src/app/dataset-profile-form/form/form.component.ts
@@ -0,0 +1,94 @@
+import { Section } from '../../models/DataSetProfile/Section';
+import { JsonSerializer } from '../../utilities/JsonSerializer';
+import { DatasetProfileService } from '../../services/dataset-profile.service';
+import { RestBase } from '../../services/rest-base';
+import { DatasetProfileModel } from '../../models/DataSetProfile/DatasetProfileModel';
+import { Page } from '../../models/DataSetProfile/Page';
+import { Component, OnInit } from '@angular/core';
+import { FormGroup, FormControl } from '@angular/forms';
+import { SectionFormComponent } from '../section-form/section-form.component';
+import { FormArray } from '@angular/forms/src/model';
+import { Router, ActivatedRoute, ParamMap, Params } from '@angular/router';
+import { PageFormComponent } from '../page-form/page-component'
+
+@Component({
+ selector: 'form-comp',
+ templateUrl: './form.component.html',
+ styleUrls: []
+})
+
+export class FormComponent {
+
+ dataModel: DatasetProfileModel;
+ form: FormGroup;
+ private profileID: string;
+
+ constructor(public restBase: RestBase, private datasetProfileService: DatasetProfileService, private route: ActivatedRoute) {
+ this.profileID = route.snapshot.params['id'];
+
+ }
+
+ ngOnInit() {
+
+ this.dataModel = new JsonSerializer().fromJSONObject(new DatasetProfileModel(), DatasetProfileModel);
+ this.form = this.dataModel.buildForm();
+ if (this.profileID) {
+ this.datasetProfileService.getDatasetProfileById(this.profileID).subscribe((data) => {
+
+ this.dataModel = new JsonSerializer().fromJSONObject(data, DatasetProfileModel);
+ this.form = this.dataModel.buildForm();
+ });
+ }
+ else{
+
+ this.addSection();
+ this.addPage(0);
+ }
+
+ // this.dataModel = new JsonSerializer().fromJSONObject(TestModel, DatasetProfileModel);
+ // this.form = this.dataModel.buildForm();
+ }
+
+ onIsMultiplicityEnabledChange(isMultiplicityEnabled: boolean) {
+ if (!isMultiplicityEnabled) {
+ (this.form.get('multiplicity').get("min")).setValue(0);
+ (this.form.get('multiplicity').get("max")).setValue(0);
+ }
+ }
+
+ addSection() {
+ let section: Section = new Section();
+ this.dataModel.sections.push(section);
+ (this.form.get("sections")).push(section.buildForm());
+ }
+
+ addPage(number) {
+ let page: Page = new Page(this.dataModel.pages.length);
+ this.dataModel.pages.push(page);
+ (this.form.get("pages")).push(page.buildForm());
+ }
+
+ DeleteSection(index) {
+ this.dataModel.sections.splice(index,1);
+ (this.form.get("sections")).removeAt(index)
+ }
+
+ DeletePage(index) {
+ this.dataModel.pages.splice(index, 1);
+ (this.form.get("pages")).removeAt(index)
+ }
+
+ createForm(data) {
+ return this.restBase.post("/admin/addDmp", data);
+ }
+ updateForm(id,data) {
+ return this.restBase.post("/admin/addDmp/"+id, data);
+ }
+ onSubmit() {
+ let data = this.form.value;
+
+ if(this.profileID) this.updateForm(this.profileID, data).subscribe();
+ else this.createForm(data).subscribe();
+ }
+
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/dataset-profile-form/groupfield-form/groupfield-form.component.html b/dmp-admin/src/app/dataset-profile-form/groupfield-form/groupfield-form.component.html
new file mode 100644
index 000000000..3c63d1cd3
--- /dev/null
+++ b/dmp-admin/src/app/dataset-profile-form/groupfield-form/groupfield-form.component.html
@@ -0,0 +1,66 @@
+
\ No newline at end of file
diff --git a/dmp-admin/src/app/dataset-profile-form/groupfield-form/groupfield-form.component.ts b/dmp-admin/src/app/dataset-profile-form/groupfield-form/groupfield-form.component.ts
new file mode 100644
index 000000000..266de2f0e
--- /dev/null
+++ b/dmp-admin/src/app/dataset-profile-form/groupfield-form/groupfield-form.component.ts
@@ -0,0 +1,43 @@
+import { Component, Input, OnInit } from '@angular/core';
+import { FormGroup } from '@angular/forms';
+import { FieldGroup } from 'app/models/DataSetProfile/FieldGroup';
+import { FieldSet } from 'app/models/DataSetProfile/FieldSet';
+import { FormArray } from '@angular/forms/src/model';
+import { Field } from 'app/models/DataSetProfile/Field';
+
+@Component({
+ selector: 'groupfield-form',
+ templateUrl: './groupfield-form.component.html',
+ styleUrls: []
+})
+
+export class GroupFieldFormComponent {
+ @Input() form: FormGroup;
+ @Input() dataModel: FieldGroup;
+ @Input() indexPath: string;
+
+ constructor(){}
+
+ ngOnInit(){
+ //this.addNewField();
+ }
+
+ addNewFieldSet(){
+ let compositeField: FieldSet = new FieldSet();
+
+ let field: Field = new Field(); //create field at the same time
+ compositeField.fields.push(field);
+ //(this.form.get("compositeFields").get("fields")).push(field.buildForm());
+
+
+ this.dataModel.compositeFields.push(compositeField);
+ (this.form.get("compositeFields")).push(compositeField.buildForm());
+
+ }
+
+ DeleteFieldSet(index){
+ this.dataModel.compositeFields.splice(index, 1);
+ (this.form.get("compositeFields")).removeAt(index);
+ }
+
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/dataset-profile-form/page-form/page-component.html b/dmp-admin/src/app/dataset-profile-form/page-form/page-component.html
new file mode 100644
index 000000000..3ad68805d
--- /dev/null
+++ b/dmp-admin/src/app/dataset-profile-form/page-form/page-component.html
@@ -0,0 +1,8 @@
+
\ No newline at end of file
diff --git a/dmp-admin/src/app/dataset-profile-form/page-form/page-component.ts b/dmp-admin/src/app/dataset-profile-form/page-form/page-component.ts
new file mode 100644
index 000000000..5924b408a
--- /dev/null
+++ b/dmp-admin/src/app/dataset-profile-form/page-form/page-component.ts
@@ -0,0 +1,18 @@
+import { Component, Input, Output, EventEmitter } from '@angular/core';
+import { FormGroup } from '@angular/forms'
+import { Page } from 'app/models/DataSetProfile/Page'
+
+@Component({
+ selector: 'page-form',
+ templateUrl: './page-component.html',
+ styleUrls: []
+})
+
+export class PageFormComponent {
+ @Input() form: FormGroup;
+ @Input() dataModel: Page;
+
+ TargetValidation() {
+ }
+
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/dataset-profile-form/rule-component/rule.component.html b/dmp-admin/src/app/dataset-profile-form/rule-component/rule.component.html
new file mode 100644
index 000000000..7ddb10c84
--- /dev/null
+++ b/dmp-admin/src/app/dataset-profile-form/rule-component/rule.component.html
@@ -0,0 +1,33 @@
+
\ No newline at end of file
diff --git a/dmp-admin/src/app/dataset-profile-form/rule-component/rule.component.ts b/dmp-admin/src/app/dataset-profile-form/rule-component/rule.component.ts
new file mode 100644
index 000000000..01b70230f
--- /dev/null
+++ b/dmp-admin/src/app/dataset-profile-form/rule-component/rule.component.ts
@@ -0,0 +1,18 @@
+import { Component, Input, Output, EventEmitter } from '@angular/core';
+import { FormGroup } from '@angular/forms'
+import { Rule } from 'app/models/DataSetProfile/Rule'
+
+@Component({
+ selector: 'rule-form',
+ templateUrl: './rule.component.html',
+ styleUrls: []
+})
+
+export class RuleFormComponent {
+@Input() form: FormGroup;
+@Input() dataModel: FormGroup;
+
+TargetValidation(){
+}
+
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/dataset-profile-form/section-form/section-form.component.css b/dmp-admin/src/app/dataset-profile-form/section-form/section-form.component.css
new file mode 100644
index 000000000..1ded10469
--- /dev/null
+++ b/dmp-admin/src/app/dataset-profile-form/section-form/section-form.component.css
@@ -0,0 +1,5 @@
+.section-container {
+ background-color: #f5f5f5;
+ border: 1px solid #e3e3e3;
+ padding: 24px;
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/dataset-profile-form/section-form/section-form.component.html b/dmp-admin/src/app/dataset-profile-form/section-form/section-form.component.html
new file mode 100644
index 000000000..1d3730e4f
--- /dev/null
+++ b/dmp-admin/src/app/dataset-profile-form/section-form/section-form.component.html
@@ -0,0 +1,124 @@
+
+
+
+
0" class="panel-group" style="margin-top:10px;">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/dmp-admin/src/app/dataset-profile-form/section-form/section-form.component.ts b/dmp-admin/src/app/dataset-profile-form/section-form/section-form.component.ts
new file mode 100644
index 000000000..ffa4723ac
--- /dev/null
+++ b/dmp-admin/src/app/dataset-profile-form/section-form/section-form.component.ts
@@ -0,0 +1,79 @@
+import { Component, OnInit, Input, ViewEncapsulation } from '@angular/core';
+import { FormGroup } from '@angular/forms';
+import { Section } from 'app/models/DataSetProfile/Section';
+import { FieldGroup } from 'app/models/DataSetProfile/FieldGroup';
+import { FormArray } from '@angular/forms/src/model';
+import { DatasetProfileModel } from 'app/models/DataSetProfile/DatasetProfileModel';
+import { FieldSet } from 'app/models/DataSetProfile/FieldSet';
+import { Field } from 'app/models/DataSetProfile/Field';
+import { Page } from 'app/models/DataSetProfile/Page';
+import { JsonSerializer } from 'app/utilities/JsonSerializer';
+
+@Component({
+ selector: 'section-form',
+ templateUrl: './section-form.component.html',
+ styleUrls: ['./section-form.component.css'],
+ encapsulation: ViewEncapsulation.None
+})
+
+export class SectionFormComponent {
+ @Input() form: FormGroup;
+ @Input() dataModel: Section;
+ @Input() indexPath: string;
+
+ constructor() { }
+
+ ngOnInit() {
+ var self = this;
+
+ this.form.root.get("pages").valueChanges.subscribe(function(value) {
+ self.keepPageSelectionValid(value);
+ });
+ }
+
+ // addGroupField() {
+ // let fieldGroup: FieldGroup = new FieldGroup();
+ // if (this.dataModel.fieldGroups)
+ // this.dataModel.fieldGroups.push(fieldGroup);
+ // (this.form.get("fieldGroups")).push(fieldGroup.buildForm());
+ // }
+
+ addField() {
+ let fieldSet: FieldSet = new FieldSet();
+ let field: Field = new Field();
+ //let fieldGroup: FieldGroup = new FieldGroup();
+ fieldSet.fields.push(field);
+ //fieldGroup.compositeFields.push(fieldSet);
+ if (this.dataModel.fieldSets)
+ this.dataModel.fieldSets.push(fieldSet);
+ (this.form.get("fieldSets")).push(fieldSet.buildForm());
+ }
+
+ // DeleteFieldGroup(index) {
+ // this.dataModel.fieldGroups.splice(index, 1);
+ // (this.form.get("fieldGroups")).removeAt(index)
+ // }
+
+ addSectioninSection() {
+ let section: Section = new Section();
+ this.dataModel.sections.push(section);
+ (this.form.get("sections")).push(section.buildForm());
+ }
+
+ DeleteSectionInSection(index) {
+ this.dataModel.sections.splice(index);
+ (this.form.get("sections")).removeAt(index);
+ }
+
+ DeleteFieldSet(index){
+ this.dataModel.fieldSets.splice(index, 1);
+ (this.form.get("fieldSets")).removeAt(index);
+ }
+
+ keepPageSelectionValid(pagesJson: Array) {
+ let selectedPage = this.form.get("page").value as number;
+ let pages: Array = new JsonSerializer().fromJSONArray(pagesJson, Page);
+ if (!isNaN(selectedPage) && pages.find(elem => elem.id === selectedPage) === undefined)
+ this.form.get("page").reset();
+ }
+}
\ No newline at end of file
diff --git a/dmp-admin/src/app/datasets-viewer/datasets-viewer.component.html b/dmp-admin/src/app/datasets-viewer/datasets-viewer.component.html
index 5095aca05..a92228921 100644
--- a/dmp-admin/src/app/datasets-viewer/datasets-viewer.component.html
+++ b/dmp-admin/src/app/datasets-viewer/datasets-viewer.component.html
@@ -12,7 +12,7 @@
Manage Datasets
-
+
diff --git a/dmp-admin/src/app/login/googgle-sign-in/googgle-sign-in.component.ts b/dmp-admin/src/app/login/googgle-sign-in/googgle-sign-in.component.ts
index dac20db7a..d98a5b343 100644
--- a/dmp-admin/src/app/login/googgle-sign-in/googgle-sign-in.component.ts
+++ b/dmp-admin/src/app/login/googgle-sign-in/googgle-sign-in.component.ts
@@ -23,7 +23,7 @@ export class GooggleSignInComponent implements OnInit, AfterViewInit {
ngOnInit() {
}
- private clientId:string = '1010962018903-glegmqudqtl1lub0150vacopbu06lgsg.apps.googleusercontent.com';
+ private clientId:string = '524432312250-sc9qsmtmbvlv05r44onl6l93ia3k9deo.apps.googleusercontent.com';
private scope = [
'profile',
diff --git a/dmp-admin/src/app/login/main-sign-in/main-sign-in.component.html b/dmp-admin/src/app/login/main-sign-in/main-sign-in.component.html
index 660c3348b..c6a336722 100644
--- a/dmp-admin/src/app/login/main-sign-in/main-sign-in.component.html
+++ b/dmp-admin/src/app/login/main-sign-in/main-sign-in.component.html
@@ -3,7 +3,7 @@
-
+