wip
This commit is contained in:
parent
d6d6a1083a
commit
654cee118d
|
@ -6,7 +6,7 @@
|
|||
"title": "Matchplay Results",
|
||||
"category": "widgets",
|
||||
"icon": "embed-generic",
|
||||
"description": "Example block scaffolded with Create Block tool.",
|
||||
"description": "Show results from a matchplay tournament.",
|
||||
"supports": {
|
||||
"html": false
|
||||
},
|
||||
|
@ -21,6 +21,9 @@
|
|||
"selector": "div",
|
||||
"attribute": "data-tournament-id",
|
||||
"default": ""
|
||||
},
|
||||
"data": {
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1 +1 @@
|
|||
<?php return array('dependencies' => array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n'), 'version' => 'aedcfaf64dcd52377178');
|
||||
<?php return array('dependencies' => array('wp-block-editor', 'wp-blocks', 'wp-components', 'wp-element', 'wp-i18n'), 'version' => '388c433128d11a09e6ca');
|
||||
|
|
|
@ -1 +1 @@
|
|||
!function(){"use strict";var e,t={165:function(){var e=window.wp.blocks,t=window.wp.element,n=(window.wp.i18n,window.wp.blockEditor),r=window.wp.components;function l(){return l=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var r in n)Object.prototype.hasOwnProperty.call(n,r)&&(e[r]=n[r])}return e},l.apply(this,arguments)}var a=JSON.parse('{"u2":"tcpinball/matchplay-results"}');(0,e.registerBlockType)(a.u2,{edit:function(e){let{attributes:l,setAttributes:a}=e;return(0,t.createElement)("div",(0,n.useBlockProps)(),(0,t.createElement)(r.TextControl,{label:"Tournament ID",value:l.tournament_id,onChange:e=>a({tournament_id:e})}))},save:function(e){let{attributes:r}=e;const a=n.useBlockProps.save();return(0,t.createElement)("div",l({},a,{"data-tournament-id":r.tournament_id}),(0,t.createElement)("table",null,(0,t.createElement)("thead",null,(0,t.createElement)("th",null,"Place"),(0,t.createElement)("th",null,"Player"),(0,t.createElement)("th",null,"Points")),(0,t.createElement)("tbody",null,(0,t.createElement)("tr",null,(0,t.createElement)("td",null,"1"),(0,t.createElement)("td",null,"Maddie"),(0,t.createElement)("td",null,"infinity")))))}})}},n={};function r(e){var l=n[e];if(void 0!==l)return l.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,r),a.exports}r.m=t,e=[],r.O=function(t,n,l,a){if(!n){var o=1/0;for(s=0;s<e.length;s++){n=e[s][0],l=e[s][1],a=e[s][2];for(var i=!0,u=0;u<n.length;u++)(!1&a||o>=a)&&Object.keys(r.O).every((function(e){return r.O[e](n[u])}))?n.splice(u--,1):(i=!1,a<o&&(o=a));if(i){e.splice(s--,1);var c=l();void 0!==c&&(t=c)}}return t}a=a||0;for(var s=e.length;s>0&&e[s-1][2]>a;s--)e[s]=e[s-1];e[s]=[n,l,a]},r.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={826:0,431:0};r.O.j=function(t){return 0===e[t]};var t=function(t,n){var l,a,o=n[0],i=n[1],u=n[2],c=0;if(o.some((function(t){return 0!==e[t]}))){for(l in i)r.o(i,l)&&(r.m[l]=i[l]);if(u)var s=u(r)}for(t&&t(n);c<o.length;c++)a=o[c],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(s)},n=self.webpackChunkmatchplay=self.webpackChunkmatchplay||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var l=r.O(void 0,[431],(function(){return r(165)}));l=r.O(l)}();
|
||||
!function(){"use strict";var e,t={165:function(){var e=window.wp.blocks,t=window.wp.element,n=(window.wp.i18n,window.wp.blockEditor),l=window.wp.components;function r(){return r=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var l in n)Object.prototype.hasOwnProperty.call(n,l)&&(e[l]=n[l])}return e},r.apply(this,arguments)}var a=JSON.parse('{"u2":"tcpinball/matchplay-results"}');(0,e.registerBlockType)(a.u2,{edit:function(e){let{attributes:r,setAttributes:a}=e;const[o,u]=(0,t.useState)(null);return(0,t.createElement)(t.Fragment,null,(0,t.createElement)(n.InspectorControls,null,(0,t.createElement)(l.PanelBody,null,(0,t.createElement)(l.TextControl,{label:"Tournament ID",value:r.tournament_id,onChange:e=>a({tournament_id:e})}))),(0,t.createElement)("div",(0,n.useBlockProps)(),(0,t.createElement)("p",null,"Results for tournament id ",r.tournament_id),(0,t.createElement)("button",{onClick:()=>function(){let e=`https://matchplay.events/data/tournaments/${r.tournament_id}/standings`;fetch(e).then((e=>e.json())).then((e=>{let t={...e};a({data:t}),u(t),console.log(t)})).catch((e=>console.error(e)))}()},"Fetch Results"),o&&(0,t.createElement)(t.Fragment,null,(0,t.createElement)("table",{id:"tournament-results-table"},(0,t.createElement)("thead",null,(0,t.createElement)("tr",null,(0,t.createElement)("th",null,"Place"),(0,t.createElement)("th",null,"Player"),(0,t.createElement)("th",null,"Points"))),(0,t.createElement)("tbody",null,Object.keys(o).map(((e,n)=>(0,t.createElement)("tr",{key:e},(0,t.createElement)("td",null,o[n].position),(0,t.createElement)("td",null,o[n].name),(0,t.createElement)("td",null,o[n].points)))))))))},save:function(e){let{attributes:l}=e;const a=n.useBlockProps.save();return(0,t.createElement)("div",r({},a,{"data-tournament-id":l.tournament_id}),(0,t.createElement)("table",{id:"tournament-results-table"},(0,t.createElement)("thead",null,(0,t.createElement)("tr",null,(0,t.createElement)("th",null,"Place"),(0,t.createElement)("th",null,"Player"),(0,t.createElement)("th",null,"Points"))),(0,t.createElement)("tbody",null,Object.keys(l.data).map(((e,n)=>(0,t.createElement)("tr",{key:e},(0,t.createElement)("td",null,l.data[n].position),(0,t.createElement)("td",null,l.data[n].name),(0,t.createElement)("td",null,l.data[n].points)))))))}})}},n={};function l(e){var r=n[e];if(void 0!==r)return r.exports;var a=n[e]={exports:{}};return t[e](a,a.exports,l),a.exports}l.m=t,e=[],l.O=function(t,n,r,a){if(!n){var o=1/0;for(s=0;s<e.length;s++){n=e[s][0],r=e[s][1],a=e[s][2];for(var u=!0,c=0;c<n.length;c++)(!1&a||o>=a)&&Object.keys(l.O).every((function(e){return l.O[e](n[c])}))?n.splice(c--,1):(u=!1,a<o&&(o=a));if(u){e.splice(s--,1);var i=r();void 0!==i&&(t=i)}}return t}a=a||0;for(var s=e.length;s>0&&e[s-1][2]>a;s--)e[s]=e[s-1];e[s]=[n,r,a]},l.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},function(){var e={826:0,431:0};l.O.j=function(t){return 0===e[t]};var t=function(t,n){var r,a,o=n[0],u=n[1],c=n[2],i=0;if(o.some((function(t){return 0!==e[t]}))){for(r in u)l.o(u,r)&&(l.m[r]=u[r]);if(c)var s=c(l)}for(t&&t(n);i<o.length;i++)a=o[i],l.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return l.O(s)},n=self.webpackChunkmatchplay=self.webpackChunkmatchplay||[];n.forEach(t.bind(null,0)),n.push=t.bind(null,n.push.bind(n))}();var r=l.O(void 0,[431],(function(){return l(165)}));r=l.O(r)}();
|
|
@ -20,7 +20,8 @@
|
|||
*
|
||||
* @see https://developer.wordpress.org/reference/functions/register_block_type/
|
||||
*/
|
||||
function create_block_matchplay_block_init() {
|
||||
function create_block_matchplay_block_init(): void {
|
||||
register_block_type( __DIR__ . '/build' );
|
||||
}
|
||||
|
||||
add_action( 'init', 'create_block_matchplay_block_init' );
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
"title": "Matchplay Results",
|
||||
"category": "widgets",
|
||||
"icon": "embed-generic",
|
||||
"description": "Example block scaffolded with Create Block tool.",
|
||||
"description": "Show results from a matchplay tournament.",
|
||||
"supports": {
|
||||
"html": false
|
||||
},
|
||||
|
@ -21,7 +21,10 @@
|
|||
"selector": "div",
|
||||
"attribute": "data-tournament-id",
|
||||
"default": ""
|
||||
},
|
||||
"data": {
|
||||
"type": "object"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
67
src/edit.js
67
src/edit.js
|
@ -1,6 +1,7 @@
|
|||
import { __ } from '@wordpress/i18n';
|
||||
import { useBlockProps } from '@wordpress/block-editor';
|
||||
import { TextControl } from '@wordpress/components';
|
||||
import { InspectorControls, useBlockProps } from '@wordpress/block-editor';
|
||||
import { TextControl, PanelBody } from '@wordpress/components';
|
||||
import { useState } from '@wordpress/element';
|
||||
import './editor.scss';
|
||||
|
||||
/**
|
||||
|
@ -12,13 +13,61 @@ import './editor.scss';
|
|||
* @return {WPElement} Element to render.
|
||||
*/
|
||||
export default function Edit( { attributes, setAttributes } ) {
|
||||
const [apiData, setApiData] = useState(null);
|
||||
|
||||
function fetchTournamentData() {
|
||||
let url = `https://matchplay.events/data/tournaments/${attributes.tournament_id}/standings`;
|
||||
fetch(url)
|
||||
.then(response => response.json())
|
||||
.then(response => {
|
||||
let newData = { ...response };
|
||||
setAttributes( { data: newData } );
|
||||
setApiData(newData);
|
||||
console.log(newData);
|
||||
})
|
||||
.catch(err => console.error( err ));
|
||||
}
|
||||
|
||||
return (
|
||||
<div { ...useBlockProps() }>
|
||||
<TextControl
|
||||
label='Tournament ID'
|
||||
value={ attributes.tournament_id }
|
||||
onChange={ ( val ) => setAttributes( { tournament_id: val } ) }
|
||||
/>
|
||||
</div>
|
||||
<>
|
||||
<InspectorControls>
|
||||
<PanelBody>
|
||||
<TextControl
|
||||
label="Tournament ID"
|
||||
value={ attributes.tournament_id }
|
||||
onChange={ ( val ) => setAttributes( { tournament_id: val } ) }
|
||||
/>
|
||||
</PanelBody>
|
||||
</InspectorControls>
|
||||
|
||||
<div { ...useBlockProps() }>
|
||||
<p>Results for tournament id { attributes.tournament_id }</p>
|
||||
<button onClick={() => fetchTournamentData()}>Fetch Results</button>
|
||||
{apiData && (
|
||||
<>
|
||||
<table id="tournament-results-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Place</th>
|
||||
<th>Player</th>
|
||||
<th>Points</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{Object.keys(apiData).map((player, i) => {
|
||||
return (
|
||||
<tr key={player}>
|
||||
<td>{apiData[i].position}</td>
|
||||
<td>{apiData[i].name}</td>
|
||||
<td>{apiData[i].points}</td>
|
||||
</tr>
|
||||
);
|
||||
})}
|
||||
</tbody>
|
||||
</table>
|
||||
</>
|
||||
)}
|
||||
</div>
|
||||
</>
|
||||
);
|
||||
}
|
||||
|
|
34
src/save.js
34
src/save.js
|
@ -14,21 +14,29 @@ export default function save( { attributes } ) {
|
|||
const blockProps = useBlockProps.save();
|
||||
return (
|
||||
<div { ...blockProps } data-tournament-id={ attributes.tournament_id }>
|
||||
<table>
|
||||
<thead>
|
||||
<th>Place</th>
|
||||
<th>Player</th>
|
||||
<th>Points</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
{attributes.data && (
|
||||
<table id="tournament-results-table">
|
||||
<thead>
|
||||
<tr>
|
||||
<td>1</td>
|
||||
<td>Maddie</td>
|
||||
<td>infinity</td>
|
||||
<th>Place</th>
|
||||
<th>Player</th>
|
||||
<th>Points</th>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
</thead>
|
||||
<tbody>
|
||||
{Object.keys(attributes.data).map((player, i) => {
|
||||
return (
|
||||
<tr key={player}>
|
||||
<td>{attributes.data[i].position}</td>
|
||||
<td>{attributes.data[i].name}</td>
|
||||
<td>{attributes.data[i].points}</td>
|
||||
</tr>
|
||||
);
|
||||
})}
|
||||
</tbody>
|
||||
</table>
|
||||
)}
|
||||
|
||||
{/* <ExternalLink href={ `https://next.matchplay.events/tournaments/${ attributes.tournament_id }/standings` }>
|
||||
Full Results on Matchplay
|
||||
</ExternalLink> */}
|
||||
|
|
Loading…
Reference in New Issue