gd-sprest-js
Version:
SharePoint 2013/Online js components.
179 lines (178 loc) • 6.97 kB
JavaScript
"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;
}
};
};