@gpa-gemstone/common-pages 0.0.104 → 0.0.105
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/ErrorBoundary.d.ts +17 -17
- package/lib/ErrorBoundary.js +91 -68
- package/lib/Note.d.ts +22 -22
- package/lib/Note.js +256 -230
- package/lib/SearchBar.d.ts +37 -37
- package/lib/SearchBar.js +203 -180
- package/lib/SelectionPopup.d.ts +42 -42
- package/lib/SelectionPopup.js +93 -90
- package/lib/Setting.d.ts +8 -8
- package/lib/Setting.js +151 -125
- package/lib/SliceInterfaces.d.ts +76 -76
- package/lib/SliceInterfaces.js +2 -2
- package/lib/StandardSelectPopup.d.ts +20 -20
- package/lib/StandardSelectPopup.js +135 -109
- package/lib/TimeFilter/QuickSelects.d.ts +7 -0
- package/lib/TimeFilter/QuickSelects.js +240 -0
- package/lib/TimeFilter.d.ts +26 -0
- package/lib/TimeFilter.js +270 -0
- package/lib/TimeWindowUtils.d.ts +33 -0
- package/lib/TimeWindowUtils.js +121 -0
- package/lib/ValueList/ByValueList.d.ts +10 -10
- package/lib/ValueList/ByValueList.js +141 -115
- package/lib/ValueList/Group.d.ts +11 -11
- package/lib/ValueList/Group.js +97 -71
- package/lib/ValueList/GroupForm.d.ts +9 -9
- package/lib/ValueList/GroupForm.js +74 -51
- package/lib/ValueList/GroupInfo.d.ts +8 -8
- package/lib/ValueList/GroupInfo.js +95 -69
- package/lib/ValueList/GroupItem.d.ts +9 -9
- package/lib/ValueList/GroupItem.js +142 -116
- package/lib/ValueList/ItemForm.d.ts +9 -9
- package/lib/ValueList/ItemForm.js +82 -59
- package/lib/index.d.ts +12 -11
- package/lib/index.js +50 -45
- package/lib/user/AdditionalField.d.ts +26 -26
- package/lib/user/AdditionalField.js +290 -264
- package/lib/user/ByUser.d.ts +12 -12
- package/lib/user/ByUser.js +174 -148
- package/lib/user/User.d.ts +14 -14
- package/lib/user/User.js +97 -71
- package/lib/user/UserForm.d.ts +12 -12
- package/lib/user/UserForm.js +166 -143
- package/lib/user/UserInfo.d.ts +7 -7
- package/lib/user/UserInfo.js +123 -97
- package/lib/user/UserPermissions.d.ts +8 -8
- package/lib/user/UserPermissions.js +106 -83
- package/package.json +9 -8
    
        package/lib/user/ByUser.d.ts
    CHANGED
    
    | @@ -1,12 +1,12 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
            import { SystemCenter, Application } from '@gpa-gemstone/application-typings';
         | 
| 3 | 
            -
            import { IAdditionalFieldSlice, IGenericSlice, IUserAccountSlice } from '../SliceInterfaces';
         | 
| 4 | 
            -
            interface IProps {
         | 
| 5 | 
            -
                UserSlice: IUserAccountSlice;
         | 
| 6 | 
            -
                AdditionalFieldSlice: IAdditionalFieldSlice<Application.Types.iAdditionalUserField, Application.Types.iAdditionalUserFieldValue>;
         | 
| 7 | 
            -
                ValueListItemSlice: IGenericSlice<SystemCenter.Types.ValueListItem>;
         | 
| 8 | 
            -
                ValueListGroupSlice: IGenericSlice<SystemCenter.Types.ValueListGroup>;
         | 
| 9 | 
            -
                OnUserSelect: (userID: string) => void;
         | 
| 10 | 
            -
            }
         | 
| 11 | 
            -
            declare function ByUser(props: IProps): JSX.Element;
         | 
| 12 | 
            -
            export default ByUser;
         | 
| 1 | 
            +
            import * as React from 'react';
         | 
| 2 | 
            +
            import { SystemCenter, Application } from '@gpa-gemstone/application-typings';
         | 
| 3 | 
            +
            import { IAdditionalFieldSlice, IGenericSlice, IUserAccountSlice } from '../SliceInterfaces';
         | 
| 4 | 
            +
            interface IProps {
         | 
| 5 | 
            +
                UserSlice: IUserAccountSlice;
         | 
| 6 | 
            +
                AdditionalFieldSlice: IAdditionalFieldSlice<Application.Types.iAdditionalUserField, Application.Types.iAdditionalUserFieldValue>;
         | 
| 7 | 
            +
                ValueListItemSlice: IGenericSlice<SystemCenter.Types.ValueListItem>;
         | 
| 8 | 
            +
                ValueListGroupSlice: IGenericSlice<SystemCenter.Types.ValueListGroup>;
         | 
| 9 | 
            +
                OnUserSelect: (userID: string) => void;
         | 
| 10 | 
            +
            }
         | 
| 11 | 
            +
            declare function ByUser(props: IProps): React.JSX.Element;
         | 
| 12 | 
            +
            export default ByUser;
         | 
    
        package/lib/user/ByUser.js
    CHANGED
    
    | @@ -1,148 +1,174 @@ | |
| 1 | 
            -
            "use strict";
         | 
| 2 | 
            -
            // ******************************************************************************************************
         | 
| 3 | 
            -
            //  ByUser.tsx - Gbtc
         | 
| 4 | 
            -
            //
         | 
| 5 | 
            -
            //  Copyright © 2020, Grid Protection Alliance.  All Rights Reserved.
         | 
