UNPKG

@europeana/portal

Version:
327 lines (251 loc) 12 kB
exports.ids = [51]; exports.modules = { /***/ 295: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony default export */ __webpack_exports__["a"] = ({ data() { return { contentfulExtensionSdk: null, entry: null, message: null }; }, mounted() { window.contentfulExtension.init(sdk => { this.contentfulExtensionSdk = sdk; if (sdk.location.is(window.contentfulExtension.locations.LOCATION_ENTRY_SIDEBAR)) { sdk.window.startAutoResizer(); this.entry = sdk.entry; } }); }, methods: { showError(error) { this.contentfulExtensionSdk.dialogs.openAlert({ title: 'Error', message: error }); this.message = 'Failed'; } } }); /***/ }), /***/ 321: /***/ (function(module, exports, __webpack_require__) { // style-loader: Adds some css to the DOM by adding a <style> tag // load the styles var content = __webpack_require__(398); if(content.__esModule) content = content.default; if(typeof content === 'string') content = [[module.i, content, '']]; if(content.locals) module.exports = content.locals; // add CSS to SSR context var add = __webpack_require__(13).default module.exports.__inject__ = function (context) { add("6461e975", content, true, context) }; /***/ }), /***/ 397: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); /* harmony import */ var _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_34e7e990_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(321); /* harmony import */ var _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_34e7e990_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_34e7e990_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__); /* harmony reexport (unknown) */ for(var __WEBPACK_IMPORT_KEY__ in _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_34e7e990_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__) if(["default"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) (function(key) { __webpack_require__.d(__webpack_exports__, key, function() { return _node_modules_vue_style_loader_index_js_ref_7_oneOf_1_0_node_modules_css_loader_dist_cjs_js_ref_7_oneOf_1_1_node_modules_vue_loader_lib_loaders_stylePostLoader_js_node_modules_sass_loader_dist_cjs_js_ref_7_oneOf_1_2_node_modules_vue_loader_lib_index_js_vue_loader_options_index_vue_vue_type_style_index_0_id_34e7e990_lang_scss_scoped_true___WEBPACK_IMPORTED_MODULE_0__[key]; }) }(__WEBPACK_IMPORT_KEY__)); /***/ }), /***/ 398: /***/ (function(module, exports, __webpack_require__) { // Imports var ___CSS_LOADER_API_IMPORT___ = __webpack_require__(12); var ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(false); // Module ___CSS_LOADER_EXPORT___.push([module.i, ".contentful[data-v-34e7e990]{font-size:11px}.contentful button[data-v-34e7e990]{margin-right:1rem}", ""]); // Exports module.exports = ___CSS_LOADER_EXPORT___; /***/ }), /***/ 551: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // ESM COMPAT FLAG __webpack_require__.r(__webpack_exports__); // CONCATENATED MODULE: ./node_modules/vue-loader/lib/loaders/templateLoader.js??vue-loader-options!./node_modules/vue-loader/lib??vue-loader-options!./src/pages/contentful/entity-harvester/index.vue?vue&type=template&id=34e7e990&scoped=true& var render = function () {var _vm=this;var _h=_vm.$createElement;var _c=_vm._self._c||_h;return _c('div',{staticClass:"contentful"},[_c('b-form-group',[_c('b-button',{staticClass:"mb-2",on:{"click":_vm.harvestEntity}},[_vm._v("\n Harvest\n ")])],1),_vm._ssrNode(" <p data-v-34e7e990>"+_vm._ssrEscape(_vm._s(_vm.message))+"</p> <div class=\"cf-form-hint\" data-v-34e7e990>\n Examples:\n <ul style=\"margin-top: 0;\\n padding-left: 1.25rem;\" data-v-34e7e990><li data-v-34e7e990>http://data.europeana.eu/agent/59832</li> <li data-v-34e7e990>https://api.europeana.eu/entity/timespan/20</li> <li data-v-34e7e990>https://www.europeana.eu/en/collections/person/60404-johannes-vermeer</li> <li data-v-34e7e990>https://portaljs-test.eanadev.org/collections/topic/190</li></ul></div>")],2)} var staticRenderFns = [] // CONCATENATED MODULE: ./src/pages/contentful/entity-harvester/index.vue?vue&type=template&id=34e7e990&scoped=true& // EXTERNAL MODULE: ./src/plugins/europeana/entity.js var entity = __webpack_require__(52); // EXTERNAL MODULE: ./src/mixins/contentful/sidebar.js var sidebar = __webpack_require__(295); // EXTERNAL MODULE: ./src/plugins/europeana/utils.js var utils = __webpack_require__(2); // EXTERNAL MODULE: ./src/plugins/europeana/data.js var data = __webpack_require__(10); // CONCATENATED MODULE: ./node_modules/babel-loader/lib??ref--2-0!./node_modules/vue-loader/lib??vue-loader-options!./src/pages/contentful/entity-harvester/index.vue?vue&type=script&lang=js& // // // // // // // // // // // // // // // // // // // // // // // // // // /* harmony default export */ var entity_harvestervue_type_script_lang_js_ = ({ name: 'ContentfulEntityHarvesterPage', mixins: [sidebar["a" /* default */]], layout: 'contentful', data() { return { contentfulExtensionSdk: null, entry: null, message: null }; }, head() { return { title: this.$pageHeadTitle('Entity harvester - Contentful app'), bodyAttrs: { class: '', style: 'background: transparent;' } }; }, methods: { async harvestEntity() { const entityUrl = await this.getUrlFromUser(); if (!entityUrl) { return; } let type, id; try { ({ type, id } = this.entityParamsFromUrl(entityUrl)); } catch (error) { this.showError(`Unable to parse URL: ${entityUrl} Please make sure the URL conforms to the accepted formats.`); return; } let entityResponse; try { entityResponse = await this.$apis.entity.get(type, id); } catch (error) { this.showError(`Unable to harvest: ${entityUrl} Please make sure the entity can be accessed on the entity API. ${error.message}`); return; } try { this.populateFields(entityResponse.entity, id); this.message = 'Success'; } catch (error) { this.showError(`There was a problem updating the entry. ${error.message}`); } }, async getUrlFromUser() { return this.contentfulExtensionSdk.dialogs.openPrompt({ title: 'Harvest', message: 'Enter a Europeana.eu entity/collection page URL, or an entity URI', intent: 'positive' }); }, entityParamsFromUrl(url) { url = url.replace(new RegExp('^https?://api.europeana.eu/entity'), data["a" /* BASE_URL */]); if (Object(entity["h" /* isEntityUri */])(url)) { return Object(entity["b" /* entityParamsFromUri */])(url); } const pageMatch = url.match(new RegExp('^https?://[^/]+(/[a-z]{2})?/collections/(person|topic|time)/([0-9]+)+')); if (pageMatch) { const type = pageMatch[2]; const id = pageMatch[3]; return { type, id }; } throw new Error(); }, // TODO: set up a configurable map for other fields to avoid hard-coding them here populateFields(response, id) { var _this$entry$fields$sl, _this$entry$fields$ty, _this$entry$fields$na, _this$entry$fields$de; const enPrefLabel = Object(utils["h" /* langMapValueForLocale */])(response.prefLabel, 'en', { omitAllUris: true }).values[0]; // set field values this.entry.fields.identifier.setValue(response.id); // data.europeana.eu URI (_this$entry$fields$sl = this.entry.fields.slug) === null || _this$entry$fields$sl === void 0 ? void 0 : _this$entry$fields$sl.setValue(Object(utils["f" /* getLabelledSlug */])(id, enPrefLabel)); // slug (_this$entry$fields$ty = this.entry.fields.type) === null || _this$entry$fields$ty === void 0 ? void 0 : _this$entry$fields$ty.setValue(Object(entity["e" /* getEntityTypeHumanReadable */])(response.type)); // entity type // set name field from `prefLabel` (_this$entry$fields$na = this.entry.fields.name) === null || _this$entry$fields$na === void 0 ? void 0 : _this$entry$fields$na.setValue(enPrefLabel); // set description from different fields based on entity type (_this$entry$fields$de = this.entry.fields.description) === null || _this$entry$fields$de === void 0 ? void 0 : _this$entry$fields$de.setValue(this.entityDescriptionFromResponse(response)); // set image field from `isShownBy` if (this.entry.fields.image) { this.entry.fields.image.removeValue(); if (response.isShownBy) { this.entry.fields.image.setValue(response.isShownBy.thumbnail); } } }, entityDescriptionFromResponse(response) { let description = ''; switch (response.type) { case 'Agent': // use `biographicalInformation` // NB: this is in JSON-LD expanded form description = Object(utils["h" /* langMapValueForLocale */])(response.biographicalInformation, 'en').values[0]; break; case 'Concept': case 'Place': // use `note` // NB: language map with each value being an array of literals description = Object(utils["h" /* langMapValueForLocale */])(response.note, 'en').values[0]; break; case 'Organization': // use `description` // NB: language map with each value being a single literal description = Object(utils["h" /* langMapValueForLocale */])(response.description, 'en').values[0]; break; case 'Timespan': // TODO: use what? `${response.begin} to ${response.end}`? break; } return description; } } }); // CONCATENATED MODULE: ./src/pages/contentful/entity-harvester/index.vue?vue&type=script&lang=js& /* harmony default export */ var contentful_entity_harvestervue_type_script_lang_js_ = (entity_harvestervue_type_script_lang_js_); // EXTERNAL MODULE: ./node_modules/vue-loader/lib/runtime/componentNormalizer.js var componentNormalizer = __webpack_require__(3); // CONCATENATED MODULE: ./src/pages/contentful/entity-harvester/index.vue function injectStyles (context) { var style0 = __webpack_require__(397) if (style0.__inject__) style0.__inject__(context) } /* normalize component */ var component = Object(componentNormalizer["a" /* default */])( contentful_entity_harvestervue_type_script_lang_js_, render, staticRenderFns, false, injectStyles, "34e7e990", "1da92def" ) /* harmony default export */ var entity_harvester = __webpack_exports__["default"] = (component.exports); /***/ }) };; //# sourceMappingURL=index.js.map