diff --git a/package-lock.json b/package-lock.json index a1255a4b550e79ef1263e9a9663d49d416c52350..4c7d4b0c0a26c5060ede383834ba79b04cedf45c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2062,6 +2062,37 @@ "integrity": "sha512-ReZxvNHIOv88FlT7rxcXIIC0fPt4KZqZbOlivyWtXLt8ESx84zd3kMC6iK5jVeS2qt+g7ftS7ye4fi06X5rtRQ==", "dev": true }, + "axios": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-0.19.2.tgz", + "integrity": "sha512-fjgm5MvRHLhx+osE2xoekY70AhARk3a6hkN+3Io1jc00jtquGvxYlKlsFUhmUET0V5te6CcZI7lcv2Ym61mjHA==", + "requires": { + "follow-redirects": "1.5.10" + }, + "dependencies": { + "debug": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.1.0.tgz", + "integrity": "sha512-OX8XqP7/1a9cqkxYw2yXss15f26NKWBpDXQd0/uK/KPqdQhxbPa994hnzjcE2VqQpDslf55723cKPUOGSmMY3g==", + "requires": { + "ms": "2.0.0" + } + }, + "follow-redirects": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.5.10.tgz", + "integrity": "sha512-0V5l4Cizzvqt5D44aTXbFZz+FtyXV1vrDN6qrelxtfYQKW0KO0W2T/hkE8xvGa/540LkZlkaUjO4ailYTFtHVQ==", + "requires": { + "debug": "=3.1.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + } + } + }, "babel-code-frame": { "version": "6.26.0", "resolved": "https://registry.npmjs.org/babel-code-frame/-/babel-code-frame-6.26.0.tgz", @@ -2184,8 +2215,7 @@ "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=" }, "base": { "version": "0.11.2", @@ -2377,7 +2407,6 @@ "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" @@ -2839,6 +2868,15 @@ } } }, + "cli": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/cli/-/cli-1.0.1.tgz", + "integrity": "sha1-IoF1NPJL+klQw01TLUjsvGIbjBQ=", + "requires": { + "exit": "0.1.2", + "glob": "^7.1.1" + } + }, "cli-cursor": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-2.1.0.tgz", @@ -3198,8 +3236,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" }, "concat-stream": { "version": "1.6.2", @@ -3223,7 +3260,6 @@ "version": "1.1.0", "resolved": "https://registry.npmjs.org/console-browserify/-/console-browserify-1.1.0.tgz", "integrity": "sha1-8CQcRXMKn8YyOyBtvzjtx0HQuxA=", - "dev": true, "requires": { "date-now": "^0.1.4" } @@ -3455,8 +3491,7 @@ "core-util-is": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true + "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=" }, "cosmiconfig": { "version": "5.2.1", @@ -3825,8 +3860,7 @@ "date-now": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/date-now/-/date-now-0.1.4.tgz", - "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=", - "dev": true + "integrity": "sha1-6vQ5/U1ISK105cx9vvIAZyueNFs=" }, "de-indent": { "version": "1.0.2", @@ -4094,7 +4128,6 @@ "version": "0.1.1", "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-0.1.1.tgz", "integrity": "sha512-l0IU0pPzLWSHBcieZbpOKgkIn3ts3vAh7ZuFyXNwJxJXk/c4Gwj9xaTJwIDVQCXawWD0qb3IzMGH5rglQaO0XA==", - "dev": true, "requires": { "domelementtype": "^1.3.0", "entities": "^1.1.1" @@ -4109,8 +4142,7 @@ "domelementtype": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-1.3.1.tgz", - "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==", - "dev": true + "integrity": "sha512-BSKB+TSpMpFI/HOxCNr1O8aMOTZ8hT3pM3GQ0w/mWRmkhEDSFJkkyzz4XQsBV44BChwGkrDfMyjVD0eA2aFV3w==" }, "domhandler": { "version": "2.4.2", @@ -4260,8 +4292,7 @@ "entities": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/entities/-/entities-1.1.2.tgz", - "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==", - "dev": true + "integrity": "sha512-f2LZMYl1Fzu7YSBKg+RoROelpOaNrcGmE9AZubeDfrCEia483oW4MI4VyFd5VNHIgQ/7qm1I0wUHK1eJnn2y2w==" }, "errno": { "version": "0.1.7", @@ -4769,6 +4800,11 @@ "strip-eof": "^1.0.0" } }, + "exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=" + }, "expand-brackets": { "version": "2.1.4", "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", @@ -5326,8 +5362,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" }, "fsevents": { "version": "1.2.9", @@ -5923,7 +5958,6 @@ "version": "7.1.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.3.tgz", "integrity": "sha512-vcfuiIxogLV4DlGBHIUOwI0IbrJ8HWPc4MU7HzviGeNho/UJDfi6B5p3sHeWIQ0KGIU0Jpxi5ZHxemQfLkkAwQ==", - "dev": true, "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -6497,7 +6531,6 @@ "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, "requires": { "once": "^1.3.0", "wrappy": "1" @@ -6506,8 +6539,7 @@ "inherits": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", - "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=", - "dev": true + "integrity": "sha1-Yzwsg+PaQqUC9SRmAiSA9CCCYd4=" }, "inquirer": { "version": "3.3.0", @@ -6948,6 +6980,83 @@ "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "dev": true }, + "jshint": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/jshint/-/jshint-2.11.0.tgz", + "integrity": "sha512-ooaD/hrBPhu35xXW4gn+o3SOuzht73gdBuffgJzrZBJZPGgGiiTvJEgTyxFvBO2nz0+X1G6etF8SzUODTlLY6Q==", + "requires": { + "cli": "~1.0.0", + "console-browserify": "1.1.x", + "exit": "0.1.x", + "htmlparser2": "3.8.x", + "lodash": "~4.17.11", + "minimatch": "~3.0.2", + "shelljs": "0.3.x", + "strip-json-comments": "1.0.x" + }, + "dependencies": { + "domhandler": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-2.3.0.tgz", + "integrity": "sha1-LeWaCCLVAn+r/28DLCsloqir5zg=", + "requires": { + "domelementtype": "1" + } + }, + "domutils": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-1.5.1.tgz", + "integrity": "sha1-3NhIiib1Y9YQeeSMn3t+Mjc2gs8=", + "requires": { + "dom-serializer": "0", + "domelementtype": "1" + } + }, + "entities": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-1.0.0.tgz", + "integrity": "sha1-sph6o4ITR/zeZCsk/fyeT7cSvyY=" + }, + "htmlparser2": { + "version": "3.8.3", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-3.8.3.tgz", + "integrity": "sha1-mWwosZFRaovoZQGn15dX5ccMEGg=", + "requires": { + "domelementtype": "1", + "domhandler": "2.3", + "domutils": "1.5", + "entities": "1.0", + "readable-stream": "1.1" + } + }, + "isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha1-ihis/Kmo9Bd+Cav8YDiTmwXR7t8=" + }, + "readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha1-fPTFTvZI44EwhMY23SB54WbAgdk=", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=" + }, + "strip-json-comments": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-1.0.4.tgz", + "integrity": "sha1-HhX7ysl9Pumb8tc7TGVrCCu6+5E=" + } + } + }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -7159,8 +7268,7 @@ "lodash": { "version": "4.17.11", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz", - "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==", - "dev": true + "integrity": "sha512-cQKh8igo5QUhZ7lg38DYWAxMvjSAKG0A8wGSVimP07SIUEK2UO+arSRKbRZWtelMtN5V0Hkwh5ryOto/SshYIg==" }, "lodash.clonedeep": { "version": "4.5.0", @@ -7474,7 +7582,6 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, "requires": { "brace-expansion": "^1.1.7" } @@ -7915,7 +8022,6 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, "requires": { "wrappy": "1" } @@ -8204,8 +8310,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "http://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" }, "path-is-inside": { "version": "1.0.2", @@ -9827,6 +9932,11 @@ "jsonify": "~0.0.0" } }, + "shelljs": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", + "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" + }, "signal-exit": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.2.tgz", @@ -11775,8 +11885,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" }, "write": { "version": "0.2.1", diff --git a/package.json b/package.json index 689a7e6eca5a8d0099c78a739432e50e7425aa46..f919a651a10a7ba2cf497dd1d34e883252ff7351 100644 --- a/package.json +++ b/package.json @@ -17,15 +17,17 @@ "*.js" ], "dependencies": { + "axios": "^0.19.2", "base-64": "^0.1.0", + "jshint": "^2.11.0", "moment": "^2.24.0", "vue": "^2.6.10", "vue-i18n": "^8.11.2", "vue-json-pretty": "^1.6.0", "vue-router": "^3.0.7", "vue-slicksort": "^1.1.3", - "vuetify": "^1.5.16", "vue-the-mask": "^0.11.1", + "vuetify": "^1.5.16", "vuex": "^3.1.1" }, "devDependencies": { diff --git a/src/.vscode/settings.json b/src/.vscode/settings.json new file mode 100644 index 0000000000000000000000000000000000000000..5253fe257b57df66faa70a4bbe777116660308a0 --- /dev/null +++ b/src/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "vetur.format.defaultFormatterOptions": {}, +} \ No newline at end of file diff --git a/src/App.vue b/src/App.vue index b159e69c7d78efa99576c5b18c2f68e171e6198a..f9257bbb344bedd3e13e46fe2087cb777a954843 100644 --- a/src/App.vue +++ b/src/App.vue @@ -90,15 +90,17 @@ > <v-tab ripple>{{ $t('Submit') }}</v-tab> <v-tab ripple>{{ $t('Display') }}</v-tab> - <v-tab ripple>{{ $t('Edit') }}</v-tab> - <v-tab ripple>{{ $t('Search') }}</v-tab> + <!-- <v-tab ripple>{{ $t('Edit') }}</v-tab> + <v-tab ripple>{{ $t('Search') }}</v-tab>--> </v-tabs> <v-layout row> <v-flex> <v-window v-model="window"> <v-window-item> - <ph-submit + + <ph-submit + :model="contentmodel" :form="form" v-on:object-created="objectCreated($event)" v-on:load-form="form = $event" @@ -120,31 +122,32 @@ single-line class="right" color="primary lighten-2" - @click="getPid();loadDisplay()" + @click="getPid();loadDisplay();" >Load</v-btn> </v-toolbar> <v-card-text> <v-layout row> - members {{fullmembers}} + <ph-d-jsonld :form="form" :jsonld="displayjsonld" :pid="pid"></ph-d-jsonld> + </v-layout> - <v-toolbar v-if="members.length>0" dense flat> + <v-layout row> + <v-toolbar v-if="members.length>0" dense flat> <v-toolbar-title class="font-weight-light">File Members</v-toolbar-title> - + </v-toolbar> - - <v-layout row> + </v-layout> - <v-layout v-for="(mpid,order) in members"> + <v-layout row wrap v-for="(mpid,order) in members" :key="mpid.pid"> - <v-flex xs4 class="subheading"> + <v-flex xs2 class="subheading"> <a :href="'https://' + instance.baseurl +'/'+mpid.pid" target="_blank">{{'https://' + instance.baseurl +'/'+mpid.pid}}</a> - + </v-flex> - - <v-flex xs4> + + <v-flex xs2> <p-img :src="'https://' + instance.baseurl + '/preview/' + mpid.pid + '///120'" @@ -155,17 +158,16 @@ </v-layout> </p-img> </v-flex> - + <v-flex xs8> <ph-d-jsonld :jsonld="displayjsonldmembers[order]"> </ph-d-jsonld></v-flex> </v-layout> - </v-layout> - + </v-card-text> </v-card> </v-flex> </v-window-item> - <v-window-item> + <!-- <v-window-item> <v-flex> <v-card> <v-toolbar flat> @@ -186,9 +188,9 @@ </v-card-text> </v-card> </v-flex> - </v-window-item> + </v-window-item>--> - <v-window-item> + <!-- <v-window-item> <v-flex> <v-card> <v-toolbar flat> @@ -212,7 +214,7 @@ </v-card-text> </v-card> </v-flex> - </v-window-item> + </v-window-item>--> </v-window> </v-flex> </v-layout> @@ -253,7 +255,8 @@ export default { PMRights, PMRelationships, PMFiles, - PIForm,PImg + PIForm, + PImg }, computed: { loadedcmodel: function() { @@ -290,13 +293,14 @@ export default { { text: "deutsch", value: "deu" } ], displayjsonld: {}, + displayjsonldmembers: [], editform: {}, form: { sections: [] }, members: [], -fullmembers:[], - pid: "o:589027", + fullmembers: [], + pid: "o:589108", piddoc: {}, collection: "", sampleCollection: "", @@ -311,7 +315,6 @@ fullmembers:[], }, version: version, contentmodel: "https://pid.phaidra.org/vocabulary/8MY0-BQDQ", - psvis: true }; }, @@ -490,87 +493,102 @@ fullmembers:[], }); return promise; }, - loadMembers: function(pid) { - var self = this; - + loadMembers: async function(pid) { this.members = []; - var params = { q: 'ismemberof:"' + pid + '"', defType: "edismax", wt: "json", qf: "ismemberof^5", - fl: "pid,cmodel,dc_title,created", + //fl: 'pid,cmodel,dc_title,created', sort: "pos_in_" + pid.replace(":", "_") + " asc" }; - - var query = qs.stringify(params, { - encodeValuesOnly: true, - indices: false - }); - var url = self.instance.solr + "/select?" + query; - var promise = fetch(url, { - method: "GET", - mode: "cors" - }) - .then(function(response) { - return response.json(); - console.log("in loadMembers response", response.json()) - }) - .then(function(json) { - if (json.response.numFound > 0) { - self.members = json.response.docs; - } else { - self.members = []; - } - }) - .catch(function(error) { - console.log(error); // eslint-disable-line no-console + try { + let response = await this.$http.request({ + method: "GET", + url: this.instance.solr + "/select?", + params: params }); - return promise; + if (response.data.response.numFound > 0) { + //this.members = response.data.response.docs + return response.data.response.docs; + } else { + return []; + } + } catch (error) { + console.log(error); + } finally { + this.loading = false; + } }, - loadMetadata: function(pid) { + + loadMetadata: async function(pid) { this.loadedMetadata = []; - var self = this; - var url = - self.$store.state.settings.instance.api + - "/object/" + - pid + - "/metadata?mode=resolved"; - var promise = fetch(url, { - method: "GET", - mode: "cors" - }) - .then(function(response) { - return response.json(); - }) - .then(function(json) { - if (json.metadata["JSON-LD"]) { - //console.log("load metadata returned", json.metadata["JSON-LD"]) - return json.metadata["JSON-LD"]; + try { + let response = await this.$http.request({ + method: "GET", + url: + this.$store.state.settings.instance.api + + "/object/" + + pid + + "/metadata", + params: { + mode: "resolved" } - }) - .catch(function(error) { - console.log(error); // eslint-disable-line no-console }); - return promise; + if (response.data.alerts && response.data.alerts.length > 0) { + this.$store.commit("setAlerts", response.data.alerts); + } + if (response.data.metadata["JSON-LD"]) { + return response.data.metadata["JSON-LD"]; + } + } catch (error) { + console.log(error); + } finally { + this.loading = false; + } }, - loadDisplay: function() { + loadDisplay: async function() { this.displayjsonld = {}; + this.displayjsonldmembers = []; + var self = this; - let self = this; - - this.loadMetadata(self.pid).then(function(jsonld) { - self.displayjsonld = jsonld; - }); - this.getMembers(self.pid).then(function(jsonmembers) { - self.members = jsonmembers; - - }); - this.loadMembers(self.pid).then(function(jsonfullmembers) { - self.fullmembers = jsonfullmembers; - + try { + await self.loadMetadata(self.pid).then(function(jsonld) { + self.displayjsonld = jsonld; + }); + //this.getMembers(self.pid).then(function(jsonmembers) { + // self.members = jsonmembers; + //}); + await self.loadMembers(self.pid).then(function(jsonmembers) { + self.members = jsonmembers; + }); + } finally { + self.loadMembersjson(); + } + }, + loadMembersjson: function() { + var self = this; + let array = new Array(); + var fetches = []; + for (var m = 0; m < self.members.length; m++) { + fetches.push( + self + .loadMetadata(self.members[m].pid) + .then(function(response) { + array.push(response); + }) + .catch(function(error) { + console.error(error); + }) + ); + } + Promise.all(fetches).then(function() { + //console.log("promise array", array, array.length); + //copy to myDatabaseData by value + self.displayjsonldmembers = array; + //console.log("end of promise", array); }); }, loadEdit: function() { diff --git a/src/components/display/pharma_display/PhDJsonld.vue b/src/components/display/pharma_display/PhDJsonld.vue index 0e7eaa39b0384f7f3a0b2a1ae63504211443613a..f496cf95783f8a374f44770d91ef2746fa83aaac 100644 --- a/src/components/display/pharma_display/PhDJsonld.vue +++ b/src/components/display/pharma_display/PhDJsonld.vue @@ -1,6 +1,8 @@ <template> <ph-d-jsonld-layout v-if="jsonld"> + + <template> <template v-for="(o, p) in jsonld"> @@ -13,7 +15,9 @@ <template v-else-if="p==='edm:hasType'" slot="edm:hasType"> <p-d-skos-preflabel :p="p" :o="item" v-for="(item, j) in o" :key="componentid+'objtyp'+j"></p-d-skos-preflabel> </template> - +<template v-else-if="p==='dcterms:accessRights'" slot="dcterms:accessRights"> + <p-d-skos-preflabel :p="p" :o="item" v-for="(item, j) in o" :key="componentid+'dtar'+j" v-bind.sync="displayProperties"></p-d-skos-preflabel> + </template> <template v-else-if="p==='schema:genre'" slot="schema:genre"> <p-d-skos-preflabel :p="p" :o="item" v-for="(item, j) in o" :key="componentid+'genre'+j"></p-d-skos-preflabel> </template> @@ -186,6 +190,7 @@ </template> <template v-else-if="p==='ebucore:filename'" slot="ebucore:filename"> + <p-d-value :p="p" :o="item" v-for="(item, j) in o" :key="componentid+'filename'+j"></p-d-value> </template> @@ -408,8 +413,9 @@ </template> </template> - </ph-d-jsonld-layout> + </ph-d-jsonld-layout> + </template> <script> diff --git a/src/components/input/PhSubmit.vue b/src/components/input/PhSubmit.vue index 7eed2c33d7b1ae9ec6cfdd0ed546d56ca82f8f63..ca3a8406fb4607ee18739eb7500280c1d82c99b7 100644 --- a/src/components/input/PhSubmit.vue +++ b/src/components/input/PhSubmit.vue @@ -9,13 +9,15 @@ <span class="text-lowercase">{{ targetpid }}</span> </template> </v-tab> - <v-tab ripple @click="updatePrettyPrint()">Metadata preview</v-tab> - <v-tab v-if="templating" ripple @click="loadTemplates()">Templates</v-tab> + <!-- <v-tab ripple @click="updatePrettyPrint()">Metadata preview</v-tab> + <v-tab v-if="templating" ripple @click="loadTemplates()">Templates</v-tab>--> </v-tabs> <v-tabs-items v-model="activetab"> <v-tab-item v-if="form"> + <ph-input-form + :model="model" :form="form" :loading="loading" :templating="templating" @@ -58,6 +60,10 @@ export default { sections: [] } }, + model: { + type: String, + default: "https://pid.phaidra.org/vocabulary/8MY0-BQDQ" + }, targetpid: { type: String }, @@ -274,14 +280,14 @@ export default { } } } - console.log( + /*console.log( "posting", self.$store.state.settings.instance.api + "/" + this.submittype + "/create", httpFormData - ); + );*/ fetch( self.$store.state.settings.instance.api + "/" + diff --git a/src/components/input/pharma-input-fields/PISelect.vue b/src/components/input/pharma-input-fields/PISelect.vue index bf12852752828ba255fcc37356c970ba3ba49e44..728dd6b19c368c74a1fa7c56dab88464a7b3fc81 100644 --- a/src/components/input/pharma-input-fields/PISelect.vue +++ b/src/components/input/pharma-input-fields/PISelect.vue @@ -102,11 +102,11 @@ export default { console.log("here 2", this.formValidation); this.validationWarning = false; } - console.log( + /*console.log( "validationWarning", this.$refs.form.validate(), this.validationWarning - ); + );*/ } }, mounted: function() { diff --git a/src/components/input/pharma-input-fields/PhInputForm.vue b/src/components/input/pharma-input-fields/PhInputForm.vue index 14aa4fafd4d03839588b28884e1241e61f0315b8..c69f3d3fbe47854c59adba2c5b7439bb0808cd08 100644 --- a/src/components/input/pharma-input-fields/PhInputForm.vue +++ b/src/components/input/pharma-input-fields/PhInputForm.vue @@ -113,7 +113,7 @@ <ph-files v-bind.sync="f" - v-on:input-numberFiles="f.nfile=$event" + v-on:input-numberFiles="f.nfile=$event;filesNber=f.nfile" v-on:input-file="f.file=$event" v-on:input-name="f.fileName=$event" v-on:input-type="f.fileFormat=$event" @@ -251,7 +251,7 @@ <v-flex> <v-toolbar dense flat color="white"> <v-toolbar-title class="title"> - Submit your files with the following metadata: + Submit the following metadata: </v-toolbar-title> <v-spacer></v-spacer> @@ -260,9 +260,29 @@ </v-layout> <ph-d-jsonld :form="form" :jsonld="jsonDisplay"></ph-d-jsonld> - + <v-layout align-center justify-center fill-height> + <v-flex> + <v-toolbar dense flat color="white"> + <v-toolbar-title class="title"> + With the following files: + + </v-toolbar-title> + <v-spacer></v-spacer> + </v-toolbar> + </v-flex> + </v-layout> + <v-layout row wrap v-for="(mjson,index) in jsonDisplayMembers" :key="index+'files'"> + + <v-flex xs12> + + + <v-icon>attachment</v-icon> + File {{index+1}} + </v-flex> + <v-flex xs12> <v-card> + <ph-d-jsonld :form="form" :jsonld="mjson"></ph-d-jsonld><v-spacer></v-spacer></v-card></v-flex></v-layout> <v-layout align-center justify-end row class="ma-3"> - <v-dialog v-if="templating" v-model="templatedialog" width="500"> + <!--<v-dialog v-if="templating" v-model="templatedialog" width="500"> <v-btn class="mr-3" slot="activator" @@ -295,7 +315,7 @@ </v-btn> </v-card-actions> </v-card> - </v-dialog> + </v-dialog>--> <v-btn v-if="targetpid" raised @@ -368,6 +388,10 @@ export default { sections: [] } }, + model: { + type: String, + default: "https://pid.phaidra.org/vocabulary/8MY0-BQDQ" + }, jsondata: { type: Object }, @@ -435,21 +459,44 @@ export default { return this.form.sections; }, jsonDisplay: function() { - //adapt if something else than container if (this.jsondata.metadata) { if (this.jsondata.metadata["json-ld"]) { - if (this.jsondata.metadata["json-ld"]["container"]) { - return this.jsondata.metadata["json-ld"]["container"]; + //get the object, + + if ( + this.jsondata.metadata["json-ld"][this.getObjectType(this.model)] + ) { + return this.jsondata.metadata["json-ld"][ + this.getObjectType(this.model) + ]; } } } + }, + jsonDisplayMembers: function() { + if (this.jsondata.metadata) { + if (this.jsondata.metadata["json-ld"]) { + let jsonmembersarray = new Array(); + //check if there are member files + for (var f = 0; f < this.filesNber; f++) { + var fplus = f + 1; + + if (this.jsondata.metadata["json-ld"]["member_" + fplus]) { + jsonmembersarray.push( + this.jsondata.metadata["json-ld"]["member_" + fplus] + ); + } + } + return jsonmembersarray; + } + } } }, data() { return { templatedialog: "", templatename: "", - + filesNber: 0, window: 0, stepper: 1, stepsTitle: [ diff --git a/src/main.js b/src/main.js index 0bca5f4a68e5ff8aa9c22a0ed01227cedb1a3a6a..8ab6ef1989bf8aa13170a638e112f164a0a22949 100644 --- a/src/main.js +++ b/src/main.js @@ -9,6 +9,7 @@ import deu from "./i18n/deu"; import ita from "./i18n/ita"; import App from "./App.vue"; import moment from "moment"; +import axios from 'axios'; Vue.config.productionTip = false; @@ -23,19 +24,23 @@ Vue.use(SvgIcon, { defaultHeight: "1em" }); -Vue.filter("unixtime", function(value) { +Vue.filter("unixtime", function (value) { if (value) { return moment.unix(String(value)).format("DD.MM.YYYY hh:mm:ss"); } }); -Vue.filter("date", function(value) { +Vue.filter("date", function (value) { if (value) { return moment(String(value)).format("DD.MM.YYYY"); } }); -const messages = { eng, deu, ita }; +const messages = { + eng, + deu, + ita +}; const i18n = new VueI18n({ locale: "eng", fallbackLocale: "deu", @@ -45,20 +50,20 @@ const i18n = new VueI18n({ }); const router = new VueRouter({ - routes: [ - { - name: "detail", - path: "/details", - component: { - template: "<div><b>Details</b> not implemented in PVC demo app</div>" - } + routes: [{ + name: "detail", + path: "/details", + component: { + template: "<div><b>Details</b> not implemented in PVC demo app</div>" } - ] + }] }); +Vue.prototype.$http = axios + new Vue({ store, i18n, router, render: h => h(App) -}).$mount("#app"); +}).$mount("#app"); \ No newline at end of file