catreact
Version:
Catavolt Core React Components
86 lines (85 loc) • 5.85 kB
JavaScript
/**
* Created by rburson on 3/18/16.
*/
"use strict";
var __assign = (this && this.__assign) || Object.assign || function(t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
t[p] = s[p];
}
return t;
};
var React = require('react');
var catreact_1 = require('./../catreact');
var catavolt_sdk_1 = require('catavolt-sdk');
/**
* Renders a Details Panel, styled by CSS
*/
exports.CvDetailsPanel = React.createClass({
mixins: [catreact_1.CvBaseMixin],
render: function () {
var _this = this;
return React.createElement(catreact_1.CvDetailsPane, __assign({}, this.props, {detailsRenderer: function (cvContext, record, detailsCallback) {
var detailsContext = cvContext.scopeCtx.scopeObj;
return (React.createElement(catreact_1.CvRecord, {entityRec: record, renderer: function (cvContext) {
return (React.createElement("div", {className: "cv-detail-container"}, (function () {
var cancelButtonText = detailsContext.detailsDef.cancelButtonText;
var commitButtonText = detailsContext.detailsDef.commitButtonText;
if (detailsContext.detailsDef.editable) {
if (detailsContext.isReadMode) {
return React.createElement("div", {className: "text-right"}, React.createElement("button", {className: "btn btn-default", onClick: _this._refresh.bind(_this, detailsCallback)}, React.createElement("span", {className: "glyphicon glyphicon-refresh", "aria-hidden": "true"})), React.createElement("button", {className: "btn btn-default", onClick: _this._openWriteMode.bind(_this, detailsCallback)}, React.createElement("span", {className: "glyphicon glyphicon-edit", "aria-hidden": "true"})));
}
else if (detailsContext.isWriteMode) {
return React.createElement("div", {className: "text-right"}, React.createElement("button", {className: "btn btn-default", onClick: _this._openReadMode.bind(_this, detailsCallback)}, cancelButtonText ? React.createElement("span", {style: { marginRight: '10px' }}, cancelButtonText) : null, React.createElement("span", {className: "glyphicon glyphicon-remove", "aria-hidden": "true"})), React.createElement("button", {className: "btn btn-default", onClick: _this._save.bind(_this, detailsCallback)}, commitButtonText ? React.createElement("span", {style: { marginRight: '10px' }}, commitButtonText) : null, React.createElement("span", {className: "glyphicon glyphicon-ok", "aria-hidden": "true"})));
}
}
})(), React.createElement("table", {className: "table table-striped"}, React.createElement("tbody", null, _this._layoutDetailsPane(detailsContext, record, detailsCallback)))));
}}));
}}));
},
_isSectionTitleDef: function (row) {
return (row.length > 1) && row[0].values[0] instanceof catavolt_sdk_1.LabelCellValueDef &&
row[1].values[0] instanceof catavolt_sdk_1.LabelCellValueDef;
},
_layoutDetailsPane: function (detailsContext, record, detailsCallback) {
var _this = this;
var renderedDetailRows = [];
if (detailsContext) {
detailsContext.detailsDef.rows.forEach(function (cellDefRow, index) {
var c1 = cellDefRow.length > 0 ? cellDefRow[0].values[0] : null;
var c2 = cellDefRow.length > 1 ? cellDefRow[1].values[0] : null;
if (_this._isSectionTitleDef(cellDefRow)) {
renderedDetailRows.push(React.createElement(catreact_1.CvDataAnno, {entityRec: record, paneContext: detailsContext, wrapperElem: "tr", wrapperElemProps: { className: "cv-cell-def-title-row", key: { index: index } }}, React.createElement(catreact_1.CvCellValueDef, {detailsContext: detailsContext, detailsCallback: detailsCallback, cellValueDef: c1, wrapperElem: "td", wrapperElemProps: { className: 'cv-cell-def-title-col' }}), React.createElement(catreact_1.CvCellValueDef, {detailsContext: detailsContext, detailsCallback: detailsCallback, cellValueDef: c2, wrapperElem: "td", wrapperElemProps: { className: 'cv-cell-def-title-col' }})));
}
else {
renderedDetailRows.push(React.createElement(catreact_1.CvDataAnno, {entityRec: record, paneContext: detailsContext, wrapperElem: "tr", wrapperElemProps: { className: "cv-cell-def-row", key: { index: index } }}, (function () {
return cellDefRow.map(function (cellDef) {
var c1 = cellDef.values.length > 0 ? cellDef.values[0] : null;
var c2 = cellDef.values.length > 1 ? cellDef.values[1] : null;
return [c1, c2].map(function (cellValueDef) {
return React.createElement(catreact_1.CvCellValueDef, {detailsContext: detailsContext, detailsCallback: detailsCallback, cellValueDef: cellValueDef, wrapperElem: "td", wrapperElemProps: { className: 'cv-cell-def-col' }});
});
});
})()));
}
});
}
return renderedDetailRows;
},
_openWriteMode: function (detailsCallback) {
detailsCallback.openWriteMode(function (success, error) {
});
},
_openReadMode: function (detailsCallback) {
detailsCallback.openReadMode(function (success, error) {
});
},
_refresh: function (detailsCallback) {
detailsCallback.refresh();
},
_save: function (detailsCallback) {
detailsCallback.saveChanges(function (success, error) {
});
}
});