qwc2
Version:
QGIS Web Client
3 lines • 10.9 kB
JavaScript
function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)}function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t["return"]||t["return"]()}finally{if(u)throw o}}}}function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _toConsumableArray(r){return _arrayWithoutHoles(r)||_iterableToArray(r)||_unsupportedIterableToArray(r)||_nonIterableSpread()}function _nonIterableSpread(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _iterableToArray(r){if("undefined"!=typeof Symbol&&null!=r[Symbol.iterator]||null!=r["@@iterator"])return Array.from(r)}function _arrayWithoutHoles(r){if(Array.isArray(r))return _arrayLikeToArray(r)}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _classCallCheck(a,n){if(!(a instanceof n))throw new TypeError("Cannot call a class as a function")}function _defineProperties(e,r){for(var t=0;t<r.length;t++){var o=r[t];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,_toPropertyKey(o.key),o)}}function _createClass(e,r,t){return r&&_defineProperties(e.prototype,r),t&&_defineProperties(e,t),Object.defineProperty(e,"prototype",{writable:!1}),e}function _callSuper(t,o,e){return o=_getPrototypeOf(o),_possibleConstructorReturn(t,_isNativeReflectConstruct()?Reflect.construct(o,e||[],_getPrototypeOf(t).constructor):o.apply(t,e))}function _possibleConstructorReturn(t,e){if(e&&("object"==_typeof(e)||"function"==typeof e))return e;if(void 0!==e)throw new TypeError("Derived constructors may only return object or undefined");return _assertThisInitialized(t)}function _assertThisInitialized(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}function _isNativeReflectConstruct(){try{var t=!Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],function(){}))}catch(t){}return(_isNativeReflectConstruct=function _isNativeReflectConstruct(){return!!t})()}function _getPrototypeOf(t){return _getPrototypeOf=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(t){return t.__proto__||Object.getPrototypeOf(t)},_getPrototypeOf(t)}function _inherits(t,e){if("function"!=typeof e&&null!==e)throw new TypeError("Super expression must either be null or a function");t.prototype=Object.create(e&&e.prototype,{constructor:{value:t,writable:!0,configurable:!0}}),Object.defineProperty(t,"prototype",{writable:!1}),e&&_setPrototypeOf(t,e)}function _setPrototypeOf(t,e){return _setPrototypeOf=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(t,e){return t.__proto__=e,t},_setPrototypeOf(t,e)}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}import React from"react";import{remove as removeDiacritics}from"diacritics";import isEmpty from"lodash.isempty";import PropTypes from"prop-types";import LayerUtils from"../../utils/LayerUtils";import LocaleUtils from"../../utils/LocaleUtils";import ServiceLayerUtils from"../../utils/ServiceLayerUtils";import Icon from"../Icon";import InputContainer from"./InputContainer";import"./style/LayerCatalogWidget.css";var LayerCatalogWidget=/*#__PURE__*/function(_React$PureComponent){function LayerCatalogWidget(props){var _this;_classCallCheck(this,LayerCatalogWidget);_this=_callSuper(this,LayerCatalogWidget,[props]);_defineProperty(_this,"state",{catalog:[],filter:""});_defineProperty(_this,"toggleLayerListEntry",function(path){_this.setState(function(state){var newCatalog=_toConsumableArray(state.catalog);newCatalog[path[0]]=_objectSpread({},newCatalog[path[0]]);var cur=newCatalog[path[0]];var _iterator=_createForOfIteratorHelper(path.slice(1)),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var idx=_step.value;cur.sublayers[idx]=_objectSpread({},cur.sublayers[idx]);cur=cur.sublayers[idx]}}catch(err){_iterator.e(err)}finally{_iterator.f()}cur.expanded=!cur.expanded;return{catalog:newCatalog}})});_defineProperty(_this,"addServiceLayer",function(entry){var asGroup=arguments.length>1&&arguments[1]!==undefined?arguments[1]:false;if(entry.resource){var _entry$title;var params=LayerUtils.splitLayerUrlParam(entry.resource);// Create placeholder layer
_this.props.addLayer({id:params.id,type:"placeholder",name:params.name,title:(_entry$title=entry.title)!==null&&_entry$title!==void 0?_entry$title:params.name,role:params.USERLAYER,loading:true});ServiceLayerUtils.findLayers(params.type,params.url,[params],_this.props.mapCrs,function(id,layer){if(layer){if(entry.sublayers===false){layer.sublayers=null}LayerUtils.propagateLayerProperty(layer,"opacity",params.opacity);_this.props.replacePlaceholderLayer(params.id,layer)}else{// eslint-disable-next-line
alert(LocaleUtils.tr("importlayer.addfailed"));_this.props.removeLayer(params.id)}})}else if(entry.type==="wms"||entry.type==="wfs"||entry.type==="wmts"){if(asGroup){_this.props.addLayer(entry)}else{_this.props.addLayer(_objectSpread(_objectSpread({},entry),{},{sublayers:null}))}}});_this.state.catalog=props.catalog||[];return _this}_inherits(LayerCatalogWidget,_React$PureComponent);return _createClass(LayerCatalogWidget,[{key:"componentDidUpdate",value:function componentDidUpdate(prevProps){if(this.props.catalog!==prevProps.catalog){this.setState({catalog:this.props.catalog||[]})}}},{key:"renderCatalogEntry",value:function renderCatalogEntry(entry,filter,path){var _this2=this;var level=arguments.length>3&&arguments[3]!==undefined?arguments[3]:0;var idx=arguments.length>4?arguments[4]:undefined;var hasSublayers=!isEmpty(entry.sublayers);var sublayers=hasSublayers?entry.sublayers.map(function(sublayer,i){return _this2.renderCatalogEntry(sublayer,filter,[].concat(_toConsumableArray(path),[i]),level+1,i)}):[];if(sublayers.filter(function(item){return item}).length===0&&filter&&!removeDiacritics(entry.title).match(filter)){return null}var type=entry.resource?entry.resource.slice(0,entry.resource.indexOf(":")):entry.type;var key=(entry.resource||entry.type+":"+entry.name)+":"+idx;var indentSize=!this.props.levelBasedIndentSize&&level>0?1.5:level;return/*#__PURE__*/React.createElement("div",{key:key,style:{paddingLeft:indentSize+"em"}},/*#__PURE__*/React.createElement("div",{className:"layer-catalog-widget-entry"},hasSublayers?/*#__PURE__*/React.createElement(Icon,{icon:entry.expanded?"tree_minus":"tree_plus",onClick:function onClick(){return _this2.toggleLayerListEntry(path)}}):/*#__PURE__*/React.createElement("span",{className:"layer-catalog-widget-entry-iconspacer"}),/*#__PURE__*/React.createElement("span",{className:"layer-catalog-widget-entry-contents",onClick:function onClick(){return type?_this2.addServiceLayer(entry):_this2.toggleLayerListEntry(path)}},type?/*#__PURE__*/React.createElement("span",{className:"layer-catalog-widget-entry-service"},type):null,entry.title),hasSublayers&&entry.type==="wms"?/*#__PURE__*/React.createElement(Icon,{icon:"group",onClick:function onClick(){return _this2.addServiceLayer(entry,true)},title:LocaleUtils.tr("importlayer.asgroup")}):null),entry.expanded?sublayers:null)}},{key:"render",value:function render(){var _this3=this;var filter=new RegExp(removeDiacritics(this.state.filter).replace(/[-[\]/{}()*+?.\\^$|]/g,"\\$&"),"i");var emptyEntry=null;if(isEmpty(this.state.catalog)&&this.props.pendingRequests===0){emptyEntry=/*#__PURE__*/React.createElement("div",{className:"layer-catalog-placeholder"},LocaleUtils.tr("importlayer.noresults"))}else if(isEmpty(this.state.catalog)){emptyEntry=/*#__PURE__*/React.createElement("div",{className:"layer-catalog-placeholder"},LocaleUtils.tr("importlayer.loading"))}var filterplaceholder=LocaleUtils.tr("importlayer.filter");return/*#__PURE__*/React.createElement("div",{className:"layer-catalog-widget"},/*#__PURE__*/React.createElement(InputContainer,{className:"layer-catalog-widget-filter"},/*#__PURE__*/React.createElement("input",{onChange:function onChange(ev){return _this3.setState({filter:ev.target.value})},placeholder:filterplaceholder,role:"input",type:"text",value:this.state.filter}),/*#__PURE__*/React.createElement(Icon,{icon:"clear",onClick:function onClick(){return _this3.setState({filter:""})},role:"suffix"})),/*#__PURE__*/React.createElement("div",{className:"layer-catalog-widget-body"},this.state.catalog.map(function(entry,idx){return _this3.renderCatalogEntry(entry,filter,[idx],0,idx)}),emptyEntry))}}])}(React.PureComponent);_defineProperty(LayerCatalogWidget,"propTypes",{addLayer:PropTypes.func,catalog:PropTypes.array,levelBasedIndentSize:PropTypes.bool,mapCrs:PropTypes.string,pendingRequests:PropTypes.number,removeLayer:PropTypes.func,replacePlaceholderLayer:PropTypes.func});export{LayerCatalogWidget as default};