| 6 | 
            -
            //
         | 
| 7 | 
            -
            //  Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
         | 
| 8 | 
            -
            //  the NOTICE file distributed with this work for additional information regarding copyright ownership.
         | 
| 9 | 
            -
            //  The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this
         | 
| 10 | 
            -
            //  file except in compliance with the License. You may obtain a copy of the License at:
         | 
| 11 | 
            -
            //
         | 
| 12 | 
            -
            //      http://opensource.org/licenses/MIT
         | 
| 13 | 
            -
            //
         | 
| 14 | 
            -
            //  Unless agreed to in writing, the subject software distributed under the License is distributed on an
         | 
| 15 | 
            -
            //  "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
         | 
| 16 | 
            -
            //  License for the specific language governing permissions and limitations.
         | 
| 17 | 
            -
            //
         | 
| 18 | 
            -
            //  Code Modification History:
         | 
| 19 | 
            -
            //  ----------------------------------------------------------------------------------------------------
         | 
| 20 | 
            -
            //  07/14/2021 - C. Lackner
         | 
| 21 | 
            -
            //       Generated original version of source code.
         | 
| 22 | 
            -
            // ******************************************************************************************************
         | 
| 23 | 
            -
            var __assign = (this && this.__assign) || function () {
         | 
| 24 | 
            -
                __assign = Object.assign || function(t) {
         | 
| 25 | 
            -
                    for (var s, i = 1, n = arguments.length; i < n; i++) {
         | 
| 26 | 
            -
                        s = arguments[i];
         | 
| 27 | 
            -
                        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
         | 
| 28 | 
            -
                            t[p] = s[p];
         | 
| 29 | 
            -
                    }
         | 
| 30 | 
            -
                    return t;
         | 
| 31 | 
            -
                };
         | 
| 32 | 
            -
                return __assign.apply(this, arguments);
         | 
| 33 | 
            -
            };
         | 
| 34 | 
            -
            Object. | 
| 35 | 
            -
             | 
| 36 | 
            -
            var  | 
| 37 | 
            -
             | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
             | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
             | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
                 | 
| 47 | 
            -
             | 
| 48 | 
            -
                 | 
| 49 | 
            -
             | 
| 50 | 
            -
            function  | 
| 51 | 
            -
                 | 
| 52 | 
            -
                var  | 
| 53 | 
            -
                 | 
| 54 | 
            -
                 | 
| 55 | 
            -
                 | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
                 | 
| 59 | 
            -
             | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 69 | 
            -
             | 
| 70 | 
            -
             | 
| 71 | 
            -
             | 
| 72 | 
            -
             | 
| 73 | 
            -
             | 
| 74 | 
            -
             | 
| 75 | 
            -
             | 
| 76 | 
            -
             | 
| 77 | 
            -
                 | 
| 78 | 
            -
             | 
| 79 | 
            -
             | 
| 80 | 
            -
                 | 
| 81 | 
            -
                 | 
| 82 | 
            -
             | 
| 83 | 
            -
             | 
| 84 | 
            -
                 | 
| 85 | 
            -
                 | 
| 86 | 
            -
             | 
| 87 | 
            -
             | 
| 88 | 
            -
                 | 
| 89 | 
            -
                React. | 
| 90 | 
            -
             | 
| 91 | 
            -
             | 
| 92 | 
            -
                 | 
| 93 | 
            -
                 | 
| 94 | 
            -
             | 
| 95 | 
            -
             | 
| 96 | 
            -
             | 
| 97 | 
            -
                         | 
| 98 | 
            -
                     | 
| 99 | 
            -
             | 
| 100 | 
            -
                     | 
| 101 | 
            -
             | 
| 102 | 
            -
                 | 
| 103 | 
            -
             | 
| 104 | 
            -
             | 
| 105 | 
            -
             | 
| 106 | 
            -
             | 
| 107 | 
            -
             | 
| 108 | 
            -
             | 
| 109 | 
            -
             | 
| 110 | 
            -
             | 
| 111 | 
            -
             | 
| 112 | 
            -
             | 
| 113 | 
            -
             | 
| 114 | 
            -
             | 
| 115 | 
            -
             | 
| 116 | 
            -
             | 
| 117 | 
            -
                         | 
| 118 | 
            -
             | 
| 119 | 
            -
             | 
| 120 | 
            -
             | 
| 121 | 
            -
             | 
| 122 | 
            -
             | 
| 123 | 
            -
                         | 
| 124 | 
            -
             | 
| 125 | 
            -
             | 
| 126 | 
            -
             | 
| 127 | 
            -
             | 
| 128 | 
            -
             | 
| 129 | 
            -
             | 
| 130 | 
            -
             | 
| 131 | 
            -
             | 
| 132 | 
            -
             | 
| 133 | 
            -
             | 
| 134 | 
            -
             | 
| 135 | 
            -
                                 | 
| 136 | 
            -
             | 
| 137 | 
            -
                             | 
| 138 | 
            -
             | 
| 139 | 
            -
             | 
| 140 | 
            -
             | 
| 141 | 
            -
                             | 
| 142 | 
            -
             | 
| 143 | 
            -
                         | 
| 144 | 
            -
                             | 
| 145 | 
            -
             | 
| 146 | 
            -
             | 
| 147 | 
            -
            }
         | 
| 148 | 
            -
             | 
| 1 | 
            +
            "use strict";
         | 
| 2 | 
            +
            // ******************************************************************************************************
         | 
| 3 | 
            +
            //  ByUser.tsx - Gbtc
         | 
| 4 | 
            +
            //
         | 
| 5 | 
            +
            //  Copyright © 2020, Grid Protection Alliance.  All Rights Reserved.
         | 
