| { |
| "entities": [ |
| { |
| "name": "shift", |
| "plural": "shifts", |
| "label": "Shifts" |
| } |
| ], |
| "facts": [ |
| { |
| "name": "employee", |
| "plural": "employees", |
| "label": "Employees" |
| } |
| ], |
| "constraints": [ |
| { |
| "name": "Assigned shift", |
| "type": "hard" |
| }, |
| { |
| "name": "Required skill", |
| "type": "hard" |
| }, |
| { |
| "name": "Overlapping shift", |
| "type": "hard" |
| }, |
| { |
| "name": "At least 10 hours between 2 shifts", |
| "type": "hard" |
| }, |
| { |
| "name": "One shift per day", |
| "type": "hard" |
| }, |
| { |
| "name": "Unavailable employee", |
| "type": "hard" |
| }, |
| { |
| "name": "Undesired day for employee", |
| "type": "soft" |
| }, |
| { |
| "name": "Desired day for employee", |
| "type": "soft" |
| }, |
| { |
| "name": "Balance employee assignments", |
| "type": "soft" |
| } |
| ], |
| "views": [ |
| { |
| "id": "by-location", |
| "kind": "schedule-by-location", |
| "label": "By location", |
| "entity": "shift", |
| "entityPlural": "shifts", |
| "sourcePlural": "employees", |
| "variableField": "employeeIdx", |
| "allowsUnassigned": true, |
| "scalarHooks": {} |
| }, |
| { |
| "id": "by-employee", |
| "kind": "schedule-by-employee", |
| "label": "By employee", |
| "entity": "shift", |
| "entityPlural": "shifts", |
| "sourcePlural": "employees", |
| "variableField": "employeeIdx", |
| "allowsUnassigned": true, |
| "scalarHooks": {} |
| } |
| ], |
| "scalarGroups": [], |
| "conflictRepairs": [] |
| } |
|
|