UNPKG

@kui-shell/plugin-tutorials

Version:

IBM Cloud shell plugin for tutorials

86 lines 4 kB
"use strict"; 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()); }); }; Object.defineProperty(exports, "__esModule", { value: true }); const fs_1 = require("fs"); const util_1 = require("./util"); const levelToNumber = { Beginner: 0, Intermediate: 1, Advanced: 2 }; const sort = list => { return list.sort((a, b) => { return ((a.sort !== undefined ? a.sort : levelToNumber[a.level]) - (b.sort !== undefined ? b.sort : levelToNumber[b.level]) || (a.sort || a.name).localeCompare(b.sort || b.name)); }); }; const doList = () => new Promise((resolve, reject) => { fs_1.readdir(util_1.contentDir, (err, files) => __awaiter(void 0, void 0, void 0, function* () { if (err) { reject(err); } else { const pane = document.querySelector('#tutorialPane'); const nowPlaying = pane && pane.getAttribute('now-playing'); const tutorials = (yield Promise.all(files.map((name) => __awaiter(void 0, void 0, void 0, function* () { const { disabled, description, level } = yield Promise.resolve().then(() => require('@kui-shell/plugin-tutorials/samples/@tutorials/' + name + '/package.json')); if (disabled) { return; } const attributes = []; attributes.push({ key: 'level', value: level, css: 'slightly-deemphasize' }); let descriptionForDisplay = description; if (nowPlaying === name) { const descriptionWrapper = document.createElement('div'); descriptionWrapper.appendChild(document.createTextNode(description)); const isNowPlaying = document.createElement('span'); isNowPlaying.className = 'red-text semi-bold small-left-pad'; isNowPlaying.innerText = '(now playing)'; descriptionWrapper.appendChild(isNowPlaying); descriptionForDisplay = descriptionWrapper; } attributes.push({ key: 'description', value: descriptionForDisplay, css: 'sans-serif hide-with-sidecar' }); const row = { type: 'tutorials', name: name.replace(/-/g, ' '), nameCss: ['capitalize', 'semi-bold'], onclick: `tutorial play @tutorials/${name}`, attributes }; return row; })))).filter(x => x); const table = { noSort: true, body: sort(tutorials) }; resolve(table); } })); }); const usage = { command: 'tutorials', strict: 'tutorials', title: 'List tutorials', header: 'List available tutorials', example: 'tutorials', optional: [{ name: 'list', positional: true }] }; exports.default = (commandTree) => __awaiter(void 0, void 0, void 0, function* () { const opts = { usage, noAuthOk: true }; commandTree.listen(`/tutorial/list`, doList, opts); commandTree.listen(`/tutorials/list`, doList, opts); commandTree.listen(`/tutorials`, doList, opts); }); //# sourceMappingURL=list.js.map