<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingGrid Demo</title> <script nonce="undefined" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.1/jquery.min.js"></script> <script nonce="undefined" src="https://cdnjs.cloudflare.com/ajax/libs/jquery-sparklines/2.1.2/jquery.sparkline.min.js"></script> <script nonce="undefined" src="https://cdn.zinggrid.com/zinggrid.min.js"></script> <style> #mobile-grid-demo { --zg-row-card-flex-basis: 50%; overflow: hidden; } #mobile-grid-demo zg-source { opacity: 0; } #mobile-grid-demo zg-source[role] { opacity: 1; } #mobile-grid-demo [layout="card"] zg-row { background: #fbfbfb; } #mobile-grid-demo [layout="card"] zg-cell { max-width: 50%; } #mobile-grid-demo [layout="card"] zg-cell:before { justify-content: center; text-align: center; } /* All cards & row GDP_5yr */ #mobile-grid-demo [layout="card"] zg-cell [data-field-index], #mobile-grid-demo zg-cell [data-field-index="gdp_5yr"] { display: flex; align-items: center; justify-content: center; text-align: center; line-height: 1.4; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, .18); } /* GDP Only */ #mobile-grid-demo zg-cell [data-field-index="gdp_5yr"] { margin: 0 auto; padding: 10px; max-width: 90px; } /* All Mobile */ #mobile-grid-demo [layout="card"] zg-cell [data-field-index] { margin: 8px 0; padding: 10px 0; max-width: 100%; width: 100%; min-height: 51px; } #mobile-grid-demo[viewport="mobile"][layout="card"] zg-cell { padding: 0 13px; } #mobile-grid-demo[viewport="mobile"][layout="card"] zg-cell [data-field-index] { margin-right: 0; margin-left: 0; font-size: .9rem; } #mobile-grid-demo[viewport="mobile"][layout="card"] zg-cell [data-field-index="flag"] { font-size: 2rem; } #mobile-grid-demo .flag [data-field-index] { min-height: 42px; visibility: hidden; justify-content: center; font-size: 2rem; } #mobile-grid-demo .flag [data-field-index].loaded { visibility: visible; } #mobile-grid-demo zg-column .sparklines { opacity: 0; } #mobile-grid-demo zg-source small { margin-right: 3px; font-size: 90%; opacity: .7; } @media screen and (min-width:768px) { #mobile-grid-demo { --zing-grid-border: 0; } } zing-grid[loading] { height: 404px; } </style> </head> <body> <zing-grid id="mobile-grid-demo" caption="Zing Around The Globe" data=' [ { "country": "United States", "flag": ":flag-us:", "gdp_5yr": [16691.52,17427.61,18120.71,18624.48,19390.6], "gdp": 19390.6, "tld": ".us" }, { "country": "Romania", "flag": ":flag-ro:", "gdp_5yr": [191.55,199,49,177.91,187.81,211.8], "gdp": 211.8, "tld": ".ro" }, { "country": "New Zealand", "flag": ":flag-nz:", "gdp_5yr": [190.79,200.96,177.62,189.29,205.85], "gdp": 205.85, "tld": ".nz" }, { "country": "United Kingdom", "flag": ":flag-gb:", "gdp_5yr": [2739.82,3022.83,2885.57,2650.85,2622.43], "gdp": 2622.43, "tld": ".uk" }, { "country": "India", "flag": ":flag-in:", "gdp_5yr": [1856.72,2039.1,2102.4,2274.2,2597.49], "gdp": 2597.49, "tld": ".in" }, { "country": "Mexico", "flag": ":flag-mx:", "gdp_5yr": [1274.44,1314.39,1169.62,1076.91,1149.92], "gdp": 1149.92, "tld": ".mx" } ] ' layout loading editor context-menu pager page-size="4" page-size-options="4,6,8"> <zg-colgroup> <zg-column index="country"></zg-column> <zg-column index="gdp_5yr" header="5yr GDP ($ Bil.)" cell-class="gdp5" renderer="renderGDP" align="center" title="This country's five-year Gross Domestic Product (nominal) sparkline"> <span class="sparklines">[[index.gdp_5yr]]</span> </zg-column> <zg-column index="flag" cell-class="flag" renderer="renderFlag" align="center"></zg-column> <zg-column index="gdp" header="2017 GDP ($ Bil.)" cell-class="gdp" type="currency" type-currency="usd" align="right" title="This country's 2017 Gross Domestic Product (nominal)"></zg-column> <zg-column index="tld" align="center" title="This country's Top-Level Domain"></zg-column> </zg-colgroup> <zg-source><small>Source:</small> Wikipedia, World Bank</zg-source> </zing-grid> <script> ZingGrid.setLicense(['26ccbfec16b8be9ee98c7d57bee6e498']); const zgMobileDemo = { grid: document.getElementById('mobile-grid-demo'), emojis: null, loadedAttr: 'loaded', renderFlag(shortcode, cellDom, $cell) { const { emojis, loadedAttr } = zgMobileDemo; let returnText = shortcode; if (emojis && emojis.length) { for (let emoji in emojis) { if (shortcode === emojis[emoji].shortname) { returnText = emojis[emoji].emoji; $cell.dom().children[0].classList.add(loadedAttr); break; } } } return returnText; }, renderGDP(values, cellDom, $cell) { const { loadedAttr } = zgMobileDemo; const sparklineContainer = $cell.dom().querySelector('.sparklines'); $(sparklineContainer).sparkline('html', { type: 'line', fillColor: 'transparent', width: 60, height: 50, }); $cell.dom().children[0].classList.add(loadedAttr); }, }; // window:load event for Javascript to run after HTML // because this Javascript is injected into the document head window.addEventListener('load', (e) => { // Javascript code to execute after DOM content // Register renderers ZingGrid.registerMethod(zgMobileDemo.renderGDP, 'renderGDP'); ZingGrid.registerMethod(zgMobileDemo.renderFlag, 'renderFlag'); fetch('https://gist.githubusercontent.com/oliveratgithub/0bf11a9aff0d6da7b46f1490f86a71eb/raw/ac8dde8a374066bcbcf44a8296fc0522c7392244/emojis.json') .then(r => r.json()) .then(r => { zgMobileDemo.emojis = r.emojis; if (zgMobileDemo.grid) zgMobileDemo.grid.refresh(); }); }); </script> </body> </html>
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>ZingGrid Demo</title> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.1/jquery.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-sparklines/2.1.2/jquery.sparkline.min.js"></script> <script src="https://cdn.zinggrid.com/zinggrid.min.js"></script> </head> <body> <zing-grid id="mobile-grid-demo" caption="Zing Around The Globe" data=' [ { "country": "United States", "flag": ":flag-us:", "gdp_5yr": [16691.52,17427.61,18120.71,18624.48,19390.6], "gdp": 19390.6, "tld": ".us" }, { "country": "Romania", "flag": ":flag-ro:", "gdp_5yr": [191.55,199,49,177.91,187.81,211.8], "gdp": 211.8, "tld": ".ro" }, { "country": "New Zealand", "flag": ":flag-nz:", "gdp_5yr": [190.79,200.96,177.62,189.29,205.85], "gdp": 205.85, "tld": ".nz" }, { "country": "United Kingdom", "flag": ":flag-gb:", "gdp_5yr": [2739.82,3022.83,2885.57,2650.85,2622.43], "gdp": 2622.43, "tld": ".uk" }, { "country": "India", "flag": ":flag-in:", "gdp_5yr": [1856.72,2039.1,2102.4,2274.2,2597.49], "gdp": 2597.49, "tld": ".in" }, { "country": "Mexico", "flag": ":flag-mx:", "gdp_5yr": [1274.44,1314.39,1169.62,1076.91,1149.92], "gdp": 1149.92, "tld": ".mx" } ] ' layout loading editor context-menu pager page-size="4" page-size-options="4,6,8"> <zg-colgroup> <zg-column index="country"></zg-column> <zg-column index="gdp_5yr" header="5yr GDP ($ Bil.)" cell-class="gdp5" renderer="renderGDP" align="center" title="This country's five-year Gross Domestic Product (nominal) sparkline"> <span class="sparklines">[[index.gdp_5yr]]</span> </zg-column> <zg-column index="flag" cell-class="flag" renderer="renderFlag" align="center"></zg-column> <zg-column index="gdp" header="2017 GDP ($ Bil.)" cell-class="gdp" type="currency" type-currency="usd" align="right" title="This country's 2017 Gross Domestic Product (nominal)"></zg-column> <zg-column index="tld" align="center" title="This country's Top-Level Domain"></zg-column> </zg-colgroup> <zg-source><small>Source:</small> Wikipedia, World Bank</zg-source> </zing-grid> </body> </html>
#mobile-grid-demo { --zg-row-card-flex-basis: 50%; overflow: hidden; } #mobile-grid-demo zg-source { opacity: 0; } #mobile-grid-demo zg-source[role] { opacity: 1; } #mobile-grid-demo [layout="card"] zg-row { background: #fbfbfb; } #mobile-grid-demo [layout="card"] zg-cell { max-width: 50%; } #mobile-grid-demo [layout="card"] zg-cell:before { justify-content: center; text-align: center; } /* All cards & row GDP_5yr */ #mobile-grid-demo [layout="card"] zg-cell [data-field-index], #mobile-grid-demo zg-cell [data-field-index="gdp_5yr"] { display: flex; align-items: center; justify-content: center; text-align: center; line-height: 1.4; background: #fff; box-shadow: 0 2px 4px rgba(0, 0, 0, .18); } /* GDP Only */ #mobile-grid-demo zg-cell [data-field-index="gdp_5yr"] { margin: 0 auto; padding: 10px; max-width: 90px; } /* All Mobile */ #mobile-grid-demo [layout="card"] zg-cell [data-field-index] { margin: 8px 0; padding: 10px 0; max-width: 100%; width: 100%; min-height: 51px; } #mobile-grid-demo[viewport="mobile"][layout="card"] zg-cell { padding: 0 13px; } #mobile-grid-demo[viewport="mobile"][layout="card"] zg-cell [data-field-index] { margin-right: 0; margin-left: 0; font-size: .9rem; } #mobile-grid-demo[viewport="mobile"][layout="card"] zg-cell [data-field-index="flag"] { font-size: 2rem; } #mobile-grid-demo .flag [data-field-index] { min-height: 42px; visibility: hidden; justify-content: center; font-size: 2rem; } #mobile-grid-demo .flag [data-field-index].loaded { visibility: visible; } #mobile-grid-demo zg-column .sparklines { opacity: 0; } #mobile-grid-demo zg-source small { margin-right: 3px; font-size: 90%; opacity: .7; } @media screen and (min-width:768px) { #mobile-grid-demo { --zing-grid-border: 0; } }
const zgMobileDemo = { grid: document.getElementById('mobile-grid-demo'), emojis: null, loadedAttr: 'loaded', renderFlag(shortcode, cellDom, $cell) { const { emojis, loadedAttr } = zgMobileDemo; let returnText = shortcode; if (emojis && emojis.length) { for (let emoji in emojis) { if (shortcode === emojis[emoji].shortname) { returnText = emojis[emoji].emoji; $cell.dom().children[0].classList.add(loadedAttr); break; } } } return returnText; }, renderGDP(values, cellDom, $cell) { const { loadedAttr } = zgMobileDemo; const sparklineContainer = $cell.dom().querySelector('.sparklines'); $(sparklineContainer).sparkline('html', { type: 'line', fillColor: 'transparent', width: 60, height: 50, }); $cell.dom().children[0].classList.add(loadedAttr); }, }; // window:load event for Javascript to run after HTML // because this Javascript is injected into the document head window.addEventListener('load', (e) => { // Javascript code to execute after DOM content // Register renderers ZingGrid.registerMethod(zgMobileDemo.renderGDP, 'renderGDP'); ZingGrid.registerMethod(zgMobileDemo.renderFlag, 'renderFlag'); fetch('https://gist.githubusercontent.com/oliveratgithub/0bf11a9aff0d6da7b46f1490f86a71eb/raw/ac8dde8a374066bcbcf44a8296fc0522c7392244/emojis.json') .then(r => r.json()) .then(r => { zgMobileDemo.emojis = r.emojis; if (zgMobileDemo.grid) zgMobileDemo.grid.refresh(); }); });