eQMS (beta in 1.11)

The eQMS module adds features to control the life cycle and distribution of documents. The eQMS requires a license and can be configured in the eqms_config setting

// main configuration object
interface IeQMSConfig {
    // option to render DOC, SIGN categories in main tree 
    renderInTree?:string[] // can be set to either one or both "DOC","SIGN"
    
    // definition of document administrators. These can 
    // * change the release status of documents
    // * modify any review comment
    // * define who needs / got training / reading / has read
    docAdmins?:string[]     // list of user ids of document adminsitrators
    
    workflow?:IDocWorkflow, // definition of workflow features (see below)
    revision?: IDocRevisionInfo, // definition in which cell revision number can be found (see below)
    captions?:ICaptions, // set to at least {} will enable captions for figures/tables (see below for more options)
    templates?:IDocTemplate // if configured the user can instanciate templates from another project (see below)
    mail?:IDocMailings // can be specified to define mail notification (buttons) 
    review?:IDocReview // set to at least {} to enable "document review" (see below for more options)
    compare?:IDocCompare // must be set to at least {} to enable "document compare" (see below for more options)
    documentOverview?:IDocOveriew[] // Optional documentation overview page (see below for more options)
} 

// definition of formatting of captions and references to captions
interface ICaptions {
    referenceStyle?:string, // optional: specify how references to captions are rendered (default italic)
    captionStyle?:string // optional: specify how references to captions are rendered (default italic)
}

// definition of mail notification options
interface IDocMailings {
    review?:IQMSMailing, // optional button to email people to ask to review a document
    reading?:IQMSMailing, // optional button to email people to ask to read a document
    training?:IQMSMailing, // optional button to email people to ask to get training
    [key:string]:IQMSMailing // other templates for automatic emails 
}

// definition of a mail notification content
// subject and body can contain these placeholders
// _id_ : the document if
// _link_: a hyperlink to the document
// _reviewer_: name
// _trainer_ : whoever is in the trainer field of a document
// _trainee_ : whoever needs a training (and has not yet been trained)
// _reader_: whoever needs read a document (and has not yet read it)
// _me.firstName__: first name of sender
// _me.lastName_ : last name of sender
interface IQMSMailing {
    subject:string, // subject line 
    body:string // html body 
    buttonText?:string // optional button text
}

// definition of lifecycle states of a document
// all states must exist a label.
// labels must be defined as XOR
interface IDocWorkflow {
    defaultStatus:string,  // status after SIGNED was created, e.g. REVIEW. Meaning document must be reviewed and signed
    rejectedStatus:string, // status if a document has been rejected by at least one user, e.g. REJECT
    reviewedStatus:string, // status if a document has been signed by all stakeholders, e.g. RELEASE
    useStatus:string[],    // states of life of document e.g. LATEST, SUPERSEEDED, RETIRED
    changes:IStatusChange[] // a list of triggered changes if the document status cahnges
}

// can be set to a project id from which user can pick signed documents
interface IDocTemplate {
    project:string, // project name
    filter?:string // define label which has to be set, e.g. LATEST
    showAll?: boolean // set to true if filtered out documents should be shown in grey
    categories?: string[]// can be set to show other categories than just SIGN
}

// option enabling inline comments for documents
interface IDocReview {
    showAlways?:boolean, // whether it should be possible to do reviews (leaving inline comments to already signed documents)
    allowModifyOthers?:boolean // set to true to allow normal users to modify other people's comments
}
// option to allow comparing documents with other version
interface IDocCompare {
    // currently no additional options
}

// options for the project page, allows to show for example all releaed documents
interface IDocOveriew {
    groupName:string; // display name in UI (heading)
    filter:string; // filter (label to pick documents)
}

// specification how revision number is recogonized and increased
interface IDocRevisionInfo {
    sectionType?:string, // optional type of table (should normally be audittrail)
    sectionName?:string, // optional name of table alternative to sectionType
    column:string, //  id of column (default 'col1')
    row:"first"|"last", // first or last row (default last)
    autoDraft?:boolean  // default false: create a new revision line with DRAFT after creating signed
    askDraft?:boolean  // default false: ask user if he really wants to create a SIGNED with DRAFT
}

// defines what happens when a lifecycle status of a SIGN changes (label change)
interface IStatusChange {
    status?:string, // new status (label)
    action?:string, // after some action
    change?:{from:string,to:string}, // automatically change other SIGN derived from same DOC
    mail?: IStatusChangeMail  // send mail to users (body see mail config for placeholders)
}

// details whom to send which mail if status changes
interface IStatusChangeMail {
    signCreator:boolean, // whether person who created the sign should get a status change mail
    docAdmins:boolean, // whether doc admins should get a status change mail
    template:string // which tempalte (IQMSMailing) to use
}