- <!DOCTYPE html>
- <html>
-
- <head>
- <meta charset="utf-8">
- <title>ZingGrid: Simple Grid</title>
- <script nonce="undefined" src="https://cdn.zinggrid.com/dev/zinggrid-dev.min.js"></script>
- <style>
- .increased {
- color: #66bb6a;
- }
-
- .increased::before {
- content: '↑';
- }
-
- .decreased {
- color: #ef5350;
- }
-
- .decreased::before {
- content: '↓';
- }
-
- .highlight {
- background: #fff59d;
- }
-
- zing-grid[loading] {
- height: 142px;
- }
- </style>
- </head>
-
- <body>
- <!-- Define grid component -->
- <zing-grid caption="Namespace Render" layout="row" layout-controls="disabled" viewport-stop>
- <!-- Define explicit column rendering -->
- <zg-colgroup>
- <!-- define custom rendered class values for cells -->
- <zg-column index="open" type="currency" cell-class="n1._renderStocks"></zg-column>
- <zg-column index="high" type="currency" cell-class="n1._highlightHigh"></zg-column>
- <zg-column index="low" type="currency" cell-class="n1._highlightLow"></zg-column>
- <!-- standard rendered columns -->
- <zg-column index="close" type="currency"></zg-column>
- <zg-column index="volume" type="number"></zg-column>
- </zg-colgroup>
- </zing-grid>
- <script>
- ZingGrid.setLicense(['26ccbfec16b8be9ee98c7d57bee6e498']); // namespace to simulate an ecapsulated class or component
- const namespace1 = {
- // global vars for highlight min/max values
- gHigh: -1,
- gLow: Number.MAX_SAFE_INTEGER,
-
- // determine if we should render positive/negative
- // cell styling based on opening stock price vs when it last
- // closed
- _renderStocks: function(open, cellDOMRef, cellRef) {
- // 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
- _highlightHigh: function(high, cellDOMRef, cellRef) {
- if (high == Number(this.gHigh)) return 'highlight';
- },
-
- // highlight cell with lowest value in low column
- _highlightLow: function(low, cellDOMRef, cellRef) {
- if (low == Number(this.gLow)) return 'highlight';
- },
-
- };
-
-
-
- // set interval to simulate realtime data
- window.addEventListener('load', () => {
-
- // register namespace to alias "n1" where "this" references the
- // namespace1 scope as well
- ZingGrid.registerNamespace(namespace1, 'n1', namespace1);
-
- // 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
- namespace1.gHigh = -1;
- namespace1.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 >= namespace1.gHigh) namespace1.gHigh = values.high;
- if (values.low <= namespace1.gLow) namespace1.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/dev/zinggrid-dev.min.js"></script>
- </head>
-
- <body>
- <!-- Define grid component -->
- <zing-grid caption="Namespace Render" layout="row" layout-controls="disabled" viewport-stop>
- <!-- Define explicit column rendering -->
- <zg-colgroup>
- <!-- define custom rendered class values for cells -->
- <zg-column index="open" type="currency" cell-class="n1._renderStocks"></zg-column>
- <zg-column index="high" type="currency" cell-class="n1._highlightHigh"></zg-column>
- <zg-column index="low" type="currency" cell-class="n1._highlightLow"></zg-column>
- <!-- standard rendered columns -->
- <zg-column index="close" type="currency"></zg-column>
- <zg-column index="volume" type="number"></zg-column>
- </zg-colgroup>
- </zing-grid>
- </body>
-
- </html>
- .increased {
- color: #66bb6a;
- }
-
- .increased::before {
- content: '↑';
- }
-
- .decreased {
- color: #ef5350;
- }
-
- .decreased::before {
- content: '↓';
- }
-
- .highlight {
- background: #fff59d;
- }
- // namespace to simulate an ecapsulated class or component
- const namespace1 = {
- // global vars for highlight min/max values
- gHigh: -1,
- gLow: Number.MAX_SAFE_INTEGER,
-
- // determine if we should render positive/negative
- // cell styling based on opening stock price vs when it last
- // closed
- _renderStocks: function(open, cellDOMRef, cellRef) {
- // 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
- _highlightHigh: function(high, cellDOMRef, cellRef) {
- if (high == Number(this.gHigh)) return 'highlight';
- },
-
- // highlight cell with lowest value in low column
- _highlightLow: function(low, cellDOMRef, cellRef) {
- if (low == Number(this.gLow)) return 'highlight';
- },
-
- };
-
-
-
- // set interval to simulate realtime data
- window.addEventListener('load', () => {
-
- // register namespace to alias "n1" where "this" references the
- // namespace1 scope as well
- ZingGrid.registerNamespace(namespace1, 'n1', namespace1);
-
- // 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
- namespace1.gHigh = -1;
- namespace1.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 >= namespace1.gHigh) namespace1.gHigh = values.high;
- if (values.low <= namespace1.gLow) namespace1.gLow = values.low;
-
- return values;
- });
-
- // assign data to grid
- if (zgRef) zgRef.setData(realTimeData);
- }, 1000);
- });