# Subnotebooks need https://pypi.org/project/notebook-splitter/
SLIDES = Introduction-to-Pandas--slides.html
SUBNOTEBOOKS = Introduction-to-Pandas--slides.ipynb Introduction-to-Pandas--tasks.ipynb Introduction-to-Pandas--solution.ipynb

MASTER_NOTEBOOK = Introduction-to-Pandas--master.ipynb

DEP_PRESENTATION = fzj-reveal.js/ Makefile patch-00--add-fzj-reveal-subdir.patch

_TMPFILE1 := .tmp1
_TMPFILE2 := .tmp2

.PHONY: all presentation subnotebooks presentation-pdf
all: presentation subnotebooks
presentation: $(SLIDES)
presentation-pdf: $(SLIDES:html=pdf)
subnotebooks: $(SUBNOTEBOOKS)

%.html: %.ipynb $(DEP_PRESENTATION)
	jupyter nbconvert --to=slides --reveal-prefix=reveal.js --stdout $< > $(_TMPFILE1)
	gsed -i 's#<script src=#\n<script src=#g' $(_TMPFILE1)
	gsed -i '/require.min.js/d' $(_TMPFILE1)
	patch --silent --unified --input=fzj-reveal.js/patch-00--new-revealjs-api.patch --output=$(_TMPFILE2) $(_TMPFILE1) && mv $(_TMPFILE2) $(_TMPFILE1)
	patch --silent --unified --input=fzj-reveal.js/patch-01--add-fzj-js.patch --output=$(_TMPFILE2) $(_TMPFILE1) && mv $(_TMPFILE2) $(_TMPFILE1)
	patch --silent --unified --input=fzj-reveal.js/patch-02--add-fzj-css.patch --output=$(_TMPFILE2) $(_TMPFILE1) && mv $(_TMPFILE2) $(_TMPFILE1)
	patch --silent --unified --input=fzj-reveal.js/patch-03--modify-canvas.patch --output=$(_TMPFILE2) $(_TMPFILE1) && mv $(_TMPFILE2) $(_TMPFILE1)
	patch --silent --unified --input=patch-00--add-fzj-reveal-subdir.patch --output=$(_TMPFILE2) $(_TMPFILE1) && mv $(_TMPFILE2) $(_TMPFILE1)
	patch --silent --unified --input=patch-01--add-ah-css.patch --output=$(_TMPFILE2) $(_TMPFILE1) && mv $(_TMPFILE2) $(_TMPFILE1)
	mv $(_TMPFILE1) $@

%.pdf: %.html $(DEP_PRESENTATION)
	# This needs to have artificially large paper size in order to fix bug https://github.com/astefanutti/decktape/issues/151#issuecomment-456166075
	docker run --rm -t -v $(PWD):/slides astefanutti/decktape --size "2560x1440" reveal $< $@

Introduction-to-Pandas--slides.ipynb: $(MASTER_NOTEBOOK)
	notebook-splitter --keep task --keep solution --keep onlypresentation --remove onlytask --remove onlysolution --remove nopresentation -o $@ $< 

Introduction-to-Pandas--tasks.ipynb: $(MASTER_NOTEBOOK)
	notebook-splitter --keep task --keep nopresentation --keep onlytask --remove solution --remove all -o $@ $< 

Introduction-to-Pandas--solution.ipynb: $(MASTER_NOTEBOOK)
	notebook-splitter --keep task --keep nopresentation --keep solution --keep onlysolution --remove all -o $@ $<