Nimbin[12]?Web & Tools / dienstplancreator / js/startpage.js

dienstplancreator git · main

Dienstplan (roster) creator, PHP/JS web app

php javascript roster web · first commit 2023-07-13 · last commit 2023-09-14 (3 years ago) · synced 3 days ago · upstream: github.com/nimbin2/dienstplancreator

JavaScript 50% PHP 40.5% CSS 8.5%
git clone https://git.christianimmanuel.de/web-tools/dienstplancreator.gitwget https://git.christianimmanuel.de/web-tools/dienstplancreator/archive/dienstplancreator.tar.gz
js/startpage.js 4.7 KB · 121 lines raw
let block_start = document.getElementById("Start")

startRoster = async () => {
    showLoading("startRoster")
    VERSION = 1
    SETTINGS = await dbGet_settings()
    document.querySelector("#Menu-settings > h3").innerHTML = SETTINGS.institution
    //fixDataByVersion()

    DEPARTMENTS = await dbGet_departments()

	SETTINGS_LABELS = await dbGet_settings_labels()

    SHIFT_LABELS = await dbGet_shift_labels()

	DISPLAY_EDITABLE_CELL = SETTINGS.default_edit_cell_right
    if (DISPLAY_EDITABLE_CELL) {EDITABLE_CELL = true} 
    DISPLAY_EDITABLE_ROW = SETTINGS.default_row_top
    if (DISPLAY_EDITABLE_ROW ) {EDITABLE_ROW = true} 
    DISPLAY_EDITABLE_ROW_BOTTOM = SETTINGS.default_row_bottom
    if (DISPLAY_EDITABLE_ROW_BOTTOM ) {EDITABLE_ROW_BOTTOM = true} 
    DISPLAY_OVERTIME = SETTINGS.default_overtime

    DATE_YEAR_WEEK_OLD = DATE_YEAR_WEEK

    CLOSINGTIMES = await dbGet_closingtimes()

    ROSTERS_YEARWEEK = await dbGet_rosters_yearweek()

    renderMenuWeeks()
    setPrintZoomLevel()
    let date = window.location.search.slice(1)
    if (!getDateOfISOWeek(date)) { date = ROSTERS_YEARWEEK[0]}
    setRosterDate(getDateOfISOWeek(date))

    callback = async () => {
        if (SETTINGS.default_overtime) document.querySelector("#Roster-week-display-overtime button").classList.add("active")
        setPerson().then(async () => {
            getActiveRoster().then(() => {
                    document.querySelector("#Roster-copy-person-from").setAttribute("onClick", `openCopyPersonTablePopup("${DATE_YEAR_WEEK_BEFORE}", "${DATE_YEAR_WEEK}"); document.getElementById("Roster-week-container")?.scrollIntoView();`)
                let printmode = SETTINGS.printmode
                document.querySelector("#Roster-week-print-mode button").innerHTML = PRINT_MODES[printmode]

                document.getElementById("Zoom-roster").value = SETTINGS.zoom_web

                setRosterSortButtons(0)
                setRosterSortButtons(1)
                addSettingsGlobal()

                let scroll = window.location.hash
                if (scroll === "#settings") { renderSettings()}
                else if (scroll) { document.querySelector(`${scroll}`)?.scrollIntoView()}
                hideLoading("startRoster")
            })
        })
    }
    if (ROSTERS_YEARWEEK.indexOf(DATE_YEAR_WEEK) === -1) {
        let get_yw
        if (ROSTERS_YEARWEEK[0] < DATE_YEAR_WEEK) { get_yw = ROSTERS_YEARWEEK[0]}
        else if (ROSTERS_YEARWEEK[ROSTERS_YEARWEEK.length-1] > DATE_YEAR_WEEK) { get_yw = ROSTERS_YEARWEEK[ROSTERS_YEARWEEK.length-1]}
        else { get_yw = ROSTERS_YEARWEEK.find(y => y < DATE_YEAR_WEEK)}
		let roster_old = await dbGet_roster_where_yearweek(get_yw)
        let changes
		if (DATE_YEAR_WEEK < DATE_YEAR_WEEK_OLDEST) { 
			changes = await dbGet_roster_changes_where_yearweek(DATE_YEAR_WEEK_OLDEST)
        }
        dbSet_roster(DATE_YEAR_WEEK, roster_old.time_step, [roster_old.break_60, roster_old.break_90]).then(() => {
            if (DATE_YEAR_WEEK < DATE_YEAR_WEEK_OLDEST) { 
                changes.forEach(c => dbSet_roster_change_where_yearweek_and_day(DATE_YEAR_WEEK, c.day_id, c.start, c.end, c.amount))
            }    
            callA = async () => { 
                dbGet_rosters_yearweek().then(year_weeks => {
                    ROSTERS_YEARWEEK = year_weeks
                    DATE_YEAR_WEEK_NEWEST = ROSTERS_YEARWEEK[0]
                    DATE_YEAR_WEEK_OLDEST = ROSTERS_YEARWEEK[ROSTERS_YEARWEEK.length-1] 
                    callback()
                })
            }
            callA()
        })
    } else {
        callback()
    }
}
startVisitor = async () => {
    showLoading("startRoster")
    VERSION = 1
    SETTINGS = await dbGet_settings()
    document.querySelector("h2.main-title").innerHTML = SETTINGS.institution

    DEPARTMENTS = await dbGet_departments()

	SETTINGS_LABELS = await dbGet_settings_labels()

    SHIFT_LABELS = await dbGet_shift_labels()

	DISPLAY_EDITABLE_CELL = SETTINGS.default_edit_cell_right
    DISPLAY_EDITABLE_ROW = SETTINGS.default_row_top
    DISPLAY_EDITABLE_ROW_BOTTOM = SETTINGS.default_row_bottom
    DISPLAY_OVERTIME = SETTINGS.overtime

    DATE_YEAR_WEEK_OLD = DATE_YEAR_WEEK

    CLOSINGTIMES = await dbGet_closingtimes()

    ROSTERS_YEARWEEK = await dbGet_rosters_yearweek()

    setPrintZoomLevel()
    let date = window.location.search.slice(1)
    if ((!getDateOfISOWeek(date)) || (ROSTERS_YEARWEEK.indexOf(date) === -1)) { date = ROSTERS_YEARWEEK[0]}
    setRosterDate(getDateOfISOWeek(date))

    return setPerson().then(async () => {
        return getActiveRosterWeek().then(() => {
            let printmode = SETTINGS.printmode
            setRosterSortButtons(1)
            hideLoading("startRoster")
            return
        })
    })
}