@ -380,8 +380,8 @@ export function moveDestinationDown(options) {
}
}
export function getDaysFromRange ( options ) {
export function getDaysFromRange ( options ) {
let fromDay = options . from ;
let fromDay = options . from Day ;
let toDay = options . to ;
let toDay = options . to Day + 1 ;
let wdayMap = {
let wdayMap = {
1 : i18n . t ( 'pages.callForward.times.sunday' ) ,
1 : i18n . t ( 'pages.callForward.times.sunday' ) ,
2 : i18n . t ( 'pages.callForward.times.monday' ) ,
2 : i18n . t ( 'pages.callForward.times.monday' ) ,
@ -393,29 +393,31 @@ export function getDaysFromRange(options) {
} ;
} ;
let days = [ ] ;
let days = [ ] ;
while ( fromDay < toDay ) {
while ( fromDay < toDay ) {
days . push ( { name : wdayMap [ fromDay ] , number : fromDay } ) ;
days . push ( { name : wdayMap [ fromDay ] , number : fromDay . toString ( ) } ) ;
fromDay ++ ;
fromDay ++ ;
} ;
} ;
return days ;
return days ;
}
}
export function getHoursFromRange ( options ) {
export function getHoursFromRange ( options ) {
let toHour = options . toHour + 1 ;
let fromMinute = options . hasMinute ? options . fromMinute : '00' ;
let fromMinute = options . hasMinute ? options . fromMinute : '00' ;
let toMinute = options . hasMinute ? options . toMinute + 1 : '00' ;
let toMinute = options . hasMinute ? options . toMinute + 1 : '00' ;
toMinute = ! toMinute ? fromMinute + 1 : toMinute ;
toMinute = ! toMinute ? fromMinute + 1 : toMinute ;
let hours = [ ] ;
let hours = [ ] ;
if ( options . hasMinute ) {
if ( options . hasMinute ) {
while ( options . fromHour < options. toHour) {
while ( options . fromHour < toHour) {
hours . push ( {
hours . push ( {
from : ` ${ options . fromHour } : ${ fromMinute } ` ,
from : ` ${ options . fromHour } : ${ fromMinute } ` ,
to : ` ${ options . fromHour } : ${ toMinute } `
to : ` ${ options . fromHour } : ${ toMinute } ` ,
hour : options . fromHour . toString ( )
} ) ;
} ) ;
options . fromHour ++ ;
options . fromHour ++ ;
} ;
} ;
} else {
} else {
hours . push ( {
hours . push ( {
from : ` ${ options . fromHour } : ${ fromMinute } ` ,
from : ` ${ options . fromHour } : ${ fromMinute } ` ,
to : ` ${ options. toHour} : ${ toMinute } `
to : ` ${ toHour} : ${ toMinute } `
} ) ;
} ) ;
}
}
return hours ;
return hours ;
@ -424,49 +426,55 @@ export function getHoursFromRange(options) {
export function convertTimesetToWeekdays ( options ) {
export function convertTimesetToWeekdays ( options ) {
let times = [ ] ;
let times = [ ] ;
let counter = 0 ;
let counter = 0 ;
let timesetIsCompatible = fals e;
let timesetIsCompatible = tru e;
let timesetHasDuplicate = false ;
let timesetHasDuplicate = false ;
let timesetExists = false ;
let timesetExists = false ;
let timesetHasReverse = false ;
let timesetHasReverse = false ;
let timesetId = null ;
options . timesets . forEach ( ( timeset ) => {
options . timesets . forEach ( ( timeset ) => {
let timesetNameMatches = timeset . name === options . timesetName ;
let timesetNameMatches = timeset . name === options . timesetName ;
if ( counter === 0 && timesetNameMatches ) {
if ( counter === 0 && timesetNameMatches ) {
timeset . times . forEach ( ( time ) => {
timeset . times . forEach ( ( time ) => {
let isIncompatible = time . mday || time . month || time . year || ! time . wday || ! time . hour ;
if ( isIncompatible ) {
timesetIsCompatible = false ;
return ;
} else {
let days = [ ] ;
let days = [ ] ;
let hours = [ ] ;
let hours = [ ] ;
let fromDay = parseInt ( time . wday . split ( '-' ) [ 0 ] ) ;
let fromDay = parseInt ( time . wday . split ( '-' ) [ 0 ] ) ;
let toDay = time . wday . split ( '-' ) [ 1 ] ? parseInt ( time . wday . split ( '-' ) [ 1 ] ) + 1 : fromDay + 1 ;
let toDay = time . wday . split ( '-' ) [ 1 ] ? parseInt ( time . wday . split ( '-' ) [ 1 ] ) : fromDay ;
let fromHour = parseInt ( time . hour . split ( '-' ) [ 0 ] ) ;
let fromHour = parseInt ( time . hour . split ( '-' ) [ 0 ] ) ;
let toHour = time . hour . split ( '-' ) [ 1 ] ? parseInt ( time . hour . split ( '-' ) [ 1 ] ) + 1 : fromHour + 1 ;
let toHour = time . hour . split ( '-' ) [ 1 ] ? parseInt ( time . hour . split ( '-' ) [ 1 ] ) : fromHour ;
let fromMinute = time . minute ? parseInt ( time . minute . split ( '-' ) [ 0 ] ) : undefined ;
let fromMinute = time . minute ? parseInt ( time . minute . split ( '-' ) [ 0 ] ) : undefined ;
let toMinute = ( time . minute && time . minute . split ( '-' ) [ 1 ] ) ? parseInt ( time . minute . split ( '-' ) [ 1 ] ) : undefined ;
let toMinute = ( time . minute && time . minute . split ( '-' ) [ 1 ] ) ? parseInt ( time . minute . split ( '-' ) [ 1 ] ) : undefined ;
let isCompatible = time . mday || time . month || time . year || ! time . wday || ! time . hour ;
let isReverse = fromDay > toDay || fromHour > toHour || fromMinute > toMinute ;
let isReverse = fromDay > toDay || fromHour > toHour || fromMinute > toMinute ;
if ( isCompatible ) {
let timesHour ;
timesetIsCompatible = false ;
if ( isReverse ) {
return ;
} else if ( isReverse ) {
timesetHasReverse = true ;
timesetHasReverse = true ;
return ;
return ;
} else {
} else {
hours = getHoursFromRange ( { hasMinute : ! ! time . minute ,
hours = getHoursFromRange ( { hasMinute : ! ! time . minute ,
fromHour : fromHour , toHour : toHour ,
fromHour : fromHour , toHour : toHour ,
fromMinute : fromMinute , toMinute : toMinute } ) ;
fromMinute : fromMinute , toMinute : toMinute } ) ;
days = getDaysFromRange ( { from : fromDay , to : toDay } ) ;
days = getDaysFromRange ( { from Day : fromDay , to Day : toDay } ) ;
days . forEach ( day => {
days . forEach ( day => {
hours . forEach ( hour => {
hours . forEach ( hour => {
timesHour = time . minute ? hour . hour : time . hour ;
times . push ( {
times . push ( {
weekday : day . name ,
weekday : day . name ,
from : hour . from ,
from : hour . from ,
to : hour . to ,
to : hour . to ,
wday : time . wday ,
wday : day . number ,
hour : time . h our,
hour : timesH our,
minute : time . minute
minute : time . minute
} ) ;
} ) ;
} ) ;
} ) ;
} ) ;
} ) ;
timesetId = timeset . id ;
timesetIsCompatible = true ;
timesetIsCompatible = true ;
}
}
}
} ) ;
} ) ;
timesetExists = true ;
timesetExists = true ;
counter ++ ;
counter ++ ;
@ -480,7 +488,8 @@ export function convertTimesetToWeekdays(options) {
timesetIsCompatible : timesetIsCompatible ,
timesetIsCompatible : timesetIsCompatible ,
timesetExists : timesetExists ,
timesetExists : timesetExists ,
timesetHasReverse : timesetHasReverse ,
timesetHasReverse : timesetHasReverse ,
timesetHasDuplicate : timesetHasDuplicate
timesetHasDuplicate : timesetHasDuplicate ,
timesetId : timesetId
} ;
} ;
}
}
@ -498,3 +507,30 @@ export function loadTimesetTimes(options) {
} ) ;
} ) ;
} ) ;
} ) ;
}
}
export function deleteTimeFromTimeset ( options ) {
let headers = {
'Content-Type' : 'application/json-patch+json'
} ;
return new Promise ( ( resolve , reject ) => {
Vue . http . patch ( '/api/cftimesets/' + options . timesetId , [ {
op : 'replace' ,
path : '/times' ,
value : options . times
} ] , { headers : headers } ) . then ( ( result ) => {
resolve ( result ) ;
} ) . catch ( err => {
reject ( err ) ;
} ) ;
} ) ;
}
export function deleteTimesetById ( id ) {
return new Promise ( ( resolve , reject ) => {
Vue . http . delete ( '/api/cftimesets/' + id ) . then ( ( ) => {
resolve ( ) ;
} ) . catch ( err => {
reject ( err ) ;
} ) ;
} ) ;
}