window.customElements.define('d4s-social-search', class extends HTMLElement { constructor() { super() } connectedCallback() { //console.log(typeof d4s) //console.log(this) //this.attachShadow({mode: "open"}) //console.log(this.shadowRoot.querySelector("*[name=search]")) //const shadowRoot = this.attachShadow({mode: 'open'}) //console.log(shadowRoot.innerHTML) console.log("d4s-social-search connectedCallback") var d4s = document.querySelector('d4s-boot-2') /* d4s.service( 'https://api.dev.d4science.org/rest/2/full-text-search/search-by-query?query=d4science', 'GET', null, (resp) => { document.getElementById('output').innerText = resp }, () => { alert('Forbidden') } ) d4s.service( 'https://api.dev.d4science.org/rest/2/posts/get-posts-user-quantity', 'GET', null, (resp) => { document.getElementById('output').innerText = resp }, () => { alert('Forbidden') } ) */ } }) window.customElements.define('d4s-social-posts', class extends HTMLElement { #basepath = 'https://api.d4science.org/rest' #quantity = 20 constructor() { super() } connectedCallback() { const shadowRoot = this.attachShadow({mode: 'open'}) var d4s = document.querySelector('d4s-boot-2') d4s.service( this.#basepath + '/2/posts/get-posts-vre', 'GET', null, (resp) => { var jresp = JSON.parse(resp) if (jresp.success) { var ul = document.createElement('ul') jresp.result.reverse().forEach(post => { if (this.#quantity-- > 0) { var li = document.createElement('li') li.setAttribute('class', 'd4s-social-post') const datetime = new Date(0) datetime.setUTCMilliseconds(post.time) const thumbnail = (!post.thumbnail_url.startsWith('http')) ? 'https://' + d4s.clientId + post.thumbnail_url : post.thumbnail_url li.innerHTML = `
${post.full_name}
${datetime.toLocaleString()}
${post.description}
` ul.appendChild(li) } }) shadowRoot.appendChild(ul) } }, () => { alert('Forbidden') } ) } static get observedAttributes() { return ["url", "quantity"]; } attributeChangedCallback(name, oldValue, newValue) { if (oldValue !== newValue) { switch (name) { case "url": this.#basepath = newValue break case "quantity": this.#quantity = newValue break } } } get url() { return this.#basepath } set url(url) { this.#basepath = url this.setAttribute("url", url) } get quantity() { return this.#quantity } set quantity(quantity) { this.#quantity = quantity this.setAttribute("quantity", quantity) } })