{"id":1257,"date":"2022-08-06T19:18:19","date_gmt":"2022-08-06T17:18:19","guid":{"rendered":"https:\/\/caffeineandpizza.info\/?page_id=1257"},"modified":"2022-09-21T14:12:33","modified_gmt":"2022-09-21T12:12:33","slug":"sar-iii-anno-22-23-primo-semestre","status":"publish","type":"page","link":"https:\/\/caffeineandpizza.info\/index.php\/sar-iii-anno-22-23-primo-semestre\/","title":{"rendered":"SAR \u2013 III Anno (22\/23) \u2013 Primo semestre (generico)"},"content":{"rendered":"\n<script src=\"\/femton\/iiia\/iiiajq.js\" type=\"text\/javascript\"><\/script>\n<script src=\"\/femton\/iiia\/iiiadata.js\" type=\"text\/javascript\"><\/script>\n    <style>\n        body {\n            font-family: 'Playfair Display', 'Georgia', serif;\n        }\n        \n        #charts_container {\n            width: 100%;\n        }\n        \n        .charts_container_column {\n            width: 48%;\n            float: left;\n            display: inline-block;\n            padding: 5px;\n        }\n        \n        #charts_container_left {\n        }\n        \n        #charts_container_right {\n        }\n        \n        .course_div {\n            width: 100%;\n            border: solid 1pt black;\n            padding: 5px;\n            margin-top: 15px;\n            border-radius: 4px;\n        }\n        \n        .chead_name {\n            cursor: pointer;\n        }\n        \n        .chead_name span {\n            color: #274d79;\n            font-weight: bolder;\n        }\n        \n        .chead_img {\n            margin-top: 10px;    \n        }\n        \n        .chead_img img {\n            width: 100%;\n        }\n        \n        .channel {\n            padding: 4px;\n            background-color: #eee;\n            margin-top: 4px;\n            cursor: pointer;\n        }\n        \n        .channel img {\n            width: 10px;\n            margin-right: 5px;\n        }\n        \n        .channel-info {\n            padding 4;\n            border-bottom: dotted 1pt gray;\n            display: none;\n        }\n        \n        .ch-icons-container {\n            height: 70px;\n            text-align: center;\n            margin-top: 4px;\n        }\n        \n        .ch-icon {\n            width: 30%;\n            background-color: aliceblue;\n            border-radius: 5px;\n            border: solid 0.5px black;\n            text-align: center;\n            padding: 3px;\n            margin: 4px;\n            display: inline-block;\n            cursor: pointer;\n        }\n        \n        .ch-icon img {\n            width: 20px;\n        }\n        \n        .ch-icon span {\n            margin-top: 3px;\n            font-size: .65em;\n            font-variant: small-caps;\n            display: block;\n        }\n        \n        .ch-infos-h, .ch-books-h, .ch-scheds-h {\n            border-bottom: dotted 1pt gray;\n        }\n        \n        .ch-infos-h span, .ch-books-h span, .ch-scheds-h span, .ch-books-hnf span  {\n            margin-bottom: 2px;\n        }\n        \n        .ch-books-hnf {\n            margin-top: 20px;\n        }\n        \n        .ch-books-hnf span {\n            font-size: .65em;\n            font-weight: bolder;\n        }\n        \n        .ch-infos-t, .ch-books-t {\n            margin-top: 10px;\n        }\n        \n        .ch-infos-t span, .ch-scheds-t span {\n            font-size: .8em;\n            font-style: italic;\n        }\n        \n        .ch-books, .ch-scheds {\n            margin-top: 20px;    \n        }\n        \n        .ch-scheds-h img {\n            width: 15px;\n            cursor: pointer;\n            float: right;\n            margin-right: 5px;\n            margin-top: 2px;\n        }\n        \n        .warning-bean {\n            float: right;\n            font-size: .6em;\n            margin-right: -7px;\n            margin-top: -2px;\n        }\n        \n        .warning-bean img {\n            margin-top: 1px;\n            float: right;\n            margin-left: 3px;\n        }\n        \n        .book {\n            font-size: .7em;\n            margin-top: 10px;\n        }\n        \n        .title {\n            font-weight: bold;\n        }\n        \n        .clickable-title {\n            cursor: pointer;\n            text-decoration: underline;\n        }\n        \n        .own_star {\n            margin-right: 4px;\n            width: 10px;\n        }\n        \n        .top_secret {\n            width: 20px !important;\n            cursor: pointer;\n            margin-right: 10px !important;\n            margin-top: -1px;\n            float: right;\n            display: none;\n        }\n        \n        #scheduler {\n            float: left;\n            clear: both;\n            text-align: center;\n            width: 100%;\n            margin-top: 30px;\n        }\n        \n        #scheduler table {\n            width: 100%;\n        }\n        \n        #scheduler table td {\n            text-align: center;\n            vertical-align: top;\nfont-size: .9em;\n        }\n        \n        .scheduler_row_w {}\n        .scheduler_row_g { background-color: #eee; }\n        \n        #head_empty {\n\/*            width: 10%;*\/\n        }\n        \n        .scheduler_header_value {\n            width: 15%;\n        }\n        \n        .sch_location_course, .sch_location_course_teacher, .sch_location_notes {\n            font-size: .6em;\n        }\n        \n        .sch_location_main {\n            font-size: .9em;\n            font-variant: small-caps;\n            margin-bottom: 3px;\n            margin-top: 3px;\n        }\n        \n        .sch_spacer {\n            height: 4px;\n        }\n        \n        .sch_location {\n            border: dotted 1pt gray;\n            margin-bottom: 2px;\n            margin-top: 2px;\n        }\n        \n        .day_sched {\n            border-bottom: dashed 0.5pt #eee;\n            margin-top: 10px;\n        }\n        \n        .ch-scheds-t {\n            padding-bottom: 10px;\n        }\n        \n        .no-sched-span {\n            margin-top: 10px;\n            display: block;\n        }\n        \n        .dome-easter-egg {\n            background-color: #8bc34a;\n        }\n    <\/style>\n    <script type=\"application\/javascript\">\n        let fixedImgsBase = \"\/femton\/iiia\/imgs\/\";\n        let archBase = \"\/femton\/iiia\/archs\/\";\n        let playBase = \"\/femton\/iiia\/sounds\/\";\n        \n        let days = {\n                \"mon\": \"Luned\u00ec\", \n                \"tue\": \"Marted\u00ec\", \n                \"wed\": \"Mercoled\u00ec\",\n                \"thu\": \"Gioved\u00ec\", \n                \"fri\": \"Venerd\u00ec\",\n                \"sat\": \"Sabato :|\"\n            };\n        let hours = [\"09-11\", \"11-13\", \"13-15\", \"15-17\", \"17-19\"];\n        var anchors = [];\n        \n        function paintThem() {\n            let container_l = $('#charts_container_left').empty();\n            let container_r = $('#charts_container_right').empty();\n            let data = courses.sort(function(a, b) {\n               return a.name.toLowerCase().localeCompare(b.name.toLowerCase()); \n            });\n            for (var cc = 0; cc < data.length; cc++) {\n                let course = data[cc];\n                let cdiv = $('<div \/>').attr('id', course.id).addClass('course_div');\n                let anchorName = \"anchor_\" + course.id;\n                let courseName = \"[\" + course.id + \"] \" + course.name;\n                anchors.push({\"n\": anchorName, \"t\": courseName});\n                let hdiv = $('<div \/>').addClass('chead_div').append($(\"<a \/>\").attr(\"name\", anchorName));\n                let chn = $('<div \/>').addClass('chead_name').append($('<span \/>').html(courseName)).click(openTarget);\n                if (course.course_address) { chn.attr('target', course.course_address); }\n                hdiv.append(chn);\n                let chi = $('<div \/>').addClass('chead_img').append($('<img \/>').attr('src', fixedImgsBase + course.image));\n                hdiv.append(chi);\n                cdiv.append(hdiv); \n                \n                \/\/Channels\n                let chsss = course.channels; \/\/.concat(course.channels);\n                for (var chac in chsss) {\n                    let channel = chsss[chac];\n                    let chid = \"channel-\" + course.id + \"-\" + chac;\n                    \n                    let channelDiv = $('<div \/>').addClass('channel').attr(\"id\", chid).click(toggleChannel);\n                    if (channel.draft == true) { channelDiv.append(warnDiv); }\n                    \n                    let channelIcon = $('<img \/>').attr('src', fixedImgsBase + \"books_ico.png\");\n                    channelDiv.append(channelIcon);\n                    let channelTeacher = $('<span \/>').html(channel.teacher);\n                    channelDiv.append(channelTeacher);\n                    let channelScr = $('<img \/>').attr(\"src\", fixedImgsBase + \"topsecret.png\").addClass(\"top_secret\").click(openTarget).attr('target', archBase + channel.howl + \".zip\");\n                    channelDiv.append(channelScr);\n                    cdiv.append(channelDiv);\n                    cdiv.append(buildChannelInfo(chid, channel, [cc, parseInt(chac)]));\n                }\n                \n                let container = cc % 2 == 0 ? container_l : container_r;\n                container.append(cdiv);\n            }\n            \n            doTheAnchors();\n        }\n        \n        \n        function doTheAnchors() {\n            let anchs = $(\"#anchors\").empty();\n            let ul = $(\"<ul \/>\");\n            anchs.append(ul);\n            for (var anc in anchors) {\n                let anchor = anchors[anc];\n                ul.append($(\"<li \/>\").append($(\"<a \/>\").attr(\"href\", \"#\" + anchor.n).html(anchor.t)));\n            }\n        }\n        \n        function buildChannelInfo(chid, channel, scheduleMap) {\n            let channelInfoDiv = $('<div \/>').addClass('channel-info').attr(\"id\", \"info-\" + chid);\n            let iconsContainer = $('<div \/>').addClass('ch-icons-container');\n            var emt = null;\n            if (channel.email) { emt = 'mailto:' + channel.email; }\n            iconsContainer.append(buildChinIco('Email', 'email.png', emt))\n            iconsContainer.append(buildChinIco('Bacheca prof.', 'te_board.png', channel.teachers_wall))\n            iconsContainer.append(buildChinIco('Bacheca corso', 'board.png', channel.course_wall))\n            channelInfoDiv.append(iconsContainer);\n            \n            let infoDiv = $('<div \/>').addClass('ch-infos');\n            let infoHeader = $('<div \/>').addClass('ch-infos-h').append($('<span \/>').text(\"Info\"));\n            infoDiv.append(infoHeader);\n            let infoText = $('<div \/>').addClass('ch-infos-t').append($('<span \/>').html(channel.info));\n            infoDiv.append(infoText);\n            channelInfoDiv.append(infoDiv);\n            \n            channelInfoDiv.append(buildBooksDiv(channel.books));\n            \n            let scheduleDiv = $('<div \/>').addClass('ch-scheds');\n            let scheduleHeader = $('<div \/>').addClass('ch-scheds-h')\n                                        .append($('<span \/>').text(\"Orario\"))\n                                        .append($('<img \/>').addClass('scheduler-tigger').attr(\"src\", fixedImgsBase + \"clock.png\").attr('map', scheduleMap).click(scheduleMe));\n            scheduleDiv.append(scheduleHeader);\n            let scheduleText = $('<div \/>').addClass('ch-scheds-t');\n            \n            if (channel.schedule) {\n                for (var schedc in channel.schedule) {\n                    let schedule = channel.schedule[schedc];\n                    scheduleText.append($('<div \/>').addClass('day_sched').append($('<span \/>').html(days[schedc])));\n                    for (var hourz in schedule) {\n                        let schedulzzz = schedule[hourz];\n                        if (schedulzzz) {\n                            var hhtmle = hours[hourz] + \": \" + schedulzzz.location;\n                            if (schedulzzz.notes) {\n                                hhtmle += \" (\" + schedulzzz.notes + \")\";\n                            }\n                            let hspan = $('<span \/>').html(hhtmle);\n                            scheduleText.append($('<div \/>').addClass('hour_sched').append(hspan));\n                        }\n                    }\n                }\n            } else {\n               scheduleText.append($(\"<span \/>\").addClass(\"no-sched-span\").text(\"Nulla da segnalare, per ora...\")); \n            }\n            \n            scheduleDiv.append(scheduleText);\n            channelInfoDiv.append(scheduleDiv);\n            \n            return channelInfoDiv;\n        }\n        \n        function scheduleMe() {\n            let me = $(this);\n            if (me.is('.sch_selected')) {\n                me.removeClass('sch_selected');\n                me.attr('src', fixedImgsBase + \"clock.png\")\n            } else {\n                me.addClass('sch_selected');\n                me.attr('src', fixedImgsBase + \"clock_selected.png\")\n            }\n            setScheduler();\n        }\n        \n        function buildChinIco(text, iconPath, target) {\n            let icon = $('<div \/>').addClass('ch-icon');\n            icon.append($('<img \/>').attr('src', fixedImgsBase + iconPath)).append($('<span \/>').html(text)).attr('target', target).click(openTarget);\n            return icon;\n            \n        }\n        \n        function buildBooksDiv(books) {\n            let booksDiv = $('<div \/>').addClass('ch-books');\n            let booksHeader = $('<div \/>').addClass('ch-books-h').append($('<span \/>').text(\"Testi\"));\n            booksDiv.append(booksHeader);\n            let booksList = $('<div \/>').addClass('ch-books-l');\n            booksDiv.append(booksList);\n            for (var bc in books) { \n                let book = books[bc];\n                if (book.nonAttending == null || book.nonAttending == false) { booksDiv.append(buildBook(book)); }\n            }\n            let booksHeaderNF = $('<div \/>').addClass('ch-books-hnf').append($('<span \/>').text(\"Per non frequentanti\"));\n            booksDiv.append(booksHeaderNF);\n            for (var bc in books) { \n                let book = books[bc];\n                if (book.nonAttending == true) { booksDiv.append(buildBook(book)); }\n            }\n            \n            return booksDiv;\n        }\n        \n        function buildBook(book) {\n            let bd = $('<div \/>').addClass('book');\n            \n            if (book.own == true) {\n                bd.append($('<img \/>').addClass('own_star').attr('src', fixedImgsBase + \"star.png\")); \n            }\n            \n            bd.append($('<span \/>').addClass('authors').html(book.authors + \", \"));\n            let title = $('<span \/>').addClass('title').html(book.title);\n            if (book.link) {\n                title.addClass('clickable-title').click(openTarget).attr('target', book.link);\n            }\n            bd.append(title);\n            \n            if(book.in || book.pages) {\n                var it = \" (<i>\";\n                if (book.in) it += \"in \" + book.in;\n                if (book.pages) it += (book.in == null ? \"\" : \", \") + \"pp. \" + book.pages;\n                bd.append($('<span \/>').addClass('bookinemammt').html(it + \"<\/i>)\"));\n            }\n \n            if (book.year) {\n                bd.append($('<span \/>').addClass('year').html(', ' + book.year)); \n            }\n            \n            if (book.edition) {\n               bd.append($('<span \/>').addClass('ediction').html(', ' + book.edition)); \n            }\n            \n            if (book.editor) {\n               bd.append($('<span \/>').addClass('editor').html(', ' + book.editor)); \n            }\n            \n            if (book.city) {\n               bd.append($('<span \/>').addClass('city').html(', ' + book.city)); \n            }\n            \n            return bd;\n        }\n        \n        function warnDiv() {\n            let wdi = $('<div \/>').addClass('warning-bean');\n            wdi.append($('<img \/>').attr('src', fixedImgsBase + \"warn.png\"));\n            wdi.append($('<span \/>').text(\"info provvisorie\"));\n            return wdi;\n        }\n        \n        function toggleChannel() {\n            let info = $(this).next('.channel-info');\n            info.siblings('.channel-info').hide();\n            info.toggle();\n        }\n        \n        \n        function openTarget() {\n            let tgt = $(this).attr('target');\n            if(tgt) {\n                window.open(tgt, '_blank');\n            } else {\n                alert(\"Questo collegamento non \u00e8 ancora disponibile. SUORRISSIMO!\");\n            }\n        }\n        \n        \n        var calci = null;\n        var index = 0;\n        \n        function sophie(code) {\n            console.log(code);\n            if (calci==null) { \n                calci = [];\n                index = 0;\n                for (var coc in courses) {\n                    let course = courses[coc];\n                    for (var cc in course.channels) {\n                        let channel = course.channels[cc];\n                        if (channel.sophie != null && channel.sophie.length > 0 && channel.sophie[index] == code) {\n                            calci.push({\"id\": \"channel-\" + course.id + \"-\" + cc, \"sophie\": channel.sophie});\n                        }\n                    }\n                } \n            } else {\n                var newCalci = [];\n                for (var calc in calci) {\n                    let currentCalci = calci[calc];\n                    if (currentCalci.sophie.length > index && currentCalci.sophie[index] == code) {\n                        if (currentCalci.sophie.length == index + 1) {\n                            console.log(currentCalci.id);\n                            $('#' + currentCalci.id).find('.top_secret').show();\n                            new Audio(playBase + 'magic.mp3').play();\n                        } else {\n                            newCalci.push(currentCalci);\n                        }\n                    }\n                }\n                calci = newCalci;\n            }\n            if (calci.length == 0) {\n                calci = null;\n                index = 0;\n            } else {\n                index++;\n            }\n        }\n        \n        function setScheduler() {\n            \n            var schedules = {};\n            \n            $.each($('.sch_selected'), function (index, ico) {\n               let icoj = $(ico);\n                let treasureMap = icoj.attr('map').split(\",\");\n                let course = courses[treasureMap[0]];\n                let channel = course.channels[treasureMap[1]];\n                let schedule = channel.schedule;\n                if (schedule) {\n                    for (day in schedule) {\n                        var schedz = schedules[day];\n                        if (schedz == null) {\n                            schedz = {\"sch\": []};\n                            schedules[day] = schedz;\n                        }\n                        let item = {\"hex\": channel.hex, \"location\": schedule[day], \"teacher\": channel.teacher, name: \"[\" + course.id + \"] \" + course.name};\n                        schedz.sch.push(item);\n                    }\n                }\n            });\n            \n            \n            let tb = $(\"<tbody \/>\");\n            $(\"#scheduler\").empty().append($(\"<table \/>\").append(tb));\n            \n            let htr = $('<tr \/>').attr('id', 'scheduler_header_row');\n            htr.append($(\"<td \/>\").html(\"\").attr('id', 'head_empty'));\n            \n            for (var dc in days) {\n                let day = days[dc];\n                htr.append($(\"<td \/>\").text(day).addClass(\"scheduler_header_value\"));\n            }\n            tb.append(htr);\n            \n            for (var hc in hours) {\n                let i = parseInt(hc);\n                \n                let htrow = $('<tr \/>').addClass('scheduler_row');\n                let line_style = i % 2 == 0 ? \"scheduler_row_g\" : \"scheduler_row_w\";\n                htrow.addClass(line_style);\n                \n                htrow.append($(\"<td \/>\").addClass('scheduler_hour').text(hours[hc]));\n                for (var dc in days) {\n                    let schtd = $(\"<td \/>\").addClass(\"scheduler_schedule\");\n                    let c_schedules = schedules[dc];\n                    if (c_schedules) {\n                        for (var scic in c_schedules.sch) {\n                            let schhh = c_schedules.sch[scic];\n                            if (i < schhh.location.length) {\n                                let location = schhh.location[i];\n                                if (location) { schtd.append(buildLocation(location, schhh.name, schhh.teacher, schhh.hex)); }\n                            }\n                        }\n                    }\n                    htrow.append(schtd);\n                }\n                tb.append(htrow);\n            }\n            \n        }\n        \n        function buildLocation(location, name, teacher, hex) {\n            let ld = $('<div \/>').addClass('sch_location'); \/\/.css('background-color', hex);\n            ld.append($('<span \/>').addClass('sch_location_course').html(name));\n            ld.append($('<div \/>').addClass('sch_spacer'));\n            ld.append($('<span \/>').addClass('sch_location_course_teacher').html(\"(\" + teacher + \")\"));\n            ld.append($('<div \/>').addClass('sch_spacer'));\n            ld.append($('<span \/>').addClass('sch_location_main').html(location.location));\n            if (location.notes) {\n                ld.append($('<div \/>').addClass('sch_spacer'));\n                ld.append($('<span \/>').addClass('sch_location_notes').html(location.notes));\n            }\n            return ld;\n        }\n        \n        \/\/DEE\n        let domeEasterEggs = [\"10589923\", \"97756\", \"1031713\", \"1024814\", \"1026979\", \"1035932\"];\n        let domeEasterEgg = [68,69,69];\n        var deei = 0;\n        \n        function evalDee(code) {\n            $('.course_div').removeClass('dome-easter-egg');\n            if (domeEasterEgg[deei] == code) {\n                deei++;\n                if (deei == domeEasterEgg.length) {\n                    deei = 0;\n                    $('.course_div').filter(function(idx) { return domeEasterEggs.indexOf($(this).attr(\"id\")) != -1  }).addClass('dome-easter-egg');\n                }\n            } else {\n                deei = 0;\n            }\n        }\n        \n        function setAllSched(onlymine) {\n            var ueue = null;\n            if (onlymine == true) {\n                ueue = $('.course_div').filter(function(idx) { return domeEasterEggs.indexOf($(this).attr(\"id\")) != -1  }).find('.scheduler-tigger').not('.sch_selected');\n            } else {\n                ueue = $('.scheduler-tigger').not('.sch_selected');    \n            }\n            if(ueue) {\n                ueue.addClass('sch_selected');\n                setScheduler();\n            }\n        }\n        \n        $(document).ready(function() {\n            paintThem();\n            setScheduler();\n            document.onkeydown = function(evt) {\n                evt = evt || window.event;\n                evalDee(evt.keyCode);\n                sophie(evt.keyCode);\n            };\n        });\n    <\/script>\n    <div id=\"anchors\"><\/div>\n                <div id=\"charts_container\">\n                    <div id=\"charts_container_left\" class=\"charts_container_column\"><\/div>\n                    <div id=\"charts_container_right\" class=\"charts_container_column\"><\/div>\n                <\/div>\n                <br>\n                <div id=\"scheduler\"><\/div>\n\n\n\n<div style=\"margin-top: 20px; clear: both; font-size: .8em; border-top: solid 1pt black; padding: 4px;\">\n<p>Ti serve una scheda? <a href=\"mailto:santoro.1946958@studenti.uniroma1.it?subject=III - ISEM\" target=\"_blank\" rel=\"noopener\">Clicca qui<\/a> ed indicami<\/p>\n<ol style=\"margin-top: -20px;\">\n<li style=\"margin: 0;\">Codice dell&#8217;insegnamento<\/li>\n<li style=\"margin: 0;\">Denominazione ufficiale del corso<\/li>\n<li style=\"margin: 0;\">Nome e cognome del docente (in caso di canalizzazioni e di interesse per pi\u00f9 docenti, inviami tutti i nominativi che ti interessano)<\/li>\n<\/ol>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Ti serve una scheda? Clicca qui ed indicami Codice dell&#8217;insegnamento Denominazione ufficiale del corso Nome e cognome del docente (in caso di canalizzazioni e di interesse per pi\u00f9 docenti, inviami tutti i nominativi che ti interessano)<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-1257","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/caffeineandpizza.info\/index.php\/wp-json\/wp\/v2\/pages\/1257","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/caffeineandpizza.info\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/caffeineandpizza.info\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/caffeineandpizza.info\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/caffeineandpizza.info\/index.php\/wp-json\/wp\/v2\/comments?post=1257"}],"version-history":[{"count":35,"href":"https:\/\/caffeineandpizza.info\/index.php\/wp-json\/wp\/v2\/pages\/1257\/revisions"}],"predecessor-version":[{"id":1307,"href":"https:\/\/caffeineandpizza.info\/index.php\/wp-json\/wp\/v2\/pages\/1257\/revisions\/1307"}],"wp:attachment":[{"href":"https:\/\/caffeineandpizza.info\/index.php\/wp-json\/wp\/v2\/media?parent=1257"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}