1- import {
2- getProject , refreshProject , saveSessionValidationInSheet
3- } from './lib/project.mjs' ;
41import reportError from './lib/report-error.mjs' ;
2+ import { getProject } from './lib/project.mjs' ;
53import { fillGridSheet } from './lib/schedule.mjs' ;
64import { fetchMapping } from './lib/w3cid-map.mjs' ;
75import { suggestSchedule } from '../common/schedule.mjs' ;
@@ -43,18 +41,12 @@ async function proposeGrid(spreadsheet) {
4341 error . type !== 'irc' ) ;
4442 const validSessions = project . sessions . filter ( s =>
4543 ! errors . find ( error => error . number === s . number ) ) ;
44+ const invalidSessions = project . sessions . filter ( s =>
45+ errors . find ( error => error . number === s . number ) ) ;
4646 project . sessions
4747 . filter ( s => errors . find ( error => error . number === s . number ) )
4848 . forEach ( s => s . blockingError = true ) ;
4949 console . log ( `- found ${ validSessions . length } valid sessions among them: ${ validSessions . map ( s => s . number ) . join ( ', ' ) } ` ) ;
50- for ( const change of changes ) {
51- console . warn ( `- save validation problems for session ${ change . number } ` ) ;
52- const session = project . sessions . find ( s => s . number === change . number ) ;
53- session . validation . error = change . validation . error ;
54- session . validation . warning = change . validation . warning ;
55- session . validation . check = change . validation . check ;
56- await saveSessionValidationInSheet ( session , project ) ;
57- }
5850 console . log ( `Validate sessions... done` ) ;
5951
6052 console . log ( `Prepare parameters...` ) ;
@@ -114,7 +106,7 @@ async function proposeGrid(spreadsheet) {
114106 console . log ( `Compute new grid... done` ) ;
115107
116108 console . log ( `Validate new grid...` ) ;
117- const { errors : newErrors , changes : newChanges } = await validateGrid ( project , { what : 'scheduling' } )
109+ let { errors : newErrors , changes : newChanges } = await validateGrid ( project , { what : 'scheduling' } )
118110 if ( newErrors . length ) {
119111 for ( const error of newErrors ) {
120112 console . warn ( `- [${ error . severity } : ${ error . type } ] #${ error . session } : ${ error . messages . join ( ', ' ) } ` ) ;
@@ -123,28 +115,34 @@ async function proposeGrid(spreadsheet) {
123115 else {
124116 console . log ( `- looks good!` ) ;
125117 }
126- for ( const change of newChanges ) {
127- console . warn ( `- save validation problems for session ${ change . number } ` ) ;
128- const session = project . sessions . find ( s => s . number === change . number ) ;
129- session . validation . error = change . validation . error ;
130- session . validation . warning = change . validation . warning ;
131- session . validation . check = change . validation . check ;
132- await saveSessionValidationInSheet ( session , project ) ;
133- }
134118 console . warn ( `Validate new grid... done` ) ;
135119
136- console . log ( 'Update meeting info in sessions sheet...' ) ;
137- refreshProject ( spreadsheet , project , { what : 'grid' } ) ;
138- console . log ( 'Update meeting info in sessions sheet... done' ) ;
139-
140120 console . log ( 'Report new grid in grid sheet...' ) ;
121+ if ( invalidSessions . length > 0 ) {
122+ newErrors = invalidSessions
123+ . map ( session => errors . filter ( error => error . number === s . number ) )
124+ . flat ( )
125+ . concat ( newErrors ) ;
126+ }
127+ if ( noschedule . length > 0 ) {
128+ newErrors = validSessions
129+ . filter ( session =>
130+ ! session . meetings ||
131+ session . meetings . length === 0 ||
132+ session . meetings . find ( m => ! ( m . room && m . day && m . slot ) ) )
133+ . map ( session => Object . assign ( {
134+ severity : 'error' ,
135+ type : 'conflict' ,
136+ session : session . number ,
137+ messages : [ 'Session could not be scheduled due to unresolvable conflicts' ]
138+ } ) )
139+ . concat ( newErrors ) ;
140+ }
141141 fillGridSheet ( spreadsheet , project , newErrors ) ;
142142 console . log ( 'Report new grid in grid sheet... done' ) ;
143143
144144 console . log ( 'Report results to user...' ) ;
145145 let msg = `<p>Spreadsheet updated with a new schedule proposal.</p>` ;
146- const invalidSessions = project . sessions . filter ( s =>
147- errors . find ( error => error . number === s . number ) ) ;
148146 if ( invalidSessions . length > 0 ) {
149147 msg += `<p>
150148 I could not schedule the following sessions because they are invalid:
0 commit comments