angular-data-grid-full
Version:
Light, flexible and performant Data Grid for AngularJS apps, with built-in sorting, pagination and filtering options, unified API for client-side and server-side data fetching, seamless synchronization with browser address bar and total freedom in mark-
193 lines (190 loc) • 11.5 kB
HTML
<html>
<head lang="en">
<meta charset="UTF-8">
<title>Angular Data Grid - Material Design</title>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic">
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/angular_material/1.0.0/angular-material.min.css">
<link rel="stylesheet" href="https://storage.googleapis.com/code.getmdl.io/1.0.6/material.indigo-blue.min.css">
<link rel="stylesheet" href="css/angular-data-grid.material.css">
</head>
<body ng-app="myApp" ng-controller="myAppController" ng-cloak>
<div layout="column" layout-fill>
<md-toolbar layout="row" layout-align="center">
<div class="md-toolbar-tools" flex-gt-md="60" flex-md="80" flex-sm="100">
<span>Angular Data Grid — Material Design</span>
<span flex></span>
<md-menu md-position-mode="target-right target">
<md-button ng-click="$mdOpenMenu($event)">
<span layout="row" layout-align="center center">
Change theme
<i class="material-icons">arrow_drop_down</i>
</span>
</md-button>
<md-menu-content>
<md-menu-item>
<a href="../bootstrap/">Bootstrap Design</a>
</md-menu-item>
<md-menu-item>
<a href="index.html"><strong>Material Design</strong></a>
</md-menu-item>
</md-menu-content>
</md-menu>
</div>
</md-toolbar>
<md-content layout-padding layout="row" layout-align="center">
<div flex-gt-md="60" flex-md="80" flex-xs="100">
<div>
<h4>Angular Data Grid sample using Material Design styling</h4>
<p>Features enabled: sorting, filtering, sync with browser URLs, pagination and item-per-page functionality.
Out-of-box <a href="https://material.angularjs.org/" target="_blank">Angular Material</a> layout and input controls used,
along with <a href="http://www.getmdl.io/" target="_blank">Material Design Light</a> default CSS for grid styling.
<a href="https://github.com/angular-data-grid/angular-data-grid.github.io"
target="_blank">Project GitHub</a></p>
</div>
<hr>
<div layout-gt-xs="row" layout-xs="column" layout-align="stretch center">
<div layout="row" layout-align="center start">
<md-input-container md-no-float md-is-error="false" class="md-block flex-gt-xs flex-xs">
<input ng-model="code"
class="md-input"
ng-change="gridActions.filter()"
id="order"
placeholder="Search by Order #"
filter-by="code"
filter-type="text"
aria-invalid="false">
</md-input-container>
</div>
<div layout="row" layout-align="start center">
<md-datepicker ng-model="dateFrom"
flex="100"
md-placeholder="From Date"
is-open="dateFromOpened"
ng-click="dateFromOpened = true"
filter-by="placed"
filter-type="dateFrom"
ng-change="gridActions.filter()"></md-datepicker>
</div>
<div layout="row" layout-align="start center">
<md-datepicker ng-model="dateTo"
flex="100"
md-placeholder="To Date"
is-open="dateToOpened"
ng-click="dateToOpened = true"
filter-by="placed"
filter-type="dateTo"
ng-change="gridActions.filter()"></md-datepicker>
</div>
<div layout="row" layout-align="start center">
<md-button ng-show="dateTo || dateFrom" class="md-raised md-primary" ng-click="dateTo = ''; dateFrom = ''; gridActions.refresh();">Clear Dates</md-button>
</div>
</div>
<div grid-data id='test' grid-options="gridOptions" grid-actions="gridActions">
<div layout-gt-sm="row" layout-sm="column" layout-align="center">
<div flex-gt-sm="25" flex-sm="100" layout="row" layout-align="start center">
<span>{{filtered.length}} items total</span>
</div>
<div flex-gt-sm="75" flex-xs="100">
<div layout-xs="column" layout="row" layout-align-xs="end end" layout-align="end center">
<grid-pagination max-size="5"
boundary-links="true"
class="pagination mdl-shadow--2dp"
ng-if="paginationOptions.totalItems > paginationOptions.itemsPerPage"
total-items="paginationOptions.totalItems"
ng-model="paginationOptions.currentPage"
ng-change="reloadGrid()"
items-per-page="paginationOptions.itemsPerPage"></grid-pagination>
<md-input-container flex-offset-gt-xs="5" class="items-per-page">
<md-select ng-init="paginationOptions.itemsPerPage = '10'" ng-model="paginationOptions.itemsPerPage" ng-change="reloadGrid()">
<md-option>10</md-option>
<md-option>25</md-option>
<md-option>50</md-option>
<md-option>75</md-option>
</md-select>
</md-input-container>
</div>
</div>
</div>
<div>
<table class="mdl-data-table mdl-js-data-table mdl-data-table--selectable mdl-shadow--2dp">
<thead>
<tr>
<th sortable="code" class="sortable mdl-data-table__cell--non-numeric">
<span>Order #</span>
</th>
<th class="st-sort-disable th-dropdown">
<md-select filter-by="statusDisplay"
filter-type="select"
ng-model="status"
placeholder="Status"
ng-change="filter()">
<md-option value="">All Statuses</md-option>
<md-option ng-repeat="option in statusOptions track by option.value"
value="{{option.value}}">
{{option.text}}
</md-option>
</md-select>
</th>
<th sortable="placed" class="sortable">
<span>Date Placed</span>
</th>
<th sortable='total.value' class="sortable">
<span>Total</span>
</th>
</tr>
</thead>
<tbody>
<tr grid-item>
<td class="mdl-data-table__cell--non-numeric">
<span ng-bind="item.code"></span>
</td>
<td ng-bind="item.statusDisplay"></td>
<td ng-bind="item.placed | date:'MM/dd/yyyy'"></td>
<td ng-bind="item.total.formattedValue"></td>
</tr>
</tbody>
</table>
</div>
<div layout-xs="column" layout="row" layout-align-xs="end end" layout-align="end center">
<grid-pagination max-size="5"
boundary-links="true"
class="pagination"
ng-if="paginationOptions.totalItems > paginationOptions.itemsPerPage"
total-items="paginationOptions.totalItems"
ng-model="paginationOptions.currentPage"
ng-change="reloadGrid()"
items-per-page="paginationOptions.itemsPerPage"></grid-pagination>
<md-input-container flex-offset-gt-xs="5" class="items-per-page">
<md-select ng-init="paginationOptions.itemsPerPage = '10'" ng-model="paginationOptions.itemsPerPage" ng-change="reloadGrid()">
<md-option>10</md-option>
<md-option>25</md-option>
<md-option>50</md-option>
<md-option>75</md-option>
</md-select>
</md-input-container>
</div>
</div>
<hr>
<md-button class="md-raised md-primary" ng-click="showCode = !showCode">CodePen</md-button>
<div ng-show="showCode" class="codepen-wrap">
<p data-height="768" data-theme-id="21603" data-slug-hash="eJWWpM" data-default-tab="html" data-user="AngularDataGrid" class='codepen'>See the Pen <a
href='http://codepen.io/AngularDataGrid/pen/eJWWpM'>eJWWpM</a> by AngularDataGrid (<a href='http://codepen.io/AngularDataGrid'>@AngularDataGrid</a>) on <a href='http://codepen.io'>CodePen</a>.
</p>
<script async src="//assets.codepen.io/assets/embed/ei.js"></script>
</div>
<hr>
</div>
</md-content>
</div>
</body>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-animate.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-aria.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.4.8/angular-messages.min.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/angular_material/1.0.0/angular-material.min.js"></script>
<script src="../../dist/pagination.min.js"></script>
<script src="../../dist/dataGrid.min.js"></script>
<script src="js/demoApp.js"></script>
</html>