| 6 | 
            +
            //
         | 
| 7 | 
            +
            //  Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
         | 
| 8 | 
            +
            //  the NOTICE file distributed with this work for additional information regarding copyright ownership.
         | 
| 9 | 
            +
            //  The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this
         | 
| 10 | 
            +
            //  file except in compliance with the License. You may obtain a copy of the License at:
         | 
| 11 | 
            +
            //
         | 
| 12 | 
            +
            //      http://opensource.org/licenses/MIT
         | 
| 13 | 
            +
            //
         | 
| 14 | 
            +
            //  Unless agreed to in writing, the subject software distributed under the License is distributed on an
         | 
| 15 | 
            +
            //  "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
         | 
| 16 | 
            +
            //  License for the specific language governing permissions and limitations.
         | 
| 17 | 
            +
            //
         | 
| 18 | 
            +
            //  Code Modification History:
         | 
| 19 | 
            +
            //  ----------------------------------------------------------------------------------------------------
         | 
| 20 | 
            +
            //  07/14/2021 - C. Lackner
         | 
| 21 | 
            +
            //       Generated original version of source code.
         | 
| 22 | 
            +
            // ******************************************************************************************************
         | 
| 23 | 
            +
            var __assign = (this && this.__assign) || function () {
         | 
| 24 | 
            +
                __assign = Object.assign || function(t) {
         | 
| 25 | 
            +
                    for (var s, i = 1, n = arguments.length; i < n; i++) {
         | 
| 26 | 
            +
                        s = arguments[i];
         | 
| 27 | 
            +
                        for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
         | 
| 28 | 
            +
                            t[p] = s[p];
         | 
| 29 | 
            +
                    }
         | 
| 30 | 
            +
                    return t;
         | 
| 31 | 
            +
                };
         | 
| 32 | 
            +
                return __assign.apply(this, arguments);
         | 
| 33 | 
            +
            };
         | 
| 34 | 
            +
            var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
         | 
| 35 | 
            +
                if (k2 === undefined) k2 = k;
         | 
| 36 | 
            +
                var desc = Object.getOwnPropertyDescriptor(m, k);
         | 
| 37 | 
            +
                if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
         | 
| 38 | 
            +
                  desc = { enumerable: true, get: function() { return m[k]; } };
         | 
| 39 | 
            +
                }
         | 
| 40 | 
            +
                Object.defineProperty(o, k2, desc);
         | 
| 41 | 
            +
            }) : (function(o, m, k, k2) {
         | 
| 42 | 
            +
                if (k2 === undefined) k2 = k;
         | 
| 43 | 
            +
                o[k2] = m[k];
         | 
| 44 | 
            +
            }));
         | 
| 45 | 
            +
            var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
         | 
| 46 | 
            +
                Object.defineProperty(o, "default", { enumerable: true, value: v });
         | 
| 47 | 
            +
            }) : function(o, v) {
         | 
| 48 | 
            +
                o["default"] = v;
         | 
| 49 | 
            +
            });
         | 
| 50 | 
            +
            var __importStar = (this && this.__importStar) || function (mod) {
         | 
| 51 | 
            +
                if (mod && mod.__esModule) return mod;
         | 
| 52 | 
            +
                var result = {};
         | 
| 53 | 
            +
                if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
         | 
| 54 | 
            +
                __setModuleDefault(result, mod);
         | 
| 55 | 
            +
                return result;
         | 
| 56 | 
            +
            };
         | 
| 57 | 
            +
            var __importDefault = (this && this.__importDefault) || function (mod) {
         | 
| 58 | 
            +
                return (mod && mod.__esModule) ? mod : { "default": mod };
         | 
| 59 | 
            +
            };
         | 
| 60 | 
            +
            Object.defineProperty(exports, "__esModule", { value: true });
         | 
| 61 | 
            +
            var React = __importStar(require("react"));
         | 
| 62 | 
            +
            var react_table_1 = __importDefault(require("@gpa-gemstone/react-table"));
         | 
| 63 | 
            +
            var gpa_symbols_1 = require("@gpa-gemstone/gpa-symbols");
         | 
| 64 | 
            +
            var react_interactive_1 = require("@gpa-gemstone/react-interactive");
         | 
| 65 | 
            +
            var CryptoJS = __importStar(require("crypto-js"));
         | 
| 66 | 
            +
            var _ = __importStar(require("lodash"));
         | 
| 67 | 
            +
            var UserForm_1 = __importDefault(require("./UserForm"));
         | 
| 68 | 
            +
            var react_redux_1 = require("react-redux");
         | 
| 69 | 
            +
            var defaultSearchcols = [
         | 
| 70 | 
            +
                { label: 'First Name', key: 'FirstName', type: 'string', isPivotField: false },
         | 
| 71 | 
            +
                { label: 'Last Name', key: 'LastName', type: 'string', isPivotField: false },
         | 
| 72 | 
            +
                { label: 'Location', key: 'Location', type: 'string', isPivotField: false },
         | 
| 73 | 
            +
                { label: 'Phone', key: 'Phone', type: 'string', isPivotField: false },
         | 
| 74 | 
            +
                { label: 'Email', key: 'Email', type: 'string', isPivotField: false },
         | 
| 75 | 
            +
            ];
         | 
