"use strict"; const router = require("../router.js"); const api = require("../api.js"); const misc = require("../util/misc.js"); const uri = require("../util/uri.js"); const PoolCategoryList = require("../models/pool_category_list.js"); const PoolCreateView = require("../views/pool_create_view.js"); const EmptyView = require("../views/empty_view.js"); class PoolCreateController { constructor(ctx) { if (!api.hasPrivilege("pools:create")) { this._view = new EmptyView(); this._view.showError("You don't have privileges to create pools."); return; } PoolCategoryList.get().then( (poolCategoriesResponse) => { const categories = {}; for (let category of poolCategoriesResponse.results) { categories[category.name] = category.name; } this._view = new PoolCreateView({ canCreate: api.hasPrivilege("pools:create"), categories: categories, escapeColons: uri.escapeColons, }); this._view.addEventListener("submit", (e) => this._evtCreate(e) ); }, (error) => { this._view = new EmptyView(); this._view.showError(error.message); } ); } _evtCreate(e) { this._view.clearMessages(); this._view.disableForm(); api.post(uri.formatApiLink("pool"), e.detail).then( () => { this._view.clearMessages(); misc.disableExitConfirmation(); const ctx = router.show(uri.formatClientLink("pools")); ctx.controller.showSuccess("Pool created."); }, (error) => { this._view.showError(error.message); this._view.enableForm(); } ); } } module.exports = (router) => { router.enter(["pool", "create"], (ctx, next) => { ctx.controller = new PoolCreateController(ctx, "create"); }); };