import {WorkPackageTimelineTableController} from './wp-table/timeline/wp-timeline-container.directive'; import {whenDebugging} from '../helpers/debug_output'; import {WorkPackageTable} from './wp-fast-table/wp-fast-table'; import { WorkPackageTableRow, WPTableHierarchyState, WPTableRowSelectionState } from './wp-fast-table/wp-table.interfaces'; import {MultiState, initStates, State} from "../helpers/reactive-fassade"; import {WorkPackageResource} from "./api/api-v3/hal-resources/work-package-resource.service"; import {WorkPackageCollectionResource} from "./api/api-v3/hal-resources/wp-collection-resource.service"; import {GroupObject} from "./api/api-v3/hal-resources/wp-collection-resource.service"; import {QueryResource, QueryColumn} from "./api/api-v3/hal-resources/query-resource.service"; import {QueryFilterInstanceResource} from "./api/api-v3/hal-resources/query-filter-instance-resource.service"; import {QueryFormResource} from "./api/api-v3/hal-resources/query-form-resource.service"; import {opServicesModule} from "../angular-modules"; import {SchemaResource} from './api/api-v3/hal-resources/schema-resource.service'; import {TypeResource} from './api/api-v3/hal-resources/type-resource.service'; import {WorkPackageEditForm} from './wp-edit-form/work-package-edit-form'; import {WorkPackageTableSortBy} from './wp-fast-table/wp-table-sort-by'; import {WorkPackageTableGroupBy} from './wp-fast-table/wp-table-group-by'; import {WorkPackageTableFilters} from './wp-fast-table/wp-table-filters'; import {WorkPackageTableSum} from './wp-fast-table/wp-table-sum'; import {WorkPackageTableColumns} from './wp-fast-table/wp-table-columns'; import {WorkPackageTablePagination} from './wp-fast-table/wp-table-pagination'; import {Subject} from 'rxjs'; export class States { /* /api/v3/work_packages */ workPackages = new MultiState(); /* /api/v3/schemas */ schemas = new MultiState(); /* /api/v3/types */ types = new MultiState(); // Work package table states table = new TableState(); // Current focused work package (e.g, row preselected for details button) focusedWorkPackage = new State(); // Open editing forms editing = new MultiState(); constructor() { initStates(this, function (msg: any) { whenDebugging(() => { console.debug(msg); }); }); } } export class TableState { // the query associated with the table query = new State(); // the results associated with the table results = new State(); // the query form associated with the table form = new State(); // Set of work package IDs in strict order of appearance rows = new State(); // all groups returned as results groups = new State(); // Set of columns in strict order of appearance columns = new State(); // Set of filters filters = new State(); // Active and available sort by sortBy = new State(); // Active and available group by groupBy = new State(); // is query summed sum = new State(); // pagination information pagination = new State(); // Table row selection state selection = new State(); // Current state of collapsed groups (if any) collapsedGroups = new State<{[identifier:string]: boolean}>(); // Hierarchies of table hierarchies = new State(); // State to be updated when the table is up to date rendered = new State(); // State to determine timeline visibility timelineVisible = new State(); // Subject used to unregister all listeners of states above. stopAllSubscriptions = new Subject(); } opServicesModule.service('states', States);