| 76 | 
            +
            function ByUser(props) {
         | 
| 77 | 
            +
                var dispatch = (0, react_redux_1.useDispatch)();
         | 
| 78 | 
            +
                var search = (0, react_redux_1.useSelector)(props.UserSlice.SearchFilters);
         | 
| 79 | 
            +
                var data = (0, react_redux_1.useSelector)(props.UserSlice.SearchResults);
         | 
| 80 | 
            +
                var userStatus = (0, react_redux_1.useSelector)(props.UserSlice.Status);
         | 
| 81 | 
            +
                var searchStatus = (0, react_redux_1.useSelector)(props.UserSlice.SearchStatus);
         | 
| 82 | 
            +
                var sortField = (0, react_redux_1.useSelector)(props.UserSlice.SortField);
         | 
| 83 | 
            +
                var ascending = (0, react_redux_1.useSelector)(props.UserSlice.Ascending);
         | 
| 84 | 
            +
                var currentUserAccount = (0, react_redux_1.useSelector)(props.UserSlice.CurrentUser);
         | 
| 85 | 
            +
                var adlFields = (0, react_redux_1.useSelector)(props.AdditionalFieldSlice.Fields);
         | 
| 86 | 
            +
                var adlFieldStatus = (0, react_redux_1.useSelector)(props.AdditionalFieldSlice.FieldStatus);
         | 
| 87 | 
            +
                var _a = React.useState(defaultSearchcols), filterableList = _a[0], setFilterableList = _a[1];
         | 
| 88 | 
            +
                var _b = React.useState(false), showModal = _b[0], setShowModal = _b[1];
         | 
| 89 | 
            +
                var _c = React.useState([]), userError = _c[0], setUserError = _c[1];
         | 
| 90 | 
            +
                var valueListItems = (0, react_redux_1.useSelector)(props.ValueListItemSlice.Data);
         | 
| 91 | 
            +
                var valueListItemStatus = (0, react_redux_1.useSelector)(props.ValueListItemSlice.Status);
         | 
| 92 | 
            +
                var valueListGroups = (0, react_redux_1.useSelector)(props.ValueListGroupSlice.Data);
         | 
| 93 | 
            +
                var valueListGroupStatus = (0, react_redux_1.useSelector)(props.ValueListGroupSlice.Status);
         | 
| 94 | 
            +
                var _d = React.useState('unintiated'), pageStatus = _d[0], setPageStatus = _d[1];
         | 
| 95 | 
            +
                React.useEffect(function () {
         | 
| 96 | 
            +
                    if (userStatus === 'error' || adlFieldStatus === 'error' || valueListItemStatus === 'error' || valueListGroupStatus === 'error')
         | 
| 97 | 
            +
                        setPageStatus('error');
         | 
| 98 | 
            +
                    else if (userStatus === 'loading' || adlFieldStatus === 'loading' || valueListItemStatus === 'loading' || valueListGroupStatus === 'loading')
         | 
| 99 | 
            +
                        setPageStatus('loading');
         | 
| 100 | 
            +
                    else
         | 
| 101 | 
            +
                        setPageStatus('idle');
         | 
| 102 | 
            +
                }, [userStatus, adlFieldStatus, valueListItemStatus, valueListGroupStatus]);
         | 
| 103 | 
            +
                React.useEffect(function () {
         | 
| 104 | 
            +
                    if (adlFieldStatus === 'unintiated' || adlFieldStatus === 'changed')
         | 
| 105 | 
            +
                        dispatch(props.AdditionalFieldSlice.FetchField());
         | 
| 106 | 
            +
                }, [dispatch, adlFieldStatus]);
         | 
| 107 | 
            +
                React.useEffect(function () {
         | 
| 108 | 
            +
                    dispatch(props.UserSlice.DBSearch({ sortField: sortField, ascending: ascending, filter: search }));
         | 
| 109 | 
            +
                    dispatch(props.UserSlice.SetNewUser());
         | 
| 110 | 
            +
                }, [dispatch]);
         | 
| 111 | 
            +
                React.useEffect(function () {
         | 
| 112 | 
            +
                    if (valueListItemStatus === 'unintiated' || valueListItemStatus === 'changed')
         | 
| 113 | 
            +
                        dispatch(props.ValueListItemSlice.Fetch());
         | 
| 114 | 
            +
                }, [dispatch, valueListItemStatus]);
         | 
| 115 | 
            +
                React.useEffect(function () {
         | 
| 116 | 
            +
                    if (valueListGroupStatus === 'unintiated' || valueListGroupStatus === 'changed')
         | 
| 117 | 
            +
                        dispatch(props.ValueListGroupSlice.Fetch());
         | 
| 118 | 
            +
                }, [dispatch, valueListGroupStatus]);
         | 
| 119 | 
            +
                React.useEffect(function () {
         | 
| 120 | 
            +
                    function ConvertType(type) {
         | 
| 121 | 
            +
                        if (type === 'string' || type === 'integer' || type === 'number' || type === 'datetime' || type === 'boolean')
         | 
| 122 | 
            +
                            return { type: type };
         | 
| 123 | 
            +
                        return { type: 'enum', enum: [{ Label: type, Value: type }] };
         | 
| 124 | 
            +
                    }
         | 
| 125 | 
            +
                    var ordered = _.orderBy(defaultSearchcols.concat(adlFields.map(function (item) { return (__assign({ label: "[AF] ".concat(item.FieldName), key: item.FieldName }, ConvertType(item.Type))); })), ['label'], ["asc"]);
         | 
| 126 | 
            +
                    setFilterableList(ordered);
         | 
| 127 | 
            +
                }, [adlFields]);
         | 
| 128 | 
            +
                if (pageStatus === 'error')
         | 
| 129 | 
            +
                    return React.createElement("div", { style: { width: '100%', height: '100%' } },
         | 
| 130 | 
            +
                        React.createElement(react_interactive_1.ServerErrorIcon, { Show: true, Label: 'A Server Error Occured. Please Reload the Application' }));
         | 
| 131 | 
            +
                return (React.createElement("div", { style: { width: '100%', height: '100%' } },
         | 
| 132 | 
            +
                    React.createElement(react_interactive_1.LoadingScreen, { Show: pageStatus === 'loading' }),
         | 
| 133 | 
            +
                    React.createElement(react_interactive_1.SearchBar, { CollumnList: filterableList, SetFilter: function (flds) { return dispatch(props.UserSlice.DBSearch({ sortField: sortField, ascending: ascending, filter: flds })); }, Direction: 'left', defaultCollumn: { label: 'Last Name', key: 'LastName', type: 'string', isPivotField: false }, Width: '50%', Label: 'Search', ShowLoading: searchStatus === 'loading', ResultNote: searchStatus === 'error' ? 'Could not complete Search' : 'Found ' + data.length + ' UserAccounts', GetEnum: function (setOptions, field) {
         | 
| 134 | 
            +
                            if (field.type !== 'enum' || field.enum === undefined || field.enum.length !== 1)
         | 
| 135 | 
            +
                                return function () { };
         | 
| 136 | 
            +
                            var grpName = (field.enum !== undefined ? field.enum[0].Value.toLowerCase() : '');
         | 
| 137 | 
            +
                            var grpIndex = valueListGroups.findIndex(function (g) { return g.Name.toLowerCase() === grpName; });
         | 
| 138 | 
            +
                            if (grpIndex < 0)
         | 
| 139 | 
            +
                                return function () { };
         | 
| 140 | 
            +
                            setOptions(valueListItems.filter(function (v) { return v.GroupID === valueListGroups[grpIndex].ID; }).map(function (item) { return ({ Value: item.ID.toString(), Label: item.Value }); }));
         | 
| 141 | 
            +
                            return function () { };
         | 
| 142 | 
            +
                        } },
         | 
| 143 | 
            +
                        React.createElement("li", { className: "nav-item", style: { width: '15%', paddingRight: 10 } },
         | 
| 144 | 
            +
                            React.createElement("fieldset", { className: "border", style: { padding: '10px', height: '100%' } },
         | 
| 145 | 
            +
                                React.createElement("legend", { className: "w-auto", style: { fontSize: 'large' } }, "Actions:"),
         | 
| 146 | 
            +
                                React.createElement("form", null,
         | 
| 147 | 
            +
                                    React.createElement("button", { className: "btn btn-primary", onClick: function (event) { event.preventDefault(); setShowModal(true); } }, "Add User"))))),
         | 
| 148 | 
            +
                    React.createElement("div", { style: { width: '100%', height: 'calc( 100% - 136px)' } },
         | 
| 149 | 
            +
                        React.createElement(react_table_1.default, { cols: [
         | 
| 150 | 
            +
                                { key: 'Name', field: 'Name', label: 'User Name', headerStyle: { width: '10%' }, rowStyle: { width: '10%' } },
         | 
| 151 | 
            +
                                { key: 'FirstName', field: 'FirstName', label: 'First Name', headerStyle: { width: '10%' }, rowStyle: { width: '10%' } },
         | 
| 152 | 
            +
                                { key: 'LastName', field: 'LastName', label: 'Last Name', headerStyle: { width: '10%' }, rowStyle: { width: '10%' } },
         | 
| 153 | 
            +
                                { key: 'Phone', field: 'Phone', label: 'Phone', headerStyle: { width: '10%' }, rowStyle: { width: '10%' } },
         | 
| 154 | 
            +
                                { key: 'Email', field: 'Email', label: 'Email', headerStyle: { width: 'auto' }, rowStyle: { width: 'auto' } },
         | 
| 155 | 
            +
                                { key: 'scroll', label: '', headerStyle: { width: 17, padding: 0 }, rowStyle: { width: 0, padding: 0 } },
         | 
| 156 | 
            +
                            ], tableClass: "table table-hover", data: data, sortKey: sortField, ascending: ascending, onSort: function (d) {
         | 
| 157 | 
            +
                                if (d.colField === undefined)
         | 
| 158 | 
            +
                                    return;
         | 
| 159 | 
            +
                                if (d.colField !== sortField)
         | 
| 160 | 
            +
                                    dispatch(props.UserSlice.DBSearch({ sortField: sortField, ascending: !ascending, filter: search }));
         | 
| 161 | 
            +
                                else
         | 
| 162 | 
            +
                                    dispatch(props.UserSlice.DBSearch({ sortField: d.colField, ascending: true, filter: search }));
         | 
| 163 | 
            +
                            }, onClick: function (d) { return props.OnUserSelect(d.row.ID); }, theadStyle: { fontSize: 'smaller', display: 'table', tableLayout: 'fixed', width: '100%' }, tbodyStyle: { display: 'block', overflowY: 'scroll', maxHeight: window.innerHeight - 300, width: '100%' }, rowStyle: { fontSize: 'smaller', display: 'table', tableLayout: 'fixed', width: '100%' }, selected: function (item) { return false; } })),
         | 
| 164 | 
            +
                    React.createElement(react_interactive_1.Modal, { Show: showModal, Size: 'lg', ShowCancel: false, ShowX: true, ConfirmText: 'Save', Title: 'Add User', CallBack: function (confirm) {
         | 
| 165 | 
            +
                            if (confirm)
         | 
| 166 | 
            +
                                dispatch(props.UserSlice.DBAction({ verb: 'POST', record: __assign(__assign({}, currentUserAccount), { Password: CryptoJS.SHA256(currentUserAccount.Password + "0").toString(CryptoJS.enc.Base64) }) }));
         | 
| 167 | 
            +
                            dispatch(props.UserSlice.SetNewUser());
         | 
| 168 | 
            +
                            setShowModal(false);
         | 
| 169 | 
            +
                        }, ConfirmShowToolTip: userError.length > 0, ConfirmToolTipContent: userError.map(function (t, i) { return React.createElement("p", { key: i },
         | 
| 170 | 
            +
                            gpa_symbols_1.CrossMark,
         | 
| 171 | 
            +
                            " ",
         | 
| 172 | 
            +
                            t); }), DisableConfirm: userError.length > 0 }, currentUserAccount !== undefined ? React.createElement(UserForm_1.default, { UserAccount: currentUserAccount, Setter: function (u) { return dispatch(props.UserSlice.SetCurrentUser(u)); }, Edit: false, SetErrors: setUserError, UserSlice: props.UserSlice }) : null)));
         | 
| 173 | 
            +
            }
         | 
