igniteui-angular-sovn
Version:
Ignite UI for Angular is a dependency-free Angular toolkit for building modern web apps
66 lines (60 loc) • 2.26 kB
text/typescript
import { Injectable } from '@angular/core';
import { IgxBaseTransactionService } from './base-transaction';
import { HierarchicalTransactionService } from './hierarchical-transaction';
import { IgxHierarchicalTransactionService } from './igx-hierarchical-transaction';
import { IgxTransactionService } from './igx-transaction';
import { HierarchicalState, HierarchicalTransaction, State, Transaction, TransactionService } from './transaction';
/**
* The type of the transaction that should be provided.
* When batchEditing is disabled, `None` is provided.
* When enabled - `Base` is provided.
* An enum instead of a boolean value leaves room for extra scenarios in the future.
*/
export const enum TRANSACTION_TYPE {
'None' = 'None',
'Base' = 'Base'
}
/**
* Factory service for instantiating TransactionServices
*/
@Injectable({
providedIn: 'root'
})
export class IgxFlatTransactionFactory {
/**
* Creates a new Transaction service instance depending on the specified type.
*
* @param type The type of the transaction
* @returns a new instance of TransactionService<Transaction, State>
*/
public create(type: TRANSACTION_TYPE): TransactionService<Transaction, State> {
switch (type) {
case (TRANSACTION_TYPE.Base):
return new IgxTransactionService();
default:
return new IgxBaseTransactionService();
}
}
}
/**
* Factory service for instantiating HierarchicalTransactionServices
*/
@Injectable({
providedIn: 'root'
})
export class IgxHierarchicalTransactionFactory extends IgxFlatTransactionFactory {
/**
* Creates a new HierarchialTransaction service instance depending on the specified type.
*
* @param type The type of the transaction
* @returns a new instance of HierarchialTransaction<HierarchialTransaction, HierarchialState>
*/
public override create(type: TRANSACTION_TYPE): HierarchicalTransactionService<HierarchicalTransaction, HierarchicalState> {
switch (type) {
case (TRANSACTION_TYPE.Base):
return new IgxHierarchicalTransactionService();
default:
return new IgxBaseTransactionService();
}
}
}