UNPKG

gd-sprest-js

Version:

SharePoint 2013/Online js components.

179 lines (178 loc) 6.97 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var gd_sprest_1 = require("gd-sprest"); var Fabric = require("../../fabric"); /** * Taxonomy WebPart Edit Panel */ exports.WPTaxonomyEditPanel = function (props) { if (props === void 0) { props = {}; } var _elHeader = null; var _elFooter = null; var _elTermGroups = null; var _elTermSets = null; var _elTermSetTerms = null; var _wpInfo = null; // Method to render the configuration var renderConfiguration = function (el, wpInfo) { // Save the properties _wpInfo = wpInfo; // Render the template el.innerHTML = "<div></div><div></div><div></div><div></div><div></div>"; _elHeader = el.children[0]; _elTermGroups = el.children[1]; _elTermSets = el.children[2]; _elTermSetTerms = el.children[3]; _elFooter = el.children[4]; // Render the term groups renderTermGroups(); }; // Method to render the term groups var renderTermGroups = function () { // Render a loading dialog Fabric.Spinner({ el: _elTermGroups, text: "Loading the term groups" }); // Load the term groups gd_sprest_1.Helper.Taxonomy.getTermGroups().then(function (groups) { var options = []; // Parse the groups for (var i = 0; i < groups.length; i++) { // Add the option options.push({ text: groups[i].name, value: groups[i].id }); } // Render the term groups Fabric.Dropdown({ el: _elTermGroups, label: "Select the Term Group:", options: options, value: _wpInfo.cfg.TermGroupId, onChange: function (options) { var option = options[0]; // Set the configuration _wpInfo.cfg.TermGroupId = option ? option.value : ""; _wpInfo.cfg.TermGroupName = option ? option.text : ""; // Call the change event props.onTermGroupChanged ? props.onTermGroupChanged(_wpInfo, { id: _wpInfo.cfg.TermGroupId, name: _wpInfo.cfg.TermGroupName }) : null; // Render the term sets renderTermSets(); } }); // See if a term group exists if (_wpInfo.cfg.TermGroupName) { // Render the term sets renderTermSets(); } }); }; // Method to render the term sets var renderTermSets = function () { // Render a loading dialog Fabric.Spinner({ el: _elTermSets, text: "Loading the term sets" }); // Load the term sets gd_sprest_1.Helper.Taxonomy.getTermSets(_wpInfo.cfg.TermGroupName).then(function (termSets) { var options = []; // Parse the term sets for (var i = 0; i < termSets.length; i++) { // Add the options options.push({ text: termSets[i].name, value: termSets[i].id }); } // Render the term sets Fabric.Dropdown({ el: _elTermSets, label: "Select a Term Set:", options: options, value: _wpInfo.cfg.TermSetId, onChange: function (options) { var option = options[0]; // Set the configuration _wpInfo.cfg.TermSetId = option ? option.value : ""; _wpInfo.cfg.TermSetName = option ? option.text : ""; // Call the change event props.onTermSetChanged ? props.onTermSetChanged(_wpInfo, { id: _wpInfo.cfg.TermSetId, name: _wpInfo.cfg.TermSetName }) : null; // Render the term set terms props.showTermSetTerms ? renderTermSetTerms() : null; } }); // See if a value exists if (_wpInfo.cfg.TermSetId) { // Render the term set terms props.showTermSetTerms ? renderTermSetTerms() : null; } }); }; // Method to render the term set terms var renderTermSetTerms = function () { // Render a loading dialog Fabric.Spinner({ el: _elTermSetTerms, text: "Loading the term set terms" }); // Load the term set terms gd_sprest_1.Helper.Taxonomy.getTermSetByGroupName(_wpInfo.cfg.TermSetName, _wpInfo.cfg.TermGroupName).then(function (termSet) { var options = []; // Get the term set terms var terms = gd_sprest_1.Helper.Taxonomy.toArray(termSet).sort(function (a, b) { if (a.name < b.name) { return -1; } if (a.name > b.name) { return 1; } return 0; }); // Parse the term set terms for (var i = 0; i < terms.length; i++) { // Add the options options.push({ text: terms[i].name, value: terms[i].id }); } // Render the term sets Fabric.Dropdown({ el: _elTermSetTerms, label: "Select a Term Set Term:", options: options, value: _wpInfo.cfg.TermSetTermId, onChange: function (options) { var option = options[0]; // Set the configuration _wpInfo.cfg.TermSetTermId = option ? option.value : ""; _wpInfo.cfg.TermSetTermName = option ? option.text : ""; // Call the change event props.onTermSetTermChanged ? props.onTermSetTermChanged(_wpInfo, { id: _wpInfo.cfg.TermSetTermId, name: _wpInfo.cfg.TermSetTermName }) : null; } }); }); }; // Return the edit panel return { onRenderFooter: function (el, wpInfo) { // Call the event props.onRenderFooter ? props.onRenderFooter(el, _wpInfo) : null; }, onRenderHeader: function (el, wpInfo) { // Render the template el.innerHTML = "<div></div><div></div>"; // Render the configuration renderConfiguration(el.children[1], wpInfo); // Call the event props.onRenderHeader ? props.onRenderHeader(el.children[0], _wpInfo) : null; }, onSave: function (cfg) { // Return the configuration return props.onSave ? props.onSave(_wpInfo.cfg) : _wpInfo.cfg; } }; };