| 174 | 
            +
            exports.default = ByUser;
         | 
    
        package/lib/user/User.d.ts
    CHANGED
    
    | @@ -1,14 +1,14 @@ | |
| 1 | 
            -
             | 
| 2 | 
            -
            import { Application, SystemCenter } from '@gpa-gemstone/application-typings';
         | 
| 3 | 
            -
            import { IAdditionalFieldSlice, IGenericSlice, ISecurityRoleSlice, IUserAccountSlice } from '../SliceInterfaces';
         | 
| 4 | 
            -
            interface IProps {
         | 
| 5 | 
            -
                UserID: string;
         | 
| 6 | 
            -
                OnDelete: () => void;
         | 
| 7 | 
            -
                SecurityRoleSlice: ISecurityRoleSlice;
         | 
| 8 | 
            -
                UserSlice: IUserAccountSlice;
         | 
| 9 | 
            -
                AdditionalFieldSlice: IAdditionalFieldSlice<Application.Types.iAdditionalUserField, Application.Types.iAdditionalUserFieldValue>;
         | 
| 10 | 
            -
                ValueListItemSlice: IGenericSlice<SystemCenter.Types.ValueListItem>;
         | 
| 11 | 
            -
                ValueListGroupSlice: IGenericSlice<SystemCenter.Types.ValueListGroup>;
         | 
| 12 | 
            -
            }
         | 
