sws-frontend
Version:
sws frontend project
94 lines • 6.23 kB
JavaScript
"use strict";
var __extends = (this && this.__extends) || (function () {
var extendStatics = Object.setPrototypeOf ||
({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
return function (d, b) {
extendStatics(d, b);
function __() { this.constructor = d; }
d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
};
})();
Object.defineProperty(exports, "__esModule", { value: true });
var React = require("react");
require("./userbadge.scss");
var Initicon = require("react-initicon");
var normalise = function (str) {
return str && str.replace(/\w\S*/g, function (txt) { return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase(); });
};
exports.Badge = function (_a) {
var user = _a.user;
return (React.createElement("div", { className: "userbadge" },
React.createElement("div", { className: "userbadge-avatar" },
React.createElement(Initicon, { size: 40, text: user.details.firstname + " " + user.details.lastname, color: "var(--theme-warning)", single: false })),
React.createElement("div", { className: "userbadge-info" },
React.createElement("div", { className: "userbadge-name" },
normalise(user.details.firstname),
" ",
normalise(user.details.lastname)),
React.createElement("div", { className: "userbadge-post" }, user.details.post),
React.createElement("div", { className: "userbadge-contact" },
React.createElement("div", { className: "userbadge-placement" }, user.details.placement),
React.createElement("div", { className: "userbadge-email" }, user.details.email && user.details.email.toLowerCase())))));
};
exports.default = exports.Badge;
var user_1 = require("../model/user");
var action_1 = require("../model/action");
var FullBadge = (function (_super) {
__extends(FullBadge, _super);
function FullBadge(props) {
var _this = _super.call(this, props) || this;
_this.state = { expanded: false, loading: false };
_this.refresh = _this.refresh.bind(_this);
return _this;
}
FullBadge.prototype.refresh = function () {
var _this = this;
var onRefresh = this.props.onRefresh;
this.setState({ loading: true }, function () { return onRefresh()
.then(function () { return _this.setState({ loading: false }); }, function () { return _this.setState({ loading: false }); }); });
};
FullBadge.prototype.render = function () {
var _this = this;
var user = this.props.user;
var _a = this.state, expanded = _a.expanded, loading = _a.loading;
var useractions = user_1.api.allActionsOf(user);
return (React.createElement("div", { className: "userbadge" },
React.createElement("div", { className: "userbadge-core" },
React.createElement("div", { className: "userbadge-avatar" },
React.createElement("i", { className: "material-icons" }, "account_circle")),
React.createElement("div", { className: "userbadge-info" },
React.createElement("div", { className: "userbadge-name" }, user_1.api.name(user)),
React.createElement("div", { className: "userbadge-post" }, user.details.post),
React.createElement("div", { className: "userbadge-contact" },
React.createElement("div", { className: "userbadge-placement" }, user.details.placement),
React.createElement("div", { className: "userbadge-email" }, user.details.email && user.details.email.toLowerCase()))),
React.createElement("div", { className: "userbadge-more" },
React.createElement("a", { className: "btn btn-xs btn-info", role: "button", onClick: function () { return _this.setState({ expanded: !expanded }); } },
React.createElement("span", { className: "text" }, expanded ? "Less info" : "More info"),
React.createElement("i", { className: "material-icons" }, expanded ? "keyboard_arrow_up" : "keyboard_arrow_down")))),
React.createElement("div", { className: expanded ? "userbadge-extra" : "userbadge-extra out" },
React.createElement("div", { className: "userbadge-permissions" },
React.createElement("div", { className: "userbadge-roles-header" },
React.createElement("label", null, "I am"),
user.roles.map(function (r) { return React.createElement("span", { key: r.id, className: "userbadge-role badge" }, r.name); })),
React.createElement("div", { className: "userbadge-permissions-content" },
React.createElement("label", null, "I can"),
useractions.length == 0 ?
React.createElement("div", { className: "userbadge-permission badge" }, "Look around (and not much else...)")
:
useractions.map(function (p) {
return React.createElement("div", { key: p.name + "+" + p.resource + "}", className: "userbadge-permission badge" },
p.name,
" ",
action_1.api.isTemplate(p) ? p.resource == action_1.api.any ? "(All)" : "(" + p.resource + ")" : null);
})),
React.createElement("div", { className: "userbadge-extra-toggle" },
React.createElement("a", { className: "btn btn-xs btn-info", role: "button", onClick: this.refresh },
React.createElement("span", { className: "text" }, "Refresh"),
React.createElement("i", { className: "material-icons " + (loading ? "spin" : "") }, "refresh")))))));
};
return FullBadge;
}(React.Component));
exports.FullBadge = FullBadge;
//# sourceMappingURL=userbadge.js.map