- <!DOCTYPE html>
- <html>
-
- <head>
- <meta charset="utf-8">
- <title>ZingGrid: Simple Grid</title>
- <script nonce="undefined" src="https://cdn.zinggrid.com/zinggrid.min.js"></script>
- <style>
- .increased {
- color: #66bb6a;
- }
-
- .increased::before {
- content: '↑';
- }
-
- .decreased {
- color: #ef5350;
- }
-
- .decreased::before {
- content: '↓';
- }
-
- .highlight {
- background: #fff59d;
- }
-
- zing-grid[loading] {
- height: 373px;
- }
- </style>
- </head>
-
- <body>
- <zing-grid caption="Cell Formatting">
- <zg-data data='[
- {
- "open": "114.1900",
- "high": "114.4950",
- "low": "113.6800",
- "close": "114.2750",
- "volume": "7120112"
- }, {
- "open": "113.0300",
- "high": "114.9000",
- "low": "112.2175",
- "close": "114.6700",
- "volume": "27334460"
- }, {
- "open": "113.0500",
- "high": "113.3200",
- "low": "111.0350",
- "close": "111.7000",
- "volume": "21728429"
- }, {
- "open": "112.1900",
- "high": "113.6950",
- "low": "111.7200",
- "close": "113.2100",
- "volume": "22170934"
- }, {
- "open": "113.6900",
- "high": "113.7000",
- "low": "111.8600",
- "close": "112.1400",
- "volume": "20736516"
- }
-
- ]'></zg-data>
- <zg-colgroup>
- <zg-column index="open" type="currency" cell-class="_renderStocks"></zg-column>
- <zg-column index="high" type="currency" cell-class="_highlightHigh"></zg-column>
- <zg-column index="low" type="currency" cell-class="_highlightLow"></zg-column>
- <zg-column index="close" type="currency"></zg-column>
- <zg-column index="volume"></zg-column>
- </zg-colgroup>
- </zing-grid>
- <script>
- ZingGrid.setLicense(['26ccbfec16b8be9ee98c7d57bee6e498']); // global vars for highlight min/max values
- var gHigh = -1;
- var gLow = Number.MAX_SAFE_INTEGER;
-
- // determine if we should render positive/negative
- // cell styling based on opening stock price vs when it last
- // closed
- function _renderStocks(open, cellDOMRef, cellRef) {
- console.log(`open value: ${open} - record info ${JSON.stringify(cellRef.record)}`);
- // if open is higher than close value
- if (open > cellRef.record.close) return 'stock-open increased';
-
- return 'stock-open decreased';
- }
-
- // highlight cell with highest value in high column
- function _highlightHigh(high, cellDOMRef, cellRef) {
- if (high == Number(gHigh)) return 'highlight';
- }
-
- // highlight cell with lowest value in low column
- function _highlightLow(low, cellDOMRef, cellRef) {
- if (low == Number(gLow)) return 'highlight';
- }
-
- // window:load event for Javascript to run after HTML
- // because this Javascript is injected into the document head
- window.addEventListener('load', () => {
- // Javascript code to execute after DOM content
-
- // save reference to the grid
- const zgRef = document.querySelector('zing-grid');
-
- // interval mimics real time data updates
- setInterval(() => {
- // regenerate the same starting dataset everytime to
- // produce better visual results
- let realTimeData = [{
- open: 114.1900,
- high: 114.4950,
- low: 113.6800,
- close: 114.2750,
- volume: 7120112
- }, {
- open: 113.0300,
- high: 114.9000,
- low: 112.2175,
- close: 114.6700,
- volume: 27334460
- }, {
- open: 113.0500,
- high: 113.3200,
- low: 111.0350,
- close: 111.7000,
- volume: 21728429
- }, {
- open: 112.1900,
- high: 113.6950,
- low: 111.7200,
- close: 113.2100,
- volume: 22170934
- }, {
- open: 113.6900,
- high: 113.7000,
- low: 111.8600,
- close: 112.1400,
- volume: 20736516
- }];
-
- // reset global vars for highlighint min/max cells
- gHigh = -1;
- gLow = Number.MAX_SAFE_INTEGER;
-
- // update data to mimic realtime updates
- realTimeData.map(values => {
-
- // randomly choose to. inc/dec values to
- // simulate stock exchanges
- if (Math.round(Math.random())) {
- values.open = (values.open - 1);
- values.high = (values.high - 1);
- values.low = (values.low - 1);
- values.close = (values.close + 1);
- values.volume = (values.volume - 100);
- } else {
- values.open = (values.open + Math.floor(Math.random() * 5));
- values.high = (values.high + 1);
- values.low = (values.low + 1);
- values.close = (values.close - 1);
- values.volume = (values.volume + 100);
- }
-
- // set new global high/low values
- if (values.high >= gHigh) gHigh = values.high;
- if (values.low <= gLow) gLow = values.low;
-
- return values;
- });
-
- // assign data to grid
- if (zgRef) zgRef.setData(realTimeData);
- }, 1000);
- });
- </script>
- </body>
-
- </html>
- <!DOCTYPE html>
- <html>
-
- <head>
- <meta charset="utf-8">
- <title>ZingGrid: Simple Grid</title>
- <script src="https://cdn.zinggrid.com/zinggrid.min.js"></script>
- </head>
-
- <body>
- <zing-grid caption="Cell Formatting">
- <zg-data data='[
- {
- "open": "114.1900",
- "high": "114.4950",
- "low": "113.6800",
- "close": "114.2750",
- "volume": "7120112"
- }, {
- "open": "113.0300",
- "high": "114.9000",
- "low": "112.2175",
- "close": "114.6700",
- "volume": "27334460"
- }, {
- "open": "113.0500",
- "high": "113.3200",
- "low": "111.0350",
- "close": "111.7000",
- "volume": "21728429"
- }, {
- "open": "112.1900",
- "high": "113.6950",
- "low": "111.7200",
- "close": "113.2100",
- "volume": "22170934"
- }, {
- "open": "113.6900",
- "high": "113.7000",
- "low": "111.8600",
- "close": "112.1400",
- "volume": "20736516"
- }
-
- ]'></zg-data>
- <zg-colgroup>
- <zg-column index="open" type="currency" cell-class="_renderStocks"></zg-column>
- <zg-column index="high" type="currency" cell-class="_highlightHigh"></zg-column>
- <zg-column index="low" type="currency" cell-class="_highlightLow"></zg-column>
- <zg-column index="close" type="currency"></zg-column>
- <zg-column index="volume"></zg-column>
- </zg-colgroup>
- </zing-grid>
- </body>
-
- </html>
- .increased {
- color: #66bb6a;
- }
-
- .increased::before {
- content: '↑';
- }
-
- .decreased {
- color: #ef5350;
- }
-
- .decreased::before {
- content: '↓';
- }
-
- .highlight {
- background: #fff59d;
- }
- // global vars for highlight min/max values
- var gHigh = -1;
- var gLow = Number.MAX_SAFE_INTEGER;
-
- // determine if we should render positive/negative
- // cell styling based on opening stock price vs when it last
- // closed
- function _renderStocks(open, cellDOMRef, cellRef) {
- console.log(`open value: ${open} - record info ${JSON.stringify(cellRef.record)}`);
- // if open is higher than close value
- if (open > cellRef.record.close) return 'stock-open increased';
-
- return 'stock-open decreased';
- }
-
- // highlight cell with highest value in high column
- function _highlightHigh(high, cellDOMRef, cellRef) {
- if (high == Number(gHigh)) return 'highlight';
- }
-
- // highlight cell with lowest value in low column
- function _highlightLow(low, cellDOMRef, cellRef) {
- if (low == Number(gLow)) return 'highlight';
- }
-
- // window:load event for Javascript to run after HTML
- // because this Javascript is injected into the document head
- window.addEventListener('load', () => {
- // Javascript code to execute after DOM content
-
- // save reference to the grid
- const zgRef = document.querySelector('zing-grid');
-
- // interval mimics real time data updates
- setInterval(() => {
- // regenerate the same starting dataset everytime to
- // produce better visual results
- let realTimeData = [{
- open: 114.1900,
- high: 114.4950,
- low: 113.6800,
- close: 114.2750,
- volume: 7120112
- }, {
- open: 113.0300,
- high: 114.9000,
- low: 112.2175,
- close: 114.6700,
- volume: 27334460
- }, {
- open: 113.0500,
- high: 113.3200,
- low: 111.0350,
- close: 111.7000,
- volume: 21728429
- }, {
- open: 112.1900,
- high: 113.6950,
- low: 111.7200,
- close: 113.2100,
- volume: 22170934
- }, {
- open: 113.6900,
- high: 113.7000,
- low: 111.8600,
- close: 112.1400,
- volume: 20736516
- }];
-
- // reset global vars for highlighint min/max cells
- gHigh = -1;
- gLow = Number.MAX_SAFE_INTEGER;
-
- // update data to mimic realtime updates
- realTimeData.map(values => {
-
- // randomly choose to. inc/dec values to
- // simulate stock exchanges
- if (Math.round(Math.random())) {
- values.open = (values.open - 1);
- values.high = (values.high - 1);
- values.low = (values.low - 1);
- values.close = (values.close + 1);
- values.volume = (values.volume - 100);
- } else {
- values.open = (values.open + Math.floor(Math.random() * 5));
- values.high = (values.high + 1);
- values.low = (values.low + 1);
- values.close = (values.close - 1);
- values.volume = (values.volume + 100);
- }
-
- // set new global high/low values
- if (values.high >= gHigh) gHigh = values.high;
- if (values.low <= gLow) gLow = values.low;
-
- return values;
- });
-
- // assign data to grid
- if (zgRef) zgRef.setData(realTimeData);
- }, 1000);
- });