- <!DOCTYPE html>
- <html>
-
- <head>
- <meta charset="utf-8">
- <title>ZingGrid Demo</title>
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
- <script nonce="undefined" src="https://cdn.zinggrid.com/zinggrid.min.js"></script>
- <style>
- :root {
- /* Define custom colors for build status */
- --build-success: #00c853;
- --build-failed: #d50000;
- --build: pending: #ffab00;
- --zg-caption-background: #3f51b5;
- --zg-caption-color: #fff;
-
- /* Modify ZG Display */
- --zing-grid-background: #fff;
- }
-
-
- /* ZingGrid Overrides
- ---------------------------------- */
- /* Hide grid's body 'header' cells */
- zg-head {
- display: none;
- }
-
- /* Turn off native row highlighting */
- zg-row:hover {
- background: inherit;
- }
-
- /* Remove native cell padding - we add our own to the custom row */
- zg-cell {
- padding: 0;
- }
-
- /* Allow full-width custom rows */
- [data-field-index] {
- width: 100%;
- }
-
-
- /* Custom Row Styling
- ---------------------------------- */
- .row-wrapper {
- padding: 1rem;
- }
-
- .row-container {
- background: #fff;
- border-radius: .5rem;
- cursor: pointer;
- display: flex;
- flex-wrap: wrap;
- justify-content: space-between;
- margin-bottom: .25rem;
- overflow: hidden;
- padding: 1rem;
- }
-
- .row-container:hover {
- box-shadow: 6px 6px 31px -1px rgba(156, 156, 156, 0.82);
- }
-
- /* First Cell */
- .row-container .first-cell {
- display: flex;
- flex-wrap: wrap;
- flex-grow: 1;
- justify-content: space-between;
- align-items: center;
- }
-
- /* First Cell Child Elements */
- .flex-center {
- display: flex;
- align-items: center;
- }
-
- /* Add padding for mobile view */
- zing-grid[viewport="mobile"] .flex-center {
- margin: 1.0rem;
- }
-
- /* On all views EXCEPT zing-grid mobile view */
- zing-grid:not([viewport="mobile"]) .user-contents {
- min-width: 300px;
- }
-
- /* User Contents Cell */
- .user-contents span {
- margin-right: 1.5rem;
- }
-
- .user-contents img {
- height: 25px;
- }
-
- /* Font Awesome icon styling */
- .build-status {
- display: flex;
- flex-direction: row;
- align-items: center;
- }
-
- .build-status::before {
- font-family: FontAwesome;
- font-size: 3rem;
- margin-right: 1rem;
- }
-
- /* Content defined by Font-Awesome unicode characters */
- .build-success::before {
- content: '\f164';
- color: var(--build-success, green);
- }
-
- .build-failed::before {
- content: '\f165';
- color: var(--build-failed, red);
- }
-
- .build-pending::before {
- content: '\f017';
- color: var(--build-pending, orange);
- }
-
- zing-grid[loading] {
- height: 961px;
- }
- </style>
- </head>
-
- <body>
-
- <zing-grid layout="row" layout-controls="disabled" vieport-stop caption="Current Pipelines">
- <zg-data data='[
- {
- "status": "success",
- "branch": "dev",
- "username": "chocolateRainGuy",
- "commitId": "1582393",
- "runTime": "4:52",
- "avatar": "https://storage.googleapis.com/zg-demos.appspot.com/default_avatar.png"
- },
- {
- "status": "failed",
- "branch": "master",
- "username": "jennaMarbles",
- "commitId": "32532315",
- "runTime": "0:52",
- "avatar": "https://storage.googleapis.com/zg-demos.appspot.com/default_avatar.png"
- },
- {
- "status": "success",
- "branch": "master",
- "username": "starWarsKid",
- "commitId": "cd34123as",
- "runTime": "4:52",
- "avatar": "https://storage.googleapis.com/zg-demos.appspot.com/default_avatar.png"
- },
- {
- "status": "pending",
- "branch": "ci-integration",
- "username": "dramticLookGopher",
- "commitId": "aaf1234s",
- "runTime": "1:23",
- "avatar": "https://storage.googleapis.com/zg-demos.appspot.com/default_avatar.png"
- },
- {
- "status": "failed",
- "branch": "dev-unit-tests",
- "username": "leeroyJenkins",
- "commitId": "2345623",
- "runTime": "0:09",
- "avatar": "https://storage.googleapis.com/zg-demos.appspot.com/default_avatar.png"
- },
- {
- "status": "success",
- "branch": "master",
- "username": "britneySpears",
- "commitId": "cd34123as",
- "runTime": "4:52",
- "avatar": "https://storage.googleapis.com/zg-demos.appspot.com/default_avatar.png"
- },
- {
- "status": "failed",
- "branch": "master",
- "username": "numaNumaGuy",
- "commitId": "62562345",
- "runTime": "0:52",
- "avatar": "https://storage.googleapis.com/zg-demos.appspot.com/default_avatar.png"
- }
- ]'></zg-data>
- <zg-colgroup>
- <zg-column index=" " renderer="addChangeEvent">
- <!-- Template tag is preferred so that the content is never rendered -->
- <template>
- <div class="row-wrapper">
- <div class="row-container">
- <!-- First Cell -->
- <div class="first-cell">
- <div class="flex-center">
- <!-- Dynamically inject class with templating -->
- <div class="build-status build-[[record.status]]"></div>
- <span>[[record.branch]]/[[record.commitId]]</span>
- </div>
- <div class="user-contents flex-center">
- <span><img src="[[record.avatar]]" alt="N/A"></span>
- <span>[[record.username]]</span>
- <span>[[record.runTime]]</span>
- </div>
- </div>
- <!-- Select Dropdown Cell -->
- <div class="flex-center">
- <select>
- <option disabled selected>Please Select One</option>
- <option value="1">Restart Build</option>
- <option value="2">Reset Cache</option>
- </select>
- </div>
- </div>
- </div>
- </template>
- </zg-column>
- </zg-colgroup>
- </zing-grid>
-
- <script>
- ZingGrid.setLicense(['26ccbfec16b8be9ee98c7d57bee6e498']);
- /**
- * @description This custom render function should return NOTHING. If you
- * return content here it will override your slotted contents.
- * NOTE: renderer NOT REQUIRED for slotted content.
- */
- function addChangeEvent(customIndex, cellRef, $cell) {
- // $cell.record gives us us direct information related to this row
- const record = $cell.record;
- // $cell.dom() gives us direct access to zg-cell DOM contents
- const selectRef = cellRef.querySelector('select');
- selectRef.addEventListener('change', e => {
- const changeValue = e.target.value;
- if (changeValue == 1) alert(`Restarting pipeline on branch: ${record.branch}-${record.commitId}`);
- else alert('Resetting cache');
- });
- }
-
- // Init
- // ----------------------------------
- /* Get the ZG instance */
- const zgRef = document.querySelector('zing-grid')
- // Add click event listener, so you can drill into another page on row click
- zgRef.addEventListener('row:click', e => {
- console.log('row clicked', e.detail);
- });
- </script>
- </body>
-
- </html>
- <!DOCTYPE html>
- <html>
-
- <head>
- <meta charset="utf-8">
- <title>ZingGrid Demo</title>
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
- <script src="https://cdn.zinggrid.com/zinggrid.min.js"></script>
- </head>
-
- <body>
-
- <zing-grid layout="row" layout-controls="disabled" vieport-stop caption="Current Pipelines">
- <zg-data data='[
- {
- "status": "success",
- "branch": "dev",
- "username": "chocolateRainGuy",
- "commitId": "1582393",
- "runTime": "4:52",
- "avatar": "https://storage.googleapis.com/zg-demos.appspot.com/default_avatar.png"
- },
- {
- "status": "failed",
- "branch": "master",
- "username": "jennaMarbles",
- "commitId": "32532315",
- "runTime": "0:52",
- "avatar": "https://storage.googleapis.com/zg-demos.appspot.com/default_avatar.png"
- },
- {
- "status": "success",
- "branch": "master",
- "username": "starWarsKid",
- "commitId": "cd34123as",
- "runTime": "4:52",
- "avatar": "https://storage.googleapis.com/zg-demos.appspot.com/default_avatar.png"
- },
- {
- "status": "pending",
- "branch": "ci-integration",
- "username": "dramticLookGopher",
- "commitId": "aaf1234s",
- "runTime": "1:23",
- "avatar": "https://storage.googleapis.com/zg-demos.appspot.com/default_avatar.png"
- },
- {
- "status": "failed",
- "branch": "dev-unit-tests",
- "username": "leeroyJenkins",
- "commitId": "2345623",
- "runTime": "0:09",
- "avatar": "https://storage.googleapis.com/zg-demos.appspot.com/default_avatar.png"
- },
- {
- "status": "success",
- "branch": "master",
- "username": "britneySpears",
- "commitId": "cd34123as",
- "runTime": "4:52",
- "avatar": "https://storage.googleapis.com/zg-demos.appspot.com/default_avatar.png"
- },
- {
- "status": "failed",
- "branch": "master",
- "username": "numaNumaGuy",
- "commitId": "62562345",
- "runTime": "0:52",
- "avatar": "https://storage.googleapis.com/zg-demos.appspot.com/default_avatar.png"
- }
- ]'></zg-data>
- <zg-colgroup>
- <zg-column index=" " renderer="addChangeEvent">
- <!-- Template tag is preferred so that the content is never rendered -->
- <template>
- <div class="row-wrapper">
- <div class="row-container">
- <!-- First Cell -->
- <div class="first-cell">
- <div class="flex-center">
- <!-- Dynamically inject class with templating -->
- <div class="build-status build-[[record.status]]"></div>
- <span>[[record.branch]]/[[record.commitId]]</span>
- </div>
- <div class="user-contents flex-center">
- <span><img src="[[record.avatar]]" alt="N/A"></span>
- <span>[[record.username]]</span>
- <span>[[record.runTime]]</span>
- </div>
- </div>
- <!-- Select Dropdown Cell -->
- <div class="flex-center">
- <select>
- <option disabled selected>Please Select One</option>
- <option value="1">Restart Build</option>
- <option value="2">Reset Cache</option>
- </select>
- </div>
- </div>
- </div>
- </template>
- </zg-column>
- </zg-colgroup>
- </zing-grid>
-
- </body>
-
- </html>
- /**
- * @description This custom render function should return NOTHING. If you
- * return content here it will override your slotted contents.
- * NOTE: renderer NOT REQUIRED for slotted content.
- */
- function addChangeEvent(customIndex, cellRef, $cell) {
- // $cell.record gives us us direct information related to this row
- const record = $cell.record;
- // $cell.dom() gives us direct access to zg-cell DOM contents
- const selectRef = cellRef.querySelector('select');
- selectRef.addEventListener('change', e => {
- const changeValue = e.target.value;
- if (changeValue == 1) alert(`Restarting pipeline on branch: ${record.branch}-${record.commitId}`);
- else alert('Resetting cache');
- });
- }
-
- // Init
- // ----------------------------------
- /* Get the ZG instance */
- const zgRef = document.querySelector('zing-grid')
- // Add click event listener, so you can drill into another page on row click
- zgRef.addEventListener('row:click', e => {
- console.log('row clicked', e.detail);
- });