OpenSlides/client/src/app/shared/models/motions/workflow-state.ts

52 lines
1.5 KiB
TypeScript
Raw Normal View History

import { Deserializer } from '../deserializer.model';
2018-08-23 10:35:05 +02:00
import { Workflow } from './workflow';
/**
* Representation of a workflow state
*
* Part of the 'states'-array in motion/workflow
* @ignore
*/
export class WorkflowState extends Deserializer {
2018-08-29 13:21:25 +02:00
public id: number;
public name: string;
public action_word: string;
public recommendation_label: string;
public css_class: string;
public required_permission_to_see: string;
public allow_support: boolean;
public allow_create_poll: boolean;
public allow_submitter_edit: boolean;
public dont_set_identifier: boolean;
public show_state_extension_field: boolean;
public show_recommendation_extension_field: boolean;
public next_states_id: number[];
public workflow_id: number;
/**
* Needs to be completely optional because Workflow has (yet) the optional parameter 'states'
2018-09-04 11:33:28 +02:00
* @param input If given, it will be deserialized
*/
2018-09-04 11:33:28 +02:00
public constructor(input?: any) {
super(input);
}
2018-08-23 10:35:05 +02:00
/**
* return a list of the next possible states.
* Also adds the current state.
*/
2018-08-29 13:21:25 +02:00
public getNextStates(workflow: Workflow): WorkflowState[] {
2018-08-23 10:35:05 +02:00
const nextStates = [];
workflow.states.forEach(state => {
if (this.next_states_id.includes(state.id)) {
nextStates.push(state as WorkflowState);
}
});
return nextStates;
}
2018-08-16 17:03:39 +02:00
public toString = (): string => {
return this.name;
};
}