import moment from 'moment';

/**
 * @param value string[]
 * @param onChange (data: string[]) => void
 */
export interface Props {
    id?: any,
    value?: string[],
    onChange?: (data: string[]) => void
}

const [_, ...rest] = moment.weekdays();
export const WEEK_SERIRES = [...rest, _].map((item, index) => ({
    name: item,
    key: index,
    value: index + 1,
}));

export const HOUR_LIST = Array.from({ length: 24 }, (v, i) => i);

// export const TIME_PICKER = Array(24)
//   .fill(0)
//   .map((k, v) => `${v}:30`);

const totalHour = 48;

export const initTimerPicker = function (value: any[] = []) {
    const result: any[] = [];
    let index = 0;
    WEEK_SERIRES.forEach((week, rowNum) => {
        const weekList = [];
        let hourSpan = 0;
        while (hourSpan < totalHour) {
            const hour = Math.floor(hourSpan / 2);
            const curHour = ('00' + hour).slice(-2);
            const nextHour = ('00' + (hour + 1)).slice(-2);
            const timer = index % 2 === 0 ? `${curHour}:00-${curHour}:30` : `${curHour}:30-${nextHour}:00`;
            const selected = value[index] === '1';
            const timerBox = {
                key: `${week.value}_${timer}`,
                name: `${week.name} ${timer}`,
                value: index,
                rowNum: rowNum + 1,
                colNum: (index % totalHour) + 1,
                selected,
            };
            weekList.push(timerBox);
            if (!selected) {
                value[index] = '0';
            }
            index++;
            hourSpan++;
        }
        result.push(weekList);
    });
    value.length = 7 * 24 * 2;
    return result;
};

export function formatData(data: any, timeBox: any) {
    data[timeBox.value] = timeBox.selected ? '1' : '0';
    return data;
}

export function getInitalFormatList() {
    return new Array(7 * 24 * 2).fill('0');
}