Refactor Manage Trigger to Single Workflow (#2577)

* Refactor Manage Trigger to Single Workflow
This commit is contained in:
Alec Merdler 2017-05-22 13:59:12 -07:00 committed by GitHub
parent d122743129
commit 97256841bd
26 changed files with 1262 additions and 1077 deletions

View file

@ -15,9 +15,13 @@ export class CorTableColumn implements OnInit {
@Input('@') public datafield: string;
@Input('@') public sortfield: string;
@Input('@') public selected: string;
@Input('=') public bindModel: any;
@Input('@') public style: string;
@Input('@') public class: string;
@Input('@') public kindof: string;
constructor(@Host() @Inject(CorTableComponent) private parent: CorTableComponent) {
constructor(@Host() @Inject(CorTableComponent) private parent: CorTableComponent,
@Inject('TableService') private tableService: any) {
}
@ -29,9 +33,9 @@ export class CorTableColumn implements OnInit {
return this.kindof == 'datetime';
}
public processColumnForOrdered(tableService: any, value: any): any {
public processColumnForOrdered(value: any): any {
if (this.kindof == 'datetime') {
return tableService.getReversedTimestamp(value);
return this.tableService.getReversedTimestamp(value);
}
return value;

View file

@ -4,29 +4,39 @@
<!-- Filter -->
<div class="co-top-bar" ng-if="$ctrl.compact != 'true'">
<span class="co-filter-box with-options" ng-if="$ctrl.tableData.length && $ctrl.filterFields.length">
<span class="page-controls"
total-count="$ctrl.orderedData.entries.length"
current-page="$ctrl.options.page"
page-size="$ctrl.maxDisplayCount"></span>
<span class="filter-message" ng-if="$ctrl.options.filter">
Showing {{ $ctrl.orderedData.entries.length }} of {{ $ctrl.tableData.length }} {{ $ctrl.tableItemTitle }}
Showing {{ $ctrl.orderedData.entries.length }} of {{ $ctrl.tableData.length }} {{ ::$ctrl.tableItemTitle }}
</span>
<input class="form-control" type="text" ng-model="$ctrl.options.filter"
placeholder="Filter {{ $ctrl.tableItemTitle }}..." ng-change="$ctrl.refreshOrder()">
<input class="form-control" type="text"
placeholder="Filter {{ ::$ctrl.tableItemTitle }}..."
ng-model="$ctrl.options.filter"
ng-change="$ctrl.refreshOrder()">
</span>
</div>
<!-- Empty -->
<div class="empty" ng-if="!$ctrl.tableData.length && $ctrl.compact != 'true'">
<div class="empty-primary-msg">No {{ $ctrl.tableItemTitle }} found.</div>
<div class="empty-primary-msg">No {{ ::$ctrl.tableItemTitle }} found.</div>
</div>
<!-- Table -->
<table class="co-table" ng-show="$ctrl.tableData.length">
<thead>
<td ng-repeat="col in $ctrl.columns" ng-class="$ctrl.tablePredicateClass(col, $ctrl.options)">
<a ng-click="$ctrl.setOrder(col)">{{ col.title }}</a>
<td ng-repeat="col in $ctrl.columns"
ng-class="$ctrl.tablePredicateClass(col)" style="{{ ::col.style }}">
<a ng-click="$ctrl.setOrder(col)">{{ ::col.title }}</a>
</td>
</thead>
<tbody ng-repeat="item in $ctrl.orderedData.visibleEntries | limitTo:$ctrl.maxDisplayCount">
<tbody ng-repeat="item in $ctrl.orderedData.visibleEntries"
ng-if="($index >= $ctrl.options.page * $ctrl.maxDisplayCount &&
$index < ($ctrl.options.page + 1) * $ctrl.maxDisplayCount)">
<tr>
<td ng-repeat="col in $ctrl.columns">
<td ng-repeat="col in $ctrl.columns"
style="{{ ::col.style }}" class="{{ ::col.class }} nowrap-col">
<div ng-include="col.templateurl" ng-if="col.templateurl"></div>
<div ng-if="!col.templateurl">{{ item[col.datafield] }}</div>
</td>
@ -36,7 +46,7 @@
<div class="empty" ng-if="!$ctrl.orderedData.entries.length && $ctrl.tableData.length"
style="margin-top: 20px;">
<div class="empty-primary-msg">No matching {{ $ctrl.tableItemTitle }} found.</div>
<div class="empty-primary-msg">No matching {{ ::$ctrl.tableItemTitle }} found.</div>
<div class="empty-secondary-msg">Try adjusting your filter above.</div>
</div>
</div>

View file

@ -13,7 +13,7 @@ import { CorTableColumn } from './cor-table-col.component';
}
})
export class CorTableComponent implements OnChanges {
@Input('<') public tableData: any[];
@Input('<') public tableData: any[] = [];
@Input('@') public tableItemTitle: string;
@Input('<') public filterFields: string[];
@Input('@') public compact: string;
@ -22,7 +22,7 @@ export class CorTableComponent implements OnChanges {
private orderedData: any;
private options: any;
constructor(@Inject('TableService') private TableService: any) {
constructor(@Inject('TableService') private tableService: any) {
this.columns = [];
this.options = {
'filter': '',
@ -49,15 +49,17 @@ export class CorTableComponent implements OnChanges {
}
private setOrder(col: CorTableColumn): void {
this.TableService.orderBy(col.datafield, this.options);
this.tableService.orderBy(col.datafield, this.options);
this.refreshOrder();
}
private tablePredicateClass(col: CorTableColumn, options: any) {
return this.TableService.tablePredicateClass(col.datafield, this.options.predicate, this.options.reverse);
return this.tableService.tablePredicateClass(col.datafield, this.options.predicate, this.options.reverse);
}
private refreshOrder(): void {
this.options.page = 0;
var columnMap = {};
this.columns.forEach(function(col) {
columnMap[col.datafield] = col;
@ -69,18 +71,16 @@ export class CorTableComponent implements OnChanges {
const numericCols = this.columns.filter(col => col.isNumeric())
.map(col => col.datafield);
const tableData = this.tableData || [];
const processed = tableData.map((item) => {
var newObj = Object.assign({}, item);
const processed = this.tableData.map((item) => {
Object.keys(item).forEach((key) => {
if (columnMap[key]) {
newObj[key] = columnMap[key].processColumnForOrdered(this.TableService, item[key]);
item[key] = columnMap[key].processColumnForOrdered(item[key]);
}
});
return newObj;
return item;
});
this.orderedData = this.TableService.buildOrderedItems(processed, this.options, filterCols, numericCols);
this.orderedData = this.tableService.buildOrderedItems(processed, this.options, filterCols, numericCols);
}
}