import {whenDebugging} from '../helpers/debug_output'; import {WorkPackageTable} from './wp-fast-table/wp-fast-table'; import {WPTableRowSelectionState, WorkPackageTableRow} 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 {opServicesModule} from "../angular-modules"; import {SchemaResource} from './api/api-v3/hal-resources/schema-resource.service'; import {WorkPackageEditForm} from './wp-edit-form/work-package-edit-form'; import {WorkPackageTableMetadata} from './wp-fast-table/wp-table-metadata'; import {Subject} from 'rxjs'; export class States { workPackages = new MultiState(); schemas = new MultiState(); // Work package table states table = { // Metadata of the current table result // (page, links, grouping information) metadata: new State(), // Set of work package IDs in strict order of appearance rows: new State(), // Set of columns in strict order of appearance columns: new State(), // Table row selection state selection: new State(), // Current state of collapsed groups (if any) collapsedGroups: new State<{[identifier:string]: boolean}>(), // State to be updated when the table is up to date rendered:new State(), // Subject used to unregister all listeners of states above. stopAllSubscriptions:new Subject() }; // Query states query = { // All available columns for selection availableColumns: new State() }; // 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.trace(msg); }); }); } } opServicesModule.service('states', States);