| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135 |
- var DBG = DBG || 0;
- var DBG1 = true;
- if (!NAMESPACE) throw "Missing NAMESPACE";
- if (!USER_LOGIN) throw "Missing USER_LOGIN";
- if (!HTML_NODE_ID) throw "Missing HTML_NODE_ID";
- if (!VIEW_ALL_LINK) throw "Missing VIEW_ALL_LINK";
- if (!global.p5VendorJs) throw "Missing vendor.js";
- if (!global.p5WFS_GetFeature) throw "Missing p5WFS_GetFeature";
- var REQUEST_LIMIT = (REQUEST_LIMIT) ? REQUEST_LIMIT : 10;
- var createReactClass = global.p5VendorJs.createReactClass;
- var h = global.p5VendorJs.React.createElement;
- var ReactDOM = global.p5VendorJs.ReactDOM;
- var p5WFS_GetFeature = global.p5WFS_GetFeature;
- var P5UI__WidgetMsgs = createReactClass({
- getInitialState: function () {
- return {
- response: [],
- isLoading: false,
- }
- },
- componentDidMount: function() {
- DBG && console.log('DBG:P5UI__WidgetMsgs:componentDidMount');
- this.setState({ isLoading: true })
- p5WFS_GetFeature(this.props.namespace, {
- sortBy: 'L_APPOITMENT_DATE+A',
- maxFeatures: REQUEST_LIMIT,
- }).then(this.handleWfsResponse.bind(this))
- .catch(this.handleWfsError.bind(this))
- },
- handleWfsResponse: function (response) {
- DBG && console.log('DBG:P5UI__WidgetMsgs:handleWfsResponse', { response });
- this.setState({
- isLoading: false,
- response: response,
- })
- },
- handleWfsError: function (error) {
- DBG && console.log('DBG:P5UI__WidgetMsgs:handleWfsError', { error });
- this.setState({
- isLoading: false,
- errorMsg: '' + error,
- })
- },
- renderLoading: function () {
- return h('p', {}, "loading...");
- },
- renderEmpty: function () {
- if (this.state.errorMsg) return this.renderErrorMsg();
- return h('p', {}, "Brak danych");
- },
- renderErrorMsg: function () {
- return h('div', { className: "alert alert-danger" }, this.state.errorMsg);
- },
- renderRow: function (row) {
- // A_STATUS: "NORMAL"
- // ID: "985"
- // actionExecutedTime: "2019-03-13 15:16:23"
- // app_className: "TableMsgs"
- // idReplyTo: "0"
- // idThread: "0"
- // msg: "..."
- // msgType: "info"
- // uiTargetName: "IN7_DZIENNIK_KORESP.64417"
- // uiTargetType: "default_db_table_record"
- // userTargetType: "everyone"
- // A_RECORD_CREATE_AUTHOR: "..."
- // A_RECORD_CREATE_DATE: "2019-03-13 14:58:22"
- // A_RECORD_UPDATE_DATE: "2019-03-13 15:16:23"
- // A_RECORD_UPDATE_AUTHOR: "..."
- row._read = ('WAITING' != row.A_STATUS);
- row._readByUser = ('WAITING' != row.A_STATUS);
- if ('WAITING' == row.A_STATUS && USER_LOGIN == row.A_RECORD_CREATE_AUTHOR) {
- if ('user' == row.userTargetType && USER_LOGIN == row.userTargetName) {
- row._readByUser = false;
- } else {
- row._readByUser = true;
- }
- }
- if (row._read) {
- if (row.A_RECORD_UPDATE_DATE) row._readDate = row.A_RECORD_UPDATE_DATE;
- if (row.A_RECORD_UPDATE_AUTHOR) row._readBy = row.A_RECORD_UPDATE_AUTHOR;
- }
- return h('div', {
- className: "message", // message-read
- 'data-messageid': row.ID,
- style: {
- borderTop: "1px solid #ddd",
- padding: "6px 12px",
- backgroundColor: (row._readByUser) ? "#eee" : "#fff",
- cursor: "pointer",
- },
- onClick: function () {
- window.location.href = 'index.php?_route=UserMsgs&id=' + row.ID + '&usrLogin=' + USER_LOGIN + '&_task=read'
- }
- }, [
- row.msg,
- h('div', { className: "text-muted", style: { fontStyle: "italic", fontSize: "x-small" } }, [
- row.A_RECORD_CREATE_DATE.substr(0, 10) + " od " + row.A_RECORD_CREATE_AUTHOR + " do " + this.renderMsgTo(row),
- ]),
- ]);
- },
- renderMsgTo: function (row) {
- switch (row.userTargetType) {
- case 'everyone': return "wszystkich";
- case 'user': return row.userTargetName;
- case 'group': return "grupy " + row.userTargetName;
- }
- },
- render: function () {
- DBG && console.log('DBG:P5UI__WidgetMsgs:render', { props: this.props, state: this.state });
- if (this.state.isLoading) return this.renderLoading();
- if (!this.state.response.length) return this.renderEmpty();
- return h('div', {}, [
- h('div', { style: { border: "1px solid #ddd" } }, this.state.response.map(this.renderRow)),
- h('div', { style: { border: "1px solid #ddd", padding: "12px", textAlign: "center" } }, [
- h('a', {
- href: VIEW_ALL_LINK,
- }, "przeglądaj wszystkie")
- ]),
- ]);
- }
- });
- ReactDOM.render(
- h(P5UI__WidgetMsgs, {
- namespace: NAMESPACE,
- login: USER_LOGIN,
- }),
- document.getElementById(HTML_NODE_ID)
- );
|