| 13 | 
            -
            declare function User(props: IProps): JSX.Element;
         | 
| 14 | 
            -
            export default User;
         | 
| 1 | 
            +
            import * as React from 'react';
         | 
| 2 | 
            +
            import { Application, SystemCenter } from '@gpa-gemstone/application-typings';
         | 
| 3 | 
            +
            import { IAdditionalFieldSlice, IGenericSlice, ISecurityRoleSlice, IUserAccountSlice } from '../SliceInterfaces';
         | 
| 4 | 
            +
            interface IProps {
         | 
| 5 | 
            +
                UserID: string;
         | 
| 6 | 
            +
                OnDelete: () => void;
         | 
| 7 | 
            +
                SecurityRoleSlice: ISecurityRoleSlice;
         | 
| 8 | 
            +
                UserSlice: IUserAccountSlice;
         | 
| 9 | 
            +
                AdditionalFieldSlice: IAdditionalFieldSlice<Application.Types.iAdditionalUserField, Application.Types.iAdditionalUserFieldValue>;
         | 
| 10 | 
            +
                ValueListItemSlice: IGenericSlice<SystemCenter.Types.ValueListItem>;
         | 
| 11 | 
            +
                ValueListGroupSlice: IGenericSlice<SystemCenter.Types.ValueListGroup>;
         | 
| 12 | 
            +
            }
         | 
| 13 | 
            +
            declare function User(props: IProps): React.JSX.Element;
         | 
| 14 | 
            +
            export default User;
         | 
    
        package/lib/user/User.js
    CHANGED
    
    | @@ -1,71 +1,97 @@ | |
| 1 | 
            -
            "use strict";
         | 
| 2 | 
            -
            // ******************************************************************************************************
         | 
| 3 | 
            -
            //  User.tsx - Gbtc
         | 
| 4 | 
            -
            //
         | 
| 5 | 
            -
            //  Copyright © 2020, Grid Protection Alliance.  All Rights Reserved.
         | 
| 6 | 
            -
            //
         | 
| 7 | 
            -
            //  Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
         | 
| 8 | 
            -
            //  the NOTICE file distributed with this work for additional information regarding copyright ownership.
         | 
| 9 | 
            -
            //  The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this
         | 
| 10 | 
            -
            //  file except in compliance with the License. You may obtain a copy of the License at:
         | 
| 11 | 
            -
            //
         | 
| 12 | 
            -
            //      http://opensource.org/licenses/MIT
         | 
| 13 | 
            -
            //
         | 
| 14 | 
            -
            //  Unless agreed to in writing, the subject software distributed under the License is distributed on an
         | 
| 15 | 
            -
            //  "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
         | 
| 16 | 
            -
            //  License for the specific language governing permissions and limitations.
         | 
| 17 | 
            -
            //
         | 
| 18 | 
            -
            //  Code Modification History:
         | 
| 19 | 
            -
            //  ----------------------------------------------------------------------------------------------------
         | 
| 20 | 
            -
            //  07/14/2021 - C. Lackner
         | 
| 21 | 
            -
            //       Generated original version of source code.
         | 
| 22 | 
            -
            // ******************************************************************************************************
         | 
| 23 | 
            -
            Object. | 
| 24 | 
            -
             | 
| 25 | 
            -
            var  | 
| 26 | 
            -
             | 
| 27 | 
            -
             | 
| 28 | 
            -
             | 
