"use strict";
var __assign = (this && this.__assign) || function () {
    __assign = Object.assign || function(t) {
        for (var s, i = 1, n = arguments.length; i < n; i++) {
            s = arguments[i];
            for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
                t[p] = s[p];
        }
        return t;
    };
    return __assign.apply(this, arguments);
};
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
    Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
    o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
    if (mod && mod.__esModule) return mod;
    var result = {};
    if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
    __setModuleDefault(result, mod);
    return result;
};
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
    function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
    return new (P || (P = Promise))(function (resolve, reject) {
        function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
        function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
        function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
        step((generator = generator.apply(thisArg, _arguments || [])).next());
    });
};
var __generator = (this && this.__generator) || function (thisArg, body) {
    var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
    return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
    function verb(n) { return function (v) { return step([n, v]); }; }
    function step(op) {
        if (f) throw new TypeError("Generator is already executing.");
        while (_) try {
            if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
            if (y = 0, t) op = [op[0] & 2, t.value];
            switch (op[0]) {
                case 0: case 1: t = op; break;
                case 4: _.label++; return { value: op[1], done: false };
                case 5: _.label++; y = op[1]; op = [0]; continue;
                case 7: op = _.ops.pop(); _.trys.pop(); continue;
                default:
                    if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
                    if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
                    if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
                    if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
                    if (t[2]) _.ops.pop();
                    _.trys.pop(); continue;
            }
            op = body.call(thisArg, _);
        } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
        if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
    }
};
var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.getServerSideProps = void 0;
var jsx_runtime_1 = require("react/jsx-runtime");
var footer_1 = __importDefault(require("components/landing/footer"));
var header_1 = __importDefault(require("components/landing/header"));
var head_1 = __importDefault(require("components/landing/head"));
var antd_1 = require("antd");
var with_customize_1 = __importDefault(require("lib/with-customize"));
var customize_1 = require("lib/customize");
var A_1 = __importDefault(require("components/misc/A"));
var icon_1 = require("@cocalc/frontend/components/icon");
var pricing_item_1 = __importStar(require("components/landing/pricing-item"));
var config_1 = require("lib/config");
var data = [
    {
        title: "5 Day Professional Training",
        icon: "battery-quarter",
        teachers: 1,
        students: 5,
        duration: "5 days",
        disk: 5,
        shared_ram: 2,
        dedicated_ram: 1,
        shared_cores: 1,
        dedicated_cores: 0.5,
        academic: false,
        online: 33.83,
    },
    {
        title: "20 Students for 1 Month",
        icon: "battery-half",
        teachers: 1,
        students: 20,
        duration: "1 month",
        disk: 1,
        shared_ram: 2,
        shared_cores: 1,
        academic: true,
        retail: 113.03,
        online: 84.77,
    },
    {
        title: "120 Students for 4 Months",
        icon: "battery-full",
        teachers: 1,
        students: 120,
        duration: "4 months",
        disk: 1,
        shared_ram: 1,
        shared_cores: 1,
        academic: true,
        retail: 2203.41,
        online: 1652.56,
    },
];
function Courses(_a) {
    var customize = _a.customize;
    return ((0, jsx_runtime_1.jsxs)(customize_1.Customize, __assign({ value: customize }, { children: [(0, jsx_runtime_1.jsx)(head_1.default, { title: "Course licenses" }), (0, jsx_runtime_1.jsx)(header_1.default, { page: "pricing", subPage: "courses" }), (0, jsx_runtime_1.jsxs)(antd_1.Layout.Content, __assign({ style: {
                    backgroundColor: "white",
                } }, { children: [(0, jsx_runtime_1.jsxs)("div", __assign({ style: {
                            maxWidth: config_1.MAX_WIDTH,
                            margin: "15px auto",
                            padding: "15px",
                            backgroundColor: "white",
                        } }, { children: [(0, jsx_runtime_1.jsx)("div", __assign({ style: { textAlign: "center", color: "#444" } }, { children: (0, jsx_runtime_1.jsxs)("h1", __assign({ style: { fontSize: "28pt" } }, { children: [(0, jsx_runtime_1.jsx)(icon_1.Icon, { name: "graduation-cap", style: { marginRight: "30px" } }), "CoCalc - Course licenses"] })) })), (0, jsx_runtime_1.jsxs)("div", __assign({ style: { fontSize: "12pt" } }, { children: [(0, jsx_runtime_1.jsxs)("p", { children: ["You", " ", (0, jsx_runtime_1.jsx)(A_1.default, __assign({ href: "https://doc.cocalc.com/teaching-instructors.html" }, { children: "teach a course" })), " ", "on ", (0, jsx_runtime_1.jsx)("span", { children: "CoCalc" }), " by creating one project for each student, sending your students assignments and handouts, then guiding their progress using collaboration and chat. You can then collect, grade, comment on, and return their work."] }), (0, jsx_runtime_1.jsx)("p", { children: "You will need to purchase an appropriate license for your course, or have the students pay the one-time $14 fee, since CoCalc is not funded by advertisers or other intrusive methods." }), (0, jsx_runtime_1.jsx)("h2", { children: "How to get started?" }), (0, jsx_runtime_1.jsxs)("p", { children: ["You can", " ", (0, jsx_runtime_1.jsx)(A_1.default, __assign({ href: "/store/site-license", external: true }, { children: "purchase a license for your course" })), " ", "in the", " ", (0, jsx_runtime_1.jsx)(A_1.default, __assign({ href: "/store", external: true }, { children: "store" })), "."] }), (0, jsx_runtime_1.jsxs)("p", { children: ["Minimal upgrades might be okay for beginner courses, but we find that many data and computational science courses run better with additional RAM and CPU.", " ", (0, jsx_runtime_1.jsx)(A_1.default, __assign({ href: "mailto:help@cocalc.com" }, { children: "Contact us" })), " if you have questions or need a trial license to test out different possibilities."] }), (0, jsx_runtime_1.jsxs)("p", { children: ["Once you obtain a license key,", " ", (0, jsx_runtime_1.jsx)(A_1.default, __assign({ href: "https://doc.cocalc.com/teaching-upgrade-course.html" }, { children: "apply it to all your student projects" })), "."] }), (0, jsx_runtime_1.jsx)("p", { children: "You can acquire several licenses, e.g., to partition a semester into smaller parts with different requirements, or to keep upgrades separate between certain groups of courses or instructors." }), (0, jsx_runtime_1.jsx)("h2", { children: "Payment options" }), (0, jsx_runtime_1.jsxs)("ul", __assign({ style: { paddingLeft: "20px" } }, { children: [(0, jsx_runtime_1.jsxs)("li", { children: [(0, jsx_runtime_1.jsx)("b", { children: (0, jsx_runtime_1.jsx)(A_1.default, __assign({ href: "https://doc.cocalc.com/teaching-upgrade-course.html#teacher-or-institution-pays-for-upgrades" }, { children: "You or your institution pays" })) }), " ", "for one or more license upgrades. You distribute the license upgrades to all projects of the course via the course configuration tab of the course management interface."] }), (0, jsx_runtime_1.jsxs)("li", { children: [(0, jsx_runtime_1.jsx)("b", { children: (0, jsx_runtime_1.jsx)(A_1.default, __assign({ href: "https://doc.cocalc.com/teaching-upgrade-course.html#students-pay-for-upgrades" }, { children: "Students pay a one-time fee." })) }), " ", "In the configuration frame of the course management file, you opt to require all students to pay a one-time $14 fee to upgrade their own projects."] })] })), (0, jsx_runtime_1.jsx)("h2", { children: "Examples" }), (0, jsx_runtime_1.jsxs)("p", { children: ["Here are three typical configurations, which you can", " ", (0, jsx_runtime_1.jsx)(A_1.default, __assign({ href: "/store/site-license", external: true }, { children: "modify and purchase here" })), ". All parameters can be adjusted to fit your needs. Listed upgrades are for each project. Exact prices may vary. Only self-service online purchases are available below $100."] }), (0, jsx_runtime_1.jsx)(antd_1.List, { grid: { gutter: 16, column: 3, xs: 1, sm: 1 }, dataSource: data, renderItem: function (item) { return ((0, jsx_runtime_1.jsxs)(pricing_item_1.default, __assign({ title: item.title, icon: item.icon }, { children: [(0, jsx_runtime_1.jsx)(pricing_item_1.Line, { amount: item.teachers, desc: "Teacher" }), (0, jsx_runtime_1.jsx)(pricing_item_1.Line, { amount: item.students, desc: "Students" }), (0, jsx_runtime_1.jsx)(pricing_item_1.Line, { amount: item.duration, desc: "Duration" }), (0, jsx_runtime_1.jsx)(pricing_item_1.Line, { amount: item.shared_ram, desc: "Shared RAM" }), (0, jsx_runtime_1.jsx)(pricing_item_1.Line, { amount: item.shared_cores, desc: "Shared CPU" }), (0, jsx_runtime_1.jsx)(pricing_item_1.Line, { amount: item.disk, desc: "Disk space" }), (0, jsx_runtime_1.jsx)(pricing_item_1.Line, { amount: item.dedicated_ram, desc: "Dedicated RAM" }), (0, jsx_runtime_1.jsx)(pricing_item_1.Line, { amount: item.dedicated_cores, desc: "Dedicated CPU" }), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsx)("br", {}), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("span", __assign({ style: {
                                                                fontWeight: "bold",
                                                                fontSize: "18pt",
                                                                color: "#555",
                                                            } }, { children: ["$", item.online] })), " "] }), item.retail ? ((0, jsx_runtime_1.jsxs)("div", __assign({ style: { color: "#888" } }, { children: ["(", (0, jsx_runtime_1.jsxs)("span", __assign({ style: {
                                                                fontWeight: "bold",
                                                                fontSize: "14pt",
                                                            } }, { children: ["$", item.retail] })), " ", "via purchase order)"] }))) : ((0, jsx_runtime_1.jsx)("div", { children: (0, jsx_runtime_1.jsx)("span", __assign({ style: { fontSize: "14pt" } }, { children: "\u00A0" })) }))] }))); } }), (0, jsx_runtime_1.jsx)("h2", { children: "Contact us" }), (0, jsx_runtime_1.jsxs)("p", { children: ["To learn more about your teaching options, email us at", " ", (0, jsx_runtime_1.jsx)(A_1.default, __assign({ href: "mailto:help@cocalc.com" }, { children: "help@cocalc.com" })), " with a description of your specific requirements."] })] }))] })), (0, jsx_runtime_1.jsx)(footer_1.default, {})] }))] })));
}
exports.default = Courses;
function getServerSideProps(context) {
    return __awaiter(this, void 0, void 0, function () {
        return __generator(this, function (_a) {
            switch (_a.label) {
                case 0: return [4 /*yield*/, (0, with_customize_1.default)({ context: context })];
                case 1: return [2 /*return*/, _a.sent()];
            }
        });
    });
}
exports.getServerSideProps = getServerSideProps;
//# sourceMappingURL=courses.js.map