| 29 | 
            -
             | 
| 30 | 
            -
             | 
| 31 | 
            -
             | 
| 32 | 
            -
                 | 
| 33 | 
            -
             | 
| 34 | 
            -
             | 
| 35 | 
            -
                 | 
| 36 | 
            -
             | 
| 37 | 
            -
                 | 
| 38 | 
            -
             | 
| 39 | 
            -
             | 
| 40 | 
            -
                if ( | 
| 41 | 
            -
             | 
| 42 | 
            -
             | 
| 43 | 
            -
                 | 
| 44 | 
            -
             | 
| 45 | 
            -
             | 
| 46 | 
            -
             | 
| 47 | 
            -
                 | 
| 48 | 
            -
             | 
| 49 | 
            -
             | 
| 50 | 
            -
             | 
| 51 | 
            -
             | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 | 
            -
             | 
| 57 | 
            -
             | 
| 58 | 
            -
             | 
| 59 | 
            -
             | 
| 60 | 
            -
             | 
| 61 | 
            -
             | 
| 62 | 
            -
             | 
| 63 | 
            -
             | 
| 64 | 
            -
             | 
| 65 | 
            -
             | 
| 66 | 
            -
             | 
| 67 | 
            -
             | 
| 68 | 
            -
             | 
| 69 | 
            -
             | 
| 70 | 
            -
            }
         | 
| 71 | 
            -
             | 
| 1 | 
            +
            "use strict";
         | 
| 2 | 
            +
            // ******************************************************************************************************
         | 
| 3 | 
            +
            //  User.tsx - Gbtc
         | 
| 4 | 
            +
            //
         | 
| 5 | 
            +
            //  Copyright © 2020, Grid Protection Alliance.  All Rights Reserved.
         | 
| 6 | 
            +
            //
         | 
| 7 | 
            +
            //  Licensed to the Grid Protection Alliance (GPA) under one or more contributor license agreements. See
         | 
| 8 | 
            +
            //  the NOTICE file distributed with this work for additional information regarding copyright ownership.
         | 
| 9 | 
            +
            //  The GPA licenses this file to you under the MIT License (MIT), the "License"; you may not use this
         | 
| 10 | 
            +
            //  file except in compliance with the License. You may obtain a copy of the License at:
         | 
| 11 | 
            +
            //
         | 
| 12 | 
            +
            //      http://opensource.org/licenses/MIT
         | 
| 13 | 
            +
            //
         | 
| 14 | 
            +
            //  Unless agreed to in writing, the subject software distributed under the License is distributed on an
         | 
| 15 | 
            +
            //  "AS-IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. Refer to the
         | 
| 16 | 
            +
            //  License for the specific language governing permissions and limitations.
         | 
| 17 | 
            +
            //
         | 
| 18 | 
            +
            //  Code Modification History:
         | 
| 19 | 
            +
            //  ----------------------------------------------------------------------------------------------------
         | 
| 20 | 
            +
            //  07/14/2021 - C. Lackner
         | 
| 21 | 
            +
            //       Generated original version of source code.
         | 
| 22 | 
            +
            // ******************************************************************************************************
         | 
| 23 | 
            +
            var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
         | 
| 24 | 
            +
                if (k2 === undefined) k2 = k;
         | 
| 25 | 
            +
                var desc = Object.getOwnPropertyDescriptor(m, k);
         | 
| 26 | 
            +
                if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
         | 
| 27 | 
            +
                  desc = { enumerable: true, get: function() { return m[k]; } };
         | 
| 28 | 
            +
                }
         | 
| 29 | 
            +
                Object.defineProperty(o, k2, desc);
         | 
| 30 | 
            +
            }) : (function(o, m, k, k2) {
         | 
| 31 | 
            +
                if (k2 === undefined) k2 = k;
         | 
| 32 | 
            +
                o[k2] = m[k];
         | 
| 33 | 
            +
            }));
         | 
| 34 | 
            +
            var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
         | 
| 35 | 
            +
                Object.defineProperty(o, "default", { enumerable: true, value: v });
         | 
| 36 | 
            +
            }) : function(o, v) {
         | 
| 37 | 
            +
                o["default"] = v;
         | 
| 38 | 
            +
            });
         | 
| 39 | 
            +
            var __importStar = (this && this.__importStar) || function (mod) {
         | 
| 40 | 
            +
                if (mod && mod.__esModule) return mod;
         | 
| 41 | 
            +
                var result = {};
         | 
| 42 | 
            +
                if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
         | 
| 43 | 
            +
                __setModuleDefault(result, mod);
         | 
| 44 | 
            +
                return result;
         | 
| 45 | 
            +
            };
         | 
| 46 | 
            +
            var __importDefault = (this && this.__importDefault) || function (mod) {
         | 
| 47 | 
            +
                return (mod && mod.__esModule) ? mod : { "default": mod };
         | 
| 48 | 
            +
            };
         | 
| 49 | 
            +
            Object.defineProperty(exports, "__esModule", { value: true });
         | 
| 50 | 
            +
            var React = __importStar(require("react"));
         | 
| 51 | 
            +
            var react_interactive_1 = require("@gpa-gemstone/react-interactive");
         | 
| 52 | 
            +
            var UserInfo_1 = __importDefault(require("./UserInfo"));
         | 
| 53 | 
            +
            var UserPermissions_1 = __importDefault(require("./UserPermissions"));
         | 
| 54 | 
            +
            var AdditionalField_1 = __importDefault(require("./AdditionalField"));
         | 
| 55 | 
            +
            var react_redux_1 = require("react-redux");
         | 
| 56 | 
            +
            var react_forms_1 = require("@gpa-gemstone/react-forms");
         | 
| 57 | 
            +
            function User(props) {
         | 
| 58 | 
            +
                var dispatch = (0, react_redux_1.useDispatch)();
         | 
| 59 | 
            +
                var user = (0, react_redux_1.useSelector)(props.UserSlice.CurrentUser);
         | 
| 60 | 
            +
                var status = (0, react_redux_1.useSelector)(props.UserSlice.Status);
         | 
| 61 | 
            +
                var _a = React.useState('userInfo'), tab = _a[0], setTab = _a[1];
         | 
| 62 | 
            +
                var _b = React.useState(false), showWarning = _b[0], setShowWarning = _b[1];
         | 
| 63 | 
            +
                React.useEffect(function () {
         | 
| 64 | 
            +
                    dispatch(props.UserSlice.LoadExistingUser(props.UserID));
         | 
| 65 | 
            +
                }, [dispatch, props.UserID]);
         | 
| 66 | 
            +
                if (status === 'error')
         | 
| 67 | 
            +
                    return React.createElement("div", { style: { width: '100%', height: '100%' } },
         | 
| 68 | 
            +
                        React.createElement(react_interactive_1.ServerErrorIcon, { Show: true, Label: 'A Server Error Occured. Please Reload the Application' }));
         | 
| 69 | 
            +
                var Tabs = [
         | 
| 70 | 
            +
                    { Id: "userInfo", Label: "User Info" },
         | 
| 71 | 
            +
                    { Id: "permissions", Label: "Permissions" },
         | 
| 72 | 
            +
                    { Id: "additionalFields", Label: "Additional Fields" }
         | 
| 73 | 
            +
                ];
         | 
| 74 | 
            +
                return (React.createElement("div", { style: { width: '100%', height: window.innerHeight - 63, maxHeight: window.innerHeight - 63, overflow: 'hidden', padding: 15 } },
         | 
| 75 | 
            +
                    React.createElement("div", { className: "row" },
         | 
| 76 | 
            +
                        React.createElement("div", { className: "col" },
         | 
| 77 | 
            +
                            React.createElement("h2", null, user != null ? "".concat(user.FirstName, " ").concat(user.LastName) : '')),
         | 
| 78 | 
            +
                        React.createElement("div", { className: "col" },
         | 
| 79 | 
            +
                            React.createElement("button", { className: "btn btn-danger pull-right", hidden: user == null, onClick: function () { return setShowWarning(true); } }, "Delete User"))),
         | 
| 80 | 
            +
                    React.createElement(react_interactive_1.LoadingScreen, { Show: status === 'loading' }),
         | 
| 81 | 
            +
                    React.createElement("hr", null),
         | 
| 82 | 
            +
                    React.createElement(react_interactive_1.TabSelector, { CurrentTab: tab, SetTab: function (t) { return setTab(t); }, Tabs: Tabs }),
         | 
| 83 | 
            +
                    React.createElement("div", { className: "tab-content", style: { maxHeight: window.innerHeight - 235, overflow: 'hidden' } },
         | 
| 84 | 
            +
                        React.createElement("div", { className: "tab-pane " + (tab === "userInfo" ? " active" : "fade") },
         | 
| 85 | 
            +
                            React.createElement(UserInfo_1.default, { UserSlice: props.UserSlice })),
         | 
| 86 | 
            +
                        React.createElement("div", { className: "tab-pane " + (tab === "permissions" ? " active" : "fade") }, user == null ? null : React.createElement(UserPermissions_1.default, { UserID: user.ID, RoleSlice: props.SecurityRoleSlice })),
         | 
| 87 | 
            +
                        React.createElement("div", { className: "tab-pane " + (tab === "additionalFields" ? " active" : "fade"), style: { maxHeight: window.innerHeight - 215 } },
         | 
| 88 | 
            +
                            React.createElement(AdditionalField_1.default, { Id: props.UserID, AdditionalFieldSlice: props.AdditionalFieldSlice, ValueListItemSlice: props.ValueListItemSlice, ValueListGroupSlice: props.ValueListGroupSlice, EmptyField: { ID: -1, IsSecure: false, FieldName: '', Type: 'string' }, GetFieldValueIndex: function (field, values) { return values.findIndex(function (v) { return v.AdditionalUserFieldID === field.ID; }); }, GetFieldIndex: function (value, fields) { return fields.findIndex(function (f) { return f.ID === value.AdditionalUserFieldID; }); }, FieldKeySelector: function (field) { return (field.ID === -1 ? 'new' : field.ID.toString()); }, ValidateField: function () { return []; }, FieldUI: function (fld, setter) { return React.createElement(react_forms_1.CheckBox, { Record: fld, Field: 'IsSecure', Label: "Secure Data", Setter: setter }); }, CreateValue: function (fld) { return ({ Value: '', ID: -1, UserAccountID: props.UserID, AdditionalUserFieldID: fld.ID }); } }))),
         | 
| 89 | 
            +
                    React.createElement(react_interactive_1.Warning, { Message: 'This will permanently remove the User. Are you sure you want to continue?', Title: 'Warning', Show: showWarning, CallBack: function (c) {
         | 
| 90 | 
            +
                            setShowWarning(false);
         | 
| 91 | 
            +
                            if (c) {
         | 
| 92 | 
            +
                                dispatch(props.UserSlice.DBAction({ verb: 'DELETE', record: user }));
         | 
| 93 | 
            +
                                props.OnDelete();
         | 
| 94 | 
            +
                            }
         | 
| 95 | 
            +
                        } })));
         | 
| 96 | 
            +
            }
         | 
| 97 | 
            +
            exports.default = User;
         |