\\n */\\n@-webkit-keyframes passing-through {\\n 0% {\\n opacity: 0;\\n -webkit-transform: translateY(40px);\\n -moz-transform: translateY(40px);\\n -ms-transform: translateY(40px);\\n -o-transform: translateY(40px);\\n transform: translateY(40px); }\\n 30%, 70% {\\n opacity: 1;\\n -webkit-transform: translateY(0px);\\n -moz-transform: translateY(0px);\\n -ms-transform: translateY(0px);\\n -o-transform: translateY(0px);\\n transform: translateY(0px); }\\n 100% {\\n opacity: 0;\\n -webkit-transform: translateY(-40px);\\n -moz-transform: translateY(-40px);\\n -ms-transform: translateY(-40px);\\n -o-transform: translateY(-40px);\\n transform: translateY(-40px); } }\\n@-moz-keyframes passing-through {\\n 0% {\\n opacity: 0;\\n -webkit-transform: translateY(40px);\\n -moz-transform: translateY(40px);\\n -ms-transform: translateY(40px);\\n -o-transform: translateY(40px);\\n transform: translateY(40px); }\\n 30%, 70% {\\n opacity: 1;\\n -webkit-transform: translateY(0px);\\n -moz-transform: translateY(0px);\\n -ms-transform: translateY(0px);\\n -o-transform: translateY(0px);\\n transform: translateY(0px); }\\n 100% {\\n opacity: 0;\\n -webkit-transform: translateY(-40px);\\n -moz-transform: translateY(-40px);\\n -ms-transform: translateY(-40px);\\n -o-transform: translateY(-40px);\\n transform: translateY(-40px); } }\\n@keyframes passing-through {\\n 0% {\\n opacity: 0;\\n -webkit-transform: translateY(40px);\\n -moz-transform: translateY(40px);\\n -ms-transform: translateY(40px);\\n -o-transform: translateY(40px);\\n transform: translateY(40px); }\\n 30%, 70% {\\n opacity: 1;\\n -webkit-transform: translateY(0px);\\n -moz-transform: translateY(0px);\\n -ms-transform: translateY(0px);\\n -o-transform: translateY(0px);\\n transform: translateY(0px); }\\n 100% {\\n opacity: 0;\\n -webkit-transform: translateY(-40px);\\n -moz-transform: translateY(-40px);\\n -ms-transform: translateY(-40px);\\n -o-transform: translateY(-40px);\\n transform: translateY(-40px); } }\\n@-webkit-keyframes slide-in {\\n 0% {\\n opacity: 0;\\n -webkit-transform: translateY(40px);\\n -moz-transform: translateY(40px);\\n -ms-transform: translateY(40px);\\n -o-transform: translateY(40px);\\n transform: translateY(40px); }\\n 30% {\\n opacity: 1;\\n -webkit-transform: translateY(0px);\\n -moz-transform: translateY(0px);\\n -ms-transform: translateY(0px);\\n -o-transform: translateY(0px);\\n transform: translateY(0px); } }\\n@-moz-keyframes slide-in {\\n 0% {\\n opacity: 0;\\n -webkit-transform: translateY(40px);\\n -moz-transform: translateY(40px);\\n -ms-transform: translateY(40px);\\n -o-transform: translateY(40px);\\n transform: translateY(40px); }\\n 30% {\\n opacity: 1;\\n -webkit-transform: translateY(0px);\\n -moz-transform: translateY(0px);\\n -ms-transform: translateY(0px);\\n -o-transform: translateY(0px);\\n transform: translateY(0px); } }\\n@keyframes slide-in {\\n 0% {\\n opacity: 0;\\n -webkit-transform: translateY(40px);\\n -moz-transform: translateY(40px);\\n -ms-transform: translateY(40px);\\n -o-transform: translateY(40px);\\n transform: translateY(40px); }\\n 30% {\\n opacity: 1;\\n -webkit-transform: translateY(0px);\\n -moz-transform: translateY(0px);\\n -ms-transform: translateY(0px);\\n -o-transform: translateY(0px);\\n transform: translateY(0px); } }\\n@-webkit-keyframes pulse {\\n 0% {\\n -webkit-transform: scale(1);\\n -moz-transform: scale(1);\\n -ms-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1); }\\n 10% {\\n -webkit-transform: scale(1.1);\\n -moz-transform: scale(1.1);\\n -ms-transform: scale(1.1);\\n -o-transform: scale(1.1);\\n transform: scale(1.1); }\\n 20% {\\n -webkit-transform: scale(1);\\n -moz-transform: scale(1);\\n -ms-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1); } }\\n@-moz-keyframes pulse {\\n 0% {\\n -webkit-transform: scale(1);\\n -moz-transform: scale(1);\\n -ms-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1); }\\n 10% {\\n -webkit-transform: scale(1.1);\\n -moz-transform: scale(1.1);\\n -ms-transform: scale(1.1);\\n -o-transform: scale(1.1);\\n transform: scale(1.1); }\\n 20% {\\n -webkit-transform: scale(1);\\n -moz-transform: scale(1);\\n -ms-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1); } }\\n@keyframes pulse {\\n 0% {\\n -webkit-transform: scale(1);\\n -moz-transform: scale(1);\\n -ms-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1); }\\n 10% {\\n -webkit-transform: scale(1.1);\\n -moz-transform: scale(1.1);\\n -ms-transform: scale(1.1);\\n -o-transform: scale(1.1);\\n transform: scale(1.1); }\\n 20% {\\n -webkit-transform: scale(1);\\n -moz-transform: scale(1);\\n -ms-transform: scale(1);\\n -o-transform: scale(1);\\n transform: scale(1); } }\\n.dropzone, .dropzone * {\\n box-sizing: border-box; }\\n\\n.dropzone {\\n min-height: 150px;\\n border: 2px solid rgba(0, 0, 0, 0.3);\\n background: white;\\n padding: 20px 20px; }\\n .dropzone.dz-clickable {\\n cursor: pointer; }\\n .dropzone.dz-clickable * {\\n cursor: default; }\\n .dropzone.dz-clickable .dz-message, .dropzone.dz-clickable .dz-message * {\\n cursor: pointer; }\\n .dropzone.dz-started .dz-message {\\n display: none; }\\n .dropzone.dz-drag-hover {\\n border-style: solid; }\\n .dropzone.dz-drag-hover .dz-message {\\n opacity: 0.5; }\\n .dropzone .dz-message {\\n text-align: center;\\n margin: 2em 0; }\\n .dropzone .dz-preview {\\n position: relative;\\n display: inline-block;\\n vertical-align: top;\\n margin: 16px;\\n min-height: 100px; }\\n .dropzone .dz-preview:hover {\\n z-index: 1000; }\\n .dropzone .dz-preview:hover .dz-details {\\n opacity: 1; }\\n .dropzone .dz-preview.dz-file-preview .dz-image {\\n border-radius: 20px;\\n background: #999;\\n background: linear-gradient(to bottom, #eee, #ddd); }\\n .dropzone .dz-preview.dz-file-preview .dz-details {\\n opacity: 1; }\\n .dropzone .dz-preview.dz-image-preview {\\n background: white; }\\n .dropzone .dz-preview.dz-image-preview .dz-details {\\n -webkit-transition: opacity 0.2s linear;\\n -moz-transition: opacity 0.2s linear;\\n -ms-transition: opacity 0.2s linear;\\n -o-transition: opacity 0.2s linear;\\n transition: opacity 0.2s linear; }\\n .dropzone .dz-preview .dz-remove {\\n font-size: 14px;\\n text-align: center;\\n display: block;\\n cursor: pointer;\\n border: none; }\\n .dropzone .dz-preview .dz-remove:hover {\\n text-decoration: underline; }\\n .dropzone .dz-preview:hover .dz-details {\\n opacity: 1; }\\n .dropzone .dz-preview .dz-details {\\n z-index: 20;\\n position: absolute;\\n top: 0;\\n left: 0;\\n opacity: 0;\\n font-size: 13px;\\n min-width: 100%;\\n max-width: 100%;\\n padding: 2em 1em;\\n text-align: center;\\n color: rgba(0, 0, 0, 0.9);\\n line-height: 150%; }\\n .dropzone .dz-preview .dz-details .dz-size {\\n margin-bottom: 1em;\\n font-size: 16px; }\\n .dropzone .dz-preview .dz-details .dz-filename {\\n white-space: nowrap; }\\n .dropzone .dz-preview .dz-details .dz-filename:hover span {\\n border: 1px solid rgba(200, 200, 200, 0.8);\\n background-color: rgba(255, 255, 255, 0.8); }\\n .dropzone .dz-preview .dz-details .dz-filename:not(:hover) {\\n overflow: hidden;\\n text-overflow: ellipsis; }\\n .dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {\\n border: 1px solid transparent; }\\n .dropzone .dz-preview .dz-details .dz-filename span, .dropzone .dz-preview .dz-details .dz-size span {\\n background-color: rgba(255, 255, 255, 0.4);\\n padding: 0 0.4em;\\n border-radius: 3px; }\\n .dropzone .dz-preview:hover .dz-image img {\\n -webkit-transform: scale(1.05, 1.05);\\n -moz-transform: scale(1.05, 1.05);\\n -ms-transform: scale(1.05, 1.05);\\n -o-transform: scale(1.05, 1.05);\\n transform: scale(1.05, 1.05);\\n -webkit-filter: blur(8px);\\n filter: blur(8px); }\\n .dropzone .dz-preview .dz-image {\\n border-radius: 20px;\\n overflow: hidden;\\n width: 120px;\\n height: 120px;\\n position: relative;\\n display: block;\\n z-index: 10; }\\n .dropzone .dz-preview .dz-image img {\\n display: block; }\\n .dropzone .dz-preview.dz-success .dz-success-mark {\\n -webkit-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\\n -moz-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\\n -ms-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\\n -o-animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1);\\n animation: passing-through 3s cubic-bezier(0.77, 0, 0.175, 1); }\\n .dropzone .dz-preview.dz-error .dz-error-mark {\\n opacity: 1;\\n -webkit-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\\n -moz-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\\n -ms-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\\n -o-animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1);\\n animation: slide-in 3s cubic-bezier(0.77, 0, 0.175, 1); }\\n .dropzone .dz-preview .dz-success-mark, .dropzone .dz-preview .dz-error-mark {\\n pointer-events: none;\\n opacity: 0;\\n z-index: 500;\\n position: absolute;\\n display: block;\\n top: 50%;\\n left: 50%;\\n margin-left: -27px;\\n margin-top: -27px; }\\n .dropzone .dz-preview .dz-success-mark svg, .dropzone .dz-preview .dz-error-mark svg {\\n display: block;\\n width: 54px;\\n height: 54px; }\\n .dropzone .dz-preview.dz-processing .dz-progress {\\n opacity: 1;\\n -webkit-transition: all 0.2s linear;\\n -moz-transition: all 0.2s linear;\\n -ms-transition: all 0.2s linear;\\n -o-transition: all 0.2s linear;\\n transition: all 0.2s linear; }\\n .dropzone .dz-preview.dz-complete .dz-progress {\\n opacity: 0;\\n -webkit-transition: opacity 0.4s ease-in;\\n -moz-transition: opacity 0.4s ease-in;\\n -ms-transition: opacity 0.4s ease-in;\\n -o-transition: opacity 0.4s ease-in;\\n transition: opacity 0.4s ease-in; }\\n .dropzone .dz-preview:not(.dz-processing) .dz-progress {\\n -webkit-animation: pulse 6s ease infinite;\\n -moz-animation: pulse 6s ease infinite;\\n -ms-animation: pulse 6s ease infinite;\\n -o-animation: pulse 6s ease infinite;\\n animation: pulse 6s ease infinite; }\\n .dropzone .dz-preview .dz-progress {\\n opacity: 1;\\n z-index: 1000;\\n pointer-events: none;\\n position: absolute;\\n height: 16px;\\n left: 50%;\\n top: 50%;\\n margin-top: -8px;\\n width: 80px;\\n margin-left: -40px;\\n background: rgba(255, 255, 255, 0.9);\\n -webkit-transform: scale(1);\\n border-radius: 8px;\\n overflow: hidden; }\\n .dropzone .dz-preview .dz-progress .dz-upload {\\n background: #333;\\n background: linear-gradient(to bottom, #666, #444);\\n position: absolute;\\n top: 0;\\n left: 0;\\n bottom: 0;\\n width: 0;\\n -webkit-transition: width 300ms ease-in-out;\\n -moz-transition: width 300ms ease-in-out;\\n -ms-transition: width 300ms ease-in-out;\\n -o-transition: width 300ms ease-in-out;\\n transition: width 300ms ease-in-out; }\\n .dropzone .dz-preview.dz-error .dz-error-message {\\n display: block; }\\n .dropzone .dz-preview.dz-error:hover .dz-error-message {\\n opacity: 1;\\n pointer-events: auto; }\\n .dropzone .dz-preview .dz-error-message {\\n pointer-events: none;\\n z-index: 1000;\\n position: absolute;\\n display: block;\\n display: none;\\n opacity: 0;\\n -webkit-transition: opacity 0.3s ease;\\n -moz-transition: opacity 0.3s ease;\\n -ms-transition: opacity 0.3s ease;\\n -o-transition: opacity 0.3s ease;\\n transition: opacity 0.3s ease;\\n border-radius: 8px;\\n font-size: 13px;\\n top: 130px;\\n left: -10px;\\n width: 140px;\\n background: #be2626;\\n background: linear-gradient(to bottom, #be2626, #a92222);\\n padding: 0.5em 1.2em;\\n color: white; }\\n .dropzone .dz-preview .dz-error-message:after {\\n content: '';\\n position: absolute;\\n top: -6px;\\n left: 64px;\\n width: 0;\\n height: 0;\\n border-left: 6px solid transparent;\\n border-right: 6px solid transparent;\\n border-bottom: 6px solid #be2626; }\\n\\n.vue-dropzone {\\n border: 2px solid #E5E5E5;\\n font-family: 'Arial', sans-serif;\\n letter-spacing: 0.2px;\\n color: #777;\\n transition: background-color 0.2s linear;\\n}\\n.vue-dropzone:hover {\\n background-color: #F6F6F6;\\n}\\n.vue-dropzone i {\\n color: #CCC;\\n}\\n.vue-dropzone .dz-preview .dz-image {\\n border-radius: 0;\\n width: 100%;\\n height: 100%;\\n}\\n.vue-dropzone .dz-preview .dz-image img:not([src]) {\\n width: 200px;\\n height: 200px;\\n}\\n.vue-dropzone .dz-preview .dz-image:hover img {\\n transform: none;\\n -webkit-filter: none;\\n}\\n.vue-dropzone .dz-preview .dz-details {\\n bottom: 0;\\n top: 0;\\n color: white;\\n background-color: rgba(33, 150, 243, 0.8);\\n transition: opacity .2s linear;\\n text-align: left;\\n}\\n.vue-dropzone .dz-preview .dz-details .dz-filename {\\n overflow: hidden;\\n}\\n.vue-dropzone .dz-preview .dz-details .dz-filename span,\\n.vue-dropzone .dz-preview .dz-details .dz-size span {\\n background-color: transparent;\\n}\\n.vue-dropzone .dz-preview .dz-details .dz-filename:not(:hover) span {\\n border: none;\\n}\\n.vue-dropzone .dz-preview .dz-details .dz-filename:hover span {\\n background-color: transparent;\\n border: none;\\n}\\n.vue-dropzone .dz-preview .dz-progress .dz-upload {\\n background: #cccccc;\\n}\\n.vue-dropzone .dz-preview .dz-remove {\\n position: absolute;\\n z-index: 30;\\n color: white;\\n margin-left: 15px;\\n padding: 10px;\\n top: inherit;\\n bottom: 15px;\\n border: 2px white solid;\\n text-decoration: none;\\n text-transform: uppercase;\\n font-size: 0.8rem;\\n font-weight: 800;\\n letter-spacing: 1.1px;\\n opacity: 0;\\n}\\n.vue-dropzone .dz-preview:hover .dz-remove {\\n opacity: 1;\\n}\\n.vue-dropzone .dz-preview .dz-success-mark,\\n.vue-dropzone .dz-preview .dz-error-mark {\\n margin-left: auto;\\n margin-top: auto;\\n width: 100%;\\n top: 35%;\\n left: 0;\\n}\\n.vue-dropzone .dz-preview .dz-success-mark svg,\\n.vue-dropzone .dz-preview .dz-error-mark svg {\\n margin-left: auto;\\n margin-right: auto;\\n}\\n.vue-dropzone .dz-preview .dz-error-message {\\n top: calc(15%);\\n margin-left: auto;\\n margin-right: auto;\\n left: 0;\\n width: 100%;\\n}\\n.vue-dropzone .dz-preview .dz-error-message:after {\\n bottom: -6px;\\n top: initial;\\n border-top: 6px solid #a92222;\\n border-bottom: none;\\n}\\n\\n\\n.form[data-v-ebce4d12] {\\n display: flex;\\n align-content: flex-end;\\n}\\n.form label[data-v-ebce4d12] {\\n margin-right: 1rem;\\n}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 516 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar escape = __webpack_require__(34);\nexports = module.exports = __webpack_require__(11)(false);\n// imports\n\n\n// module\nexports.push([module.i, \"\\r\\n\\r\\nbody {\\r\\n background-color: #F1F5F8 !important;\\r\\n font-family: 'Nunito Sans', sans-serif !important;\\r\\n background: linear-gradient(rgba(46, 96, 129, 0.5), rgba(46, 96, 129, 0.2)), url(/static/images/light_water_large.jpg) !important;\\r\\n background-size: cover !important;\\r\\n background-attachment: fixed !important;\\r\\n\\r\\n}\\r\\n\\r\\n.bg-body {\\r\\n\\r\\n margin-top: 20px;\\r\\n}\\r\\n\\r\\nhtml {\\r\\n position: relative;\\r\\n min-height: 100%;\\r\\n}\\r\\n\\r\\n/*html\\r\\n{\\r\\n background: linear-gradient( rgba(46, 96, 129, 0.5), rgba(46, 96, 129, 0.2) ), url(/static/images/light_water_large.jpg) !important;\\r\\n background-size: cover !important;\\r\\n background-attachment: fixed !important;\\r\\n}*/\\r\\n\\r\\n.el-message-box__message {\\r\\n font-size: 1.3em;\\r\\n}\\r\\n\\r\\n.login label {\\r\\n font-size: 1.3em !important;\\r\\n}\\r\\n\\r\\n.el-form-item__label {\\r\\n color: #484848;\\r\\n font-size: 1.3em;\\r\\n}\\r\\n\\r\\n.nav-md .container.body .col-md-3.left_col {\\r\\n\\r\\n min-height: 1088px;\\r\\n}\\r\\n\\r\\n.dhx_cal_navline {\\r\\n background-color: white;\\r\\n border-radius: 5px;\\r\\n width: 100% !important;\\r\\n}\\r\\n\\r\\n.dhx_cal_header {\\r\\n width: 100% !important;\\r\\n}\\r\\n\\r\\n.dhx_cal_data {\\r\\n width: 100% !important;\\r\\n min-height: 700px;\\r\\n}\\r\\n\\r\\n.schedule-filter .form-control {\\r\\n height: 52px;\\r\\n border: 2.2px solid #B5DEF4;\\r\\n border-radius: 6px !important;\\r\\n}\\r\\n\\r\\n.schedule-filter .dhx_minical_icon {\\r\\n top: 5px;\\r\\n width: 30px;\\r\\n height: 30px;\\r\\n background: url(\" + escape(__webpack_require__(665)) + \") 3px 5px no-repeat;\\r\\n position: relative;\\r\\n}\\r\\n\\r\\n.schedule-filter .place-date {\\r\\n opacity: 0.6;\\r\\n position: relative;\\r\\n top: 7px;\\r\\n font-size: 16px;\\r\\n\\r\\n}\\r\\n\\r\\n.dhx_cal_container {\\r\\n\\r\\n right: 220px;\\r\\n}\\r\\n\\r\\n.portlet-light {\\r\\n margin-top: 10px;\\r\\n}\\r\\n\\r\\n.right_col {\\r\\n min-height: 1037px !important;\\r\\n background: linear-gradient(rgba(46, 96, 129, 0.5), rgba(46, 96, 129, 0.2)), url(/static/images/light_water_large.jpg) !important;\\r\\n background-size: cover !important;\\r\\n background-attachment: fixed !important;\\r\\n}\\r\\n\\r\\n.label-primary {\\r\\n\\r\\n cursor: pointer\\r\\n}\\r\\n\\r\\n/*page loader styles*/\\r\\n\\r\\n.loading-message {\\r\\n color: white;\\r\\n font-size: 1.4em;\\r\\n text-align: center;\\r\\n position: relative;\\r\\n bottom: 10px;\\r\\n}\\r\\n\\r\\n.bowl {\\r\\n bakground-color: white;\\r\\n width: 200px;\\r\\n height: 150px;\\r\\n position: absolute;\\r\\n top: 0;\\r\\n bottom: 0;\\r\\n left: 0;\\r\\n right: 0;\\r\\n margin: auto;\\r\\n z-index: 100000000;\\r\\n}\\r\\n\\r\\n.bowl .inner {\\r\\n border-radius: 50%;\\r\\n width: 120px;\\r\\n height: 120px;\\r\\n background-color: #4a79ac;\\r\\n overflow: hidden;\\r\\n -webkit-backface-visibility: hidden;\\r\\n -webkit-transform: translate3d(0, 0, 0);\\r\\n border: 5px solid #03A9F4;\\r\\n box-shadow: 1px 1px 30px #03A9F4;\\r\\n bottom: 30px;\\r\\n position: relative\\r\\n}\\r\\n\\r\\n.bowl .inner:before {\\r\\n content: \\\"\\\";\\r\\n width: 20px;\\r\\n height: 20px;\\r\\n background: rgba(255, 255, 255, 0.2);\\r\\n border-radius: 50%;\\r\\n position: absolute;\\r\\n right: 40%;\\r\\n top: 60%;\\r\\n z-index: 1500;\\r\\n}\\r\\n\\r\\n.bowl .inner:after {\\r\\n content: \\\"\\\";\\r\\n width: 20px;\\r\\n height: 40px;\\r\\n background: rgba(255, 255, 255, 0.2);\\r\\n border-radius: 50%;\\r\\n position: absolute;\\r\\n right: 30%;\\r\\n top: 15%;\\r\\n transform: rotate(-20deg);\\r\\n z-index: 2;\\r\\n}\\r\\n\\r\\n.bowl .fill {\\r\\n -webkit-animation-name: fillAction;\\r\\n -webkit-animation-iteration-count: 1;\\r\\n -webkit-animation-timing-function: cubic-bezier(0.2, 0.6, 0.8, 0.4);\\r\\n -webkit-animation-duration: 4s;\\r\\n -webkit-animation-fill-mode: forwards;\\r\\n -webkit-transform: translate(0px, 20px);\\r\\n}\\r\\n\\r\\n.bowl .waveShape {\\r\\n -webkit-animation-name: waveAction;\\r\\n -webkit-animation-iteration-count: infinite;\\r\\n -webkit-animation-timing-function: linear;\\r\\n -webkit-animation-duration: 0.5s;\\r\\n width: 300px;\\r\\n height: 150px;\\r\\n fill: #039be4;\\r\\n}\\r\\n\\r\\n@-webkit-keyframes fillAction {\\r\\n 100% {\\r\\n -webkit-transform: translate(0px, 0px);\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: translate(0px, 30px);\\r\\n }\\r\\n}\\r\\n\\r\\n@-webkit-keyframes waveAction {\\r\\n 0% {\\r\\n -webkit-transform: translate(-150px, 0);\\r\\n }\\r\\n 100% {\\r\\n -webkit-transform: translate(30, 100);\\r\\n }\\r\\n}\\r\\n\\r\\n/*end page loader styles*/\\r\\n\\r\\n/*Login styles*/\\r\\n.login {\\r\\n\\r\\n background: url(\" + escape(__webpack_require__(664)) + \") no-repeat center center fixed;\\r\\n -webkit-background-size: cover;\\r\\n -moz-background-size: cover;\\r\\n -o-background-size: cover;\\r\\n background-size: cover;\\r\\n\\r\\n position: absolute;\\r\\n top: 0;\\r\\n margin: auto;\\r\\n left: 0;\\r\\n right: 0;\\r\\n bottom: 0;\\r\\n}\\r\\n\\r\\n.login a {\\r\\n text-decoration: underline;\\r\\n color: #cacaca;\\r\\n /* -webkit-transition: .5s ease;\\r\\n transition: .5s ease;*/\\r\\n cursor: pointer\\r\\n}\\r\\n\\r\\n.login a:hover {\\r\\n color: #5BADE4;\\r\\n}\\r\\n\\r\\n.login .form {\\r\\n background: rgba(19, 35, 47, 0.9);\\r\\n padding: 40px;\\r\\n max-width: 600px;\\r\\n margin: 40px auto;\\r\\n border-radius: 4px;\\r\\n box-shadow: 0 4px 10px 4px rgba(19, 35, 47, 0.3);\\r\\n}\\r\\n\\r\\n.login h1 {\\r\\n text-align: center;\\r\\n color: #ffffff;\\r\\n font-weight: 300;\\r\\n margin: 0 0 7px;\\r\\n}\\r\\n\\r\\n.login label {\\r\\n\\r\\n -webkit-transform: translateY(6px);\\r\\n transform: translateY(6px);\\r\\n left: 13px;\\r\\n color: white;\\r\\n -webkit-transition: all 0.25s ease;\\r\\n transition: all 0.25s ease;\\r\\n -webkit-backface-visibility: hidden;\\r\\n pointer-events: none;\\r\\n font-size: 14px;\\r\\n font-weight: normal;\\r\\n margin-bottom: 11px;\\r\\n}\\r\\n\\r\\n.login label .req {\\r\\n margin: 2px;\\r\\n color: #1ab188;\\r\\n}\\r\\n\\r\\n.login label.active {\\r\\n -webkit-transform: translateY(50px);\\r\\n transform: translateY(50px);\\r\\n left: 2px;\\r\\n font-size: 14px;\\r\\n}\\r\\n\\r\\n.login label.active .req {\\r\\n opacity: 0;\\r\\n}\\r\\n\\r\\n.login label.highlight {\\r\\n color: #ffffff;\\r\\n}\\r\\n\\r\\n.login input, textarea {\\r\\n\\r\\n display: block;\\r\\n\\r\\n background: none;\\r\\n background-image: none;\\r\\n border: 1px solid #a0b3b0;\\r\\n color: #ffffff;\\r\\n /* border-radius: 0;*/\\r\\n /* -webkit-transition: border-color .25s ease, box-shadow .25s ease;\\r\\n transition: border-color .25s ease, box-shadow .25s ease;*/\\r\\n}\\r\\n\\r\\n.login input:focus, textarea:focus {\\r\\n outline: 0;\\r\\n border-color: #5bade4;\\r\\n}\\r\\n\\r\\n.login textarea {\\r\\n border: 2px solid #a0b3b0;\\r\\n resize: vertical;\\r\\n}\\r\\n\\r\\n.login .field-wrap {\\r\\n position: relative;\\r\\n margin-bottom: 25px;\\r\\n}\\r\\n\\r\\n/*\\r\\n.login .top-row:after {\\r\\n content: \\\"\\\";\\r\\n display: table;\\r\\n clear: both;\\r\\n}\\r\\n*/\\r\\n\\r\\n.login .top-row > div {\\r\\n float: left;\\r\\n width: 48%;\\r\\n margin-right: 4%;\\r\\n}\\r\\n\\r\\n.login .top-row > div:last-child {\\r\\n margin: 0;\\r\\n}\\r\\n\\r\\n.login .button {\\r\\n border: 0;\\r\\n outline: none;\\r\\n border-radius: 0;\\r\\n padding: 15px 0;\\r\\n font-size: 2rem;\\r\\n font-weight: 600;\\r\\n text-transform: uppercase;\\r\\n letter-spacing: .1em;\\r\\n background: #5bade4;\\r\\n color: #ffffff;\\r\\n -webkit-transition: all 0.5s ease;\\r\\n transition: all 0.5s ease;\\r\\n -webkit-appearance: none;\\r\\n}\\r\\n\\r\\n/* .login .button:hover, .button:focus {\\r\\n background: #179b77;\\r\\n} */\\r\\n\\r\\n.login .button:hover, .button:focus {\\r\\n background: #5bade4;\\r\\n}\\r\\n\\r\\n.login .button-block {\\r\\n display: block;\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\n.login .forgot {\\r\\n text-align: center;\\r\\n position: relative;\\r\\n top: 11PX;\\r\\n}\\r\\n\\r\\n.fade-enter-active, .fade-leave-active {\\r\\n transition: opacity .5s\\r\\n}\\r\\n\\r\\n.fade-enter, .fade-leave-to /* .fade-leave-active in <2.1.8 */\\r\\n{\\r\\n opacity: 0\\r\\n}\\r\\n\\r\\n/*End login styles*/\\r\\n\\r\\n/*Pre*/\\r\\npre {\\r\\n background-color: whitesmoke;\\r\\n background-image: url(data:image/svg+xml;base64,PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiP…dpZHRoPSIxMDAlIiBoZWlnaHQ9IjEwMCUiIGZpbGw9InVybCgjZ3JhZCkiIC8+PC9zdmc+IA==);\\r\\n background-size: 100%;\\r\\n background-image: -webkit-gradient(linear, 50% 0%, 50% 100%, color-stop(50%, #f5f5f5), color-stop(50%, #e6e6e6));\\r\\n background-image: -webkit-linear-gradient(#f5f5f5 50%, #e6e6e6 50%);\\r\\n background-image: -webkit-gradient(linear, left top, left bottom, color-stop(50%, #f5f5f5), color-stop(50%, #e6e6e6));\\r\\n background-image: linear-gradient(#f5f5f5 50%, #e6e6e6 50%);\\r\\n background-size: 38px 38px;\\r\\n border: 1px solid #d4d4d4;\\r\\n display: block;\\r\\n line-height: 19px;\\r\\n margin-bottom: 10px;\\r\\n overflow: visible;\\r\\n overflow-y: hidden;\\r\\n padding: 0 0 0 10px;\\r\\n text-align: left;\\r\\n\\r\\n}\\r\\n\\r\\n.version-heading {\\r\\n text-align: left;\\r\\n margin-bottom: 10px\\r\\n}\\r\\n\\r\\n.el-dialog__header {\\r\\n line-height: 18px;\\r\\n border-bottom: 1px solid rgba(191, 191, 191, 0.42);\\r\\n padding-bottom: 10px;\\r\\n}\\r\\n\\r\\n.el-dialog__header {\\r\\n text-align: left\\r\\n}\\r\\n\\r\\n/*End Pre*/\\r\\n\\r\\n/*password validator*/\\r\\n\\r\\n.password-validator {\\r\\n background-color: #1c2a31;\\r\\n\\r\\n box-shadow: 0 4px 20px -8px rgba(0, 0, 0, 0.5);\\r\\n padding: 10px;\\r\\n border-radius: 4px;\\r\\n position: absolute;\\r\\n z-index: 100;\\r\\n color: white;\\r\\n border-top: 5px solid rgb(26, 188, 156);\\r\\n padding-top: 10px;\\r\\n\\r\\n}\\r\\n\\r\\n.password-validator li {\\r\\n border-bottom: 1px dashed white;\\r\\n padding: 5px;\\r\\n list-style: none;\\r\\n font-size: 12px;\\r\\n}\\r\\n\\r\\n.close {\\r\\n color: white;\\r\\n opacity: 1;\\r\\n}\\r\\n\\r\\n/*end password validator*/\\r\\n\\r\\n.el-button span {\\r\\n line-height: inherit !important;\\r\\n\\r\\n}\\r\\n\\r\\n.child_menu li:after, .child_menu li:before {\\r\\n display: none\\r\\n}\\r\\n\\r\\n.nav.child_menu li.active, .nav.child_menu li:hover {\\r\\n background-color: rgba(0, 0, 0, 0.27);\\r\\n}\\r\\n\\r\\n.nav.child_menu li {\\r\\n\\r\\n padding: 7px;\\r\\n padding-left: 40px;\\r\\n\\r\\n}\\r\\n\\r\\n.location-pool-selector {\\r\\n\\r\\n background-color: rgba(107, 189, 232, 0.9);\\r\\n padding: 10px;\\r\\n}\\r\\n\\r\\n.location-pool-selector i {\\r\\n margin-right: -5px;\\r\\n}\\r\\n\\r\\n.location-pool-selector input {\\r\\n background-color: rgba(255, 255, 255, 0) !important;\\r\\n border: inherit;\\r\\n\\r\\n}\\r\\n\\r\\n.location-pool-selector el-input.is-disabled .el-input__inner {\\r\\n color: white !important;\\r\\n}\\r\\n\\r\\n.location-pool-selector .el-icon-caret-top {\\r\\n color: white !important;\\r\\n}\\r\\n\\r\\n.location-pool-selector ::-webkit-input-placeholder { /* WebKit, Blink, Edge */\\r\\n color: white;\\r\\n}\\r\\n\\r\\n.location-pool-selector :-moz-placeholder { /* Mozilla Firefox 4 to 18 */\\r\\n color: white;\\r\\n opacity: 1;\\r\\n}\\r\\n\\r\\n.location-pool-selector ::-moz-placeholder { /* Mozilla Firefox 19+ */\\r\\n color: white;\\r\\n opacity: 1;\\r\\n}\\r\\n\\r\\n.location-pool-selector :-ms-input-placeholder { /* Internet Explorer 10-11 */\\r\\n color: white;\\r\\n}\\r\\n\\r\\n.location-pool-selector ::-ms-input-placeholder { /* Microsoft Edge */\\r\\n color: white;\\r\\n}\\r\\n\\r\\n.spacewrap {\\r\\n white-space: pre;\\r\\n color: #41484e !important;\\r\\n}\\r\\n\\r\\n.image-placeholder {\\r\\n background-color: inherit !important;\\r\\n max-height: 246px;\\r\\n font-size: 0;\\r\\n background-size: cover;\\r\\n background-repeat: no-repeat;\\r\\n background-position: center center;\\r\\n}\\r\\n\\r\\n.g-core-image-upload-form {\\r\\n height: 200px !important;\\r\\n cursor: pointer;\\r\\n\\r\\n}\\r\\n\\r\\n.upload-btn-wrapper {\\r\\n position: relative;\\r\\n overflow: hidden;\\r\\n display: inline-block;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.btn-wrap {\\r\\n border: 2px solid gray;\\r\\n color: gray;\\r\\n background-color: white;\\r\\n padding: 4px 16px;\\r\\n border-radius: 8px;\\r\\n font-size: 20px;\\r\\n font-weight: bold;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n\\r\\n.upload-btn-wrapper input[type=file] {\\r\\n font-size: 100px;\\r\\n position: absolute;\\r\\n left: 0;\\r\\n top: 0;\\r\\n opacity: 0;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n@media (min-width: 768px) {\\r\\n .modal-xl {\\r\\n width: 90% !important;\\r\\n max-width: 1200px !important;\\r\\n }\\r\\n}\\r\\n\\r\\n.left_col {\\r\\n /* Permalink - use to edit and share this gradient: http://colorzilla.com/gradient-editor/#4b8fd0+0,63bced+100 */\\r\\n background: #4b8fd0; /* Old browsers */\\r\\n background: -moz-linear-gradient(top, #4b8fd0 0%, #63bced 100%); /* FF3.6-15 */\\r\\n background: -webkit-linear-gradient(top, #4b8fd0 0%, #63bced 100%); /* Chrome10-25,Safari5.1-6 */\\r\\n /*background: linear-gradient(to bottom, #4b8fd0 0%,#63bced 100%); !* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ *!*/\\r\\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#4b8fd0', endColorstr='#63bced', GradientType=0); /* IE6-9 */\\r\\n}\\r\\n\\r\\n.nav.child_menu > li > a, .nav.side-menu > li > a {\\r\\n color: white;\\r\\n /* font-weight: 500; */\\r\\n font-size: 1.4em;\\r\\n}\\r\\n\\r\\n.location-pool-selector label {\\r\\n\\r\\n font-weight: normal;\\r\\n font-size: 1.2em;\\r\\n\\r\\n}\\r\\n\\r\\n.location-pool-selector .el-input__inner {\\r\\n color: white\\r\\n}\\r\\n\\r\\n.body {\\r\\n /*background-color: #69bcec;*/\\r\\n\\r\\n}\\r\\n\\r\\n@media (min-width: 992px) {\\r\\n\\r\\n footer {\\r\\n /* margin-left: 281px;*/\\r\\n }\\r\\n\\r\\n}\\r\\n\\r\\n.main_container .top_nav {\\r\\n\\r\\n margin-left: 281px;\\r\\n}\\r\\n\\r\\n.header-user-text {\\r\\n overflow: hidden;\\r\\n white-space: nowrap;\\r\\n text-overflow: ellipsis;\\r\\n max-width: 143px;\\r\\n display: inline-block;\\r\\n position: relative;\\r\\n top: 10px;\\r\\n}\\r\\n\\r\\n.navbar-brand, .navbar-nav > li > a {\\r\\n\\r\\n line-height: inherit;\\r\\n}\\r\\n\\r\\n.el-tabs__item.is-active {\\r\\n color: rgba(72, 134, 195, 0.91);\\r\\n font-size: 1.3em;\\r\\n font-weight: 700;\\r\\n background-color: #DDF3FF;\\r\\n}\\r\\n\\r\\n.el-tabs__item {\\r\\n\\r\\n font-size: 1.3em;\\r\\n}\\r\\n\\r\\n.pinfo span {\\r\\n opacity: 0.7;\\r\\n}\\r\\n\\r\\n.image-placeholder {\\r\\n background-color: rgba(219, 220, 221, 0.6);\\r\\n height: 294px;\\r\\n font-size: 0;\\r\\n background-size: contain;\\r\\n background-repeat: no-repeat;\\r\\n background-position: center center;\\r\\n}\\r\\n\\r\\n.cEdit {\\r\\n position: absolute;\\r\\n right: 0;\\r\\n padding-right: 30px;\\r\\n top: 25px;\\r\\n font-size: 1.2em;\\r\\n cursor: pointer;\\r\\n z-index: 1000;\\r\\n\\r\\n}\\r\\n\\r\\n.cEdit span {\\r\\n margin-right: 5px;\\r\\n\\r\\n}\\r\\n\\r\\n@media (min-width: 1366px) and (max-width: 1537px) {\\r\\n .upb-lg .image-placeholder {\\r\\n height: 161px;\\r\\n }\\r\\n\\r\\n .up-lg {\\r\\n width: 100%;\\r\\n }\\r\\n\\r\\n .up1-lg {\\r\\n margin-top: 10px;\\r\\n width: 50%;\\r\\n }\\r\\n\\r\\n .up2-lg {\\r\\n margin-top: 10px;\\r\\n width: 50%;\\r\\n margin-left: inherit !important;\\r\\n\\r\\n }\\r\\n\\r\\n .up3-lg {\\r\\n\\r\\n width: 50%;\\r\\n margin-left: inherit;\\r\\n }\\r\\n\\r\\n}\\r\\n\\r\\n.main_menu span.fa {\\r\\n font-size: 20px;\\r\\n font-weight: 400;\\r\\n}\\r\\n\\r\\n.location-pool-selector .el-input__inner {\\r\\n font-size: 1.2em\\r\\n}\\r\\n\\r\\n.dropdown-usermenu {\\r\\n z-index: 1000000;\\r\\n}\\r\\n\\r\\n#menu_toggle i {\\r\\n z-index: 1000;\\r\\n}\\r\\n\\r\\n.child_menu {\\r\\n margin-bottom: 13px;\\r\\n}\\r\\n\\r\\n.nav.child_menu > li > a {\\r\\n\\r\\n padding: 7px;\\r\\n}\\r\\n\\r\\n.header_module_title {\\r\\n position: absolute;\\r\\n top: 14px;\\r\\n font-size: 1.6em;\\r\\n font-weight: 600;\\r\\n overflow: hidden;\\r\\n white-space: nowrap;\\r\\n text-overflow: ellipsis;\\r\\n max-width: 800px;\\r\\n display: inline-block;\\r\\n\\r\\n}\\r\\n\\r\\n.poolselector-top {\\r\\n position: absolute;\\r\\n left: 327px;\\r\\n padding-left: 10px;\\r\\n\\r\\n padding: 1px 0px 0px 6px;\\r\\n background-color: inherit;\\r\\n\\r\\n}\\r\\n\\r\\n@media (min-width: 906px) and (max-width: 992px) {\\r\\n\\r\\n .poolselector-top {\\r\\n left: 240px;\\r\\n }\\r\\n\\r\\n}\\r\\n\\r\\n@media (min-width: 613px) and (max-width: 700px) {\\r\\n\\r\\n .poolselector-top {\\r\\n position: relative;\\r\\n left: 0px;\\r\\n }\\r\\n\\r\\n .poolselector-top .div1, .div2 {\\r\\n\\r\\n width: inherit !important;\\r\\n margin-left: inherit !important;\\r\\n padding: 5px;\\r\\n padding-right: 10px;\\r\\n\\r\\n }\\r\\n\\r\\n}\\r\\n\\r\\n@media (min-width: 300px) and (max-width: 612px) {\\r\\n\\r\\n .loc-pool-selector {\\r\\n left: 80px !important;\\r\\n }\\r\\n\\r\\n .header_module_title {\\r\\n font-size: 1.1em;\\r\\n padding-top: 8px;\\r\\n left: 53px;\\r\\n overflow: hidden;\\r\\n white-space: nowrap;\\r\\n text-overflow: ellipsis;\\r\\n max-width: 111px;\\r\\n display: inline-block;\\r\\n\\r\\n }\\r\\n\\r\\n .poolselector-top {\\r\\n position: relative;\\r\\n left: 0px;\\r\\n }\\r\\n\\r\\n .poolselector-top .div1, .div2 {\\r\\n\\r\\n width: inherit !important;\\r\\n margin-left: inherit !important;\\r\\n padding: 5px;\\r\\n padding-right: 10px;\\r\\n\\r\\n }\\r\\n\\r\\n}\\r\\n\\r\\n.el-select-dropdown {\\r\\n z-index: 10000 !important;\\r\\n}\\r\\n\\r\\n\\r\\n/*@media (min-width:1366px) and (max-width:1537px) {\\r\\n\\r\\n\\r\\n}*/\\r\\n\\r\\n.poolselector-top .div1 {\\r\\n float: left;\\r\\n width: 246px;\\r\\n\\r\\n}\\r\\n\\r\\n.poolselector-top .div2 {\\r\\n float: left;\\r\\n padding-top: inherit !important;\\r\\n width: 246px;\\r\\n margin-left: 10px;\\r\\n}\\r\\n\\r\\n.poolselector-top i {\\r\\n margin-right: 0px;\\r\\n}\\r\\n\\r\\n.poolselector-top label {\\r\\n\\r\\n position: relative;\\r\\n font-size: 1.2em;\\r\\n top: 5px;\\r\\n left: 2px;\\r\\n color: #7c7d7d !important;\\r\\n padding-bottom: 8px;\\r\\n\\r\\n}\\r\\n\\r\\n.poolselector-top .el-input__inner {\\r\\n color: rgb(109, 200, 244);\\r\\n border-color: rgb(70, 174, 224);\\r\\n /*padding: 18px;*/\\r\\n}\\r\\n\\r\\n.loc-pool-selector {\\r\\n\\r\\n position: absolute;\\r\\n left: 248px;\\r\\n\\r\\n border: 1px solid #03A9F4;\\r\\n font-size: 1.1em;\\r\\n}\\r\\n\\r\\n.left_col {\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\n.el-tabs--card > .el-tabs__header .el-tabs__item {\\r\\n\\r\\n transition: inheirt !important;;\\r\\n\\r\\n}\\r\\n\\r\\n.salary-button {\\r\\n background-color: #DDF3FF;\\r\\n border: inherit;\\r\\n color: #71A1D1;\\r\\n font-weight: 700;\\r\\n padding-left: 50px;\\r\\n padding-right: 50px;\\r\\n\\r\\n}\\r\\n\\r\\n.modal-header {\\r\\n padding: 4px !important;\\r\\n}\\r\\n\\r\\n.xVueTables__search input, .xVueTables__limit select {\\r\\n margin-left: 10px;\\r\\n\\r\\n background-color: #fff;\\r\\n background-image: none;\\r\\n border-radius: 4px;\\r\\n border: 1px solid #bfcbd9;\\r\\n box-sizing: border-box;\\r\\n color: #1f2d3d;\\r\\n font-size: inherit;\\r\\n height: 36px;\\r\\n line-height: 1;\\r\\n outline: 0;\\r\\n padding: 3px 10px;\\r\\n transition: border-color .2s cubic-bezier(.645, .045, .355, 1);\\r\\n}\\r\\n\\r\\n.xVueTables__limit select {\\r\\n width: 70px !important;\\r\\n}\\r\\n\\r\\n.table > thead > tr > th, .table > tbody > tr > th, .table > tfoot > tr > th, .table > thead > tr > td, .table > tbody > tr > td, .table > tfoot > tr > td {\\r\\n vertical-align: middle !important;\\r\\n\\r\\n}\\r\\n\\r\\n.table td {\\r\\n font-size: 14px;\\r\\n}\\r\\n\\r\\n.button-blue {\\r\\n background-color: #4DB3FF;\\r\\n border-color: #4DB3FF;\\r\\n color: white;\\r\\n width: 125px\\r\\n}\\r\\n\\r\\n.el-tabs__content .x_panel {\\r\\n\\r\\n}\\r\\n\\r\\n.x_panel {\\r\\n border-radius: 8px !important;\\r\\n}\\r\\n\\r\\n.forgot {\\r\\n font-size: 1.3em;\\r\\n}\\r\\n\\r\\n.location-pool .el-table .cell {\\r\\n\\r\\n padding: 10px;\\r\\n}\\r\\n\\r\\n.el-table .cell {\\r\\n font-size: 14px;\\r\\n}\\r\\n\\r\\n.el-table th > .cell {\\r\\n opacity: 0.9;\\r\\n}\\r\\n\\r\\n.el-radio-group span {\\r\\n font-size: 14px !important;\\r\\n}\\r\\n\\r\\n.VueTables table {\\r\\n font-size: 14px;\\r\\n color: #4c4c4c;\\r\\n\\r\\n}\\r\\n\\r\\n.pform label span {\\r\\n\\r\\n /* white-space: nowrap;*/\\r\\n max-width: 90%;\\r\\n}\\r\\n\\r\\n/*****************************************************************************\\r\\n* FG - FOOF - May 24, 2019 - neat buttons (initially used for personal info page\\r\\n*****************************************************************************/\\r\\n.hydroware-neat-button {\\r\\n width: 12em;\\r\\n margin-left:0px!important; \\r\\n margin-right: 0px!important;\\r\\n}\\r\\n.el-button.hydroware-neat-button_chosen {\\r\\n background-color:#d3f4ff!important;\\r\\n border-color:cyan;\\r\\n border-width:4px;\\r\\n}\\r\\n/*****************************************************************************\\r\\n* FG - FOOF - Feb 5, 2019 - removed css below to tighten things up vertically\\r\\n.pform div {\\r\\n line-height: 30px;\\r\\n}\\r\\n*******************************************************************************/\\r\\n\\r\\n.hydroware-search-table-field {\\r\\n height: 40px;\\r\\n width: 250px!important;\\r\\n color: #1f2d3d;\\r\\n margin-right:10px;\\r\\n margin-left:10px;\\r\\n}\\r\\n/* FG - FOOF - Jan 23 2019 -- use this to get label and input field on same line */\\r\\n.hydroware-inline-input .el-input-group__prepend {\\r\\n border: none!important;\\r\\n background-color:transparent!important;\\r\\n color:white;\\r\\n}\\r\\n\\r\\n/* FG - FOOF - Jan 24 2019 -- use this to get the before and after slots of the \\r\\nfilter to stay on the same line as the searchfield-field*/\\r\\n.hydroware-inline-input {\\r\\n display:inline;\\r\\n}\\r\\n.hydroware-inline {\\r\\n display:inline;\\r\\n}\\r\\n\\r\\n/*****************************************************************************\\r\\n** Classes below are for elements that appear on \\\"edit\\\" pages but are \\r\\n** conditionally editable (these all start with the class hydroware-editNoEdit\\r\\n** ... i.e. on the personal info page the fields for\\r\\n** can be toggled between edit and view\\r\\n*****************************************************************************/\\r\\n.hydroware-editNoEdit.is-disabled input:disabled, /*Input field, Date Picker*/\\r\\n.hydroware-editNoEdit .el-input.is-disabled input:disabled, /*Dropdown select*/\\r\\n.hydroware-editNoEdit.is-disabled textarea:disabled, /*texarea field*/\\r\\n.hydroware-editNoEdit .el-textarea.is-disabled textarea:disabled /*texarea field*/\\r\\n{\\r\\n background-color: lightblue;\\r\\n color: #000000;\\r\\n}\\r\\n\\r\\n/* Both of the lines below are needed to make the checkbox itself look right..\\r\\n the first is the background color inside the box and the second it the color of the\\r\\n checkmark itself*/\\r\\n.hydroware-editNoEdit.el-checkbox.is-disabled .el-checkbox__input.is-disabled .el-checkbox__inner,\\r\\n.hydroware-editNoEdit.el-checkbox.is-disabled .el-checkbox__input.is-disabled.is-checked .el-checkbox__inner::after\\r\\n{\\r\\n background-color: lightblue;\\r\\n border-color: black /*oddly, this is the color of the checkmark*/\\r\\n}\\r\\n\\r\\n/*FG - FOOF - First Release (7) - added css below so the wsywig widgets would display with the \\r\\n same background as the input fields when they are disabled*/\\r\\n.hydroware-editNoEdit .trumbowyg-disabled .trumbowyg-editor {\\r\\n cursor: no-drop;\\r\\n background-color: lightblue;\\r\\n color: black;\\r\\n}\\r\\n/*FG - FOOF - First Release (7) - added css below so I could hide widgets but allow them to take up\\r\\nspace... needed sometimes when security stops something from displaying*/\\r\\n.hydroware_hidden {\\r\\n visibility:hidden;\\r\\n }\\r\\n/***************************************************************************************\\r\\n** END OF CSS FOR DISABLED hydroware-editNoEdit ELEMENTS\\r\\n***************************************************************************************/\\r\\n\\r\\n/*FG - FOOF - Feb 14 2021 - After Cert - First Release (7) I found that the tables at\\r\\n the bottom of the incident and accident page were not responsive as they should be.\\r\\n I also found a better solution to getting labels and input fields to appear\\r\\n horizontally in the same column (prior to this the input field did not take up\\r\\n the space left after the label. The input field was always the same size and shorter\\r\\n than it should have been.\\r\\n NOTE: .hydroware-label-in-column_1 should be set on \\r\\n THE CSS BELOW WAS ADDED TO \\\"FIX\\\" THIS\\r\\n*/\\r\\n.hydroware-table td.hydroware-label-in-column {\\r\\n vertical-align: top !important;\\r\\n}\\r\\n.hydroware-label-in-column {\\r\\n color: darkblue;\\r\\n font-size: inherit!important;\\r\\n vertical-align:top!important;\\r\\n}\\r\\n.hydroware-label-fixed {\\r\\n float:left;\\r\\n /*border:2px solid red;*/\\r\\n}\\r\\n.hydroware-input-for-fixed-label { \\r\\n margin-left:5px;\\r\\n /*border:2px solid purple;*/\\r\\n}\\r\\n.hydroware-label-in-column_100 .hydroware-label-fixed {\\r\\n width:100px;\\r\\n}\\r\\n.hydroware-label-in-column_100 .hydroware-input-for-fixed-label { \\r\\n width: calc(100% - 110px);\\r\\n}\\r\\n/*************************************************************************************/\\r\\n\\r\\n/*FG - FOOF - Apr 29 2019 - use this to get labels to display properly in a table\\r\\n column (i.e. when you want a label followed by an input field in a table's column)\\r\\n*/\\r\\n.hydroware-label-in-column {\\r\\n display:table-cell;\\r\\n width:auto;\\r\\n}\\r\\n\\r\\n.hydroware-label-in-column .el-form-item__label {\\r\\n width: 100px!important;\\r\\n color: #73879C!important;\\r\\n font-size: inherit!important;\\r\\n display:inline;\\r\\n}\\r\\n.hydroware-label-in-column .hydroware-text-label {\\r\\n width:100px;color:black;display:inline-block;\\r\\n}\\r\\n.hydroware-label-in-column .el-form-item__content {\\r\\n flex:auto!important\\r\\n}\\r\\n.hydroware-label-in-column.el-form-item {\\r\\n margin-bottom: 0px!important\\r\\n}\\r\\n.hydroware-table {\\r\\n table-layout:auto;\\r\\n max-width:100%; \\r\\n}\\r\\n.hydroware-title-column, \\r\\n.hydroware-facility-column, \\r\\n.hydroware-venue-column,\\r\\n.hydroware-checklistname-column,\\r\\n.hydroware-name-column {\\r\\n max-width: 200em!important;\\r\\n min-width: 10em!important;\\r\\n width: 20em!important;\\r\\n text-overflow: ellipsis;\\r\\n overflow: hidden;\\r\\n white-space: nowrap;\\r\\n}\\r\\n.hydroware-date-column,\\r\\n.hydroware-frequency-column {\\r\\n width:7em;\\r\\n min-width:7em;\\r\\n max-width:7em;\\r\\n}\\r\\n.hydroware-datetime-column {\\r\\n width:10em;\\r\\n min-width:10em;\\r\\n max-width:12em;\\r\\n }\\r\\n.hydroware-state-column {\\r\\nwidth:4.5em;\\r\\n}\\r\\n.hydroware-zipcode-column {\\r\\nwidth:10em;\\r\\n}\\r\\n.hydroware-phonenumber-column {\\r\\nwidth:11em;\\r\\n}\\r\\n.hydroware-age-column {\\r\\nwidth:4.5em;\\r\\n}\\r\\n.hydroware-1-button-column {\\r\\n width: 50px;\\r\\n max-width:50px;\\r\\n min-width:50px;\\r\\n}\\r\\n.hydroware-2-button-column {\\r\\n width: 100px;\\r\\n max-width:100px;\\r\\n min-width:100px;\\r\\n}\\r\\n\\r\\n.hydroware-table > tbody > tr:nth-of-type(odd) {\\r\\nbackground-color: #d3f4ff!important;\\r\\n}\\r\\n.hydroware-table > tbody > tr:nth-of-type(even) {\\r\\nbackground-color: #ffffff!important;\\r\\n}\\r\\n\\r\\n/***********Column label field - above **************/\\r\\n.pform label {\\r\\n text-overflow: ellipsis;\\r\\n overflow: hidden;\\r\\n width: 100%;\\r\\n\\r\\n}\\r\\n\\r\\n.el-tag {\\r\\n text-overflow: ellipsis;\\r\\n margin-bottom: 10px; /*FG - this was 20px but that seemed like too much */\\r\\n}\\r\\n\\r\\n.el-form-item__label {\\r\\n\\r\\n text-align: inherit !important;\\r\\n}\\r\\n\\r\\nlabel span span:first-child {\\r\\n opacity: 1 !important;\\r\\n color: black;\\r\\n padding-left: 2px;\\r\\n}\\r\\n\\r\\n.modal-footer {\\r\\n margin-top: -25px;\\r\\n}\\r\\n\\r\\n.side-menu li a {\\r\\n\\r\\n padding-left: 5px !important;\\r\\n\\r\\n}\\r\\n\\r\\n.side-menu li i {\\r\\n\\r\\n padding-left: 5px !important;\\r\\n\\r\\n}\\r\\n\\r\\n#sorttbody tr {\\r\\n\\r\\n cursor: move;\\r\\n\\r\\n}\\r\\n\\r\\n/*\\r\\nmodel popup changes */\\r\\n\\r\\n.modal-header .close {\\r\\n margin-top: 2px !important;\\r\\n}\\r\\n\\r\\n.modelheadercurved {\\r\\n background-color: rgb(109, 200, 244);\\r\\n border-top-left-radius: inherit;\\r\\n border-top-right-radius: inherit;\\r\\n}\\r\\n\\r\\n.el-message-box__title {\\r\\n margin-top: -7px;\\r\\n color: white;\\r\\n\\r\\n}\\r\\n\\r\\n.el-message-box__header {\\r\\n background-color: #62BAEC;\\r\\n\\r\\n height: 53px;\\r\\n}\\r\\n\\r\\n.el-message-box {\\r\\n border-top-right-radius: 7px;\\r\\n border-top-left-radius: 7px;\\r\\n}\\r\\n\\r\\n.el-message-box__close el-icon-close {\\r\\n color: white\\r\\n}\\r\\n\\r\\n.el-message-box__close el-icon-close {\\r\\n color: white;\\r\\n}\\r\\n\\r\\n.el-progress.is-exception .el-progress-bar__inner {\\r\\n background-color: #54a0db;\\r\\n}\\r\\n\\r\\n.el-progress-bar__outer {\\r\\n background-color: #c3c9ce;\\r\\n border-radius: inherit;\\r\\n}\\r\\n\\r\\n.el-progress-bar__innerText {\\r\\n color: #fff !important;\\r\\n font-size: 1.2em !important;\\r\\n margin: 0 5px !important;\\r\\n /* padding-top: 12px !important;\\r\\n padding-left: 10px !important; */\\r\\n position: absolute !important;\\r\\n top: 13px !important;\\r\\n left: 42% !important;\\r\\n}\\r\\n\\r\\n.el-message-box__headerbtn .el-message-box__close {\\r\\n color: white;\\r\\n}\\r\\n\\r\\n/*\\r\\n * Scroll Bar STYLE 2\\r\\n */\\r\\n\\r\\n.style-2::-webkit-scrollbar-track {\\r\\n -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, 0.3);\\r\\n border-radius: 10px;\\r\\n background-color: #F5F5F5;\\r\\n}\\r\\n\\r\\n.style-2::-webkit-scrollbar {\\r\\n width: 12px;\\r\\n background-color: #F5F5F5;\\r\\n}\\r\\n\\r\\n.style-2::-webkit-scrollbar-thumb {\\r\\n border-radius: 10px;\\r\\n -webkit-box-shadow: inset 0 0 6px rgba(0, 0, 0, .3);\\r\\n background-color: #4FB2FB;\\r\\n}\\r\\n\\r\\n/*\\r\\n * STYLE 3\\r\\n */\\r\\n\\r\\n.list-leave-active {\\r\\n transition: all 0.5s;\\r\\n opacity: 0;\\r\\n}\\r\\n\\r\\n.glossaryLookup {\\r\\n /* color: #0000ff;*/\\r\\n text-decoration: underline;\\r\\n}\\r\\n\\r\\n.el-table__body span {\\r\\n text-overflow: ellipsis;\\r\\n overflow: hidden;\\r\\n /* width: 100%;*/\\r\\n white-space: nowrap;\\r\\n max-width: 90%;\\r\\n}\\r\\n\\r\\n/*.sortable-ghost\\r\\n{\\r\\n opacity:0.2;\\r\\n background-color:blue;\\r\\n}*/\\r\\n\\r\\n.el-progress-bar__innerText {\\r\\n\\r\\n /*padding-top: 3px !important;*/\\r\\n\\r\\n}\\r\\n\\r\\n#pool label {\\r\\n width: 100% !important;\\r\\n\\r\\n}\\r\\n\\r\\n.sidehide {\\r\\n display: none;\\r\\n}\\r\\n\\r\\n.rcolwidth {\\r\\n\\r\\n margin-left: inherit !important;\\r\\n padding-bottom: inherit !important;\\r\\n}\\r\\n\\r\\n.topnavcola {\\r\\n margin-left: 0px !important;\\r\\n\\r\\n}\\r\\n\\r\\n.xVueTables__search label {\\r\\n display: none !important;\\r\\n}\\r\\n\\r\\n.xVueTables__search {\\r\\n\\r\\n float: right !important;;\\r\\n}\\r\\n\\r\\n.footer_full {\\r\\n margin-left: inherit;\\r\\n}\\r\\n\\r\\n.x_panel {\\r\\n /* border:inherit ;*/\\r\\n box-shadow: 0 1px 15px 1px rgba(113, 106, 202, .08);\\r\\n}\\r\\n\\r\\n.fe_container .fe_forecast {\\r\\n margin-top: 85px;\\r\\n margin-right: 24px;\\r\\n\\r\\n}\\r\\n\\r\\n.fe_container .fe_title {\\r\\n\\r\\n right: 10px;\\r\\n}\\r\\n\\r\\n.xVueTables__limit label {\\r\\n display: inline !important;\\r\\n\\r\\n}\\r\\n\\r\\n.x_content {\\r\\n\\r\\n -webkit-print-color-adjust: exact !important;\\r\\n color-adjust: exact !important;\\r\\n}\\r\\n\\r\\na\\r\\n.VuePagination__count {\\r\\n display: none;\\r\\n}\\r\\n\\r\\n.fc-time {\\r\\n display: none;\\r\\n}\\r\\n\\r\\n.fc-content {\\r\\n cursor: pointer\\r\\n}\\r\\n\\r\\n.el-message-box {\\r\\n\\r\\n width: 466px;\\r\\n\\r\\n}\\r\\n\\r\\n.fc-day-grid-event {\\r\\n margin-top: 10px !important;\\r\\n}\\r\\n\\r\\n.codeTextLookup {\\r\\n color: #05721c;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n/*.modal {\\r\\n overflow-y:auto;\\r\\n}*/\\r\\n.modal-backdrop {\\r\\n visibility: hidden !important;\\r\\n}\\r\\n\\r\\n.modal.in {\\r\\n background-color: rgba(0, 0, 0, 0.5);\\r\\n}\\r\\n\\r\\n.errorInput {\\r\\n border-color: #ff4949 !important;\\r\\n}\\r\\n\\r\\n.full_screen {\\r\\n position: fixed;\\r\\n\\r\\n left: 0;\\r\\n top: 83px;\\r\\n right: 0;\\r\\n width: 97%;\\r\\n /* height: 100%;*/\\r\\n z-index: 1000000000;\\r\\n margin: auto;\\r\\n}\\r\\n\\r\\n.overlay1 {\\r\\n position: fixed;\\r\\n top: 0;\\r\\n left: 0;\\r\\n width: 100%;\\r\\n height: 100%;\\r\\n z-index: 1000;\\r\\n background-color: rgba(0, 0, 0, 0.6);\\r\\n}\\r\\n\\r\\n.full_screen_icon {\\r\\n float: right;\\r\\n font-size: 12px;\\r\\n position: relative;\\r\\n\\r\\n bottom: 30px;\\r\\n color: black;\\r\\n cursor: pointer;\\r\\n color: rgba(0, 0, 0, 0.7) !important;\\r\\n border: 1px solid rgba(0, 0, 0, 0.3);\\r\\n padding: 6px;\\r\\n}\\r\\n\\r\\n.poligon {\\r\\n display: inline-block;\\r\\n position: relative;\\r\\n width: 200px;\\r\\n height: 180px;\\r\\n /* background: red;*/\\r\\n box-sizing: border-box;\\r\\n -webkit-clip-path: polygon(0% 50%, 25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%);\\r\\n -moz-clip-path: polygon(0% 50%, 25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%);\\r\\n}\\r\\n\\r\\n.poligon img {\\r\\n position: absolute;\\r\\n top: 2px; /* equal to border thickness */\\r\\n left: 2px; /* equal to border thickness */\\r\\n width: 196px; /* container height - (border thickness * 2) */\\r\\n height: 176px; /* container height - (border thickness * 2) */\\r\\n -webkit-clip-path: polygon(0% 50%, 25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%);\\r\\n -moz-clip-path: polygon(0% 50%, 25% 0%, 75% 0%, 100% 50%, 75% 100%, 25% 100%);\\r\\n}\\r\\n\\r\\n.cus_cal_td {\\r\\n height: 128px;\\r\\n}\\r\\n\\r\\n.cus_cal_td span {\\r\\n\\r\\n float: right;\\r\\n position: relative;\\r\\n bottom: 40%;\\r\\n}\\r\\n\\r\\n.cus_cal_th {\\r\\n text-align: center;\\r\\n padding: 8px;\\r\\n border: 1px solid #ddd;\\r\\n}\\r\\n\\r\\n.ev_day {\\r\\n position: absolute;\\r\\n color: white;\\r\\n background-color: #3986AB;\\r\\n font-size: 12px;\\r\\n padding: 1px;\\r\\n padding-right: 5px;\\r\\n padding-left: 5px;\\r\\n border-radius: 5px;\\r\\n cursor: pointer;\\r\\n\\r\\n width: 27%;\\r\\n}\\r\\n\\r\\n.ev_day span {\\r\\n text-align: left !important;\\r\\n float: left;\\r\\n line-height: 20px;\\r\\n padding-right: 100%;\\r\\n}\\r\\n\\r\\n.hexagon {\\r\\n position: relative;\\r\\n width: 300px;\\r\\n height: 173.21px;\\r\\n background-color: #64C7CC;\\r\\n margin: 86.60px 0;\\r\\n border-left: solid 5px #333333;\\r\\n border-right: solid 5px #333333;\\r\\n}\\r\\n\\r\\n.hexagon:before,\\r\\n.hexagon:after {\\r\\n content: \\\"\\\";\\r\\n position: absolute;\\r\\n z-index: 1;\\r\\n width: 212.13px;\\r\\n height: 212.13px;\\r\\n -webkit-transform: scaleY(0.5774) rotate(-45deg);\\r\\n -ms-transform: scaleY(0.5774) rotate(-45deg);\\r\\n transform: scaleY(0.5774) rotate(-45deg);\\r\\n background-color: inherit;\\r\\n left: 38.9340px;\\r\\n}\\r\\n\\r\\n.hexagon:before {\\r\\n top: -106.0660px;\\r\\n border-top: solid 7.0711px #333333;\\r\\n border-right: solid 7.0711px #333333;\\r\\n}\\r\\n\\r\\n.hexagon:after {\\r\\n bottom: -106.0660px;\\r\\n border-bottom: solid 7.0711px #333333;\\r\\n border-left: solid 7.0711px #333333;\\r\\n}\\r\\n\\r\\n.popup_header {\\r\\n /* background-color: rgb(109, 200, 244);*/\\r\\n border-top-left-radius: inherit;\\r\\n border-top-right-radius: inherit;\\r\\n padding: 9px;\\r\\n color: white;\\r\\n text-align: center;\\r\\n position: relative;\\r\\n /* top: -11px;\\r\\n left: -18px;*/\\r\\n width: 100%;\\r\\n}\\r\\n\\r\\n.popup_header h2 {\\r\\n float: inherit !important;\\r\\n font-weight: inherit;\\r\\n font-size: 24px;\\r\\n}\\r\\n\\r\\n.popup_header b {\\r\\n font-weight: inherit;\\r\\n}\\r\\n\\r\\n.popup_no_padding {\\r\\n padding: unset !important;\\r\\n}\\r\\n\\r\\n.close_button {\\r\\n color: white !important;\\r\\n float: right;\\r\\n position: relative;\\r\\n font-size: 23px;\\r\\n bottom: 43px;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.el-progress-bar__inner {\\r\\n border-radius: inherit;\\r\\n}\\r\\n\\r\\n.max_height {\\r\\n max-height: 800px !important;\\r\\n}\\r\\n\\r\\n.login_footer {\\r\\n position: absolute;\\r\\n margin: 0;\\r\\n /* margin-top: 886px; */\\r\\n bottom: 0;\\r\\n overflow: hidden;\\r\\n width: 100%;\\r\\n background-color: transparent;\\r\\n color: white;\\r\\n border-top: 1px solid rgba(255, 255, 255, 0.1);\\r\\n}\\r\\n\\r\\n.side-bar1 {\\r\\n -moz-transition: all 200ms ease-out !important;\\r\\n -webkit-transition: all 200ms ease-out !important;\\r\\n background-color: #ffffff !important;\\r\\n box-shadow: 0 0px 24px 0 rgba(0, 0, 0, 0.06), 0 1px 0px 0 rgba(0, 0, 0, 0.02) !important;\\r\\n float: left !important;\\r\\n height: 100% !important;\\r\\n position: fixed !important;\\r\\n transition: all 200ms ease-out !important;\\r\\n width: 240px !important;;\\r\\n}\\r\\n\\r\\n.right-bar1 {\\r\\n background: #ffffff !important;\\r\\n z-index: 9999 !important;\\r\\n}\\r\\n\\r\\n.side-bar1.right-bar1 {\\r\\n float: right !important;\\r\\n right: 0 !important;;\\r\\n top: 0px !important;;\\r\\n}\\r\\n\\r\\n.user-list .user-list-item .icon {\\r\\n float: left !important;;\\r\\n margin-right: 5px !important;;\\r\\n height: 30px !important;;\\r\\n width: 30px !important;;\\r\\n border-radius: 50% !important;;\\r\\n text-align: center !important;;\\r\\n}\\r\\n\\r\\n.user-list .user-list-item .user-desc {\\r\\n margin-left: 40px !important;;\\r\\n}\\r\\n\\r\\n.notification-list .list-group-item {\\r\\n border-bottom: 1px solid rgba(152, 166, 173, 0.2) !important;\\r\\n margin-bottom: 0px !important;;\\r\\n}\\r\\n\\r\\n.list-no-border .list-group-item {\\r\\n border: none;\\r\\n}\\r\\n\\r\\n.list-group-item {\\r\\n position: relative !important;;\\r\\n display: block !important;;\\r\\n padding: 10px 15px !important;;\\r\\n margin-bottom: -1px !important;;\\r\\n background-color: #fff !important;;\\r\\n\\r\\n}\\r\\n\\r\\n.user-list .user-list-item .user-desc span.desc {\\r\\n color: #98a6ad !important;\\r\\n text-overflow: ellipsis !important;\\r\\n white-space: nowrap !important;\\r\\n display: block !important;\\r\\n width: 100% !important;\\r\\n overflow: hidden !important;\\r\\n font-size: 12px !important;\\r\\n}\\r\\n\\r\\n.user-list a {\\r\\n\\r\\n color: #5A738E !important;\\r\\n}\\r\\n\\r\\n.user-list .user-list-item .user-desc span.time {\\r\\n font-size: 11px;\\r\\n color: #71b6f9;\\r\\n font-style: italic;\\r\\n}\\r\\n\\r\\n.user-list .user-list-item .user-desc span.name {\\r\\n color: #435966;\\r\\n text-overflow: ellipsis;\\r\\n white-space: nowrap;\\r\\n display: block;\\r\\n width: 100%;\\r\\n overflow: hidden;\\r\\n}\\r\\n\\r\\n.right-bar1 h4 {\\r\\n border-bottom: 1px solid rgba(152, 166, 173, 0.5);\\r\\n padding: 4px 10px 10px 18px;\\r\\n text-transform: uppercase;\\r\\n font-size: 14px;\\r\\n font-weight: 600;\\r\\n letter-spacing: 0.03em;\\r\\n padding: 10px;\\r\\n}\\r\\n\\r\\n.notification-list {\\r\\n padding-bottom: 60px;\\r\\n height: 100%;\\r\\n}\\r\\n\\r\\n.bg-danger {\\r\\n background-color: #ff5b5b !important;\\r\\n}\\r\\n\\r\\n.user-list .user-list-item .icon i {\\r\\n color: #ffffff;\\r\\n line-height: 30px;\\r\\n font-size: 16px;\\r\\n}\\r\\n\\r\\n.bg-info {\\r\\n background-color: #35b8e0 !important;\\r\\n}\\r\\n\\r\\n.bg-pink {\\r\\n background-color: #ff8acc !important;\\r\\n}\\r\\n\\r\\n.bg-success {\\r\\n background-color: #10c469 !important;\\r\\n}\\r\\n\\r\\n.right-bar1 .right-bar-toggle {\\r\\n float: right;\\r\\n line-height: 46px;\\r\\n font-size: 25px;\\r\\n color: #6d6969;\\r\\n padding: 0px 10px;\\r\\n}\\r\\n\\r\\n.alert-info {\\r\\n top: 0%;\\r\\n position: fixed;\\r\\n z-index: 100;\\r\\n left: 40%;\\r\\n color: #444545;\\r\\n background-color: rgba(196, 244, 251, 0.84);\\r\\n border-color: rgba(52, 211, 235, 0.3);\\r\\n border: 1px solid transparent;\\r\\n border-radius: 2px;\\r\\n -moz-border-radius: 2px;\\r\\n -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\\r\\n -moz-box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\\r\\n box-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);\\r\\n}\\r\\n\\r\\n.close_bt {\\r\\n color: white !important;\\r\\n background-color: black !important;\\r\\n border-radius: 50%;\\r\\n width: 20px;\\r\\n height: 20px;\\r\\n opacity: 0.8 !important;\\r\\n padding-left: 1px;\\r\\n font-size: 17px;\\r\\n}\\r\\n\\r\\n.close_bt span {\\r\\n position: relative;\\r\\n bottom: 2px;\\r\\n}\\r\\n\\r\\n/*Old Theme Style*/\\r\\n\\r\\n.x_panel {\\r\\n background-color: rgba(6, 94, 162, 0.88) !important;\\r\\n color: white !important;\\r\\n border: none !important;\\r\\n}\\r\\n\\r\\n.x_panel label, .el-form-item__label span {\\r\\n color: white !important;\\r\\n}\\r\\n\\r\\n.x_panel .x_panel {\\r\\n background-color: inherit !important;\\r\\n}\\r\\n\\r\\n.pinfo span {\\r\\n opacity: 1 !important;\\r\\n}\\r\\n\\r\\n.el-form-item__label span {\\r\\n opacity: 1 !important;\\r\\n}\\r\\n\\r\\n.pinfo h3, .pform h3 {\\r\\n color: white !important;\\r\\n}\\r\\n\\r\\n.el-switch__core, .el-switch__mask, .el-form-item__label div {\\r\\n border: none !important;\\r\\n}\\r\\n\\r\\n.el-form-item__label {\\r\\n color: white;\\r\\n}\\r\\n\\r\\n.el-tabs__item {\\r\\n color: white;\\r\\n}\\r\\n\\r\\ntable {\\r\\n background: white !important;\\r\\n color: #73879C !important;\\r\\n}\\r\\n\\r\\n.x_panel button {\\r\\n background-color: #fff !important;\\r\\n /*border: 1px solid transparent !important;*/\\r\\n color: #454545 !important;\\r\\n}\\r\\n.x_panel button span, .x_panel i {\\r\\n color: #454545 !important;\\r\\n}\\r\\n\\r\\n.modal-content, .el-message-box, .el-message-box__header {\\r\\n background-color: rgba(6, 94, 162, 0.88) !important;\\r\\n color: white !important;\\r\\n border: none !important;\\r\\n}\\r\\n\\r\\n.modal-header {\\r\\n background-color: inherit !important;\\r\\n}\\r\\n\\r\\n.modal-header .close {\\r\\n color: white !important;\\r\\n background-color: black !important;\\r\\n border-radius: 50%;\\r\\n width: 20px;\\r\\n height: 20px;\\r\\n opacity: 0.8 !important;\\r\\n padding-left: 1px;\\r\\n font-size: 17px;\\r\\n}\\r\\n\\r\\n.modal-header .close span {\\r\\n border-radius: 50%;\\r\\n color: white !important;\\r\\n /* padding-bottom: 10px; */\\r\\n position: relative;\\r\\n bottom: 2px;\\r\\n\\r\\n}\\r\\n\\r\\n.full_screen_icon {\\r\\n color: white !important;\\r\\n border: 1px solid rgba(255, 255, 255, 0.4) !important;\\r\\n}\\r\\n\\r\\n.custom1 {\\r\\n background-color: #2E6081;\\r\\n color: white;\\r\\n\\r\\n}\\r\\n\\r\\n.navbar-custom1 li a {\\r\\n color: white !important;\\r\\n font-size: 15px;\\r\\n}\\r\\n\\r\\n.navbar-custom1 li a .fa-caret-down {\\r\\n padding-left: 5px;\\r\\n}\\r\\n\\r\\n.navbar-custom1 {\\r\\n background-color: #2E6081;\\r\\n border-radius: inherit;\\r\\n\\r\\n}\\r\\n\\r\\n.navbar-custom1 .dropdown-menu {\\r\\n background-color: rgba(41, 56, 54, 0.95) !important;\\r\\n border: inherit !important;\\r\\n padding: 5px;\\r\\n\\r\\n}\\r\\n\\r\\n.navbar-custom1 .dropdown {\\r\\n cursor: pointer !important;\\r\\n}\\r\\n\\r\\n.navbar-custom1 .dropdown-menu li {\\r\\n padding-top: 7px;\\r\\n padding-bottom: 7px;\\r\\n font-size: 10px;\\r\\n cursor: pointer !important;\\r\\n}\\r\\n\\r\\n.navbar-custom1 .dropdown-menu li a {\\r\\n font-size: 14px;\\r\\n}\\r\\n\\r\\n.navbar-custom1 .dropdown-menu li a:hover {\\r\\n background-color: #797979;\\r\\n\\r\\n}\\r\\n\\r\\n.nav .open > a, .nav .open > a:hover, .nav .open > a:focus {\\r\\n\\r\\n border-color: #337ab7;\\r\\n background-color: #3b4f50;\\r\\n}\\r\\n\\r\\n.el-message-box__content {\\r\\n color: white;\\r\\n}\\r\\n\\r\\n.main_container .top_nav {\\r\\n\\r\\n margin-left: inherit;\\r\\n}\\r\\n\\r\\n.nav_menu {\\r\\n padding-bottom: inherit !important;\\r\\n}\\r\\n\\r\\n.navbar {\\r\\n position: inherit\\r\\n}\\r\\n\\r\\n.navbar-nav .open .dropdown-menu {\\r\\n /* right:inherit;*/\\r\\n /* width:100% !important;*/\\r\\n}\\r\\n\\r\\nfooter {\\r\\n background: inherit !important;\\r\\n color: white;\\r\\n position: absolute;\\r\\n right: 0px;\\r\\n left: 0px;\\r\\n bottom: 0;\\r\\n font-size: 15px;\\r\\n /* text-decoration:underline;*/\\r\\n}\\r\\n\\r\\nfooter span {\\r\\n\\r\\n}\\r\\n\\r\\n@media (min-width: 400px) {\\r\\n .logo {\\r\\n width: 200px;\\r\\n position: relative;\\r\\n top: 15px;\\r\\n margin-left: 40px;\\r\\n }\\r\\n}\\r\\n\\r\\n.main_container {\\r\\n margin-bottom: 33px;\\r\\n}\\r\\n\\r\\n.modal-footer {\\r\\n margin-top: -7px !important;\\r\\n}\\r\\n\\r\\n#printableArea .elipsis {\\r\\n color: white !important;\\r\\n}\\r\\n\\r\\n.el-form-item__error {\\r\\n background-color: #ff5b5b;\\r\\n /*margin-top: 4px;*/\\r\\n margin: 0px; /*FG - FOOF*/\\r\\n border-radius: 3px;\\r\\n /*padding: 5px;*/\\r\\n padding: 0px 5px 0px 5px; /*FG - FOOF*/\\r\\n color: white;\\r\\n font-size: 12px;\\r\\n font-weight: 500;\\r\\n line-height: 15px !important;\\r\\n\\r\\n}\\r\\n\\r\\n.is-error {\\r\\n /*margin-bottom:30px;*/\\r\\n}\\r\\n\\r\\n.nav-tabs > li.active > a, .nav-tabs > li.active > a:focus, .nav-tabs > li.active > a:hover {\\r\\n background-color: #54a1e2;\\r\\n color: white;\\r\\n}\\r\\n\\r\\n.nav-tabs a {\\r\\n color: #435966;\\r\\n font-size: 15px;\\r\\n font-weight: 600;\\r\\n font-family: 'Karla', sans-serif;\\r\\n}\\r\\n\\r\\n.show-menu-container {\\r\\n margin-top: calc(39vh - 80px);\\r\\n font-size: 20px;\\r\\n color: white;\\r\\n font-weight: 500;\\r\\n background: teal;\\r\\n transition: all .2s ease-in-out;\\r\\n cursor: pointer;\\r\\n background: #0b495a;\\r\\n padding-top: 40px;\\r\\n padding-bottom: 98px;\\r\\n}\\r\\n\\r\\n.closed-sidemenu {\\r\\n width: 30px !important;\\r\\n background: inherit !important;\\r\\n top: 120px;\\r\\n /* overflow: auto; */\\r\\n overflow-y: auto;\\r\\n width: 300px;\\r\\n z-index: 10;\\r\\n background: #ffffff;\\r\\n bottom: 0px;\\r\\n height: 100%;\\r\\n margin-top: 0px;\\r\\n position: fixed;\\r\\n left: 0;\\r\\n}\\r\\n\\r\\n.location-pool-selector {\\r\\n background-color: rgba(6, 126, 162, 0.96) !important;\\r\\n color: white !important;\\r\\n border: none !important;\\r\\n\\r\\n z-index: 1000;\\r\\n padding: 15px;\\r\\n top: 42%;\\r\\n position: fixed;\\r\\n left: 0;\\r\\n}\\r\\n\\r\\n.editr--content {\\r\\n background-color: white;\\r\\n color: black;\\r\\n}\\r\\n\\r\\n.vw-btn-image {\\r\\n display: none !important;\\r\\n}\\r\\n\\r\\n.el-notification__content {\\r\\n font-size: 14px;\\r\\n line-height: 21px;\\r\\n margin: 10px 0 0;\\r\\n color: #8391a5;\\r\\n text-align: inherit !important;\\r\\n}\\r\\n\\r\\n#logWizard .bg-muted {\\r\\n background-color: white;\\r\\n}\\r\\n\\r\\n.navbar-header {\\r\\n background: #2E6081;\\r\\n}\\r\\n\\r\\n.x_title .spacewrap {\\r\\n color: white !important;\\r\\n}\\r\\n\\r\\n/*1245*/\\r\\n.header_module_title {\\r\\n /* padding-left: 44px;\\r\\n left: 0;\\r\\n top: 47px;*/\\r\\n}\\r\\n\\r\\nlabel div {\\r\\n border: inherit !important;\\r\\n margin-left: 3px;\\r\\n}\\r\\n\\r\\n.el-switch__label:hover {\\r\\n background-color: inherit;\\r\\n}\\r\\n\\r\\n@media (max-width: 815px) {\\r\\n .header_module_title {\\r\\n padding-left: 44px !important;\\r\\n left: 0;\\r\\n top: 52px;\\r\\n font-size: 17px;\\r\\n text-overflow: inherit !important;\\r\\n overflow: inherit;\\r\\n }\\r\\n}\\r\\n\\r\\n@media (max-width: 1245px) {\\r\\n\\r\\n .navbar-header {\\r\\n float: none;\\r\\n }\\r\\n\\r\\n .navbar-right {\\r\\n margin-bottom: 8px !important;\\r\\n }\\r\\n\\r\\n .navbar-toggle {\\r\\n display: block;\\r\\n }\\r\\n\\r\\n .navbar-collapse {\\r\\n border-top: 1px solid transparent;\\r\\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.1);\\r\\n }\\r\\n\\r\\n .navbar-fixed-top {\\r\\n top: 0;\\r\\n border-width: 0 0 1px;\\r\\n }\\r\\n\\r\\n .navbar-collapse.collapse {\\r\\n display: none !important;\\r\\n }\\r\\n\\r\\n .navbar-nav > li {\\r\\n float: none;\\r\\n }\\r\\n\\r\\n .navbar-nav > li > a {\\r\\n padding-top: 10px;\\r\\n padding-bottom: 10px;\\r\\n }\\r\\n\\r\\n .collapse.in {\\r\\n display: block !important;\\r\\n }\\r\\n}\\r\\n\\r\\n.heading_icon {\\r\\n width: 30px;\\r\\n margin-right: 10px;\\r\\n}\\r\\n\\r\\n.nav_icon {\\r\\n width: 20px;\\r\\n padding-bottom: 2px;\\r\\n}\\r\\n\\r\\n.cardcolumn label {\\r\\n color: #0000009c !important;\\r\\n}\\r\\n\\r\\nhr {\\r\\n clear: both;\\r\\n}\\r\\n\\r\\n.dashboard label {\\r\\n color: black !important;\\r\\n}\\r\\n\\r\\n.session-associate {\\r\\n position: relative;\\r\\n list-style: none;\\r\\n float: left;\\r\\n padding: inherit !important;\\r\\n width: 100%;\\r\\n box-shadow: 1px 1px 80px rgba(0, 0, 0, 0.1);\\r\\n border-radius: 5px;\\r\\n color: rgba(0, 0, 0, 0.8);\\r\\n}\\r\\n\\r\\n.session-associate li {\\r\\n background-color: white;\\r\\n padding: 15px;\\r\\n margin-top: 3px;\\r\\n cursor: pointer;\\r\\n}\\r\\n\\r\\n.custom-checkbox input {\\r\\n width: 17px;\\r\\n height: 17px;\\r\\n margin-right: 7px;\\r\\n margin-top: 0;\\r\\n position: absolute;\\r\\n}\\r\\n\\r\\n.custom-checkbox span {\\r\\n vertical-align: top;\\r\\n margin-left: 22px;\\r\\n display: block;\\r\\n word-break: break-all;\\r\\n white-space: normal;\\r\\n position: relative;\\r\\n bottom: 4px;\\r\\n}\\r\\n\\r\\n.custom-checkbox {\\r\\n position: relative;\\r\\n}\\r\\n\\r\\n.trumbowyg-editor {\\r\\n background-color: white;\\r\\n color: black;\\r\\n}\\r\\n\\r\\n.trumbowyg-modal-box label input {\\r\\n\\r\\n color: black;\\r\\n}\\r\\n\\r\\n.trumbowyg-editor a {\\r\\n color: cornflowerblue;\\r\\n text-decoration: underline;\\r\\n}\\r\\n\\r\\n.trumbowyg-modal-box label input {\\r\\n right: 27px;\\r\\n width: 59%;\\r\\n}\\r\\n\\r\\n.trumbowyg-viewHTML-button, .trumbowyg-insertImage-button {\\r\\n display: none !important;\\r\\n}\\r\\n\\r\\n.trumbowyg-modal-box label:nth-child(2), .trumbowyg-modal-box label:nth-child(4) {\\r\\n display: none;\\r\\n}\\r\\n\\r\\n.rowSelected {\\r\\n background-color: #11a4f7 !important;\\r\\n color: white;\\r\\n}\\r\\n\\r\\n.el-transfer-panel {\\r\\n width: 45%;\\r\\n margin-left: 10px;\\r\\n height: 500px;\\r\\n max-height: 500px;\\r\\n}\\r\\n\\r\\n.nav-tabs.nav-justified > li {\\r\\n width: auto !important;\\r\\n}\\r\\n\\r\\n#logWizard .bg-muted {\\r\\n background: inherit;\\r\\n}\\r\\n\\r\\n.nav-tabs > li.active > a, .nav-tabs > li.active > a:focus, .nav-tabs > li.active > a:hover {\\r\\n color: rgba(72, 134, 195, 0.91);\\r\\n font-size: 1.3em;\\r\\n font-weight: 700;\\r\\n background-color: #DDF3FF;\\r\\n border: 1px solid #d1dbe5;\\r\\n border-bottom-color: #fff;\\r\\n border-radius: 4px 4px 0 0;\\r\\n font-size: 16px;\\r\\n font-weight: bold !important;\\r\\n font-family: 'Nunito Sans', sans-serif !important;\\r\\n\\r\\n}\\r\\n\\r\\n.nav-tabs.nav-justified {\\r\\n\\r\\n border-bottom: 1px solid white !important;\\r\\n}\\r\\n\\r\\n.nav > li {\\r\\n border: 0 !important;\\r\\n}\\r\\n\\r\\n.nav > li > a {\\r\\n border: 0 !important;\\r\\n border-bottom: inherit;\\r\\n padding: 11px;\\r\\n font-size: 16px;\\r\\n font-weight: lighter !important;\\r\\n color: white;\\r\\n font-family: 'Nunito Sans', sans-serif !important;\\r\\n\\r\\n}\\r\\n\\r\\n.el-transfer-panel__list.is-filterable {\\r\\n height: 380px;\\r\\n}\\r\\n\\r\\n.el-transfer-panel__footer {\\r\\n display: none;\\r\\n}\\r\\n\\r\\n.kudo {\\r\\n background-color: #00cec9;\\r\\n color: white;\\r\\n width: 100%;\\r\\n padding: 5px;\\r\\n font-weight:700;\\r\\n font-size:15px;\\r\\n}\\r\\n\\r\\n.disci\\r\\n{\\r\\n background-color: #74b9ff;\\r\\n color: white;\\r\\n width: 100%;\\r\\n padding: 5px;\\r\\n font-weight:700;\\r\\n font-size:15px;\\r\\n}\\r\\n.eval\\r\\n{\\r\\n background-color:#ff7675;\\r\\n color: white;\\r\\n width: 100%;\\r\\n padding: 5px;\\r\\n font-weight:700;\\r\\n font-size:15px;\\r\\n\\r\\n}\\r\\n\\r\\n.fc-day-grid-event .fc-content {\\r\\n /* white-space: nowrap; */\\r\\n /* overflow: hidden; */\\r\\n word-break: break-all;\\r\\n max-height: 59px;\\r\\n overflow: auto;\\r\\n /* padding: 10px; */\\r\\n}\\r\\n\\r\\n\\r\\n/* change the color of action buttons in the table */\\r\\n\\r\\n.control_plan tr th:nth-child(5) {\\r\\n width: 180px;\\r\\n}\\r\\n\\r\\ntable .el-button--small i{\\r\\ncolor:white !important;\\r\\n}\\r\\n.el-button--mini i{\\r\\n color:white !important;\\r\\n }\\r\\n\\r\\n\\r\\n\\r\\n\\r\\n.r_m .el-transfer-panel\\r\\n{\\r\\n\\r\\n\\r\\n width:44% !important;\\r\\n\\r\\n}\\r\\n\\r\\n\\r\\n.r_m .el-transfer-panel__list\\r\\n{\\r\\n height: 500px;\\r\\n}\\r\\n\\r\\n\\r\\n.el-tabs__new-tab\\r\\n{\\r\\n border: 1px solid white;\\r\\n}\\r\\n.el-tabs__new-tab .el-icon-plus , .el-tabs__new-tab .el-icon-plus i\\r\\n{\\r\\n\\r\\n font-size:20px;\\r\\n padding-top:2px;\\r\\n}\\r\\n.el-tabs__new-tab\\r\\n{\\r\\n width:25px;\\r\\n height:25px;\\r\\n background-color:white;\\r\\n\\r\\n}\\r\\n/* End Old Theme Style*/\\r\\n.VuePagination\\r\\n{\\r\\n text-align: left;\\r\\n}\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 517 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(11)(false);\n// imports\n\n\n// module\nexports.push([module.i, \"\\r\\n.x_panel button.safetyPlanDeleteButton:enabled,\\r\\n.x_panel button.safetyPlanDeleteButton[enabled]\\r\\n{\\r\\n background-color:red!important;\\r\\n}\\r\\n.safetyPlanDownloadButton:disabled,\\r\\n.safetyPlanDownloadButton[disabled],\\r\\n.safetyPlanDeleteButton:disabled,\\r\\n.safetyPlanDeleteButton[disabled]\\r\\n{\\r\\n background-color:gray!important;\\r\\n}\\r\\n\\r\\n/*FG - FOOF - After Cert - First Release Security*/\\r\\n.el-message-box.hydrowareRestricted {\\r\\n background-color:red!important;\\r\\n}\\r\\n/*****************************************************************\\r\\n* FG - FOOF - The prefix (i.e. tiny calendar or tiny click icon) \\r\\n* looks goofy and it doesn't line up right so its now invisible \\r\\n******************************************************************/\\r\\n.el-input__prefix{\\r\\n visibility: hidden; \\r\\n} \\r\\n\\r\\n.x_panel .el-radio {\\r\\n margin-right:0px;\\r\\n margin-left:5px;\\r\\n color: white!important;\\r\\n}\\r\\n\\r\\n.x_panel .el-radio__input.is-checked+.el-radio__label {\\r\\n color:white!important;\\r\\n font-weight: bold;\\r\\n font-size: 1.1em;\\r\\n}\\r\\n\\r\\n.hydrowareChecklistRadioButtons {\\r\\n display:table-cell;\\r\\n min-width:260px;\\r\\n}\\r\\n\\r\\n.hydroware-other {\\r\\n margin-top: -20px;\\r\\n}\\r\\n.hydroware-no-resize-textarea textarea {\\r\\n resize:none;\\r\\n}\\r\\n\\r\\n.hydroware-other-checkbox {\\r\\n margin-top: -25px;\\r\\n}\\r\\n.hydroware-ishidden {\\r\\n visibility: hidden;\\r\\n}\\r\\n/*FG - FOOF - THIS GETS RID OF THE CIRCLE CHECK ON THE el-select fields IN Ver 2.4.11 */\\r\\n .el-select .el-input--suffix .el-input__suffix .el-icon-circle-check:before {\\r\\n content: none;\\r\\n }\\r\\n .el-switch__core:after {\\r\\n top: 2.5px; \\r\\n }\\r\\n\\r\\n.hydroware .el-select__tags-text {\\r\\n color:black!important;\\r\\n}\\r\\n .hydroware_error_border {\\r\\n border-color: #ff0000 !important;\\r\\n }\\r\\n\\r\\n .hydroware-add-button.el-button {\\r\\n background-color: white !important;\\r\\n padding-right:15px; \\r\\n padding-left:15px;\\r\\n }\\r\\n\\r\\n .hydroware-edit-button.el-button {\\r\\n background-color: #20a0ff !important;\\r\\n border-color: #20a0ff !important;\\r\\n margin-left: 0px!important;\\r\\n }\\r\\n .hydroware-view-button.el-button {\\r\\n background-color: brown !important;\\r\\n border-color: brown !important;\\r\\n margin-left: 0px!important;\\r\\n }\\r\\n .hydroware-copy-button.el-button {\\r\\n background-color:#1abb9c!important;\\r\\n border-color: #1abb9c;\\r\\n margin-left: 0px!important;\\r\\n }\\r\\n .hydroware-delete-button.el-button {\\r\\n background-color: #e64242 !important;\\r\\n border-color: #e64242;\\r\\n margin-left: 0px!important;\\r\\n }\\r\\n .hydroware-edit-button.el-button.is-disabled,\\r\\n .hydroware-view-button.el-button.is-disabled,\\r\\n .hydroware-copy-button.el-button.is-disabled,\\r\\n .hydroware-delete-button.el-button.is-disabled {\\r\\n background-color: #777777 !important;\\r\\n }\\r\\n\\r\\n .hydroware-checkbox.inline {\\r\\n display: inline;\\r\\n }\\r\\n .hydroware-container {\\r\\n color:#046bb9;\\r\\n }\\r\\n .hydroware-container-heading {\\r\\n background-color:white;\\r\\n color: #0066DD;\\r\\n border-radius:5px 5px 0px 0px;\\r\\n border-bottom: 2px solid #0066DD !important;\\r\\n padding-top: 12px;padding-bottom:12px;\\r\\n }\\r\\n .hydroware-container-body {\\r\\n color: inherit!important;\\r\\n background-color:white!important;\\r\\n border-radius: 0px 0px 5px 5px; /*top-left,top-right,bottom-right,bottom-left*/\\r\\n padding:10px 15px 10px 15px !important; /*top, right, bottom, left*/\\r\\n }\\r\\n .el-checkbox.hydroware-checkbox {\\r\\n margin-left: 0px!important;\\r\\n color:black!important;\\r\\n }\\r\\n .hydroware-container-body .el-form-item {\\r\\n margin-bottom: 0px;\\r\\n }\\r\\n .el-form-item .el-form-item.is-error {\\r\\n margin-bottom:25px!important;\\r\\n }\\r\\n\\r\\n/* FOOF - FG - SUCCESS AND FAILURE (CUSTOM CHECKBOXES) */\\r\\n.hydroware-success-failure-buttons {\\r\\n width: 80px;\\r\\n}\\r\\n.el-button.hydroware-checkbox-button {\\r\\n background-color:white!important;\\r\\n padding: 0px;\\r\\n border: 0px;\\r\\n font-size: 26px;\\r\\n}\\r\\n.hydroware-checkbox-button .hydroware-icon-success {\\r\\n color:green!important;\\r\\n}\\r\\n.hydroware-checkbox-button .hydroware-icon-fail {\\r\\n color:red!important;\\r\\n}\\r\\n.hydroware-checkbox-button .hydroware-icon-notChosen {\\r\\n color:gray!important;\\r\\n}\\r\\n/*******************************************************************/\\r\\n/*CSS below is for header above the tables (i.e. add next to limit)*/\\r\\n.hydroware-table .VueTables__limit .hydroware-add-button {\\r\\n margin-left: 5px;\\r\\n}\\r\\n.hydroware-table .VueTables__search-field {\\r\\n margin-right: 5px;\\r\\n display:inline;\\r\\n}\\r\\n\\r\\n.hydroware-table .VueTables__search-field input { /*June 17 2019*/\\r\\n display: inline;\\r\\n width:inherit;\\r\\n}\\r\\n\\r\\n.hydroware-table .VueTables__limit-field {\\r\\n display:inline;\\r\\n}\\r\\n.hydroware-table .VueTables__search-field label{\\r\\n display:none;\\r\\n}\\r\\n.hydroware-table .VueTables__limit-field label {\\r\\n display:inline;\\r\\n margin-left: 5px;\\r\\n margin-right: 5px;\\r\\n}\\r\\n.hydroware-table .VueTables__limit-field select {\\r\\n display:inline;\\r\\n width:inherit;\\r\\n}\\r\\n\\r\\n/*FG - FOOF - TIMEPICKER*/\\r\\n.el-scrollbar__wrap {\\r\\n margin-right:0px!important; /*SHOW THE OLD FASHIONED WIDE SCROLLER*/\\r\\n }\\r\\n.el-scrollbar__bar {\\r\\n display:none; /*DON'T SHOW THE SKINNY SCROLLER*/\\r\\n}\\r\\n.el-time-spinner__list {\\r\\n margin-top: -10px!important; /*adjust the displayed hours and minutes up to align with highlighting*/\\r\\n}\\r\\n.el-time-panel__content::before {\\r\\n margin-left:0px;\\r\\n}\\r\\n\\r\\n.inner_title_buttons button {\\r\\n background-color: #4DB3FF;\\r\\n border-color: #4DB3FF;\\r\\n color:white;\\r\\n}\\r\\n\\r\\n/*Screen size specific CSS*/\\r\\n/* Extra small devices (portrait phones, less than 576px)*/\\r\\n@media (min-width: 575.98px) { \\r\\n .inner_title_buttons {\\r\\n float: right;\\r\\n }\\r\\n .hydrowareChecklistText {\\r\\n display:table-row; \\r\\n width:100%;\\r\\n position:relative;\\r\\n top:-5px;\\r\\n }\\r\\n}\\r\\n\\r\\n/* Small devices (landscape phones, less than 768px)*/\\r\\n@media (min-width: 767.98px) { \\r\\n \\r\\n}\\r\\n\\r\\n/* Medium devices (tablets, less than 992px)*/\\r\\n@media (min-width: 991.98px) { \\r\\n .inner_title_buttons {\\r\\n float: right;\\r\\n }\\r\\n .hydrowareChecklistText {\\r\\n display:table-cell; \\r\\n }\\r\\n}\\r\\n\\r\\n/* Large devices (desktops, less than 1200px)*/\\r\\n@media (min-width: 1199.98px) { \\r\\n}\\r\\n\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 518 */\n/***/ (function(module, exports, __webpack_require__) {\n\nexports = module.exports = __webpack_require__(11)(false);\n// imports\n\n\n// module\nexports.push([module.i, \".x_title h2,\\ntable.tile_info td p {\\n white-space: nowrap;\\n text-overflow: ellipsis\\n}\\n\\n.site_title,\\n.x_title h2,\\ntable.tile_info td p {\\n text-overflow: ellipsis\\n}\\n\\n.detail a,\\n.expand,\\n.jqstooltip,\\n.paging_full_numbers a:hover,\\n.site_title:focus,\\n.site_title:hover,\\na,\\na:focus,\\na:hover {\\n text-decoration: none\\n}\\n\\n.byline,\\n.main_menu .fa {\\n -webkit-font-smoothing: antialiased\\n}\\n\\n.daterangepicker .ranges li {\\n color: #73879C\\n}\\n\\n.daterangepicker .ranges li.active,\\n.daterangepicker .ranges li:hover {\\n background: #536A7F;\\n border: 1px solid #536A7F;\\n color: #fff\\n}\\n\\n.daterangepicker .input-mini {\\n background-color: #eee;\\n border: 1px solid #ccc;\\n box-shadow: none!important\\n}\\n\\n.daterangepicker .input-mini.active {\\n border: 1px solid #ccc\\n}\\n\\n.daterangepicker select.ampmselect,\\n.daterangepicker select.hourselect,\\n.daterangepicker select.minuteselect,\\n.daterangepicker select.monthselect,\\n.daterangepicker select.secondselect,\\n.daterangepicker select.yearselect {\\n font-size: 12px;\\n padding: 1px;\\n margin: 0;\\n cursor: default;\\n height: 30px;\\n border: 1px solid #ADB2B5;\\n line-height: 30px;\\n border-radius: 0!important\\n}\\n\\n.daterangepicker select.monthselect {\\n margin-right: 2%\\n}\\n\\n.daterangepicker td.in-range {\\n background: #E4E7EA;\\n color: #73879C\\n}\\n\\n.daterangepicker td.active,\\n.daterangepicker td.active:hover {\\n background-color: #536A7F;\\n color: #fff\\n}\\n\\n.daterangepicker th.available:hover {\\n background: #eee;\\n color: #34495E\\n}\\n\\n.daterangepicker:after,\\n.daterangepicker:before {\\n content: none\\n}\\n\\n.daterangepicker .calendar.single {\\n margin: 0 0 4px\\n}\\n\\n.daterangepicker .calendar.single .calendar-table {\\n width: 224px;\\n padding: 0 0 4px!important\\n}\\n\\n.daterangepicker .calendar.single .calendar-table thead tr:first-child th {\\n padding: 8px 5px\\n}\\n\\n.daterangepicker .calendar.single .calendar-table thead th {\\n border-radius: 0\\n}\\n\\n.daterangepicker.picker_1 {\\n color: #fff;\\n background: #34495E\\n}\\n\\n.daterangepicker.picker_1 .calendar-table {\\n background: #34495E\\n}\\n\\n.daterangepicker.picker_1 .calendar-table thead tr {\\n background: #213345\\n}\\n\\n.daterangepicker.picker_1 .calendar-table thead tr:first-child {\\n background: #1ABB9C\\n}\\n\\n.daterangepicker.picker_1 .calendar-table td.off {\\n background: #34495E;\\n color: #999\\n}\\n\\n.daterangepicker.picker_1 .calendar-table td.available:hover {\\n color: #34495E\\n}\\n\\n.daterangepicker.picker_2 .calendar-table thead tr {\\n color: #1ABB9C\\n}\\n\\n.daterangepicker.picker_2 .calendar-table thead tr:first-child {\\n color: #73879C\\n}\\n\\n.daterangepicker.picker_3 .calendar-table thead tr:first-child {\\n color: #fff;\\n background: #1ABB9C\\n}\\n\\n.daterangepicker.picker_4 .calendar-table thead tr:first-child {\\n color: #fff;\\n background: #34495E\\n}\\n\\n.daterangepicker.picker_4 .calendar-table td,\\n.daterangepicker.picker_4 .calendar-table td.off {\\n background: #ECF0F1;\\n border: 1px solid #fff;\\n border-radius: 0\\n}\\n\\n.daterangepicker.picker_4 .calendar-table td.active {\\n background: #34495E\\n}\\n\\n.calendar-exibit .show-calendar {\\n float: none;\\n display: block;\\n position: relative;\\n background-color: #fff;\\n border: 1px solid #ccc;\\n margin-bottom: 20px;\\n border: 1px solid rgba(0, 0, 0, .15);\\n overflow: hidden\\n}\\n\\n.calendar-exibit .show-calendar .calendar {\\n margin: 0 0 4px\\n}\\n\\n.calendar-exibit .show-calendar.picker_1 {\\n background: #34495E\\n}\\n\\n.calendar-exibit .calendar-table {\\n padding: 0 0 4px\\n}\\n\\n.left_col {\\n\\n background: -webkit-linear-gradient(top, rgb(87, 167, 224) 0%, rgb(99, 188, 237) 100%);\\n\\n}\\n\\n.nav-sm .container.body .col-md-3.left_col {\\n min-height: 100%;\\n width: 70px;\\n padding: 0;\\n z-index: 9999;\\n position: absolute\\n }\\n\\n\\n.nav-sm .container.body .col-md-3.left_col.menu_fixed {\\n position: fixed;\\n height: 100%\\n}\\n\\n.nav-sm .container.body .col-md-3.left_col .mCSB_container,\\n.nav-sm .container.body .col-md-3.left_col .mCustomScrollBox {\\n overflow: visible\\n}\\n\\n.overflow_hidden,\\n.sidebar-widget,\\n.site_title,\\n.tile,\\n.weather-days .col-sm-2,\\n.x_title h2,\\ntable.tile_info td p {\\n overflow: hidden\\n}\\n\\n.nav-sm .hidden-small {\\n visibility: hidden\\n}\\n\\n.nav-sm .container.body .right_col {\\n padding: 10px 20px;\\n margin-left: 70px;\\n z-index: 2\\n}\\n\\n.nav-sm .navbar.nav_title {\\n width: 70px\\n}\\n\\n.nav-sm .navbar.nav_title a span {\\n display: none\\n}\\n\\n.nav-sm .navbar.nav_title a i {\\n font-size: 27px;\\n margin: 13px 0 0 3px\\n}\\n\\n.site_title i {\\n border: 1px solid #EAEAEA;\\n padding: 5px 6px;\\n border-radius: 50%\\n}\\n\\n.nav-sm .main_container .top_nav {\\n display: block;\\n margin-left: 70px;\\n z-index: 2\\n}\\n\\n.nav-sm .nav.side-menu li a {\\n text-align: center!important;\\n font-weight: 400;\\n font-size: 10px;\\n padding: 10px 5px\\n}\\n\\n.nav-sm .nav.child_menu li.active,\\n.nav-sm .nav.side-menu li.active-sm {\\n border-right: 5px solid #1ABB9C\\n}\\n\\n.nav-sm .nav.side-menu li.active-sm ul ul,\\n.nav-sm ul.nav.child_menu ul {\\n position: static;\\n width: 200px;\\n background: 0 0\\n}\\n\\n.nav-sm>.nav.side-menu>li.active-sm>a {\\n color: #1ABB9C!important\\n}\\n\\n.nav-sm .nav.side-menu li a i.toggle-up {\\n display: none!important\\n}\\n\\n.nav-sm .menu_section h3,\\n.nav-sm .profile,\\n.nav-sm span.fa {\\n display: none\\n}\\n\\n.nav-sm .nav.side-menu li a i {\\n font-size: 25px!important;\\n text-align: center;\\n width: 100%!important;\\n margin-bottom: 5px\\n}\\n\\n.nav-sm ul.nav.child_menu {\\n left: 100%;\\n position: absolute;\\n top: 0;\\n width: 210px;\\n z-index: 4000;\\n background: #3E5367;\\n display: none\\n}\\n\\n.nav-sm ul.nav.child_menu li {\\n padding: 0 10px\\n}\\n\\n.nav-sm ul.nav.child_menu li a {\\n text-align: left!important\\n}\\n\\n.menu_section {\\n margin-bottom: 35px\\n}\\n\\n.menu_section h3 {\\n padding-left: 15px;\\n color: #fff;\\n text-transform: uppercase;\\n letter-spacing: .5px;\\n font-weight: 700;\\n font-size: 11px;\\n margin-bottom: 0;\\n margin-top: 0;\\n text-shadow: 1px 1px #000\\n}\\n\\n.menu_section>ul {\\n margin-top: 10px\\n}\\n\\n.profile_pic {\\n width: 35%;\\n float: left\\n}\\n\\n.img-circle.profile_img {\\n width: 70%;\\n background: #fff;\\n margin-left: 15%;\\n z-index: 1000;\\n position: inherit;\\n margin-top: 20px;\\n border: 1px solid rgba(52, 73, 94, .44);\\n padding: 4px\\n}\\n\\n.profile_info {\\n padding: 25px 10px 10px;\\n width: 65%;\\n float: left\\n}\\n\\n.profile_info span {\\n font-size: 13px;\\n line-height: 30px;\\n color: #BAB8B8\\n}\\n\\n.profile_info h2 {\\n font-size: 14px;\\n color: #ECF0F1;\\n margin: 0;\\n font-weight: 300\\n}\\n\\n.profile.img_2 {\\n text-align: center\\n}\\n\\n.profile.img_2 .profile_pic {\\n width: 100%\\n}\\n\\n.profile.img_2 .profile_pic .img-circle.profile_img {\\n width: 50%;\\n margin: 10px 0 0\\n}\\n\\n.profile.img_2 .profile_info {\\n padding: 15px 10px 0;\\n width: 100%;\\n margin-bottom: 10px;\\n float: left\\n}\\n\\n.main_menu span.fa {\\n float: right;\\n text-align: center;\\n margin-top: 5px;\\n font-size: 10px;\\n min-width: inherit;\\n color: white\\n}\\n\\n.active a span.fa {\\n text-align: right!important;\\n margin-right: 4px\\n}\\n\\n.nav-sm .menu_section {\\n margin: 0\\n}\\n\\n.nav-sm li li span.fa {\\n display: inline-block\\n}\\n\\n.nav_menu {\\n float: left;\\n background: white;\\n border-bottom: 1px solid #D9DEE4;\\n margin-bottom: 10px;\\n width: 100%;\\n position: relative\\n}\\n\\n@media (min-width:480px) {\\n .nav_menu {\\n position: static\\n }\\n}\\n\\n.nav-md .container.body .col-md-3.left_col {\\n min-height: 100%;\\n width: 280px;\\n padding: 0;\\n position: absolute;\\n display: -ms-flexbox;\\n display: flex;\\n z-index: 1\\n}\\n\\n.nav-md .container.body .col-md-3.left_col.menu_fixed {\\n height: 100%;\\n position: fixed\\n}\\n\\nbody .container.body .right_col {\\n background-color: #F1F5F8 !important;\\n}\\n\\n.nav-md .container.body .right_col {\\n padding: 10px 20px 0;\\n margin-left: 281px\\n}\\n\\n.nav_title {\\n width: 230px;\\n float: left;\\n /* background: #2A3F54; */\\n border-radius: 0;\\n height: 57px\\n}\\n\\n@media (max-width:991px) {\\n .nav-md .container.body .right_col,\\n .nav-md .container.body .top_nav {\\n width: 100%;\\n margin: 0\\n }\\n .nav-md .container.body .col-md-3.left_col {\\n display: none\\n }\\n .nav-md .container.body .right_col {\\n width: 100%;\\n padding-right: 0\\n }\\n .right_col {\\n padding: 10px!important\\n }\\n}\\n\\n@media (max-width:1200px) {\\n .x_title h2 {\\n width: 62%;\\n font-size: 17px\\n }\\n .graph,\\n .tile {\\n zoom: 85%;\\n height: inherit\\n }\\n}\\n\\n@media (max-width:1270px) and (min-width:192px) {\\n .x_title h2 small {\\n display: none\\n }\\n}\\n\\n.left_col .mCSB_scrollTools {\\n width: 6px\\n}\\n\\n.left_col .mCSB_dragger {\\n max-height: 400px!important\\n}\\n\\n.blue {\\n color: #3498DB\\n}\\n\\n.purple {\\n color: #9B59B6\\n}\\n\\n.green {\\n color: #1ABB9C\\n}\\n\\n.aero {\\n color: #9CC2CB\\n}\\n\\n.red {\\n color: #E74C3C\\n}\\n\\n.dark {\\n color: #34495E\\n}\\n\\n.border-blue {\\n border-color: #3498DB!important\\n}\\n\\n.border-purple {\\n border-color: #9B59B6!important\\n}\\n\\n.border-green {\\n border-color: #1ABB9C!important\\n}\\n\\n.border-aero {\\n border-color: #9CC2CB!important\\n}\\n\\n.border-red {\\n border-color: #E74C3C!important\\n}\\n\\n.border-dark {\\n border-color: #34495E!important\\n}\\n\\n.bg-white {\\n background: #fff!important;\\n border: 1px solid #fff!important;\\n color: #73879C\\n}\\n\\n.bg-green {\\n background: #1ABB9C!important;\\n border: 1px solid #1ABB9C!important;\\n color: #fff\\n}\\n\\n.bg-red {\\n background: #E74C3C!important;\\n border: 1px solid #E74C3C!important;\\n color: #fff\\n}\\n\\n.bg-blue {\\n background: #3498DB!important;\\n border: 1px solid #3498DB!important;\\n color: #fff\\n}\\n\\n.bg-orange {\\n background: #F39C12!important;\\n border: 1px solid #F39C12!important;\\n color: #fff\\n}\\n\\n.bg-purple {\\n background: #9B59B6!important;\\n border: 1px solid #9B59B6!important;\\n color: #fff\\n}\\n\\n.bg-blue-sky {\\n background: #50C1CF!important;\\n border: 1px solid #50C1CF!important;\\n color: #fff\\n}\\n\\n.container {\\n width: 100%;\\n padding: 0\\n}\\n\\n.top_nav .nav .open>a,\\n.top_nav .nav .open>a:focus,\\n.top_nav .nav .open>a:hover,\\n.top_nav .nav>li>a:focus,\\n.top_nav .nav>li>a:hover {\\n background: #D9DEE4\\n}\\n\\nbody {\\n color: #73879C;\\n background: #2A3F54;\\n font-family: \\\"Helvetica Neue\\\", Roboto, Arial, \\\"Droid Sans\\\", sans-serif;\\n font-size: 13px;\\n font-weight: 400;\\n line-height: 1.471\\n}\\n\\n.main_container .top_nav {\\n display: block;\\n margin-left: 230px\\n}\\n\\n.no-padding {\\n padding: 0!important\\n}\\n\\n.page-title {\\n width: 100%;\\n height: 65px;\\n padding: 10px 0\\n}\\n\\n.page-title .title_left {\\n width: 45%;\\n float: left;\\n display: block\\n}\\n\\n.page-title .title_left h3 {\\n margin: 9px 0\\n}\\n\\n.page-title .title_right {\\n width: 55%;\\n float: left;\\n display: block\\n}\\n\\n.page-title .title_right .pull-right {\\n margin: 10px 0\\n}\\n\\n.fixed_height_320 {\\n height: 320px\\n}\\n\\n.fixed_height_390 {\\n height: 390px\\n}\\n\\n.fixed_height_200 {\\n height: 200px\\n}\\n\\n.progress-bar-dark {\\n background-color: #34495E!important\\n}\\n\\n.progress-bar-gray {\\n background-color: #BDC3C7!important\\n}\\n\\ntable.no-margin .progress {\\n margin-bottom: 0\\n}\\n\\n.main_content {\\n padding: 10px 20px\\n}\\n\\n.col-md-55 {\\n width: 50%;\\n margin-bottom: 10px\\n}\\n\\n@media (min-width:768px) {\\n .col-md-55 {\\n width: 20%\\n }\\n}\\n\\n@media (min-width:992px) {\\n .col-md-55 {\\n width: 20%\\n }\\n}\\n\\n@media (min-width:1200px) {\\n .col-md-55 {\\n width: 20%\\n }\\n}\\n\\n@media (min-width:192px) and (max-width:1270px) {\\n table.tile_info span.right {\\n margin-right: 7px;\\n float: left\\n }\\n}\\n\\n.center-margin {\\n margin: 0 auto;\\n float: none!important\\n}\\n\\n.col-lg-1,\\n.col-lg-10,\\n.col-lg-11,\\n.col-lg-12,\\n.col-lg-2,\\n.col-lg-3,\\n.col-lg-4,\\n.col-lg-5,\\n.col-lg-6,\\n.col-lg-7,\\n.col-lg-8,\\n.col-lg-9,\\n.col-md-1,\\n.col-md-10,\\n.col-md-11,\\n.col-md-12,\\n.col-md-2,\\n.col-md-3,\\n.col-md-4,\\n.col-md-5,\\n.col-md-55,\\n.col-md-6,\\n.col-md-7,\\n.col-md-8,\\n.col-md-9,\\n.col-sm-1,\\n.col-sm-10,\\n.col-sm-11,\\n.col-sm-12,\\n.col-sm-2,\\n.col-sm-3,\\n.col-sm-4,\\n.col-sm-5,\\n.col-sm-6,\\n.col-sm-7,\\n.col-sm-8,\\n.col-sm-9,\\n.col-xs-1,\\n.col-xs-10,\\n.col-xs-11,\\n.col-xs-12,\\n.col-xs-2,\\n.col-xs-3,\\n.col-xs-4,\\n.col-xs-5,\\n.col-xs-6,\\n.col-xs-7,\\n.col-xs-8,\\n.col-xs-9 {\\n position: relative;\\n min-height: 1px;\\n float: left;\\n padding-right: 10px;\\n padding-left: 10px\\n}\\n\\n.row {\\n margin-right: -10px;\\n margin-left: -10px\\n}\\n\\n.grid_slider .col-md-6 {\\n padding: 0 40px\\n}\\n\\n.h1,\\n.h2,\\n.h3,\\nh1,\\nh2,\\nh3 {\\n margin-top: 10px;\\n margin-bottom: 10px\\n}\\n\\na {\\n color: #5A738E\\n}\\n\\n.btn.active.focus,\\n.btn.active:focus,\\n.btn.focus,\\n.btn:active.focus,\\n.btn:active:focus,\\n.btn:focus,\\n:active,\\n:focus,\\n:visited,\\na,\\na:active,\\na:focus,\\na:visited {\\n outline: 0\\n}\\n\\n.navbar {\\n margin-bottom: 0\\n}\\n\\n.navbar-header {\\n background: #34495E\\n}\\n\\n.navbar-right {\\n margin-right: 0\\n}\\n\\n.top_nav .navbar-right {\\n margin: 0;\\n width: 70%;\\n float: right\\n}\\n\\n.top_nav .navbar-right li {\\n display: inline-block;\\n float: right;\\n position: static\\n}\\n\\n@media (min-width:480px) {\\n .top_nav .navbar-right li {\\n position: relative\\n }\\n}\\n\\n.top_nav .dropdown-menu li {\\n width: 100%\\n}\\n\\n.top_nav .dropdown-menu li a {\\n width: 100%;\\n padding: 12px 20px\\n}\\n\\n.top_nav li a i {\\n font-size: 15px\\n}\\n\\n.navbar-static-top {\\n position: fixed;\\n top: 0;\\n width: 100%\\n}\\n\\n.sidebar-header {\\n border-bottom: 0;\\n margin-top: 46px\\n}\\n\\n.sidebar-header:first-of-type {\\n margin-top: 0\\n}\\n\\n.nav.side-menu>li {\\n position: relative;\\n display: block;\\n cursor: pointer;\\n /* padding-bottom: 9px;*/\\n padding-bottom:inherit;\\n}\\n\\n.nav.side-menu>li>a {\\n margin-bottom: 10px;\\n}\\n\\n.nav.side-menu>li>a:hover {\\n color: #F2F5F7!important\\n}\\n\\n.nav.side-menu>li>a:hover,\\n.nav>li>a:focus {\\n text-decoration: none;\\n background: 0 0\\n}\\n\\n.nav.child_menu {\\n display: none\\n}\\n\\n.nav.child_menu li.active,\\n.nav.child_menu li:hover {\\n background-color: rgba(255, 255, 255, .06)\\n}\\n\\n.nav.child_menu li {\\n padding-left: 36px;\\n padding-bottom: 18px;\\n}\\n\\n.nav-md ul.nav.child_menu li:before {\\n background: #425668;\\n bottom: auto;\\n content: \\\"\\\";\\n height: 8px;\\n left: 23px;\\n margin-top: 15px;\\n position: absolute;\\n right: auto;\\n width: 8px;\\n z-index: 1;\\n border-radius: 50%\\n}\\n\\n.nav-md ul.nav.child_menu li:after {\\n border-left: 1px solid #425668;\\n bottom: 0;\\n content: \\\"\\\";\\n left: 27px;\\n position: absolute;\\n top: 0\\n}\\n\\n.nav.top_menu>li>a,\\n.nav>li>a {\\n position: relative;\\n display: block\\n}\\n\\n.nav.child_menu>li>a,\\n.nav.side-menu>li>a {\\n color: white;\\n font-weight: 500;\\n font-size: 1.2em;\\n}\\n\\n.nav li li.current-page a,\\n.nav.child_menu li li a.active,\\n.nav.child_menu li li a:hover {\\n color: #fff\\n}\\n\\n.nav.child_menu li li.active,\\n.nav.child_menu li li:hover {\\n background: 0 0\\n}\\n\\n.nav>li>a {\\n padding: 13px 15px 19px;\\n}\\n\\n.nav.side-menu>li.active,\\n.nav.side-menu>li.current-page {\\n border-right: 5px solid rgba(60, 231, 218, 0.57);\\n}\\n\\n.nav li.current-page {\\n background: rgba(255, 255, 255, .05)\\n}\\n\\n.nav li li li.current-page {\\n background: 0 0\\n}\\n\\n.navbar-brand,\\n.navbar-nav>li>a,\\n.site_title {\\n color: #ECF0F1;\\n margin-left: 0!important\\n}\\n\\n.nav.side-menu>li.active>a {\\n text-shadow: rgba(0, 0, 0, .25) 0 -1px 0;\\n /* background: linear-gradient(rgba(51, 69, 86, 0.1), rgba(44, 66, 87, 0.43)), rgba(42, 63, 84, 0.31); */\\n /* box-shadow: rgba(0, 0, 0, .25) 0 1px 0, inset rgba(255, 255, 255, .16) 0 1px 0; */\\n background: rgba(0, 0, 0, 0.25);\\n}\\n\\n.navbar-brand,\\n.navbar-nav>li>a {\\n font-weight: 500;\\n line-height: 32px\\n}\\n\\n.site_title {\\n font-weight: 400;\\n font-size: 22px;\\n width: 100%;\\n line-height: 59px;\\n /*display: block;*/\\n height: 55px;\\n margin: 0;\\n padding-left: 0px\\n}\\n\\n.nav.navbar-nav>li>a {\\n color: #515356 ;\\n}\\n\\n.nav.top_menu>li>a {\\n padding: 10px 15px;\\n color: #34495E!important\\n}\\n\\n.nav>li>a:focus,\\n.nav>li>a:hover {\\n background-color: transparent\\n}\\n\\n.top_search {\\n padding: 0\\n}\\n\\n.top_search .form-control {\\n box-shadow: inset 0 1px 0 rgba(0, 0, 0, .075);\\n border-radius: 25px 0 0 25px;\\n padding-left: 20px;\\n border: 1px solid rgba(221, 226, 232, .49)\\n}\\n\\n.top_search .form-control:focus {\\n border: 1px solid rgba(221, 226, 232, .49);\\n border-right: 0\\n}\\n\\n.top_search .input-group-btn button {\\n border-radius: 0 25px 25px 0;\\n border: 1px solid rgba(221, 226, 232, .49);\\n border-left: 0;\\n box-shadow: inset 0 1px 1px rgba(0, 0, 0, .075);\\n color: #93A2B2;\\n margin-bottom: 0!important\\n}\\n\\n.tiles,\\n.top_tiles {\\n margin-bottom: 0\\n}\\n\\n.toggle {\\n float: left;\\n margin: 0;\\n padding-top: 16px;\\n width: 70px\\n}\\n\\n.toggle a {\\n padding: 15px 15px 0;\\n margin: 0;\\n cursor: pointer\\n}\\n\\n.toggle a i {\\n font-size: 26px\\n}\\n\\n.nav.child_menu>li>a {\\n color: rgb(255, 255, 255);\\n font-size: 15px;\\n padding: 9px;\\n}\\n\\n.panel_toolbox {\\n float: right;\\n min-width: 70px\\n}\\n\\n.panel_toolbox>li {\\n float: left;\\n cursor: pointer\\n}\\n\\n.panel_toolbox>li>a {\\n padding: 5px;\\n color: #C5C7CB;\\n font-size: 14px\\n}\\n\\n.panel_toolbox>li>a:hover {\\n background: #F5F7FA\\n}\\n\\n.line_30 {\\n line-height: 30px\\n}\\n\\n.main_menu_side {\\n padding: 0\\n}\\n\\n.bs-docs-sidebar .nav>li>a {\\n display: block;\\n padding: 4px 6px\\n}\\n\\nfooter {\\n background: #fff;\\n padding: 15px 20px;\\n display: block\\n}\\n\\n.nav-sm footer {\\n margin-left: 70px\\n}\\n\\n.footer_fixed footer {\\n position: fixed;\\n left: 0;\\n bottom: 0;\\n width: 100%\\n}\\n\\n.degrees:after,\\n.x_content,\\n.x_panel {\\n position: relative\\n}\\n\\n@media (min-width:768px) {\\n .footer_fixed .nav-sm footer,\\n .footer_fixed footer {\\n margin-left: 0\\n }\\n}\\n\\n.tile-stats.sparkline {\\n padding: 10px;\\n text-align: center\\n}\\n\\n.jqstooltip {\\n background: #34495E!important;\\n width: 30px!important;\\n height: 22px!important\\n}\\n\\n.tooltip {\\n display: block!important\\n}\\n\\n.tiles {\\n border-top: 1px solid #ccc;\\n margin-top: 15px;\\n padding-top: 5px\\n}\\n\\n.top_tiles .tile h2 {\\n font-size: 30px;\\n line-height: 30px;\\n margin: 3px 0 7px;\\n font-weight: 700\\n}\\n\\narticle.media {\\n width: 100%\\n}\\n\\n*,\\n:after,\\n:before {\\n box-sizing: border-box\\n}\\n\\n#integration-list {\\n width: 100%;\\n margin: 0 auto;\\n display: table\\n}\\n\\n#integration-list ul {\\n padding: 0;\\n margin: 20px 0;\\n color: #555\\n}\\n\\n#integration-list ul>li {\\n list-style: none;\\n border-top: 1px solid #ddd;\\n display: block;\\n padding: 15px;\\n overflow: hidden\\n}\\n\\n#integration-list ul:last-child {\\n border-bottom: 1px solid #ddd\\n}\\n\\n#integration-list ul>li:hover {\\n background: #efefef\\n}\\n\\n.expand {\\n display: block;\\n color: #555;\\n cursor: pointer\\n}\\n\\n.expand h2 {\\n width: 85%;\\n float: left\\n}\\n\\nh2 {\\n font-size: 18px;\\n font-weight: 400\\n}\\n\\n#left,\\n#right {\\n display: table\\n}\\n\\n#sup {\\n display: table-cell;\\n vertical-align: middle;\\n width: 80%\\n}\\n\\n.detail a {\\n color: #C0392B;\\n border: 1px solid #C0392B;\\n padding: 6px 10px 5px;\\n font-size: 13px;\\n margin-right: 7px\\n}\\n\\n.detail {\\n margin: 10px 0;\\n display: none;\\n line-height: 22px;\\n height: 150px\\n}\\n\\n.detail span {\\n margin: 0\\n}\\n\\n.right-arrow {\\n width: 10px;\\n float: right;\\n font-weight: 700;\\n font-size: 20px\\n}\\n\\n.accordion .panel {\\n margin-bottom: 5px;\\n border-radius: 0;\\n border-bottom: 1px solid #efefef\\n}\\n\\n.x_panel,\\n.x_title {\\n margin-bottom: 10px\\n}\\n\\n.accordion .panel-heading {\\n background: #F2F5F7;\\n padding: 13px;\\n width: 100%;\\n display: block\\n}\\n\\n.accordion .panel:hover {\\n background: #F2F5F7\\n}\\n\\n.x_panel {\\n width: 100%;\\n padding: 10px 17px;\\n display: inline-block;\\n background: #fff;\\n border: 1px solid #E6E9ED;\\n -webkit-column-break-inside: avoid;\\n -moz-column-break-inside: avoid;\\n column-break-inside: avoid;\\n opacity: 1;\\n transition: all .2s ease\\n}\\n\\n.x_title {\\n border-bottom: 1px solid rgba(230, 233, 237, 0.64);\\n padding: 1px 5px 6px\\n}\\n\\n.x_title .filter {\\n width: 40%;\\n float: right\\n}\\n\\n.x_content,\\ntable.tile td ul li a,\\ntable.tile_info {\\n width: 100%\\n}\\n\\n.x_title h2 {\\n margin: 5px 0 6px;\\n float: left;\\n display: block\\n}\\n\\n.x_title h2 small {\\n margin-left: 10px\\n}\\n\\n.x_title span {\\n color: #BDBDBD\\n}\\n/*************************************************************\\nFG - FOOF - After Cert - First Release - (2) \\nThe expand icon should not be displayed in some cases \\n(i.e on the activity calendar that displays on the dashboard\\n*************************************************************/\\n.foof_no_expand_icon {\\n /*see code in main.js to see how this is processed*/\\n}\\n/*************************************************************\\nFG - FOOF - After Cert - First Release - (5) \\nWhen looking at code to add confirm pop ups for deletes I found\\nthe dialog that already existed when deleting a certificates\\nagency. The text in that dialog had no space between the icon\\nand the text itself. I added the css below to force the text to \\nbe further away from the icon.\\n***************************************************************/\\n.el-message-box__message {\\n padding-left:50px!important;\\n }\\n.x_content {\\n padding: 0 5px 6px;\\n float: left;\\n clear: both;\\n margin-top: 5px\\n}\\n\\n.x_content h4 {\\n font-size: 16px;\\n font-weight: 500\\n}\\n\\nlegend {\\n padding-bottom: 7px\\n}\\n\\n.demo-placeholder {\\n height: 280px\\n}\\n\\n.profile_details:nth-child(3n) {\\n clear: both\\n}\\n\\n.profile_details .profile_view {\\n display: inline-block;\\n padding: 10px 0 0;\\n background: #fff\\n}\\n\\n.profile_details .profile_view .divider {\\n border-top: 1px solid #e5e5e5;\\n padding-top: 5px;\\n margin-top: 5px\\n}\\n\\n.profile_details .profile_view .ratings {\\n margin-bottom: 0;\\n text-align: left;\\n font-size: 16px\\n}\\n\\n.profile_details .profile_view .bottom {\\n background: #F2F5F7;\\n padding: 9px 0;\\n border-top: 1px solid #E6E9ED\\n}\\n\\n.profile_details .profile_view .left {\\n margin-top: 20px\\n}\\n\\n.profile_details .profile_view .left p {\\n margin-bottom: 3px\\n}\\n\\n.profile_details .profile_view .right {\\n margin-top: 0;\\n padding: 10px\\n}\\n\\n.profile_details .profile_view .img-circle {\\n border: 1px solid #E6E9ED;\\n padding: 2px\\n}\\n\\n.profile_details .profile_view h2 {\\n margin: 5px 0\\n}\\n\\n.profile_details .profile_view .brief {\\n margin: 0;\\n font-weight: 300\\n}\\n\\n.profile_details .profile_left {\\n background: #fff\\n}\\n\\n.pagination.pagination-split li {\\n display: inline-block;\\n margin-right: 3px\\n}\\n\\n.pagination.pagination-split li a {\\n border-radius: 4px;\\n color: #768399;\\n -moz-border-radius: 4px;\\n -webkit-border-radius: 4px\\n}\\n\\ntable.tile h3,\\ntable.tile h4,\\ntable.tile span {\\n font-weight: 700;\\n vertical-align: middle!important\\n}\\n\\ntable.tile td,\\ntable.tile th {\\n text-align: center\\n}\\n\\ntable.tile th {\\n border-bottom: 1px solid #E6ECEE\\n}\\n\\ntable.tile td {\\n padding: 5px 0\\n}\\n\\ntable.tile td ul {\\n text-align: left;\\n padding-left: 0\\n}\\n\\ntable.tile td ul li {\\n list-style: none;\\n width: 100%\\n}\\n\\ntable.tile td ul li a big {\\n right: 0;\\n float: right;\\n margin-right: 13px\\n}\\n\\ntable.tile_info td {\\n text-align: left;\\n padding: 1px;\\n font-size: 15px\\n}\\n\\ntable.tile_info td p {\\n margin: 0;\\n line-height: 28px\\n}\\n\\ntable.tile_info td i {\\n margin-right: 8px;\\n font-size: 17px;\\n float: left;\\n width: 18px;\\n line-height: 28px\\n}\\n\\ntable.tile_info td:first-child {\\n width: 83%\\n}\\n\\ntd span {\\n line-height: 28px\\n}\\n\\n.error-number {\\n font-size: 90px;\\n line-height: 90px;\\n margin: 20px 0\\n}\\n\\n.col-middle {\\n margin-top: 5%\\n}\\n\\n.mid_center {\\n width: 370px;\\n margin: 0 auto;\\n text-align: center;\\n padding: 10px 20px\\n}\\n\\nh3.degrees {\\n font-size: 22px;\\n font-weight: 400;\\n text-align: center\\n}\\n\\n.degrees:after {\\n content: \\\"o\\\";\\n top: -12px;\\n font-size: 13px;\\n font-weight: 300\\n}\\n\\n.daily-weather .day {\\n font-size: 14px;\\n border-top: 2px solid rgba(115, 135, 156, .36);\\n text-align: center;\\n border-bottom: 2px solid rgba(115, 135, 156, .36);\\n padding: 5px 0\\n}\\n\\n.weather-days .col-sm-2 {\\n width: 16.66666667%\\n}\\n\\n.weather .row {\\n margin-bottom: 0\\n}\\n\\n.bulk-actions {\\n display: none\\n}\\n\\ntable.countries_list {\\n width: 100%\\n}\\n\\ntable.countries_list td {\\n padding: 0 10px;\\n line-height: 30px;\\n border-top: 1px solid #eee\\n}\\n\\n.dataTables_paginate a {\\n padding: 6px 9px!important;\\n background: #ddd!important;\\n border-color: #ddd!important\\n}\\n\\n.paging_full_numbers a.paginate_active {\\n background-color: rgba(38, 185, 154, .59)!important;\\n border-color: rgba(38, 185, 154, .59)!important\\n}\\n\\na.DTTT_button,\\nbutton.DTTT_button,\\ndiv.DTTT_button {\\n border: 1px solid #E7E7E7!important;\\n background: #E7E7E7!important;\\n box-shadow: none!important\\n}\\n\\ntable.jambo_table {\\n border: 1px solid rgba(221, 221, 221, .78)\\n}\\n\\ntable.jambo_table thead {\\n background: rgba(52, 73, 94, .94);\\n color: #ECF0F1\\n}\\n\\ntable.jambo_table tbody tr:hover td {\\n background: rgba(38, 185, 154, .07);\\n border-top: 1px solid rgba(38, 185, 154, .11);\\n border-bottom: 1px solid rgba(38, 185, 154, .11)\\n}\\n\\ntable.jambo_table tbody tr.selected {\\n background: rgba(38, 185, 154, .16)\\n}\\n\\ntable.jambo_table tbody tr.selected td {\\n border-top: 1px solid rgba(38, 185, 154, .4);\\n border-bottom: 1px solid rgba(38, 185, 154, .4)\\n}\\n\\n.dataTables_wrapper {\\n position: relative;\\n clear: both;\\n zoom: 1\\n}\\n\\n.dataTables_processing {\\n position: absolute;\\n top: 50%;\\n left: 50%;\\n width: 250px;\\n height: 30px;\\n margin-left: -125px;\\n margin-top: -15px;\\n padding: 14px 0 2px;\\n border: 1px solid #ddd;\\n text-align: center;\\n color: #999;\\n font-size: 14px;\\n background-color: #fff\\n}\\n\\ntd.details,\\ntd.group {\\n background-color: #d1cfd0\\n}\\n\\n.dataTables_length {\\n width: 40%;\\n float: left\\n}\\n\\n.dataTables_filter {\\n width: 50%;\\n float: right;\\n text-align: right\\n}\\n\\n.dataTables_info {\\n width: 60%;\\n float: left\\n}\\n\\n.dataTables_paginate {\\n float: right;\\n text-align: right\\n}\\n\\n.dataTables_empty,\\ntable.display td.center {\\n text-align: center\\n}\\n\\ntable.dataTable td.focus,\\ntable.dataTable th.focus {\\n outline: #1ABB9C solid 2px!important;\\n outline-offset: -1px\\n}\\n\\n.paging_full_numbers a:active,\\ntable.display thead td:active,\\ntable.display thead th:active {\\n outline: 0\\n}\\n\\ntable.display {\\n margin: 0 auto;\\n clear: both;\\n width: 100%\\n}\\n\\ntable.display thead th {\\n padding: 8px 18px 8px 10px;\\n border-bottom: 1px solid #000;\\n font-weight: 700;\\n cursor: pointer\\n}\\n\\ntable.display tfoot th {\\n padding: 3px 18px 3px 10px;\\n border-top: 1px solid #000;\\n font-weight: 700\\n}\\n\\ntable.display tr.heading2 td {\\n border-bottom: 1px solid #aaa\\n}\\n\\ntable.display td {\\n padding: 3px 10px\\n}\\n\\n.dataTables_scroll {\\n clear: both\\n}\\n\\n.dataTables_scrollBody {\\n -webkit-overflow-scrolling: touch\\n}\\n\\n.top .dataTables_info {\\n float: none\\n}\\n\\n.clear {\\n clear: both\\n}\\n\\ntfoot input {\\n margin: .5em 0;\\n width: 100%;\\n color: #444\\n}\\n\\ntfoot input.search_init {\\n color: #999\\n}\\n\\ntd.group {\\n border-bottom: 2px solid #A19B9E;\\n border-top: 2px solid #A19B9E\\n}\\n\\ntd.details {\\n border: 2px solid #A19B9E\\n}\\n\\n.example_alt_pagination div.dataTables_info {\\n width: 40%\\n}\\n\\n.paging_full_numbers {\\n width: 400px;\\n height: 22px;\\n line-height: 22px\\n}\\n\\n.paging_full_numbers a.paginate_active,\\n.paging_full_numbers a.paginate_button {\\n border: 1px solid #aaa;\\n -webkit-border-radius: 5px;\\n -moz-border-radius: 5px;\\n padding: 2px 5px;\\n margin: 0 3px;\\n cursor: pointer\\n}\\n\\n.paging_full_numbers a.paginate_button {\\n background-color: #ddd\\n}\\n\\n.paging_full_numbers a.paginate_button:hover {\\n background-color: #ccc;\\n text-decoration: none!important\\n}\\n\\n.login_content .btn-default:hover,\\n.login_content a,\\n.tagsinput span.tag a,\\n.tile-stats>.dash-box-footer,\\n.tile:hover,\\n.view a.info,\\nspan.tag {\\n text-decoration: none\\n}\\n\\ntable.display tr.even.row_selected td {\\n background-color: #B0BED9\\n}\\n\\ntable.display tr.odd.row_selected td {\\n background-color: #9FAFD1\\n}\\n\\ndiv.box {\\n height: 100px;\\n padding: 10px;\\n overflow: auto;\\n border: 1px solid #8080FF;\\n background-color: #E5E5FF\\n}\\n\\nul.msg_list li {\\n background: #f7f7f7;\\n padding: 5px;\\n display: -ms-flexbox;\\n display: flex;\\n margin: 6px 6px 0;\\n width: 96%!important\\n}\\n\\nul.msg_list li:last-child {\\n margin-bottom: 6px;\\n padding: 10px\\n}\\n\\nul.msg_list li a {\\n padding: 3px 5px!important\\n}\\n\\nul.msg_list li a .image img {\\n border-radius: 2px;\\n -webkit-border-radius: 2px;\\n float: left;\\n margin-right: 10px;\\n width: 11%\\n}\\n\\nul.msg_list li a .time {\\n font-size: 11px;\\n font-style: italic;\\n font-weight: 700;\\n position: absolute;\\n right: 35px\\n}\\n\\nul.msg_list li a .message {\\n display: block!important;\\n font-size: 11px\\n}\\n\\n.dropdown-menu.msg_list span {\\n white-space: normal\\n}\\n\\n.tile_count .tile_stats_count,\\nul.quick-list li {\\n white-space: nowrap;\\n overflow: hidden;\\n text-overflow: ellipsis\\n}\\n\\n.dropdown-menu {\\n box-shadow: none;\\n display: none;\\n float: left;\\n font-size: 12px;\\n left: 0;\\n list-style: none;\\n padding: 0;\\n position: absolute;\\n text-shadow: none;\\n top: 100%;\\n z-index: 9998;\\n border: 1px solid #D9DEE4;\\n border-top-left-radius: 0;\\n border-top-right-radius: 0\\n}\\n\\n.dropdown-menu>li>a {\\n color: #5A738E\\n}\\n\\n.navbar-nav .open .dropdown-menu {\\n position: absolute;\\n background: #fff;\\n margin-top: 0;\\n border: 1px solid #D9DEE4;\\n -webkit-box-shadow: none;\\n right: 0;\\n left: auto;\\n width: 220px\\n}\\n\\n.navbar-nav .open .dropdown-menu.msg_list {\\n width: 300px\\n}\\n\\n.info-number .badge {\\n font-size: 10px;\\n font-weight: 400;\\n line-height: 13px;\\n padding: 2px 6px;\\n position: absolute;\\n right: 2px;\\n top: 8px\\n}\\n\\nul.to_do {\\n padding: 0\\n}\\n\\nul.to_do li {\\n background: #f3f3f3;\\n border-radius: 3px;\\n position: relative;\\n padding: 7px;\\n margin-bottom: 5px;\\n list-style: none\\n}\\n\\nul.to_do p {\\n margin: 0\\n}\\n\\n.dashboard-widget {\\n background: #f6f6f6;\\n border-top: 5px solid #79C3DF;\\n border-radius: 3px;\\n padding: 5px 10px 10px\\n}\\n\\n.dashboard-widget .dashboard-widget-title {\\n font-weight: 400;\\n border-bottom: 1px solid #c1cdcd;\\n margin: 0 0 10px;\\n padding-bottom: 5px;\\n padding-left: 40px;\\n line-height: 30px\\n}\\n\\n.dashboard-widget .dashboard-widget-title i {\\n font-size: 100%;\\n margin-left: -35px;\\n margin-right: 10px;\\n color: #33a1c9;\\n padding: 3px 6px;\\n border: 1px solid #abd9ea;\\n border-radius: 5px;\\n background: #fff\\n}\\n\\nul.quick-list {\\n width: 45%;\\n padding-left: 0;\\n display: inline-block\\n}\\n\\nul.quick-list li {\\n padding-left: 10px;\\n list-style: none;\\n margin: 0;\\n padding-bottom: 6px;\\n padding-top: 4px\\n}\\n\\nul.quick-list li i {\\n padding-right: 10px;\\n color: #757679\\n}\\n\\n.dashboard-widget-content {\\n padding-top: 9px\\n}\\n\\n.dashboard-widget-content .sidebar-widget {\\n width: 50%;\\n display: inline-block;\\n vertical-align: top;\\n background: #fff;\\n border: 1px solid #abd9ea;\\n border-radius: 5px;\\n text-align: center;\\n float: right;\\n padding: 2px;\\n margin-top: 10px\\n}\\n\\n.widget_summary {\\n width: 100%;\\n display: -ms-inline-flexbox;\\n display: inline-flex\\n}\\n\\n.widget_summary .w_left {\\n float: left;\\n text-align: left\\n}\\n\\n.widget_summary .w_center {\\n float: left\\n}\\n\\n.widget_summary .w_right {\\n float: left;\\n text-align: right\\n}\\n\\n.widget_summary .w_right span {\\n font-size: 20px\\n}\\n\\n.w_20 {\\n width: 20%\\n}\\n\\n.w_25 {\\n width: 25%\\n}\\n\\n.w_55 {\\n width: 55%\\n}\\n\\nh5.graph_title {\\n text-align: left;\\n margin-left: 10px\\n}\\n\\nh5.graph_title i {\\n margin-right: 10px;\\n font-size: 17px\\n}\\n\\nspan.right {\\n float: right;\\n font-size: 14px!important\\n}\\n\\n.tile_info a {\\n text-overflow: ellipsis\\n}\\n\\n.sidebar-footer {\\n bottom: 0;\\n clear: both;\\n display: block;\\n padding: 5px 0 0;\\n position: fixed;\\n width: 230px;\\n background: #2A3F54;\\n z-index: 999\\n}\\n\\n.sidebar-footer a {\\n padding: 7px 0 3px;\\n text-align: center;\\n width: 25%;\\n font-size: 17px;\\n display: block;\\n float: left;\\n background: #172D44;\\n cursor: pointer\\n}\\n\\n.sidebar-footer a:hover {\\n background: #425567\\n}\\n\\n.tile_count {\\n margin-bottom: 20px;\\n margin-top: 20px\\n}\\n\\n.tile_count .tile_stats_count {\\n border-bottom: 1px solid #D9DEE4;\\n padding: 0 10px 0 20px;\\n position: relative\\n}\\n\\n.tile_count .tile_stats_count:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: 0;\\n height: 65px;\\n border-left: 2px solid #ADB2B5;\\n margin-top: 10px\\n}\\n\\n@media (min-width:992px) {\\n footer {\\n margin-left: 230px\\n }\\n .tile_count .tile_stats_count {\\n margin-bottom: 10px;\\n border-bottom: 0;\\n padding-bottom: 10px\\n }\\n .tile_count .tile_stats_count:first-child:before {\\n border-left: 0\\n }\\n}\\n\\n.tile_count .tile_stats_count .count {\\n font-size: 30px;\\n line-height: 47px;\\n font-weight: 600\\n}\\n\\n@media (min-width:768px) {\\n .tile_count .tile_stats_count .count {\\n font-size: 40px\\n }\\n}\\n\\n@media (min-width:992px) and (max-width:1100px) {\\n .tile_count .tile_stats_count .count {\\n font-size: 30px\\n }\\n}\\n\\n.tile_count .tile_stats_count span {\\n font-size: 12px\\n}\\n\\n@media (min-width:768px) {\\n .tile_count .tile_stats_count span {\\n font-size: 13px\\n }\\n}\\n\\n.tile_count .tile_stats_count .count_bottom i {\\n width: 12px\\n}\\n\\n.portlet-light {\\n background: #fff;\\n padding: 7px 10px;\\n border-radius: 4px;\\n}\\n\\n.dashboard_graph .col-md-3,\\n.dashboard_graph .col-md-9 {\\n padding: 0\\n}\\n\\na.user-profile {\\n color: #5E6974!important\\n}\\n\\n.user-profile img {\\n width: 29px;\\n height: 29px;\\n border-radius: 50%;\\n margin-right: 10px\\n}\\n\\nul.top_profiles {\\n height: 330px;\\n width: 100%\\n}\\n\\nul.top_profiles li {\\n margin: 0;\\n padding: 3px 5px\\n}\\n\\nul.top_profiles li:nth-child(odd) {\\n background-color: #eee\\n}\\n\\n.media .profile_thumb {\\n border: 1px solid;\\n width: 50px;\\n height: 50px;\\n margin: 5px 10px 5px 0;\\n border-radius: 50%;\\n padding: 9px 12px\\n}\\n\\n.media .profile_thumb i {\\n font-size: 30px\\n}\\n\\n.media .date {\\n background: #ccc;\\n width: 52px;\\n margin-right: 10px;\\n border-radius: 10px;\\n padding: 5px\\n}\\n\\n.media .date .day,\\n.media .date .month {\\n margin: 0;\\n text-align: center;\\n color: #fff\\n}\\n\\n.media .date .day {\\n font-size: 27px;\\n line-height: 27px;\\n font-weight: 700\\n}\\n\\n.event .media-body a.title {\\n font-weight: 700\\n}\\n\\n.event .media-body p {\\n margin-bottom: 0\\n}\\n\\nh4.graph_title {\\n margin: 7px;\\n text-align: center\\n}\\n\\n.fontawesome-icon-list .fa-hover a:hover {\\n background-color: #ddd;\\n color: #fff;\\n text-decoration: none\\n}\\n\\n.fontawesome-icon-list .fa-hover a {\\n display: block;\\n line-height: 32px;\\n height: 32px;\\n padding-left: 10px;\\n border-radius: 4px\\n}\\n\\n.fontawesome-icon-list .fa-hover a:hover .fa {\\n font-size: 28px;\\n vertical-align: -6px\\n}\\n\\n.fontawesome-icon-list .fa-hover a .fa {\\n width: 32px;\\n font-size: 16px;\\n display: inline-block;\\n text-align: right;\\n margin-right: 10px\\n}\\n\\n.main_menu .fa {\\n width: 26px;\\n opacity: .99;\\n display: inline-block;\\n font-family: FontAwesome;\\n font-style: normal;\\n font-weight: 400;\\n font-size: 18px;\\n -moz-osx-font-smoothing: grayscale\\n}\\n\\n.tile-stats {\\n position: relative;\\n display: block;\\n margin-bottom: 12px;\\n border: 1px solid #E4E4E4;\\n -webkit-border-radius: 5px;\\n overflow: hidden;\\n padding-bottom: 5px;\\n -webkit-background-clip: padding-box;\\n -moz-border-radius: 5px;\\n -moz-background-clip: padding;\\n border-radius: 5px;\\n background: #FFF;\\n transition: all .3s ease-in-out\\n}\\n\\n.tile-stats:hover .icon i {\\n animation-name: transformAnimation;\\n animation-duration: .5s;\\n animation-iteration-count: 1;\\n color: rgba(58, 58, 58, .41);\\n animation-timing-function: ease;\\n animation-fill-mode: forwards;\\n -webkit-animation-name: transformAnimation;\\n -webkit-animation-duration: .5s;\\n -webkit-animation-iteration-count: 1;\\n -webkit-animation-timing-function: ease;\\n -webkit-animation-fill-mode: forwards;\\n -moz-animation-name: transformAnimation;\\n -moz-animation-duration: .5s;\\n -moz-animation-iteration-count: 1;\\n -moz-animation-timing-function: ease;\\n -moz-animation-fill-mode: forwards\\n}\\n\\n.tile-stats .icon {\\n width: 20px;\\n height: 20px;\\n color: #BAB8B8;\\n position: absolute;\\n right: 53px;\\n top: 22px;\\n z-index: 1\\n}\\n\\n.tile-stats .icon i {\\n margin: 0;\\n font-size: 60px;\\n line-height: 0;\\n vertical-align: bottom;\\n padding: 0\\n}\\n\\n.tile-stats .count {\\n font-size: 38px;\\n font-weight: 700;\\n line-height: 1.65857\\n}\\n\\n.tile-stats .count,\\n.tile-stats h3,\\n.tile-stats p {\\n position: relative;\\n margin: 0 0 0 10px;\\n z-index: 5;\\n padding: 0\\n}\\n\\n.tile-stats h3 {\\n color: #BAB8B8\\n}\\n\\n.tile-stats p {\\n margin-top: 5px;\\n font-size: 12px\\n}\\n\\n.tile-stats>.dash-box-footer {\\n position: relative;\\n text-align: center;\\n margin-top: 5px;\\n padding: 3px 0;\\n color: #fff;\\n color: rgba(255, 255, 255, .8);\\n display: block;\\n z-index: 10;\\n background: rgba(0, 0, 0, .1)\\n}\\n\\n.tile-stats>.dash-box-footer:hover {\\n color: #fff;\\n background: rgba(0, 0, 0, .15)\\n}\\n\\ntable.tile_info {\\n padding: 10px 15px\\n}\\n\\ntable.tile_info span.right {\\n margin-right: 0;\\n float: right;\\n position: absolute;\\n right: 4%\\n}\\n\\n.tile_header {\\n border-bottom: transparent;\\n padding: 7px 15px;\\n margin-bottom: 15px;\\n background: #E7E7E7\\n}\\n\\n.tile_head h4 {\\n margin-top: 0;\\n margin-bottom: 5px\\n}\\n\\n.tiles-bottom {\\n padding: 5px 10px;\\n margin-top: 10px;\\n background: rgba(194, 194, 194, .3);\\n text-align: left\\n}\\n\\na.star {\\n color: #428bca!important\\n}\\n\\n.mail_content {\\n background: #FFF;\\n border-radius: 4px;\\n margin-top: 20px;\\n min-height: 500px;\\n padding: 10px 11px;\\n width: 100%\\n}\\n\\n.list-btn-mail {\\n margin-bottom: 15px\\n}\\n\\n.list-btn-mail.active {\\n border-bottom: 1px solid #39B3D7;\\n padding: 0 0 14px\\n}\\n\\n.list-btn-mail>i {\\n float: left;\\n font-size: 18px;\\n font-style: normal;\\n width: 33px\\n}\\n\\n.list-btn-mail>.cn {\\n background: #39B3D7;\\n border-radius: 12px;\\n color: #FFF;\\n float: right;\\n font-style: normal;\\n padding: 0 5px\\n}\\n\\n.byline,\\n.view p {\\n font-style: italic\\n}\\n\\n.button-mail {\\n margin: 0 0 15px!important;\\n text-align: left;\\n width: 100%\\n}\\n\\n.btn,\\n.buttons,\\n.modal-footer .btn+.btn,\\nbutton {\\n margin-bottom: 5px;\\n margin-right: 5px\\n}\\n\\n.btn-group .btn,\\n.btn-group-vertical .btn {\\n margin-bottom: 0;\\n margin-right: 0\\n}\\n\\n.mail_list_column,\\n.mail_view {\\n border-left: 1px solid #DBDBDB\\n}\\n\\n.mail_list {\\n width: 100%;\\n border-bottom: 1px solid #DBDBDB;\\n margin-bottom: 2px;\\n display: inline-block\\n}\\n\\n.mail_list .left {\\n width: 5%;\\n float: left;\\n margin-right: 3%\\n}\\n\\n.mail_list .right {\\n width: 90%;\\n float: left\\n}\\n\\n.mail_list h3 {\\n font-size: 15px;\\n font-weight: 700;\\n margin: 0 0 6px\\n}\\n\\n.mail_list h3 small {\\n float: right;\\n color: #ADABAB;\\n font-size: 11px;\\n line-height: 20px\\n}\\n\\n.mail_list .badge {\\n padding: 3px 6px;\\n font-size: 8px;\\n background: #BAB7B7\\n}\\n\\n@media (max-width:767px) {\\n .mail_list {\\n margin-bottom: 5px;\\n display: inline-block\\n }\\n}\\n\\n.mail_heading h4 {\\n font-size: 18px;\\n border-bottom: 1px solid #ddd;\\n padding-bottom: 10px;\\n margin-top: 20px\\n}\\n\\n.attachment {\\n margin-top: 30px\\n}\\n\\n.attachment ul {\\n width: 100%;\\n list-style: none;\\n padding-left: 0;\\n display: inline-block;\\n margin-bottom: 30px\\n}\\n\\n.attachment ul li {\\n float: left;\\n width: 150px;\\n margin-right: 10px;\\n margin-bottom: 10px\\n}\\n\\n.attachment ul li img {\\n height: 150px;\\n border: 1px solid #ddd;\\n padding: 5px;\\n margin-bottom: 10px\\n}\\n\\n.attachment ul li span {\\n float: right\\n}\\n\\n.attachment .file-name {\\n float: left\\n}\\n\\n.attachment .links {\\n width: 100%;\\n display: inline-block\\n}\\n\\n.compose {\\n padding: 0;\\n position: fixed;\\n bottom: 0;\\n right: 0;\\n background: #fff;\\n border: 1px solid #D9DEE4;\\n border-right: 0;\\n border-bottom: 0;\\n border-top-left-radius: 5px;\\n z-index: 9999;\\n display: none\\n}\\n\\n.compose .compose-header {\\n padding: 5px;\\n background: #169F85;\\n color: #fff;\\n border-top-left-radius: 5px\\n}\\n\\n.compose .compose-header .close {\\n text-shadow: 0 1px 0 #fff;\\n line-height: .8\\n}\\n\\n.compose .compose-body .editor.btn-toolbar {\\n margin: 0\\n}\\n\\n.compose .compose-body .editor-wrapper {\\n height: 100%;\\n min-height: 50px;\\n max-height: 180px;\\n border-radius: 0;\\n border-left: none;\\n border-right: none;\\n overflow: auto\\n}\\n\\n.compose .compose-footer {\\n padding: 10px\\n}\\n\\n.editor.btn-toolbar {\\n zoom: 1;\\n background: #F7F7F7;\\n margin: 5px 2px;\\n padding: 3px 0;\\n border: 1px solid #EFEFEF\\n}\\n\\n.input-group {\\n margin-bottom: 10px\\n}\\n\\n.ln_solid {\\n border-top: 1px solid #e5e5e5;\\n color: #fff;\\n background-color: #fff;\\n height: 1px;\\n margin: 20px 0\\n}\\n\\nspan.section {\\n display: block;\\n width: 100%;\\n padding: 0;\\n margin-bottom: 20px;\\n font-size: 21px;\\n line-height: inherit;\\n color: #333;\\n border: 0;\\n border-bottom: 1px solid #e5e5e5\\n}\\n\\n.form-control {\\n border-radius: 0;\\n width: 100%\\n}\\n\\n.form-horizontal .control-label {\\n padding-top: 8px\\n}\\n\\n.form-control:focus {\\n border-color: #CCD0D7;\\n box-shadow: none!important\\n}\\n\\nlegend {\\n font-size: 18px;\\n color: inherit\\n}\\n\\n.form-horizontal .form-group {\\n margin-right: 0;\\n margin-left: 0\\n}\\n\\n.form-control-feedback {\\n margin-top: 8px;\\n height: 23px;\\n color: #bbb;\\n line-height: 24px;\\n font-size: 15px\\n}\\n\\n.form-control-feedback.left {\\n border-right: 1px solid #ccc;\\n left: 13px\\n}\\n\\n.form-control-feedback.right {\\n border-left: 1px solid #ccc;\\n right: 13px\\n}\\n\\n.form-control.has-feedback-left {\\n padding-left: 45px\\n}\\n\\n.form-control.has-feedback-right {\\n padding-right: 45px\\n}\\n\\n.form-group {\\n margin-bottom: 10px\\n}\\n\\n.validate {\\n margin-top: 10px\\n}\\n\\n.invalid-form-error-message {\\n margin-top: 10px;\\n padding: 5px\\n}\\n\\n.invalid-form-error-message.filled {\\n border-left: 2px solid #E74C3C\\n}\\n\\np.parsley-success {\\n color: #468847;\\n background-color: #DFF0D8;\\n border: 1px solid #D6E9C6\\n}\\n\\np.parsley-error {\\n color: #B94A48;\\n background-color: #F2DEDE;\\n border: 1px solid #EED3D7\\n}\\n\\nul.parsley-errors-list {\\n list-style: none;\\n color: #E74C3C;\\n padding-left: 0\\n}\\n\\ninput.parsley-error,\\nselect.parsley-error,\\ntextarea.parsley-error {\\n background: #FAEDEC;\\n border: 1px solid #E85445\\n}\\n\\n.btn-group .parsley-errors-list {\\n display: none\\n}\\n\\n.bad input,\\n.bad select,\\n.bad textarea {\\n border: 1px solid #CE5454;\\n box-shadow: 0 0 4px -2px #CE5454;\\n position: relative;\\n left: 0;\\n -moz-animation: .7s 1 shake linear;\\n -webkit-animation: .7s 1 shake linear\\n}\\n\\n.item input,\\n.item textarea {\\n transition: .42s\\n}\\n\\n.item .alert {\\n float: left;\\n margin: 0 0 0 20px;\\n padding: 3px 10px;\\n color: #FFF;\\n border-radius: 3px 4px 4px 3px;\\n background-color: #CE5454;\\n max-width: 170px;\\n white-space: pre;\\n position: relative;\\n left: -15px;\\n opacity: 0;\\n z-index: 1;\\n transition: .15s ease-out\\n}\\n\\n.item .alert::after {\\n content: '';\\n display: block;\\n height: 0;\\n width: 0;\\n border-color: transparent #CE5454 transparent transparent;\\n border-style: solid;\\n border-width: 11px 7px;\\n position: absolute;\\n left: -13px;\\n top: 1px\\n}\\n\\n.item.bad .alert {\\n left: 0;\\n opacity: 1\\n}\\n\\n.inl-bl {\\n display: inline-block\\n}\\n\\n.well .markup {\\n background: #fff;\\n color: #777;\\n position: relative;\\n padding: 45px 15px 15px;\\n margin: 15px 0 0;\\n border-radius: 0 0 4px 4px;\\n box-shadow: none\\n}\\n\\n.well .markup::after {\\n content: \\\"Example\\\";\\n position: absolute;\\n top: 15px;\\n left: 15px;\\n font-size: 12px;\\n font-weight: 700;\\n color: #bbb;\\n text-transform: uppercase;\\n letter-spacing: 1px\\n}\\n\\n.autocomplete-suggestions {\\n border: 1px solid #e4e4e4;\\n background: #F4F4F4;\\n cursor: default;\\n overflow: auto\\n}\\n\\n.autocomplete-suggestion {\\n padding: 2px 5px;\\n font-size: 1.2em;\\n white-space: nowrap;\\n overflow: hidden\\n}\\n\\n.autocomplete-selected {\\n background: #f0f0f0\\n}\\n\\n.autocomplete-suggestions strong {\\n color: #39f;\\n font-weight: bolder\\n}\\n\\n.btn {\\n border-radius: 3px\\n}\\n\\na.btn-danger,\\na.btn-primary,\\na.btn-success,\\na.btn-warning {\\n color: #fff\\n}\\n\\n.btn-success {\\n background: #26B99A;\\n border: 1px solid #169F85\\n}\\n\\n.btn-success.active,\\n.btn-success:active,\\n.btn-success:focus,\\n.btn-success:hover,\\n.open .dropdown-toggle.btn-success {\\n background: #169F85\\n}\\n\\n.btn-dark {\\n color: #E9EDEF;\\n background-color: #4B5F71;\\n border-color: #364B5F\\n}\\n\\n.btn-dark.active,\\n.btn-dark:active,\\n.btn-dark:focus,\\n.btn-dark:hover,\\n.open .dropdown-toggle.btn-dark {\\n color: #FFF;\\n background-color: #394D5F;\\n border-color: #394D5F\\n}\\n\\n.btn-round {\\n border-radius: 30px\\n}\\n\\n.btn.btn-app {\\n position: relative;\\n padding: 15px 5px;\\n margin: 0 0 10px 10px;\\n min-width: 80px;\\n height: 60px;\\n box-shadow: none;\\n border-radius: 0;\\n text-align: center;\\n color: #666;\\n border: 1px solid #ddd;\\n background-color: #fafafa;\\n font-size: 12px\\n}\\n\\n.btn.btn-app>.fa,\\n.btn.btn-app>.glyphicon,\\n.btn.btn-app>.ion {\\n font-size: 20px;\\n display: block\\n}\\n\\n.btn.btn-app:hover {\\n background: #f4f4f4;\\n color: #444;\\n border-color: #aaa\\n}\\n\\n.btn.btn-app:active,\\n.btn.btn-app:focus {\\n box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125)\\n}\\n\\n.btn.btn-app>.badge {\\n position: absolute;\\n top: -3px;\\n right: -10px;\\n font-size: 10px;\\n font-weight: 400\\n}\\n\\ntextarea {\\n padding: 10px;\\n vertical-align: top;\\n width: 200px\\n}\\n\\ntextarea:focus {\\n outline-style: solid;\\n outline-width: 2px\\n}\\n\\n.btn_ {\\n display: inline-block;\\n padding: 3px 9px;\\n margin-bottom: 0;\\n font-size: 14px;\\n line-height: 20px;\\n text-align: center;\\n vertical-align: middle;\\n cursor: pointer;\\n color: #333;\\n text-shadow: 0 1px 1px rgba(255, 255, 255, .75);\\n background-color: #f5f5f5;\\n background-image: linear-gradient(to bottom, #fff, #e6e6e6);\\n background-repeat: repeat-x;\\n filter: progid: DXImageTransform.Microsoft.gradient(enabled=false);\\n border: 1px solid #ccc;\\n border-bottom-color: #b3b3b3;\\n border-radius: 4px;\\n box-shadow: inset 0 1px 0 rgba(255, 255, 255, .2), 0 1px 2px rgba(0, 0, 0, .05)\\n}\\n\\n.bs-glyphicons {\\n margin: 0 -10px 20px;\\n overflow: hidden\\n}\\n\\n.bs-glyphicons-list {\\n padding-left: 0;\\n list-style: none\\n}\\n\\n.bs-glyphicons li {\\n float: left;\\n width: 25%;\\n height: 115px;\\n padding: 10px;\\n font-size: 10px;\\n line-height: 1.4;\\n text-align: center;\\n background-color: #f9f9f9;\\n border: 1px solid #fff\\n}\\n\\n.bs-glyphicons .glyphicon {\\n margin-top: 5px;\\n margin-bottom: 10px;\\n font-size: 24px\\n}\\n\\n.bs-glyphicons .glyphicon-class {\\n display: block;\\n text-align: center;\\n word-wrap: break-word\\n}\\n\\n.bs-glyphicons li:hover {\\n color: #fff;\\n background-color: #1ABB9C\\n}\\n\\n@media (min-width:768px) {\\n .bs-glyphicons {\\n margin-right: 0;\\n margin-left: 0\\n }\\n .bs-glyphicons li {\\n width: 12.5%;\\n font-size: 12px\\n }\\n}\\n\\n.tagsinput {\\n border: 1px solid #CCC;\\n background: #FFF;\\n padding: 6px 6px 0;\\n width: 300px;\\n overflow-y: auto\\n}\\n\\nspan.tag {\\n -moz-border-radius: 2px;\\n -webkit-border-radius: 2px;\\n display: block;\\n float: left;\\n padding: 5px 9px;\\n background: #1ABB9C;\\n color: #F1F6F7;\\n margin-right: 5px;\\n font-weight: 500;\\n margin-bottom: 5px;\\n font-family: helvetica\\n}\\n\\nspan.tag a {\\n color: #F1F6F7!important\\n}\\n\\n.tagsinput span.tag a {\\n font-weight: 700;\\n color: #82ad2b;\\n font-size: 11px\\n}\\n\\n.tagsinput input {\\n width: 80px;\\n margin: 0;\\n font-family: helvetica;\\n font-size: 13px;\\n border: 1px solid transparent;\\n padding: 3px;\\n background: 0 0;\\n color: #000;\\n outline: 0\\n}\\n\\n.tagsinput div {\\n display: block;\\n float: left\\n}\\n\\n.social-body,\\n.social-sidebar,\\nul.bar_tabs.right li {\\n float: right\\n}\\n\\n.tags_clear {\\n clear: both;\\n width: 100%;\\n height: 0\\n}\\n\\n.not_valid {\\n background: #FBD8DB!important;\\n color: #90111A!important\\n}\\n\\nul.bar_tabs {\\n overflow: visible;\\n background: #F5F7FA;\\n height: 25px;\\n margin: 21px 0 14px;\\n padding-left: 14px;\\n position: relative;\\n z-index: 1;\\n width: 100%;\\n border-bottom: 1px solid #E6E9ED\\n}\\n\\nul.bar_tabs>li {\\n border: 1px solid #E6E9ED;\\n color: #333!important;\\n margin-top: -17px;\\n margin-left: 8px;\\n background: #fff;\\n border-bottom: none;\\n border-radius: 4px 4px 0 0\\n}\\n\\nul.bar_tabs>li.active {\\n border-right: 6px solid #D3D6DA;\\n border-top: 0;\\n margin-top: -15px\\n}\\n\\nul.bar_tabs>li a {\\n padding: 10px 17px;\\n background: #F5F7FA;\\n margin: 0;\\n border-top-right-radius: 0\\n}\\n\\nul.bar_tabs>li a:hover {\\n border: 1px solid transparent\\n}\\n\\nul.bar_tabs>li.active a {\\n border-bottom: none\\n}\\n\\nul.bar_tabs.right {\\n padding-right: 14px\\n}\\n\\na:focus {\\n outline: 0\\n}\\n\\nul.timeline li {\\n position: relative;\\n border-bottom: 1px solid #e8e8e8;\\n clear: both\\n}\\n\\n.timeline .block {\\n margin: 0 0 0 105px;\\n border-left: 3px solid #e8e8e8;\\n overflow: visible;\\n padding: 10px 15px\\n}\\n\\n.timeline.widget {\\n min-width: 0;\\n max-width: inherit\\n}\\n\\n.timeline.widget .block {\\n margin-left: 5px\\n}\\n\\n.timeline .tags {\\n position: absolute;\\n top: 15px;\\n left: 0;\\n width: 84px\\n}\\n\\n.timeline .tag {\\n display: block;\\n height: 30px;\\n font-size: 13px;\\n padding: 8px\\n}\\n\\n.timeline .tag span {\\n display: block;\\n overflow: hidden;\\n width: 100%;\\n white-space: nowrap;\\n text-overflow: ellipsis\\n}\\n\\n.tag {\\n line-height: 1;\\n background: #1ABB9C;\\n color: #fff!important\\n}\\n\\n.tag:after {\\n content: \\\" \\\";\\n height: 30px;\\n width: 0;\\n position: absolute;\\n left: 100%;\\n top: 0;\\n margin: 0;\\n pointer-events: none;\\n border-top: 14px solid transparent;\\n border-bottom: 14px solid transparent;\\n border-left: 11px solid #1ABB9C\\n}\\n\\n.timeline h2.title {\\n position: relative;\\n font-size: 16px;\\n margin: 0\\n}\\n\\n.timeline h2.title:before {\\n content: \\\"\\\";\\n position: absolute;\\n left: -23px;\\n top: 3px;\\n display: block;\\n width: 14px;\\n height: 14px;\\n border: 3px solid #d2d3d2;\\n border-radius: 14px;\\n background: #f9f9f9\\n}\\n\\n.timeline .byline {\\n padding: .25em 0\\n}\\n\\n.byline {\\n font-size: .9375em;\\n line-height: 1.3;\\n color: #aab6aa\\n}\\n\\nul.social li {\\n border: 0\\n}\\n\\n.social-sidebar {\\n background: #EDEDED;\\n width: 22%\\n}\\n\\n.social-body {\\n border: 1px solid #ccc;\\n width: 78%\\n}\\n\\n.thumb img {\\n width: 50px;\\n height: 50px;\\n border-radius: 50%\\n}\\n\\n.chat .thumb img {\\n width: 27px;\\n height: 27px;\\n border-radius: 50%\\n}\\n\\n.chat .status {\\n float: left;\\n margin: 16px 0 0 -16px;\\n font-size: 14px;\\n font-weight: 700;\\n width: 12px;\\n height: 12px;\\n display: block;\\n border: 2px solid #FFF;\\n z-index: 12312;\\n border-radius: 50%\\n}\\n\\n.chart,\\n.percent {\\n display: inline-block\\n}\\n\\n.chat .status.online {\\n background: #1ABB9C\\n}\\n\\n.chat .status.away {\\n background: #F39C12\\n}\\n\\n.chat .status.offline {\\n background: #ccc\\n}\\n\\n.chat .media-body {\\n padding-top: 5px\\n}\\n\\n.dashboard_graph .x_title {\\n padding: 5px 5px 7px\\n}\\n\\n.dashboard_graph .x_title h3 {\\n margin: 0;\\n font-weight: 400\\n}\\n\\n.chart {\\n position: relative;\\n width: 110px;\\n height: 110px;\\n margin-top: 5px;\\n margin-bottom: 5px;\\n text-align: center\\n}\\n\\n.chart canvas {\\n position: absolute;\\n top: 0;\\n left: 0\\n}\\n\\n.percent {\\n line-height: 110px;\\n z-index: 2;\\n font-size: 18px\\n}\\n\\n.percent:after {\\n content: '%';\\n margin-left: .1em;\\n font-size: .8em\\n}\\n\\n.angular {\\n margin-top: 100px\\n}\\n\\n.angular .chart {\\n margin-top: 0\\n}\\n\\n.widget {\\n min-width: 250px;\\n max-width: 310px\\n}\\n\\n.widget_tally_box .btn-group button {\\n text-align: center;\\n color: inherit;\\n font-weight: 500;\\n background-color: #f5f5f5;\\n border: 1px solid #e7e7e7\\n}\\n\\nul.widget_tally,\\nul.widget_tally li {\\n width: 100%\\n}\\n\\nul.widget_tally li {\\n padding: 2px 10px 4px;\\n border-bottom: 1px solid #ECECEC\\n}\\n\\nul.widget_tally .month {\\n width: 70%;\\n float: left\\n}\\n\\nul.widget_tally .count {\\n width: 30%;\\n float: left;\\n text-align: right\\n}\\n\\n.pie_bg {\\n border-bottom: 1px solid rgba(101, 204, 182, .16);\\n border-radius: 4px;\\n filter: progid: DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);\\n filter: progid: DXImageTransform.Microsoft.gradient(enabled=false);\\n padding-bottom: 10px;\\n box-shadow: 0 4px 6px -6px #222\\n}\\n\\n.widget_tally_box .flex {\\n display: -ms-flexbox;\\n display: flex\\n}\\n\\nul.widget_profile_box {\\n width: 100%;\\n height: 42px;\\n padding: 3px;\\n background: #ececec;\\n margin-top: 40px;\\n margin-left: 1px\\n}\\n\\nul.widget_profile_box li:first-child {\\n width: 25%;\\n float: left\\n}\\n\\nul.widget_profile_box li:first-child a {\\n float: left\\n}\\n\\nul.widget_profile_box li:last-child {\\n width: 25%;\\n float: right\\n}\\n\\nul.widget_profile_box li:last-child a {\\n float: right\\n}\\n\\nul.widget_profile_box li a {\\n font-size: 22px;\\n text-align: center;\\n width: 35px;\\n height: 35px;\\n border: 1px solid rgba(52, 73, 94, .44);\\n display: block;\\n border-radius: 50%;\\n padding: 0\\n}\\n\\nul.widget_profile_box li a:hover {\\n color: #1ABB9C!important;\\n border: 1px solid #26b99a\\n}\\n\\nul.widget_profile_box li .profile_img {\\n width: 85px;\\n height: 85px;\\n margin: -28px 0 0\\n}\\n\\n.widget_tally_box p,\\n.widget_tally_box span {\\n text-align: center\\n}\\n\\n.widget_tally_box .name {\\n text-align: center;\\n margin: 25px\\n}\\n\\n.widget_tally_box .name_title {\\n text-align: center;\\n margin: 5px\\n}\\n\\n.widget_tally_box ul.legend {\\n margin: 0\\n}\\n\\n.widget_tally_box ul.legend p,\\n.widget_tally_box ul.legend span {\\n text-align: left\\n}\\n\\n.widget_tally_box ul.legend li .icon {\\n font-size: 20px;\\n float: left;\\n width: 14px\\n}\\n\\n.widget_tally_box ul.legend li .name {\\n font-size: 14px;\\n margin: 5px 0 0 14px;\\n text-overflow: ellipsis;\\n float: left\\n}\\n\\n.widget_tally_box ul.legend p {\\n display: inline-block;\\n margin: 0\\n}\\n\\n.widget_tally_box ul.verticle_bars li {\\n height: 140px;\\n width: 23%\\n}\\n\\n.widget .verticle_bars li .progress.vertical.progress_wide {\\n width: 65%\\n}\\n\\nul.count2 {\\n width: 100%;\\n margin-left: 1px;\\n border: 1px solid #ddd;\\n border-left: 0;\\n border-right: 0;\\n padding: 10px 0\\n}\\n\\nul.count2 li {\\n width: 30%;\\n text-align: center\\n}\\n\\nul.count2 li h3 {\\n font-weight: 400;\\n margin: 0\\n}\\n\\nul.count2 li span {\\n font-weight: 300\\n}\\n\\n.divider {\\n border-bottom: 1px solid #ddd;\\n margin: 10px\\n}\\n\\n.divider-dashed {\\n border-top: 1px dashed #e7eaec;\\n background-color: #fff;\\n height: 1px;\\n margin: 10px 0\\n}\\n\\nul.messages {\\n padding: 0;\\n list-style: none\\n}\\n\\n.tasks li,\\nul.messages li {\\n border-bottom: 1px dotted #e6e6e6;\\n padding: 8px 0\\n}\\n\\nimg.avatar,\\nul.messages li img.avatar {\\n height: 32px;\\n width: 32px;\\n float: left;\\n display: inline-block;\\n border-radius: 2px;\\n padding: 2px;\\n background: #f7f7f7;\\n border: 1px solid #e6e6e6\\n}\\n\\nul.messages li .message_date {\\n float: right;\\n text-align: right\\n}\\n\\nul.messages li .message_wrapper {\\n margin-left: 50px;\\n margin-right: 40px\\n}\\n\\nul.messages li .message_wrapper h4.heading {\\n font-weight: 600;\\n margin: 0 0 10px;\\n cursor: pointer;\\n line-height: 100%\\n}\\n\\nul.messages li .message_wrapper blockquote {\\n padding: 0 10px;\\n margin: 0;\\n border-left: 5px solid #eee\\n}\\n\\nul.user_data li {\\n margin-bottom: 6px\\n}\\n\\nul.user_data li p {\\n margin-bottom: 0\\n}\\n\\nul.user_data li .progress {\\n width: 90%\\n}\\n\\n.project_progress .progress {\\n margin-bottom: 3px!important;\\n margin-top: 5px\\n}\\n\\n.projects .list-inline {\\n margin: 0\\n}\\n\\n.profile_title {\\n background: #F5F7FA;\\n border: 0;\\n padding: 7px 0;\\n display: -ms-flexbox;\\n display: flex\\n}\\n\\nul.stats-overview {\\n border-bottom: 1px solid #e8e8e8;\\n padding-bottom: 10px;\\n margin-bottom: 10px\\n}\\n\\nul.stats-overview li {\\n display: inline-block;\\n text-align: center;\\n padding: 0 15px;\\n width: 30%;\\n font-size: 14px;\\n border-right: 1px solid #e8e8e8\\n}\\n\\nul.stats-overview li:last-child {\\n border-right: 0\\n}\\n\\nul.stats-overview li .name {\\n font-size: 12px\\n}\\n\\nul.stats-overview li .value {\\n font-size: 14px;\\n font-weight: 700;\\n display: block\\n}\\n\\nul.stats-overview li:first-child {\\n padding-left: 0\\n}\\n\\nul.project_files li {\\n margin-bottom: 5px\\n}\\n\\nul.project_files li a i {\\n width: 20px\\n}\\n\\n.project_detail p {\\n margin-bottom: 10px\\n}\\n\\n.project_detail p.title {\\n font-weight: 700;\\n margin-bottom: 0\\n}\\n\\n.avatar img {\\n border-radius: 50%;\\n max-width: 45px\\n}\\n\\n.pricing {\\n background: #fff\\n}\\n\\n.pricing .title {\\n background: #1ABB9C;\\n height: 110px;\\n color: #fff;\\n padding: 15px 0 0;\\n text-align: center\\n}\\n\\n.pricing .title h2 {\\n text-transform: capitalize;\\n font-size: 18px;\\n border-radius: 5px 5px 0 0;\\n margin: 0;\\n font-weight: 400\\n}\\n\\n.notifications a,\\n.tabbed_notifications h2,\\n.view .tools,\\n.view a.info {\\n text-transform: uppercase\\n}\\n\\n.pricing .title h1 {\\n font-size: 30px;\\n margin: 12px\\n}\\n\\n.pricing .title span {\\n background: rgba(51, 51, 51, .28);\\n padding: 2px 5px\\n}\\n\\n.pricing_features {\\n background: #FAFAFA;\\n padding: 20px 15px;\\n min-height: 230px;\\n font-size: 13.5px\\n}\\n\\n.pricing_features ul li {\\n margin-top: 10px\\n}\\n\\n.pricing_footer {\\n padding: 10px 15px;\\n background-color: #f5f5f5;\\n border-top: 1px solid #ddd;\\n text-align: center;\\n border-bottom-right-radius: 3px;\\n border-bottom-left-radius: 3px\\n}\\n\\n.pricing_footer p {\\n font-size: 13px;\\n padding: 10px 0 2px;\\n display: block\\n}\\n\\n.ui-ribbon-container {\\n position: relative\\n}\\n\\n.ui-ribbon-container .ui-ribbon-wrapper {\\n position: absolute;\\n overflow: hidden;\\n width: 85px;\\n height: 88px;\\n top: -3px;\\n right: -3px\\n}\\n\\n.ui-ribbon-container.ui-ribbon-primary .ui-ribbon {\\n background-color: #5b90bf\\n}\\n\\n.ui-ribbon-container .ui-ribbon {\\n position: relative;\\n display: block;\\n text-align: center;\\n font-size: 15px;\\n font-weight: 700;\\n color: #fff;\\n transform: rotate(45deg);\\n padding: 7px 0;\\n left: -5px;\\n top: 15px;\\n width: 120px;\\n line-height: 20px;\\n background-color: #555;\\n box-shadow: 0 0 3px rgba(0, 0, 0, .3)\\n}\\n\\n.ui-ribbon-container.ui-ribbon-primary .ui-ribbon:after,\\n.ui-ribbon-container.ui-ribbon-primary .ui-ribbon:before {\\n border-top: 2px solid #5b90bf\\n}\\n\\n.ui-ribbon-container .ui-ribbon:before {\\n left: 0;\\n bottom: -1px;\\n right: 0\\n}\\n\\n.ui-ribbon-container .ui-ribbon:after,\\n.ui-ribbon-container .ui-ribbon:before {\\n position: absolute;\\n content: \\\" \\\";\\n line-height: 0;\\n border-top: 2px solid #555;\\n border-left: 2px solid transparent;\\n border-right: 2px solid transparent\\n}\\n\\n.thumbnail .image {\\n height: 120px;\\n overflow: hidden\\n}\\n\\n.caption {\\n padding: 9px 5px;\\n background: #F7F7F7\\n}\\n\\n.caption p {\\n margin-bottom: 5px\\n}\\n\\n.thumbnail {\\n height: 190px;\\n overflow: hidden\\n}\\n\\n.view {\\n overflow: hidden;\\n position: relative;\\n text-align: center;\\n box-shadow: 1px 1px 2px #e6e6e6;\\n cursor: default\\n}\\n\\n.dropdown-menu a,\\n.voiceBtn {\\n cursor: pointer\\n}\\n\\n.view .content,\\n.view .mask {\\n position: absolute;\\n width: 100%;\\n overflow: hidden;\\n top: 0;\\n left: 0\\n}\\n\\n.sideways,\\n.view .tools,\\n.view img,\\n.view p {\\n position: relative\\n}\\n\\n.view img {\\n display: block\\n}\\n\\n.view .tools {\\n color: #fff;\\n text-align: center;\\n font-size: 17px;\\n padding: 3px;\\n background: rgba(0, 0, 0, .35);\\n margin: 43px 0 0\\n}\\n\\n.mask.no-caption .tools {\\n margin: 90px 0 0\\n}\\n\\n.view .tools a {\\n display: inline-block;\\n color: #FFF;\\n font-size: 18px;\\n font-weight: 400;\\n padding: 0 4px\\n}\\n\\n.view p {\\n font-family: Georgia, serif;\\n font-size: 12px;\\n color: #fff;\\n padding: 10px 20px 20px;\\n text-align: center\\n}\\n\\n.view a.info {\\n display: inline-block;\\n padding: 7px 14px;\\n background: #000;\\n color: #fff;\\n box-shadow: 0 0 1px #000\\n}\\n\\n.view-first img {\\n transition: all .2s linear\\n}\\n\\n.view-first .mask {\\n opacity: 0;\\n background-color: rgba(0, 0, 0, .5);\\n transition: all .4s ease-in-out\\n}\\n\\n.view-first .tools {\\n transform: translateY(-100px);\\n opacity: 0;\\n transition: all .2s ease-in-out\\n}\\n\\n.view-first p {\\n transform: translateY(100px);\\n opacity: 0;\\n transition: all .2s linear\\n}\\n\\n.view-first:hover img {\\n transform: scale(1.1)\\n}\\n\\n.view-first:hover .mask {\\n opacity: 1\\n}\\n\\n.view-first:hover .tools,\\n.view-first:hover p {\\n opacity: 1;\\n transform: translateY(0)\\n}\\n\\n.view-first:hover p {\\n transition-delay: .1s\\n}\\n\\n.form-group.has-feedback span {\\n display: block!important\\n}\\n\\n.form-group .btn {\\n margin-bottom: -6px\\n}\\n\\n.input-group-btn .btn {\\n margin-bottom: 0\\n}\\n\\n\\n/*!\\n * bootstrap-vertical-tabs - v1.2.1\\n * https://dbtek.github.io/bootstrap-vertical-tabs\\n * 2014-11-07\\n * Copyright (c) 2014 İsmail Demirbilek\\n * License: MIT\\n */\\n\\n.tabs-left,\\n.tabs-right {\\n border-bottom: none;\\n padding-top: 2px\\n}\\n\\n.tabs-left {\\n border-right: 1px solid #F7F7F7\\n}\\n\\n.tabs-right {\\n border-left: 1px solid #F7F7F7\\n}\\n\\n.tabs-left>li,\\n.tabs-right>li {\\n float: none;\\n margin-bottom: 2px\\n}\\n\\n.alignleft,\\n.left {\\n float: left\\n}\\n\\n.tabs-left>li {\\n margin-right: -1px\\n}\\n\\n.tabs-left>li>a,\\n.tabs-right>li>a {\\n margin-right: 0;\\n background: #F7F7F7;\\n overflow: hidden;\\n text-overflow: ellipsis\\n}\\n\\n.tabs-right>li {\\n margin-left: -1px\\n}\\n\\n.tabs-left>li.active>a,\\n.tabs-left>li.active>a:focus,\\n.tabs-left>li.active>a:hover {\\n border-bottom-color: #F7F7F7;\\n border-right-color: transparent\\n}\\n\\n.tabs-right>li.active>a,\\n.tabs-right>li.active>a:focus,\\n.tabs-right>li.active>a:hover {\\n border-bottom: 1px solid #F7F7F7;\\n border-left-color: transparent\\n}\\n\\n.tabs-left>li>a {\\n border-radius: 4px 0 0 4px;\\n display: block\\n}\\n\\n.tabs-right>li>a {\\n border-radius: 0 4px 4px 0\\n}\\n\\n.sideways {\\n margin-top: 50px;\\n border: none\\n}\\n\\n.sideways>li {\\n height: 20px;\\n width: 120px;\\n margin-bottom: 100px\\n}\\n\\n.sideways>li>a {\\n border-bottom: 1px solid #ddd;\\n border-right-color: transparent;\\n text-align: center;\\n border-radius: 4px 4px 0 0\\n}\\n\\n.sideways>li.active>a,\\n.sideways>li.active>a:focus,\\n.sideways>li.active>a:hover {\\n border-bottom-color: transparent;\\n border-right-color: #ddd;\\n border-left-color: #ddd\\n}\\n\\n.sideways.tabs-left {\\n left: -50px\\n}\\n\\n.sideways.tabs-right {\\n right: -50px\\n}\\n\\n.sideways.tabs-right>li {\\n transform: rotate(90deg)\\n}\\n\\n.sideways.tabs-left>li {\\n transform: rotate(-90deg)\\n}\\n\\n.morris-hover {\\n position: absolute;\\n z-index: 1000\\n}\\n\\n.morris-hover.morris-default-style {\\n padding: 6px;\\n color: #666;\\n background: rgba(243, 242, 243, .8);\\n border: 2px solid rgba(195, 194, 196, .8);\\n font-family: sans-serif;\\n font-size: 12px;\\n text-align: center\\n}\\n\\n.morris-hover.morris-default-style .morris-hover-row-label {\\n font-weight: 700;\\n margin: .25em 0\\n}\\n\\n.morris-hover.morris-default-style .morris-hover-point {\\n white-space: nowrap;\\n margin: .1em 0\\n}\\n\\n.price {\\n font-size: 40px;\\n font-weight: 400;\\n color: #26B99A;\\n margin: 0\\n}\\n\\n.prod_title {\\n border-bottom: 1px solid #DFDFDF;\\n padding-bottom: 5px;\\n margin: 30px 0;\\n font-size: 20px;\\n font-weight: 400\\n}\\n\\n.product-image img {\\n width: 90%\\n}\\n\\n.prod_color li {\\n margin: 0 10px\\n}\\n\\n.prod_color li p {\\n margin-bottom: 0\\n}\\n\\n.prod_size li {\\n padding: 0\\n}\\n\\n.prod_color .color {\\n width: 25px;\\n height: 25px;\\n border: 2px solid rgba(51, 51, 51, .28)!important;\\n padding: 2px;\\n border-radius: 50px\\n}\\n\\n.product_gallery a {\\n width: 100px;\\n height: 100px;\\n float: left;\\n margin: 10px;\\n border: 1px solid #e5e5e5\\n}\\n\\n.product_gallery a img {\\n width: 100%;\\n margin-top: 15px\\n}\\n\\n.product_price {\\n margin: 20px 0;\\n padding: 5px 10px;\\n background-color: #FFF;\\n text-align: left;\\n border: 2px dashed #E0E0E0\\n}\\n\\n.price-tax {\\n font-size: 18px\\n}\\n\\n.product_social {\\n margin: 20px 0\\n}\\n\\n.product_social ul li a i {\\n font-size: 35px\\n}\\n\\n.login {\\n background: #F7F7F7\\n}\\n\\n.login .fa-paw {\\n font-size: 26px\\n}\\n\\na.hiddenanchor {\\n display: none\\n}\\n\\n.login_wrapper {\\n right: 0;\\n margin: 5% auto 0;\\n max-width: 350px;\\n position: relative\\n}\\n\\n.cropper .docs-cropped .modal-body>canvas,\\n.cropper .docs-cropped .modal-body>img,\\n.cropper .img-container>img,\\n.cropper .img-preview>img {\\n max-width: 100%\\n}\\n\\n.login_form,\\n.registration_form {\\n position: absolute;\\n top: 0;\\n width: 100%\\n}\\n\\n.registration_form {\\n z-index: 21;\\n opacity: 0;\\n width: 100%\\n}\\n\\n.login_form {\\n z-index: 22\\n}\\n\\n#signin:target~.login_wrapper .login_form,\\n#signup:target~.login_wrapper .registration_form {\\n z-index: 22;\\n animation-name: fadeInLeft;\\n animation-delay: .1s\\n}\\n\\n#signin:target~.login_wrapper .registration_form,\\n#signup:target~.login_wrapper .login_form {\\n animation-name: fadeOutLeft\\n}\\n\\n.animate {\\n -webkit-animation-duration: .5s;\\n -webkit-animation-timing-function: ease;\\n -webkit-animation-fill-mode: both;\\n -moz-animation-duration: .5s;\\n -moz-animation-timing-function: ease;\\n -moz-animation-fill-mode: both;\\n -o-animation-duration: .5s;\\n -o-animation-timing-function: ease;\\n -o-animation-fill-mode: both;\\n -ms-animation-duration: .5s;\\n -ms-animation-timing-function: ease;\\n -ms-animation-fill-mode: both;\\n animation-duration: .5s;\\n animation-timing-function: ease;\\n animation-fill-mode: both\\n}\\n\\n.login_box {\\n padding: 20px;\\n margin: auto\\n}\\n\\n.alignleft {\\n margin-right: 15px\\n}\\n\\n.alignright {\\n float: right;\\n margin-left: 15px\\n}\\n\\n.clearfix:after,\\nform:after {\\n content: \\\".\\\";\\n display: block;\\n height: 0;\\n clear: both;\\n visibility: hidden\\n}\\n\\n.login_content {\\n margin: 0 auto;\\n padding: 25px 0 0;\\n position: relative;\\n text-align: center;\\n text-shadow: 0 1px 0 #fff;\\n min-width: 280px\\n}\\n\\n.login_content a:hover {\\n text-decoration: underline\\n}\\n\\n.login_content h1 {\\n font: 400 25px Helvetica, Arial, sans-serif;\\n letter-spacing: -.05em;\\n line-height: 20px;\\n margin: 10px 0 30px\\n}\\n\\n.login_content h1:after,\\n.login_content h1:before {\\n content: \\\"\\\";\\n height: 1px;\\n position: absolute;\\n top: 10px;\\n width: 20%\\n}\\n\\n.login_content h1:after {\\n background: #7e7e7e;\\n background: linear-gradient(left, #7e7e7e 0, #fff 100%);\\n right: 0\\n}\\n\\n.login_content h1:before {\\n background: #7e7e7e;\\n background: linear-gradient(right, #7e7e7e 0, #fff 100%);\\n left: 0\\n}\\n\\n.login_content form {\\n margin: 20px 0;\\n position: relative\\n}\\n\\n.login_content form input[type=text],\\n.login_content form input[type=email],\\n.login_content form input[type=password] {\\n border-radius: 3px;\\n -ms-box-shadow: 0 1px 0 #fff, 0 -2px 5px rgba(0, 0, 0, .08) inset;\\n -o-box-shadow: 0 1px 0 #fff, 0 -2px 5px rgba(0, 0, 0, .08) inset;\\n box-shadow: 0 1px 0 #fff, 0 -2px 5px rgba(0, 0, 0, .08) inset;\\n border: 1px solid #c8c8c8;\\n color: #777;\\n margin: 0 0 20px;\\n width: 100%\\n}\\n\\n.login_content form input[type=text]:focus,\\n.login_content form input[type=email]:focus,\\n.login_content form input[type=password]:focus {\\n -ms-box-shadow: 0 0 2px #ed1c24 inset;\\n -o-box-shadow: 0 0 2px #ed1c24 inset;\\n box-shadow: 0 0 2px #A97AAD inset;\\n background-color: #fff;\\n border: 1px solid #A878AF;\\n outline: 0\\n}\\n\\n#username {\\n background-position: 10px 10px!important\\n}\\n\\n#password {\\n background-position: 10px -53px!important\\n}\\n\\n.login_content form div a {\\n font-size: 12px;\\n margin: 10px 15px 0 0\\n}\\n\\n.reset_pass {\\n margin-top: 10px!important\\n}\\n\\n.login_content div .reset_pass {\\n margin-top: 13px!important;\\n margin-right: 39px;\\n float: right\\n}\\n\\n.separator {\\n border-top: 1px solid #D8D8D8;\\n margin-top: 10px;\\n padding-top: 10px\\n}\\n\\n.button {\\n background: #f7f9fa;\\n background: linear-gradient(top, #f7f9fa 0, #f0f0f0 100%);\\n filter: progid: DXImageTransform.Microsoft.gradient( startColorstr='#f7f9fa', endColorstr='#f0f0f0', GradientType=0);\\n -ms-box-shadow: 0 1px 2px rgba(0, 0, 0, .1) inset;\\n -o-box-shadow: 0 1px 2px rgba(0, 0, 0, .1) inset;\\n box-shadow: 0 1px 2px rgba(0, 0, 0, .1) inset;\\n border-radius: 0 0 5px 5px;\\n border-top: 1px solid #CFD5D9;\\n padding: 15px 0\\n}\\n\\n#content form .submit,\\n.login_content form input[type=submit] {\\n float: left;\\n margin-left: 38px\\n}\\n\\n.button a {\\n background: url(http://cssdeck.com/uploads/media/items/8/8bcLQqF.png) 0 -112px no-repeat;\\n color: #7E7E7E;\\n font-size: 17px;\\n padding: 2px 0 2px 40px;\\n text-decoration: none;\\n transition: all .3s ease\\n}\\n\\n.button a:hover {\\n background-position: 0 -135px;\\n color: #00aeef\\n}\\n\\nheader {\\n width: 100%\\n}\\n\\n#nprogress .bar {\\n background: #1ABB9C\\n}\\n\\n#nprogress .peg {\\n box-shadow: 0 0 10px #1ABB9C, 0 0 5px #1ABB9C\\n}\\n\\n#nprogress .spinner-icon {\\n border-top-color: #1ABB9C;\\n border-left-color: #1ABB9C\\n}\\n\\n.editor-wrapper {\\n min-height: 250px;\\n background-color: #fff;\\n border-collapse: separate;\\n border: 1px solid #ccc;\\n padding: 4px;\\n box-sizing: content-box;\\n box-shadow: rgba(0, 0, 0, .07451) 0 1px 1px 0 inset;\\n overflow: scroll;\\n outline: 0;\\n border-radius: 3px\\n}\\n\\n.voiceBtn {\\n width: 20px;\\n color: transparent;\\n background-color: transparent;\\n transform: scale(2, 2);\\n -webkit-transform: scale(2, 2);\\n -moz-transform: scale(2, 2);\\n border: transparent;\\n box-shadow: none;\\n -webkit-box-shadow: none\\n}\\n\\ndiv[data-role=editor-toolbar] {\\n -webkit-user-select: none;\\n -moz-user-select: none;\\n -ms-user-select: none;\\n user-select: none\\n}\\n\\n.select2-container--default .select2-selection--multiple,\\n.select2-container--default .select2-selection--single {\\n background-color: #fff;\\n border: 1px solid #ccc;\\n border-radius: 0;\\n min-height: 38px\\n}\\n\\n.select2-container--default .select2-selection--single .select2-selection__rendered {\\n color: #73879C;\\n padding-top: 5px\\n}\\n\\n.select2-container--default .select2-selection--multiple .select2-selection__rendered {\\n padding-top: 3px\\n}\\n\\n.select2-container--default .select2-selection--single .select2-selection__arrow {\\n height: 36px\\n}\\n\\n.select2-container--default .select2-selection--multiple .select2-selection__choice,\\n.select2-container--default .select2-selection--multiple .select2-selection__clear {\\n margin-top: 2px;\\n border: none;\\n border-radius: 0;\\n padding: 3px 5px\\n}\\n\\n.select2-container--default.select2-container--focus .select2-selection--multiple {\\n border: 1px solid #ccc\\n}\\n\\n.switchery {\\n width: 32px;\\n height: 20px\\n}\\n\\n.switchery>small {\\n width: 20px;\\n height: 20px\\n}\\n\\nfieldset {\\n border: none;\\n margin: 0;\\n padding: 0\\n}\\n\\n.cropper .img-container,\\n.cropper .img-preview {\\n background-color: #f7f7f7;\\n width: 100%;\\n text-align: center\\n}\\n\\n.cropper .img-container {\\n min-height: 200px;\\n max-height: 516px;\\n margin-bottom: 20px\\n}\\n\\n.cropper .docs-data>.input-group,\\n.cropper .docs-toggles>.btn,\\n.cropper .docs-toggles>.btn-group,\\n.cropper .docs-toggles>.dropdown,\\n.cropper .img-preview {\\n margin-bottom: 10px\\n}\\n\\n@media (min-width:768px) {\\n .cropper .img-container {\\n min-height: 516px\\n }\\n}\\n\\n.cropper .docs-preview {\\n margin-right: -15px\\n}\\n\\n.cropper .img-preview {\\n float: left;\\n margin-right: 10px;\\n overflow: hidden\\n}\\n\\n.cropper .preview-lg {\\n width: 263px;\\n height: 148px\\n}\\n\\n.cropper .preview-md {\\n width: 139px;\\n height: 78px\\n}\\n\\n.cropper .preview-sm {\\n width: 69px;\\n height: 39px\\n}\\n\\n.cropper .preview-xs {\\n width: 35px;\\n height: 20px;\\n margin-right: 0\\n}\\n\\n.cropper .docs-data>.input-group>label {\\n min-width: 80px\\n}\\n\\n.cropper .docs-data>.input-group>span {\\n min-width: 50px\\n}\\n\\n.cropper .docs-buttons>.btn,\\n.cropper .docs-buttons>.btn-group,\\n.cropper .docs-buttons>.form-control {\\n margin-right: 5px;\\n margin-bottom: 10px\\n}\\n\\n.cropper .docs-tooltip {\\n display: block;\\n margin: -6px -12px;\\n padding: 6px 12px\\n}\\n\\n.cropper .docs-tooltip>.icon {\\n margin: 0 -3px;\\n vertical-align: top\\n}\\n\\n.cropper .tooltip-inner {\\n white-space: normal\\n}\\n\\n.cropper .btn-toggle .tooltip-inner,\\n.cropper .btn-upload .tooltip-inner {\\n white-space: nowrap\\n}\\n\\n.cropper .btn-toggle {\\n padding: 6px\\n}\\n\\n.cropper .btn-toggle>.docs-tooltip {\\n margin: -6px;\\n padding: 6px\\n}\\n\\n@media (max-width:400px) {\\n .cropper .btn-group-crop {\\n margin-right: -15px!important\\n }\\n .cropper .btn-group-crop>.btn {\\n padding-left: 5px;\\n padding-right: 5px\\n }\\n .cropper .btn-group-crop .docs-tooltip {\\n margin-left: -5px;\\n margin-right: -5px;\\n padding-left: 5px;\\n padding-right: 5px\\n }\\n}\\n\\n.cropper .docs-options .dropdown-menu {\\n width: 100%\\n}\\n\\n.cropper .docs-options .dropdown-menu>li {\\n padding: 3px 20px\\n}\\n\\n.cropper .docs-options .dropdown-menu>li:hover {\\n background-color: #f7f7f7\\n}\\n\\n.cropper .docs-options .dropdown-menu>li>label {\\n display: block\\n}\\n\\n.cropper .docs-cropped .modal-body {\\n text-align: center\\n}\\n\\n.cropper .docs-diagram .modal-dialog {\\n max-width: 352px\\n}\\n\\n.cropper .docs-cropped canvas {\\n max-width: 100%\\n}\\n\\n.form_wizard .stepContainer {\\n display: block;\\n position: relative;\\n margin: 0;\\n padding: 0;\\n border: 0 solid #CCC;\\n overflow-x: hidden\\n}\\n\\n.wizard_horizontal ul.wizard_steps {\\n display: table;\\n list-style: none;\\n position: relative;\\n width: 100%;\\n margin: 0 0 20px\\n}\\n\\n.wizard_horizontal ul.wizard_steps li {\\n display: table-cell;\\n text-align: center\\n}\\n\\n.wizard_horizontal ul.wizard_steps li a,\\n.wizard_horizontal ul.wizard_steps li:hover {\\n display: block;\\n position: relative;\\n -moz-opacity: 1;\\n filter: alpha(opacity=100);\\n opacity: 1;\\n color: #666\\n}\\n\\n.wizard_horizontal ul.wizard_steps li a:before {\\n content: \\\"\\\";\\n position: absolute;\\n height: 4px;\\n background: #ccc;\\n top: 20px;\\n width: 100%;\\n z-index: 4;\\n left: 0\\n}\\n\\n.wizard_horizontal ul.wizard_steps li a.disabled .step_no {\\n background: #ccc\\n}\\n\\n.wizard_horizontal ul.wizard_steps li a .step_no {\\n width: 40px;\\n height: 40px;\\n line-height: 40px;\\n border-radius: 100px;\\n display: block;\\n margin: 0 auto 5px;\\n font-size: 16px;\\n text-align: center;\\n position: relative;\\n z-index: 5\\n}\\n\\n.step_no,\\n.wizard_horizontal ul.wizard_steps li a.selected:before {\\n background: #34495E;\\n color: #fff\\n}\\n\\n.wizard_horizontal ul.wizard_steps li a.done .step_no,\\n.wizard_horizontal ul.wizard_steps li a.done:before {\\n background: #1ABB9C;\\n color: #fff\\n}\\n\\n.wizard_horizontal ul.wizard_steps li:first-child a:before {\\n left: 50%\\n}\\n\\n.wizard_horizontal ul.wizard_steps li:last-child a:before {\\n right: 50%;\\n width: 50%;\\n left: auto\\n}\\n\\n.wizard_verticle .stepContainer {\\n width: 80%;\\n float: left;\\n padding: 0 10px\\n}\\n\\n.actionBar {\\n width: 100%;\\n border-top: 1px solid #ddd;\\n padding: 10px 5px;\\n text-align: right;\\n margin-top: 10px\\n}\\n\\n.actionBar .buttonDisabled {\\n cursor: not-allowed;\\n pointer-events: none;\\n opacity: .65;\\n filter: alpha(opacity=65);\\n box-shadow: none\\n}\\n\\n.actionBar a {\\n margin: 0 3px\\n}\\n\\n.wizard_verticle .wizard_content {\\n width: 80%;\\n float: left;\\n padding-left: 20px\\n}\\n\\n.wizard_verticle ul.wizard_steps {\\n display: table;\\n list-style: none;\\n position: relative;\\n width: 20%;\\n float: left;\\n margin: 0 0 20px\\n}\\n\\n.wizard_verticle ul.wizard_steps li {\\n display: list-item;\\n text-align: center\\n}\\n\\n.wizard_verticle ul.wizard_steps li a {\\n height: 80px\\n}\\n\\n.wizard_verticle ul.wizard_steps li a:first-child {\\n margin-top: 20px\\n}\\n\\n.wizard_verticle ul.wizard_steps li a,\\n.wizard_verticle ul.wizard_steps li:hover {\\n display: block;\\n position: relative;\\n -moz-opacity: 1;\\n filter: alpha(opacity=100);\\n opacity: 1;\\n color: #666\\n}\\n\\n.wizard_verticle ul.wizard_steps li a:before {\\n content: \\\"\\\";\\n position: absolute;\\n height: 100%;\\n background: #ccc;\\n top: 20px;\\n width: 4px;\\n z-index: 4;\\n left: 49%\\n}\\n\\n.wizard_verticle ul.wizard_steps li a.disabled .step_no {\\n background: #ccc\\n}\\n\\n.wizard_verticle ul.wizard_steps li a .step_no {\\n width: 40px;\\n height: 40px;\\n line-height: 40px;\\n border-radius: 100px;\\n display: block;\\n margin: 0 auto 5px;\\n font-size: 16px;\\n text-align: center;\\n position: relative;\\n z-index: 5\\n}\\n\\n.progress.progress_sm,\\n.progress.progress_sm .progress-bar {\\n height: 10px!important\\n}\\n\\n.step_no,\\n.wizard_verticle ul.wizard_steps li a.selected:before {\\n background: #34495E;\\n color: #fff\\n}\\n\\n.wizard_verticle ul.wizard_steps li a.done .step_no,\\n.wizard_verticle ul.wizard_steps li a.done:before {\\n background: #1ABB9C;\\n color: #fff\\n}\\n\\n.wizard_verticle ul.wizard_steps li:first-child a:before {\\n left: 49%\\n}\\n\\n.wizard_verticle ul.wizard_steps li:last-child a:before {\\n left: 49%;\\n left: auto;\\n width: 0\\n}\\n\\n.form_wizard .loader,\\n.form_wizard .msgBox {\\n display: none\\n}\\n\\n.progress {\\n border-radius: 0\\n}\\n\\n.progress-bar-info {\\n background-color: #3498DB\\n}\\n\\n.progress-bar-success {\\n background-color: #26B99A\\n}\\n\\n.progress_summary .progress {\\n margin: 5px 0 12px!important\\n}\\n\\n.progress_summary .row {\\n margin-bottom: 5px\\n}\\n\\n.progress_summary .row .col-xs-2 {\\n padding: 0\\n}\\n\\n.progress_summary .data span,\\n.progress_summary .more_info span {\\n text-align: right;\\n float: right\\n}\\n\\n.progress_summary p {\\n margin-bottom: 3px;\\n width: 100%\\n}\\n\\n.progress_title .left {\\n float: left;\\n text-align: left\\n}\\n\\n.progress_title .right {\\n float: right;\\n text-align: right;\\n font-weight: 300\\n}\\n\\n.progress.progress_sm {\\n border-radius: 0;\\n margin-bottom: 18px\\n}\\n\\n.dashboard_graph p {\\n margin: 0 0 4px\\n}\\n\\nul.verticle_bars {\\n width: 100%\\n}\\n\\nul.verticle_bars li {\\n width: 23%;\\n height: 200px;\\n margin: 0\\n}\\n\\n.progress.vertical.progress_wide {\\n width: 35px\\n}\\n\\n.alert-success {\\n color: #fff;\\n background-color: rgba(38, 185, 154, .88);\\n border-color: rgba(38, 185, 154, .88)\\n}\\n\\n.alert-info {\\n color: #E9EDEF;\\n background-color: rgba(52, 152, 219, .88);\\n border-color: rgba(52, 152, 219, .88)\\n}\\n\\n.alert-warning {\\n color: #E9EDEF;\\n background-color: rgba(243, 156, 18, .88);\\n border-color: rgba(243, 156, 18, .88)\\n}\\n\\n.alert-danger,\\n.alert-error {\\n color: #E9EDEF;\\n background-color: rgba(231, 76, 60, .88);\\n border-color: rgba(231, 76, 60, .88)\\n}\\n\\n.ui-pnotify.dark .ui-pnotify-container {\\n color: #E9EDEF;\\n background-color: rgba(52, 73, 94, .88);\\n border-color: rgba(52, 73, 94, .88)\\n}\\n\\n.custom-notifications {\\n position: fixed;\\n margin: 15px;\\n right: 0;\\n float: right;\\n width: 400px;\\n z-index: 4000;\\n bottom: 0\\n}\\n\\nul.notifications {\\n float: right;\\n display: block;\\n margin-bottom: 7px;\\n padding: 0;\\n width: 100%\\n}\\n\\n.notifications li {\\n float: right;\\n margin: 3px;\\n width: 36px;\\n box-shadow: 3px 3px 3px rgba(0, 0, 0, .3)\\n}\\n\\n.notifications li:last-child {\\n margin-left: 0\\n}\\n\\n.notifications a {\\n display: block;\\n text-align: center;\\n text-decoration: none;\\n padding: 9px 8px\\n}\\n\\n.tabbed_notifications .text {\\n padding: 5px 15px;\\n height: 140px;\\n border-radius: 7px;\\n box-shadow: 6px 6px 6px rgba(0, 0, 0, .3)\\n}\\n\\n.tabbed_notifications div p {\\n display: inline-block\\n}\\n\\n.tabbed_notifications h2 {\\n font-weight: 700;\\n width: 80%;\\n float: left;\\n height: 20px;\\n text-overflow: ellipsis;\\n overflow: hidden;\\n display: block\\n}\\n\\n.tabbed_notifications .close {\\n padding: 5px;\\n color: #E9EDEF;\\n float: right;\\n opacity: 1\\n}\\n\\n.fc-state-default {\\n background: #f5f5f5;\\n color: #73879C\\n}\\n\\n.fc-state-active,\\n.fc-state-down {\\n color: #333;\\n background: #ccc\\n}\\n\\n.dropzone {\\n min-height: 300px;\\n border: 1px solid #e5e5e5\\n}\\n\\n.main_menu .label {\\n line-height: 11px;\\n margin-top: 4px\\n}\\n\\n@media (max-width:460px) {\\n .dataTables_wrapper .col-sm-6 {\\n width: 100%;\\n margin-bottom: 5px\\n }\\n .dataTables_wrapper .col-sm-6 .dataTables_filter {\\n float: none\\n }\\n}\\n\\n@media (max-width:767px) {\\n .dataTables_length {\\n float: none\\n }\\n}\\n\\n.daterangepicker.xdisplay {\\n width: 228px\\n}\\n\\n.dataTables_wrapper>.row {\\n overflow: auto!important\\n}\\n\\n\", \"\"]);\n\n// exports\n\n\n/***/ }),\n/* 519 */,\n/* 520 */,\n/* 521 */,\n/* 522 */,\n/* 523 */,\n/* 524 */,\n/* 525 */,\n/* 526 */,\n/* 527 */,\n/* 528 */,\n/* 529 */,\n/* 530 */,\n/* 531 */,\n/* 532 */,\n/* 533 */,\n/* 534 */,\n/* 535 */,\n/* 536 */,\n/* 537 */,\n/* 538 */,\n/* 539 */,\n/* 540 */,\n/* 541 */,\n/* 542 */,\n/* 543 */,\n/* 544 */,\n/* 545 */,\n/* 546 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 547 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 548 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 549 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 550 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 551 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 552 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 553 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 554 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 555 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 556 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 557 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 558 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 559 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 560 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 561 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 562 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 563 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 564 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 565 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 566 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 567 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 568 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 569 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 570 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 571 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 572 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 573 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 574 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 575 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 576 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 577 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 578 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 579 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 580 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 581 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 582 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 583 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 584 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 585 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 586 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 587 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 588 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 589 */\n/***/ (function(module, exports) {\n\n// removed by extract-text-webpack-plugin\n\n/***/ }),\n/* 590 */,\n/* 591 */,\n/* 592 */,\n/* 593 */,\n/* 594 */,\n/* 595 */,\n/* 596 */,\n/* 597 */,\n/* 598 */,\n/* 599 */,\n/* 600 */,\n/* 601 */,\n/* 602 */,\n/* 603 */,\n/* 604 */,\n/* 605 */,\n/* 606 */,\n/* 607 */,\n/* 608 */,\n/* 609 */,\n/* 610 */,\n/* 611 */,\n/* 612 */,\n/* 613 */,\n/* 614 */,\n/* 615 */,\n/* 616 */,\n/* 617 */,\n/* 618 */,\n/* 619 */,\n/* 620 */\n/***/ (function(module, exports, __webpack_require__) {\n\nvar map = {\n\t\"./af\": 116,\n\t\"./af.js\": 116,\n\t\"./ar\": 123,\n\t\"./ar-dz\": 117,\n\t\"./ar-dz.js\": 117,\n\t\"./ar-kw\": 118,\n\t\"./ar-kw.js\": 118,\n\t\"./ar-ly\": 119,\n\t\"./ar-ly.js\": 119,\n\t\"./ar-ma\": 120,\n\t\"./ar-ma.js\": 120,\n\t\"./ar-sa\": 121,\n\t\"./ar-sa.js\": 121,\n\t\"./ar-tn\": 122,\n\t\"./ar-tn.js\": 122,\n\t\"./ar.js\": 123,\n\t\"./az\": 124,\n\t\"./az.js\": 124,\n\t\"./be\": 125,\n\t\"./be.js\": 125,\n\t\"./bg\": 126,\n\t\"./bg.js\": 126,\n\t\"./bm\": 127,\n\t\"./bm.js\": 127,\n\t\"./bn\": 128,\n\t\"./bn.js\": 128,\n\t\"./bo\": 129,\n\t\"./bo.js\": 129,\n\t\"./br\": 130,\n\t\"./br.js\": 130,\n\t\"./bs\": 131,\n\t\"./bs.js\": 131,\n\t\"./ca\": 132,\n\t\"./ca.js\": 132,\n\t\"./cs\": 133,\n\t\"./cs.js\": 133,\n\t\"./cv\": 134,\n\t\"./cv.js\": 134,\n\t\"./cy\": 135,\n\t\"./cy.js\": 135,\n\t\"./da\": 136,\n\t\"./da.js\": 136,\n\t\"./de\": 139,\n\t\"./de-at\": 137,\n\t\"./de-at.js\": 137,\n\t\"./de-ch\": 138,\n\t\"./de-ch.js\": 138,\n\t\"./de.js\": 139,\n\t\"./dv\": 140,\n\t\"./dv.js\": 140,\n\t\"./el\": 141,\n\t\"./el.js\": 141,\n\t\"./en-SG\": 142,\n\t\"./en-SG.js\": 142,\n\t\"./en-au\": 143,\n\t\"./en-au.js\": 143,\n\t\"./en-ca\": 144,\n\t\"./en-ca.js\": 144,\n\t\"./en-gb\": 145,\n\t\"./en-gb.js\": 145,\n\t\"./en-ie\": 146,\n\t\"./en-ie.js\": 146,\n\t\"./en-il\": 147,\n\t\"./en-il.js\": 147,\n\t\"./en-nz\": 148,\n\t\"./en-nz.js\": 148,\n\t\"./eo\": 149,\n\t\"./eo.js\": 149,\n\t\"./es\": 152,\n\t\"./es-do\": 150,\n\t\"./es-do.js\": 150,\n\t\"./es-us\": 151,\n\t\"./es-us.js\": 151,\n\t\"./es.js\": 152,\n\t\"./et\": 153,\n\t\"./et.js\": 153,\n\t\"./eu\": 154,\n\t\"./eu.js\": 154,\n\t\"./fa\": 155,\n\t\"./fa.js\": 155,\n\t\"./fi\": 156,\n\t\"./fi.js\": 156,\n\t\"./fo\": 157,\n\t\"./fo.js\": 157,\n\t\"./fr\": 160,\n\t\"./fr-ca\": 158,\n\t\"./fr-ca.js\": 158,\n\t\"./fr-ch\": 159,\n\t\"./fr-ch.js\": 159,\n\t\"./fr.js\": 160,\n\t\"./fy\": 161,\n\t\"./fy.js\": 161,\n\t\"./ga\": 162,\n\t\"./ga.js\": 162,\n\t\"./gd\": 163,\n\t\"./gd.js\": 163,\n\t\"./gl\": 164,\n\t\"./gl.js\": 164,\n\t\"./gom-latn\": 165,\n\t\"./gom-latn.js\": 165,\n\t\"./gu\": 166,\n\t\"./gu.js\": 166,\n\t\"./he\": 167,\n\t\"./he.js\": 167,\n\t\"./hi\": 168,\n\t\"./hi.js\": 168,\n\t\"./hr\": 169,\n\t\"./hr.js\": 169,\n\t\"./hu\": 170,\n\t\"./hu.js\": 170,\n\t\"./hy-am\": 171,\n\t\"./hy-am.js\": 171,\n\t\"./id\": 172,\n\t\"./id.js\": 172,\n\t\"./is\": 173,\n\t\"./is.js\": 173,\n\t\"./it\": 175,\n\t\"./it-ch\": 174,\n\t\"./it-ch.js\": 174,\n\t\"./it.js\": 175,\n\t\"./ja\": 176,\n\t\"./ja.js\": 176,\n\t\"./jv\": 177,\n\t\"./jv.js\": 177,\n\t\"./ka\": 178,\n\t\"./ka.js\": 178,\n\t\"./kk\": 179,\n\t\"./kk.js\": 179,\n\t\"./km\": 180,\n\t\"./km.js\": 180,\n\t\"./kn\": 181,\n\t\"./kn.js\": 181,\n\t\"./ko\": 182,\n\t\"./ko.js\": 182,\n\t\"./ku\": 183,\n\t\"./ku.js\": 183,\n\t\"./ky\": 184,\n\t\"./ky.js\": 184,\n\t\"./lb\": 185,\n\t\"./lb.js\": 185,\n\t\"./lo\": 186,\n\t\"./lo.js\": 186,\n\t\"./lt\": 187,\n\t\"./lt.js\": 187,\n\t\"./lv\": 188,\n\t\"./lv.js\": 188,\n\t\"./me\": 189,\n\t\"./me.js\": 189,\n\t\"./mi\": 190,\n\t\"./mi.js\": 190,\n\t\"./mk\": 191,\n\t\"./mk.js\": 191,\n\t\"./ml\": 192,\n\t\"./ml.js\": 192,\n\t\"./mn\": 193,\n\t\"./mn.js\": 193,\n\t\"./mr\": 194,\n\t\"./mr.js\": 194,\n\t\"./ms\": 196,\n\t\"./ms-my\": 195,\n\t\"./ms-my.js\": 195,\n\t\"./ms.js\": 196,\n\t\"./mt\": 197,\n\t\"./mt.js\": 197,\n\t\"./my\": 198,\n\t\"./my.js\": 198,\n\t\"./nb\": 199,\n\t\"./nb.js\": 199,\n\t\"./ne\": 200,\n\t\"./ne.js\": 200,\n\t\"./nl\": 202,\n\t\"./nl-be\": 201,\n\t\"./nl-be.js\": 201,\n\t\"./nl.js\": 202,\n\t\"./nn\": 203,\n\t\"./nn.js\": 203,\n\t\"./pa-in\": 204,\n\t\"./pa-in.js\": 204,\n\t\"./pl\": 205,\n\t\"./pl.js\": 205,\n\t\"./pt\": 207,\n\t\"./pt-br\": 206,\n\t\"./pt-br.js\": 206,\n\t\"./pt.js\": 207,\n\t\"./ro\": 208,\n\t\"./ro.js\": 208,\n\t\"./ru\": 209,\n\t\"./ru.js\": 209,\n\t\"./sd\": 210,\n\t\"./sd.js\": 210,\n\t\"./se\": 211,\n\t\"./se.js\": 211,\n\t\"./si\": 212,\n\t\"./si.js\": 212,\n\t\"./sk\": 213,\n\t\"./sk.js\": 213,\n\t\"./sl\": 214,\n\t\"./sl.js\": 214,\n\t\"./sq\": 215,\n\t\"./sq.js\": 215,\n\t\"./sr\": 217,\n\t\"./sr-cyrl\": 216,\n\t\"./sr-cyrl.js\": 216,\n\t\"./sr.js\": 217,\n\t\"./ss\": 218,\n\t\"./ss.js\": 218,\n\t\"./sv\": 219,\n\t\"./sv.js\": 219,\n\t\"./sw\": 220,\n\t\"./sw.js\": 220,\n\t\"./ta\": 221,\n\t\"./ta.js\": 221,\n\t\"./te\": 222,\n\t\"./te.js\": 222,\n\t\"./tet\": 223,\n\t\"./tet.js\": 223,\n\t\"./tg\": 224,\n\t\"./tg.js\": 224,\n\t\"./th\": 225,\n\t\"./th.js\": 225,\n\t\"./tl-ph\": 226,\n\t\"./tl-ph.js\": 226,\n\t\"./tlh\": 227,\n\t\"./tlh.js\": 227,\n\t\"./tr\": 228,\n\t\"./tr.js\": 228,\n\t\"./tzl\": 229,\n\t\"./tzl.js\": 229,\n\t\"./tzm\": 231,\n\t\"./tzm-latn\": 230,\n\t\"./tzm-latn.js\": 230,\n\t\"./tzm.js\": 231,\n\t\"./ug-cn\": 232,\n\t\"./ug-cn.js\": 232,\n\t\"./uk\": 233,\n\t\"./uk.js\": 233,\n\t\"./ur\": 234,\n\t\"./ur.js\": 234,\n\t\"./uz\": 236,\n\t\"./uz-latn\": 235,\n\t\"./uz-latn.js\": 235,\n\t\"./uz.js\": 236,\n\t\"./vi\": 237,\n\t\"./vi.js\": 237,\n\t\"./x-pseudo\": 238,\n\t\"./x-pseudo.js\": 238,\n\t\"./yo\": 239,\n\t\"./yo.js\": 239,\n\t\"./zh-cn\": 240,\n\t\"./zh-cn.js\": 240,\n\t\"./zh-hk\": 241,\n\t\"./zh-hk.js\": 241,\n\t\"./zh-tw\": 242,\n\t\"./zh-tw.js\": 242\n};\nfunction webpackContext(req) {\n\treturn __webpack_require__(webpackContextResolve(req));\n};\nfunction webpackContextResolve(req) {\n\tvar id = map[req];\n\tif(!(id + 1)) // check for number or string\n\t\tthrow new Error(\"Cannot find module '\" + req + \"'.\");\n\treturn id;\n};\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 620;\n\n/***/ }),\n/* 621 */,\n/* 622 */,\n/* 623 */,\n/* 624 */,\n/* 625 */,\n/* 626 */,\n/* 627 */,\n/* 628 */,\n/* 629 */,\n/* 630 */,\n/* 631 */,\n/* 632 */,\n/* 633 */,\n/* 634 */,\n/* 635 */,\n/* 636 */,\n/* 637 */,\n/* 638 */,\n/* 639 */,\n/* 640 */,\n/* 641 */,\n/* 642 */,\n/* 643 */,\n/* 644 */\n/***/ (function(module, exports, __webpack_require__) {\n\n// style-loader: Adds some css to the DOM by adding a \r\n\n\n\n// WEBPACK FOOTER //\n// upload.vue?3bf3d228","\n\n \n\n \n \n \n \n \n\n \n \n \n \n\n \n \n\n \n\n \n\n \n \n\n \n \n\n\n \n \n \n \n \n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// App.vue?346219a2","\n\n \n \n \n You do not have access to the page you requested\n You do not have access to the page: {{text}}\n \n \n \n\n \n\n\n// WEBPACK FOOTER //\n// hydroware-access-to-page-denied.vue?b84140e0","\r\n\r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\t\t \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\t\t \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Victim(s)\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Name\r\n | \r\n \r\n Address\r\n | \r\n \r\n City\r\n | \r\n \r\n State\r\n | \r\n \r\n Zip Code\r\n | \r\n \r\n Phone Number\r\n | \r\n \r\n Age\r\n | \r\n \r\n Activity\r\n | \r\n | \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{myController.$hydrowareCommonJS.hydrowareMsgForNoData}}\r\n \r\n \r\n | \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n Name:\r\n \r\n \r\n \r\n Activity:\r\n \r\n \r\n \r\n \r\n Phone #:\r\n \r\n \r\n \r\n \r\n Age:\r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n Address:\r\n \r\n \r\n \r\n \r\n City:\r\n \r\n \r\n \r\n \r\n State:\r\n \r\n \r\n \r\n \r\n Zip Code:\r\n \r\n \r\n \r\n | \r\n \r\n \r\n\r\n\r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n | \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n Witness\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Name\r\n | \r\n \r\n Address\r\n | \r\n \r\n City\r\n | \r\n \r\n State\r\n | \r\n \r\n Zip Code\r\n | \r\n \r\n Phone Number\r\n | \r\n \r\n Age\r\n | \r\n | \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{myController.$hydrowareCommonJS.hydrowareMsgForNoData}}\r\n \r\n \r\n | \r\n \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n Name:\r\n \r\n \r\n \r\n Phone #:\r\n \r\n \r\n \r\n \r\n Age:\r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n Address:\r\n \r\n \r\n \r\n \r\n City:\r\n \r\n \r\n \r\n \r\n State:\r\n \r\n \r\n \r\n \r\n Zip Code:\r\n \r\n \r\n \r\n | \r\n \r\n \r\n\r\n\r\n\r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \n\n\n// WEBPACK FOOTER //\n// accidentForm.vue?7d3fe51a","\r\n \r\n \r\n \r\n \r\n \r\n \r\n {{props.row.IncidentDate | fdate}}\r\n \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \n\n\n// WEBPACK FOOTER //\n// incidentAndAccidentTable.vue?7b756572","\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Involved party(s)\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Name\r\n | \r\n \r\n Address\r\n | \r\n \r\n City\r\n | \r\n \r\n State\r\n | \r\n \r\n Zip Code\r\n | \r\n \r\n Phone Number\r\n | \r\n \r\n Age\r\n | \r\n | \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{myController.$hydrowareCommonJS.hydrowareMsgForNoData}}\r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Name:\r\n \r\n \r\n \r\n Phone #:\r\n \r\n \r\n \r\n \r\n Age:\r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n Address:\r\n \r\n \r\n \r\n \r\n City:\r\n \r\n \r\n \r\n \r\n State:\r\n \r\n \r\n \r\n \r\n Zip Code:\r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n | \r\n \r\n\r\n \r\n \r\n \r\n | \r\n\r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Witness\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n Name\r\n | \r\n \r\n Address\r\n | \r\n \r\n City\r\n | \r\n \r\n State\r\n | \r\n \r\n Zip Code\r\n | \r\n \r\n Phone Number\r\n | \r\n \r\n Age\r\n | \r\n | \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{myController.$hydrowareCommonJS.hydrowareMsgForNoData}}\r\n \r\n \r\n | \r\n \r\n \r\n\r\n\r\n \r\n \r\n \r\n Name:\r\n \r\n \r\n \r\n Phone #:\r\n \r\n \r\n \r\n \r\n Age:\r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n Address:\r\n \r\n \r\n \r\n \r\n City:\r\n \r\n \r\n \r\n \r\n State:\r\n \r\n \r\n \r\n \r\n Zip Code:\r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Staff on Duty\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Name\r\n | \r\n | \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{myController.$hydrowareCommonJS.hydrowareMsgForNoData}}\r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n\r\n \r\n\r\n\r\n \r\n \n\n\n// WEBPACK FOOTER //\n// incidentForm.vue?526011c6","\r\n \r\n \r\n Add\r\n {{text}}\r\n \r\n\r\n \n\n\n// WEBPACK FOOTER //\n// hydroware-add-button.vue?062a32d4","\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{title}}\r\n \r\n \r\n | \r\n \r\n \r\n after the title\r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{oneCheckbox[varForDisplayedValue]}}\r\n \r\n \r\n \r\n \r\n\r\n \n\n\n// WEBPACK FOOTER //\n// hydroware-checkbox-group.vue?d24b1d88","\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {{title}}\r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n | \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \n\n\n// WEBPACK FOOTER //\n// hydroware-container-with-heading.vue?3f396d1d","\r\n\r\n \r\n {{text}}\r\n\r\n\r\n \n\n\n// WEBPACK FOOTER //\n// hydroware-copy-button.vue?ecf0b1f6","\r\n\r\n \r\n {{text}}\r\n\r\n\r\n \n\n\n// WEBPACK FOOTER //\n// hydroware-delete-button.vue?21d3083e","\r\n\r\n \r\n {{text}}\r\n\r\n\r\n \n\n\n// WEBPACK FOOTER //\n// hydroware-edit-button.vue?c944fb96","\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\n\n\n// WEBPACK FOOTER //\n// hydroware-inline-input.vue?94060892","\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \n\n\n// WEBPACK FOOTER //\n// hydroware-success-failure-buttons.vue?87947dee","\r\n\r\n \r\n {{text}}\r\n\r\n\r\n \n\n\n// WEBPACK FOOTER //\n// hydroware-view-button.vue?4bd17b42","\r\n\r\n \r\n \r\n \r\n \r\n\r\n\r\n \n\n\n// WEBPACK FOOTER //\n// hydroware-viewOrEdit-button.vue?774ae671","import * as service from './calender.service'\n\nexport default {\n data() {\n return {\n events: [],\n config: {\n header: {\n right: ''\n },\n edit: false,\n editable: false,\n stick: true,\n defaultView: 'month'\n },\n eventDetails: [{\n 'ActivityTypeDesc': '',\n 'ProgramName': '',\n 'Description': '',\n 'StartDate': '',\n 'EndDate': '',\n 'MondayEnd': '',\n 'MondayStart': '',\n 'TuesdayEnd': '',\n 'TuesdayStart': '',\n 'WednesdayEnd': '',\n 'WednesdayStart': '',\n 'ThursdayEnd': '',\n 'ThursdayStart': '',\n 'FridayEnd': '',\n 'FridayStart': '',\n 'SaturdayEnd': '',\n 'SaturdayStart': '',\n 'SundayEnd': '',\n 'SundayStart': '',\n\n }],\n Locations: [],\n Pools: [],\n locationId: '',\n locationName: '',\n poolId: '',\n\n }\n },\n\n mounted() {\n this.getLocations()\n let context = this\n\n this.$router.app.$on('emittedlocation_obj', (data) => {\n context.locationId = data.LocationId ? data.LocationId : ''\n context.locationName = data.LocationName ? ' - ' + data.LocationName : ''\n if (context.locationId) {\n context.GetActivityCalendar(this.locationId, this.poolId)\n }\n\n // alert(JSON.stringify(data))\n\n })\n this.$router.app.$on('emittedpool_obj', (data) => {\n\n context.poolId = data.PoolId ? data.PoolId : ''\n context.poolName = data.PoolName ? '(Aquatic Venue : ' + data.PoolName + ')' : ''\n if (context.poolId) {\n context.GetActivityCalendar(this.locationId, this.poolId)\n }\n\n\n // alert(JSON.stringify(data))\n\n })\n\n\n this.$router.app.$on('emitCalender', (data) => {\n\n context.getLocations()\n\n })\n\n },\n\n methods: {\n eventSelected(event) {\n\n this.eventDetails = []\n this.eventDetails.push(event.data)\n $('#eventsModel').modal('show')\n },\n getLocations() {\n let context = this\n\n service.GetLocations().then(function (response) {\n\n if (response) {\n if (response.length > 0) {\n context.Locations = response\n context.locationId = response[0].LocationId\n context.getpools(context.locationId)\n\n }\n\n }\n\n }, (error) => {\n\n })\n\n },\n locationChanged(locationId) {\n this.getpools(locationId)\n },\n getpools(locationid) {\n let context = this\n\n service.GetPools(locationid).then(function (response) {\n\n if (response) {\n\n if (response.length > 0) {\n context.Pools = response\n\n context.poolId = response[0].PoolId\n\n context.GetActivityCalendar(context.locationId, context.poolId)\n\n }\n }\n }, (error) => {\n\n })\n },\n poolChanged(poolId) {\n this.GetActivityCalendar(this.locationId, this.poolId)\n },\n GetActivityCalendar(locationid, poolId) {\n let context = this\n if (poolId) {\n service.GetActivityCalendar(locationid, poolId).then(function (response) {\n context.events = []\n if (response) {\n\n if (response.length > 0) {\n\n response.map(function (el) {\n\n context.events.push({\n title: el.ProgramName,\n start: context.$moment(el.StartDate).format('YYYY-MM-DD'),\n end: context.$moment(el.EndDate).format('YYYY-MM-DD') + '' + 'T23:59:00',\n data: el,\n allDay: false\n })\n })\n\n }\n }\n }, (error) => {\n\n })\n }\n\n },\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/ActivityCalender/calender.controller.js","export const GetActivityCalendar = (locationId,poolId) => {\n\n return $.get('Patron/GetActivityCalendar?locationId='+locationId+'&poolId='+poolId)\n\n}\n\nexport const GetLocations = () => {\n let havingPools=true;\n return $.get('Location/GetLocations?havingPools='+havingPools)\n\n}\nexport const GetPools = (locationid) => {\n\n return $.get('Pool/GetPools?locationId='+locationid)\n\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/ActivityCalender/calender.service.js","import * as services from './addcertificates.service'\nimport {\n UpdateCertificate\n} from './addcertificates.service';\nexport default {\n\n data() {\n return {\n //coloumns and properties for certificate list\n compliance_columns: ['CertificateName', 'CertificateAgency', 'Number', 'Instructor', 'IssueDate', 'ExpiryDate', 'Actions'],\n agency_columns: ['CertificateAgencyName'],\n optionstreetable: {\n headings: {\n CertificateAgencyName: 'Agency Name',\n }\n },\n\n optionstable: {\n skin: this.$hydrowareCommonJS.hydrowareTableSkin,\n headings: {\n CertificateName: 'Certification Name',\n CertificateAgency: 'Agency Name',\n Number: 'Number',\n Instructor: 'Instructor',\n IssueDate: 'Issue Date',\n ExpiryDate: 'Expiry Date',\n Actions: ''\n },\n labelPosition: 'top',\n perPage: 5,\n perPageValues: [5, 10, 25, 50, 100],\n sortable: ['IssueDate','ExpiryDate'],\n orderBy: {\n column: 'ExpiryDate',\n ascending: true //FG - FOOF - After Cert - First Release (3) - this had been sorting in the opposite direction, now it shows cert that is expiring soonest at the top by default\n },\n texts: {\n filterPlaceholder: 'Search...',\n limit: 'rows per page:',\n noResults: 'No matching records',\n }\n },\n //object used for passing while adding a certificate\n Certificate: {\n 'PersonnelId': '',\n 'CertificationId': '',\n 'Number': '',\n 'Instructor': '',\n 'ExpiryDate': '',\n 'IssueDate': '',\n 'Attachments': [],\n 'Id': ''\n },\n CertificateEditID: '',\n ChangedAttachFiles: '',\n CertificateList: [],\n AgencyCertificateList: [],\n certificateexpirationtime: '',\n certificateexpirationstatus: '',\n selectedcertificates: '',\n selectedagency: '',\n editselectedagency: '',\n editissuedate: '',\n issuedate: '',\n image_data: [],\n attachedfiles: [],\n Attachments: [],\n certificateslistperperson: [],\n AgencyList: '',\n isadding: false,\n isediting: false,\n isviewing: true,\n activestatus: true,\n pid: '',\n isself: false,//FG - FOOF - After Cert - First Release Security\n url: 'http://dev-hydronew.azurewebsites.net/api/Documents/CertificationDocuments/',\n //FG - FOOF - added var below\n copyOfCertBeingEdited: null\n\n }\n },\n //props: ['data'], //FG - FOOF - replaced this line with the line belo\n props: ['data', 'editShow', 'showInitialView'],\n mounted() {\n if (this.$route.params.id) {\n this.pid = this.$route.params.id\n this.getAllCertificateLists();\n }\n this.image_data = []\n this.image_data = new FormData()\n // this.getAllAgencyCertificates()\n this.getAllCertificateListsandAgency()\n //FG - FOOF - After Cert - First Release Security - added line below\n this.isself = (this.pid == JSON.parse(localStorage.getItem('authentication')).PersonnelId) ? true : false\n this.viewCertificates();\n },\n methods: {\n addCertificates() {\n this.isadding = true\n this.Certificate = {\n 'CertificationId': '',\n 'Number': '',\n 'Instructor': '',\n 'ExpiryDate': '',\n 'IssueDate': '',\n 'Attachments': [],\n 'Id': ''\n }\n\n },\n getAllCertificateLists() {\n let context = this;\n services.GetCertificateList(this.pid).then(function (response) {\n if (response != null)\n context.certificateslistperperson = response\n else\n context.certificateslistperperson = []\n }), (error) => {\n\n }\n\n },\n getAllCertificateListsandAgency() {\n let context = this;\n services.GetCertificateAgencyTree().then(function (response) {\n\n context.AgencyCertificateList = []\n var data = deepcopy(response)\n data.filter(function (item) {\n item.IsActive = true\n context.AgencyCertificateList.push(item)\n })\n context.selectedcertificates = context.AgencyCertificateList[0].CertificateNameId\n context.AgencyList = context.AgencyCertificateList[0].Agencies\n context.selectedagency = context.AgencyList[0].CertificateId\n })\n },\n\n editCertificates(item) {\n this.editShow = true\n this.isediting=true\n this.isadding=false\n this.isviewing=false\n },\n\n viewCertificates() {//show the table of certs (all of 'em)\n this.editShow = false\n this.isadding = false\n this.isediting = false\n this.isviewing = false\n },\n viewOneCertificate(item) {//show a single certificate from the table\n this.editShow = true\n this.copyOfCertBeingEdited = deepcopy(item)\n this.isviewing = true\n let context = this\n this.image_data = []\n this.image_data = new FormData()\n var certificateedit = item.row\n this.editissuedate = certificateedit.IssueDate\n this.editselectedagency = certificateedit.CertificationId\n this.selectedcertificates = certificateedit.OrgCertificateNameId\n this.isediting = false\n this.isadding = false\n \n this.CertificateEditID = certificateedit.Id\n this.Certificate = certificateedit\n this.issuedate = certificateedit.IssueDate\n // this.formatExpiryDate(dateval)\n this.Attachments = certificateedit.AttachedFiles\n setTimeout(function () {}, 6000);\n },\n resetPlease() {\n this.viewOneCertificate(this.copyOfCertBeingEdited) \n },\n updatecertificates() {\n let context = this;\n this.Certificate.CertificationId = this.selectedcertificates\n this.Certificate.IssueDate = context.$options.filters.fdate(this.issuedate)\n this.Certificate.Attachments = this.Attachments\n this.Certificate.ExpiryDate = context.$options.filters.fdate(this.Certificate.ExpiryDate)\n services.UpdateCertificate(this.Certificate)\n },\n deleteCertificate(item) {\n let context = this\n /*\n FG - FOOF - After Cert - First Release (5) - made the prompt more specific by adding the cert name\n */\n context.$confirm('Are you sure you want to delete the '+ item.row.CertificateName + ' certificate?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n loader.startLoader()\n services.DeleteCertificateList(item.row.Id).then(function (response) { //added response as the returned value it had been () \n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.getAllCertificateLists()\n loader.stopLoader()\n context.$notify({\n title: 'Deleted',\n message: 'Deleted Successfully',\n type: 'success'\n })\n }), (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n }\n }).catch(() => {\n\n })\n\n },\n loadCertificates(id) {\n let context = this;\n this.AgencyCertificateList.filter(function (item) {\n\n if (item.CertificateNameId == id) {\n context.AgencyList = item.Agencies\n if (context.editselectedagency != \"\") {\n context.selectedagency = context.editselectedagency\n } else {\n context.selectedagency = context.AgencyList[0].CertificateId\n }\n context.editselectedagency = \"\"\n\n }\n })\n },\n getExpirationYear() {\n let context = this;\n this.AgencyList.filter(function (item) {\n if (item.CertificateId == context.selectedcertificates)\n context.certificateexpirationtime = item.ExpiryPeriod\n context.certificateexpirationstatus = item.ExpiryStatus\n })\n },\n setAttachment(e) {\n let context = this\n\n function getExtension(filename) {\n var parts = filename.split('.')\n return parts[parts.length - 1]\n }\n\n for (var i = 0; i < e.target.files.length; i++) {\n var name = e.target.files[i].name\n var type = e.target.files[i].type\n var size = e.target.files[i].size\n\n if (type != 'image/jpeg' && type != 'image/jpg' && type != 'image/png' && getExtension(name) != 'docx' && getExtension(name) != 'doc' && getExtension(name) != 'txt' && getExtension(name) != 'pdf') {\n alert('Invalid file format')\n return\n }\n if (size == 0) {\n alert('File is Empty')\n return\n }\n if (size > 5000000) {\n alert('You have exceeded the maximum image size of 5 MB')\n return\n }\n var id = i\n this.image_data.append('Attachments[' + i + ']', e.target.files[i])\n this.Attachments.push({\n FileName: name,\n MediaType: type,\n id: id,\n })\n\n }\n },\n removeattachedtag(tag) {\n let context = this\n let ps = []\n for (var i = 0; i < this.Attachments.length; i++) {\n if (this.Attachments[i].id == tag.id) {\n this.image_data.delete('Attachments[' + i + ']')\n for (var j = 0; j < this.Attachments.length; j++) {\n var files = this.image_data.getAll('Attachments[' + j + ']')\n if (files.length > 0) {\n $.each(files, function (h, v) {\n ps.push(v)\n })\n }\n }\n this.Attachments.splice(i, 1)\n break\n }\n }\n if (ps.length > 0) {\n this.image_data = []\n this.image_data = new FormData()\n for (var k = 0; k < ps.length; k++) {\n this.image_data.append('Attachments[' + k + ']', ps[k])\n }\n }\n },\n removeeditattachmnets(tag) {\n for (var i = 0; i < this.Attachments.length; i++) {\n if (this.Attachments[i].DocumentPath == tag.DocumentPath) {\n this.Attachments.splice(i, 1)\n break\n }\n }\n for (var i = 0; i < this.addDocument.ComplianceDocumentFiles.length; i++) {\n if (this.addDocument.ComplianceDocumentFiles[i].Id == tag.Id) {\n this.DocIds.splice(i, 1)\n break\n }\n }\n },\n createCertificates() {\n var image_arr = {}\n let context = this;\n if (context.Certificate.Instructor) {\n image_arr['Instructor'] = context.Certificate.Instructor\n } else {\n image_arr['Instructor'] = ''\n }\n\n if (context.issuedate) {\n // var formatdate= context.issuedate.split(\"-\");\n image_arr['IssueDate'] = context.$options.filters.fdate(context.issuedate)\n } else {\n image_arr['IssueDate'] = ''\n }\n\n if (context.Certificate.Number) {\n image_arr['Number'] = context.Certificate.Number\n } else {\n image_arr['Number'] = ''\n }\n\n if (context.Certificate.ExpiryDate) {\n // context.$options.filters.fdate(context.Certificate.ExpiryDate)\n image_arr['ExpiryDate'] = context.Certificate.ExpiryDate\n } else {\n image_arr['ExpiryDate'] = ''\n }\n if (context.pid) {\n image_arr['PersonnelId'] = context.pid\n } else {\n image_arr['PersonnelId'] = ''\n }\n if (context.selectedagency) {\n image_arr['CertificationId'] = context.selectedagency\n } else {\n image_arr['CertificationId'] = ''\n }\n for (var key in image_arr) {\n\n this.image_data.append(key, image_arr[key])\n }\n services.AddCertificate(this.image_data).then(function (response) { \n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n \n context.image_data = new FormData()\n context.getAllCertificateLists()\n loader.stopLoader()\n context.$notify({\n title: 'Success',\n message: 'Certificate Added',\n type: 'success'\n })\n context.isadding = false\n }, (error) => {\n\n for (var key in image_arr) {\n context.image_data.delete(key, image_arr[key])\n }\n\n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n\n },\n UpdateCertificate() {\n var image_arr = {}\n var filenames = []\n let context = this;\n for (var i = 0; i < this.Attachments.length; i++) {\n if (context.Attachments[i].RealFileName)\n filenames.push(context.Attachments[i].DocumentPath);\n }\n var AttachedFiles = filenames.join(\",\")\n\n if (context.Certificate.Instructor) {\n image_arr['Instructor'] = context.Certificate.Instructor\n } else {\n image_arr['Instructor'] = ''\n }\n\n if (context.issuedate) {\n image_arr['IssueDate'] = context.$options.filters.fdate(context.issuedate)\n } else {\n image_arr['IssueDate'] = ''\n }\n\n if (context.Certificate.Number) {\n image_arr['Number'] = context.Certificate.Number\n } else {\n image_arr['Number'] = ''\n }\n\n if (context.Certificate.ExpiryDate) {\n image_arr['ExpiryDate'] = context.$options.filters.fdate(context.Certificate.ExpiryDate)\n } else {\n image_arr['ExpiryDate'] = ''\n }\n if (context.pid) {\n image_arr['PersonnelId'] = context.pid\n } else {\n image_arr['PersonnelId'] = ''\n }\n if (context.selectedagency) {\n image_arr['CertificationId'] = context.selectedagency\n } else {\n image_arr['CertificationId'] = ''\n }\n if (AttachedFiles) {\n image_arr['ChangedAttachFiles'] = AttachedFiles\n } else {\n image_arr['ChangedAttachFiles'] = ''\n }\n if (context.CertificateEditID) {\n image_arr['Id'] = context.CertificateEditID\n } else {\n image_arr['Id'] = ''\n }\n for (var key in image_arr) {\n\n this.image_data.append(key, image_arr[key])\n }\n\n services.UpdateCertificate(this.image_data).then(function (response) {\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n context.image_data = new FormData()\n context.getAllCertificateLists()\n loader.stopLoader()\n context.$notify({\n title: 'Success',\n message: 'Certificate Updated',\n type: 'success'\n })\n context.isediting = false\n }), (error) => {\n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n }\n },\n backProfile() {\n this.$router.push('/addpersonnel')\n\n },\n getFormattedDate(date) {\n var year = date.getFullYear();\n\n var month = (1 + date.getMonth()).toString();\n month = month.length > 1 ? month : '0' + month;\n\n var day = date.getDate().toString();\n day = day.length > 1 ? day : '0' + day;\n\n return month + '/' + day + '/' + year;\n },\n changeStatus(item) {\n\n var message = '';\n var successmsg = ''\n if (item.IsActive == true) {\n message = ' Are you sure you want to deactivate this certificate'\n successmsg = 'Deactivated the Certificate'\n } else {\n message = 'Are you sure you want to activate this certificate'\n successmsg = 'Activated the Certificate'\n }\n let context = this\n context.$confirm(message, 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n loader.startLoader()\n services.ChangeStatus(item.Id, !item.IsActive).then(function (response) {\n context.getAllCertificateLists()\n loader.stopLoader()\n context.$notify({\n title: 'Success',\n message: successmsg,\n type: 'success'\n })\n }), (error) => {\n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n }\n }).catch(() => {\n\n })\n },\n downloadattachment(file) {\n\n let context = this\n var downloadurl = window.baseUrl + 'Documents/CertificationDocuments/' + file.DocumentPath\n window.open(downloadurl, '_blank')\n },\n formatExpiryDate(dateval) {\n var year = dateval.getFullYear();\n var month = (1 + dateval.getMonth()).toString();\n month = month.length > 1 ? month : '0' + month;\n var day = dateval.getDate().toString();\n day = day.length > 1 ? day : '0' + day;\n var date = month + '-' + day + '-' + year;\n this.Certificate.ExpiryDate = date.toString();\n },\n\n },\n watch: {\n showInitialView: function() {\n //alert(\"SHOW INITIAL VIEW: \" + this.showInitialView)\n let context = this;\n if(context.showInitialView == true) {\n context.viewCertificates();\n context.showInitialView = false;\n }\n },\n selectedcertificates: function (val) {\n this.loadCertificates(val)\n },\n selectedagency: function (val) {\n if (this.editissuedate != \"\") {\n this.issuedate = this.editissuedate\n } else {\n this.issuedate = \"\"\n }\n this.editissuedate = \"\"\n },\n issuedate: function (val) {\n let context = this\n\n if (val != \"\") {\n var dateval = new Date(val)\n this.AgencyList.filter(function (item) {\n if (item.CertificateId == context.selectedagency) {\n context.certificateexpirationtime = item.ExpiryPeriod\n context.certificateexpirationstatus = item.ExpiryStatus\n\n switch (context.certificateexpirationstatus) {\n case 'Years':\n {\n dateval.setFullYear(dateval.getFullYear() + context.certificateexpirationtime);\n context.formatExpiryDate(dateval)\n break;\n }\n case 'Months':\n {\n dateval.setMonth(dateval.getMonth() + context.certificateexpirationtime);\n context.formatExpiryDate(dateval)\n break;\n }\n case 'Days':\n {\n dateval.setDate(dateval.getDate() + context.certificateexpirationtime);\n context.formatExpiryDate(dateval)\n break;\n }\n default:\n {\n break;\n }\n }\n\n\n }\n })\n\n }\n },\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Certificates/addcertificates.controller.js","import * as service from '../../pages/Administration/OrganizationDetails.service'\nimport * as services from './addcertificates.service'\n\nexport default {\n props: [\"Certificateparams\"],\n data() {\n return {\n defaultExpiryDropDown: 'Years',\n\n Certificationcolumns: ['Name', 'Description', 'Actions'],\n optionstable: {\n\n headings: {\n Name: 'Name',\n Description: 'Description',\n edit: 'Edit',\n delete: 'Delete',\n Actions: ''\n\n },\n sortIcon: {\n base: 'glyphicon',\n up: 'glyphicon-chevron-up',\n down: 'glyphicon-chevron-down'\n },\n sortable: ['Name', 'Description'],\n texts: {\n\n filterPlaceholder: 'Search...',\n limit: 'Records:',\n noResults: 'No matching records',\n\n },\n sortable: [],\n\n },\n isaddCertificateTopic: false,\n CertificationTypes: [],\n AddCertificateForm: {\n\n Name: '',\n Description: '',\n IsActive: true,\n IssuedBy: '',\n ExpiryPeriod: '',\n ExpiryPeriodStatus: 'd'\n },\n agencydropdown: [],\n IsCertificateTypeEdit: false,\n period: 'd',\n CertificateTypeEditID: 0,\n organizationDetails: {},\n locations: [],\n pools: [],\n DisciplinaryAction: [],\n locationName: '',\n poolName: '',\n selectedlocationId: '',\n selectedpoolId: '',\n editLocation: false,\n editPool: false,\n currentLocationName: '',\n currentPoolName: '',\n act: false,\n poolpromptVisible: false,\n locationpromptVisible: false,\n positionpromptVisible: false,\n IsDiscEdit: false,\n selectedagency: '',\n organizationName: '',\n locationFlag: false,\n orgEditorgEdit: false,\n tabName: 'first',\n position: '',\n positions: [],\n roles: [],\n editPosition: false,\n selectedpositionId: '',\n currentPositionName: '',\n roleModel: '',\n modalTitle: '',\n AgencyCertificateList: [],\n isNewCertificates: '',\n Certificatelist: [],\n Agencylist: [],\n isaddCertificate: false,\n isediting: false,\n agencyforedit: [],\n role: '',\n Certificate: {\n CertificateName: '',\n OrgCertificateNameId: '',\n ExpiryPeriod: '',\n ExpiryStatus: '',\n IsActive: '',\n OrgCertificateAgencyId: '',\n Id: '',\n CertificateAgency: '',\n OrganizationId: ''\n },\n idlist: [],\n CertificateTopicName: '',\n ExpiryStatusList: [{\n Status: 'Years',\n Value: 'Years'\n }, {\n Status: 'Months',\n Value: 'Months'\n }, {\n Status: 'Days',\n Value: 'Days'\n }],\n tree_class: 'fa-minus-circle',\n options: [{\n value: 'PDT',\n label: 'PDT'\n }, {\n value: 'MDT',\n label: 'MDT'\n }, {\n value: 'CDT',\n label: 'CDT'\n }, {\n value: 'EDT',\n label: 'EDT'\n }],\n Timezone: '',\n pdays: [],\n cdays: '',\n Timezoneselected: ''\n }\n },\n mounted() {\n\n var id = this.Certificateparams.organizationid\n this.pdays = [{\n value: 'd',\n label: 'Days'\n },\n {\n value: 'm',\n label: 'Months'\n },\n {\n value: 'y',\n label: 'Years'\n }\n ]\n this.organizationDetails = {\n organizationId: authDetails.OrganizationId,\n organizationName: authDetails.OrganizationName\n }\n this.role = JSON.parse(this.$localStorage.get('authentication')).role\n\n this.getAllAgencyCertificates()\n this.getAllActiveCertificateAgency()\n },\n\n methods: {\n checkNumber() {\n let context = this\n setTimeout(function () {\n context.AddCertificateForm.ExpiryPeriod = context.AddCertificateForm.ExpiryPeriod.replace(/[^0-9]/g, '')\n }, 10)\n\n }, \n getAllActiveCertificateAgency() {\n let context = this;\n //admin cert - get the agencies\n services.GetAllCertificateAgency(this.Certificateparams.organizationid).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n context.Agencylist = [] \n loader.stopLoader()\n return;\n }\n\n context.agencydropdown = deepcopy(response)\n context.Agencylist = response\n context.Agencylist.push({\n \"Id\": '0',\n \"Name\": \"New\"\n })\n context.selectedagency = context.Agencylist[0].Id\n },\n (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n getAllAgencyCertificates() {\n\n let context = this;\n //admin cert - get the \"tree\"\n services.GetCertificateAgencyTree(this.Certificateparams.organizationid).then(function (response) {\n \n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n context.AgencyCertificateList = [] \n loader.stopLoader()\n return;\n }\n\n context.AgencyCertificateList = response\n services.AllCertificates(true, context.Certificateparams.organizationid).then(function (result) {\n result.map(function (el) {\n\n var flag = false\n for (var i = 0; i < context.AgencyCertificateList.length; i++) {\n if (el.Id == context.AgencyCertificateList[i].CertificateNameId) {\n flag = true\n }\n }\n if (flag == false) {\n context.AgencyCertificateList.push({\n CertificateNameId: el.Id,\n CertificateName: el.Name,\n IsActive: el.IsActive,\n IsAdminCustom: el.IsAdminCustom,\n IsDirectorCustom: el.IsDirectorCustom,\n showChild: false,\n isaddChild: false,\n iseditCertificateName: false,\n EditCertificatename: ''\n })\n }\n })\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n context.AgencyCertificateList = response.map(function (el) {\n var o = Object.assign({}, el);\n o.showChild = false;\n o.isaddChild = false;\n o.iseditCertificateName = false;\n o.EditCertificatename = \"\";\n var isadmincustom = false;\n var isdefault = false;\n var isdirectorcustom = false;\n if (o.Agencies) {\n o.Agencies.filter(function (item) {\n if (item.IsDefault == true)\n isdefault = true\n if (item.IsAdminCustom == true)\n isadmincustom = true\n if (item.IsDirectorCustom == true)\n isdirectorcustom = true\n })\n o.IsAdminCustom = isadmincustom\n o.IsDefault = isdefault\n o.IsDirectorCustom = isdirectorcustom\n }\n return o;\n })\n\n context.selectedcertificates = context.CertificateList[0].Id\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n canceladdTopic() {\n this.isaddCertificateTopic = false\n },\n\n //FG - FOOF - After Cert - First Release (5) - Rewrote function below to use new functions in\n // hydrowareCommon.js - look for \"FG - FOOF - After Cert - First Release (5)\" to find them\n deleteCertificate(item) { \n let context = this\n var opts = {message: 'Are you sure you want to delete ' + item.CertificateAgencyName +'?'}\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.callOnServiceToDelete.bind(null,item))\n },\n\n\n callOnServiceToDelete(item) {\n let context=this;\n loader.startLoader()\n var idlist = []\n idlist.push(item.CertificateId)\n var deleteobj = {\"IdList\": idlist}\n //admin cert - DELETE CERT AGENCY \n services.DeleteCertificate(deleteobj, this.Certificateparams.organizationid).then(\n function (response) { //FG - FOOF - After Cert - First Release Security - added response as a parm\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n context.getAllAgencyCertificates();\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n }, \n (error) => {\n loader.stopLoader()\n this.$hydrowareCommonJS.notifyError(this,{message: error.responseJSON.Message});\n }\n )\n },\n\n\n tryThisFunction(stuff) {\n var opts = {\n title: \"STUFF: \" + stuff,\n message: \"The delete was BLA BLA BLA.\"\n }\n this.$hydrowareCommonJS.displayPopupNoDelete(this,opts)\n },\n\n\n deleteCertificateTopic(certificate) {\n let context = this\n var idList = []\n if (this.role == \"Admin\")\n certificate.Agencies.filter(function (item) {\n if (item.IsAdminCustom || item.IsDirectorCustom) {\n idList.push(item.CertificateId)\n }\n })\n if (this.role == \"AquaticsDirector\") {\n certificate.Agencies.filter(function (item) {\n if (item.IsDirectorCustom) {\n idList.push(item.CertificateId)\n }\n })\n }\n idList.join(',')\n var deleteobj = {\n \"IdList\": idList\n }\n services.DeleteCertificate(deleteobj, this.Certificateparams.organizationid).then(function () {\n loader.stopLoader()\n context.getAllAgencyCertificates();\n context.$notify({\n title: 'Deleted',\n message: 'Deleted Successfully',\n type: 'success'\n })\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n \n },\n\n //------------------------------------------------------------------------------\n //FOOF - CERTIFICATE - ACTIVATE/DEACTIVATE\n //FG - FOOF - After Cert - First Release - FOUND DURING SECURITY REWRITE---\n //THE ORIGINAL CODE WANTED THE ACTIVATE/DEACTIVATE TO TAKE PLACE AS SOON AS THE\n //THE CHECK BOX WAS CLICKED BUT FUNCTION BELOW FAILED. I (FG) THOUGHT THAT\n //UPDATING THE STATUS IN THIS MANNER WAS NOT CONSISTENT\n //WITH THE WAY THE OTHER EDITS WERE APPLIED SO RATHER THAN TRYING TO\n //FIX THIS CODE I SIMPLY MODIFIED THE CHECKBOX (managecertificates.vue see- \"FOOF - ACTIVATE/DEACTIVATE\") SO \n //THE FUNCTION BELOW IS NOT CALLED AT ALL. \n //THE STATUS UPDATE TAKES PLACE WHEN THE \"SAVE\" BUTTON IS CLICKED.\n DeactivateCertificate(item) { \n //admin cert - ?? USED ?? DEACTIVATE - NO LONGER USED\n alert(\"CHANGE CERT AGENCY STATUS (ACTIVE/DEACTIVE\")\n /*\n let context = this;\n var idlist = []\n idlist.push(item.CertificateId)\n idlist.join(',')\n var object = {\n ActiveStatus: item.IsActive,\n IdList: idlist\n }\n loader.startLoader()\n services.ChangeCertificateStatus(object, this.Certificateparams.organizationid).then(function (response) { //FG - FOOF - After Cert - First Release Security - added response as parm\n \n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n \n loader.stopLoader()\n context.$notify({\n title: 'Success',\n message: 'Changed the status',\n type: 'success'\n })\n }, (error) => {\n loader.stopLoader()\n item.IsActive = !item.IsActive\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n */\n },\n //FG - FOOF - FUNCTION ABOVE IS NO LONGER CALLED\n //-----------------------------------------------------------------------\n\n editCertificate(agency, certificateitem) {\n this.isediting = true\n certificateitem.isaddChild = true\n this.Certificate.OrgCertificateNameId = certificateitem.CertificateNameId;\n this.Certificate.ExpiryPeriod = agency.ExpiryPeriod\n this.Certificate.ExpiryStatus = agency.ExpiryStatus\n this.Certificate.IsActive = agency.IsActive\n this.Certificate.Id = agency.CertificateId\n this.selectedagency = agency.CertificateAgencyId;\n },\n updateCertificate(item) {\n //admin cert - UPDATE CERT AGENCY\n let context = this\n this.Certificate.OrgCertificateNameId = item.CertificateNameId\n this.Certificate.OrgCertificateAgencyId = this.selectedagency\n this.Certificate.OrganizationId = this.Certificateparams.organizationid\n if (this.Certificate.ExpiryPeriod == \"\" && this.Certificate.ExpiryStatus != \"\") {\n this.Certificate.ExpiryStatus == \"\"\n }\n loader.startLoader()\n\n services.UpdateCertificates(this.Certificate).then(function (response) {\n \n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.getAllAgencyCertificates();\n loader.stopLoader()\n context.$notify({\n title: 'Updated',\n message: 'Updated Successfully',\n type: 'success'\n })\n }, (error) => {\n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n changeMonth(per) {\n\n if (per == 'y') {\n this.cdays = this.AddCertificateForm.ExpiryPeriod * 365\n } else if (per == 'm') {\n this.cdays = this.AddCertificateForm.ExpiryPeriod * 30\n } else {\n this.cdays = per\n }\n\n },\n\n showactions() {\n this.IsDiscEdit = false\n this.DisciplineForm = {\n Name: '',\n Description: '',\n IsActive: true,\n IssuedBy: '',\n ExpiryPeriod: '',\n ExpiryPeriodStatus: 'd'\n }\n $('#AddEventsmodel').modal('show')\n },\n showcertificate() {\n let context = this\n this.modalTitle = 'Add Certificate Type'\n $('#AddCertificatemodel').modal('show')\n\n setTimeout(function () {\n context.$refs['AddCertificateForm'].resetFields()\n }, 10)\n },\n addCertificate(item) {\n //admin cert - ADD CERT AGENCY\n let context = this\n this.Certificate.OrgCertificateAgencyId = this.selectedagency\n this.Certificate.OrgCertificateNameId = item.CertificateNameId\n if (this.Certificate.ExpiryPeriod == \"\" && this.Certificate.ExpiryStatus != \"\") {\n this.Certificate.ExpiryStatus == \"\"\n }\n this.Certificate.OrganizationId = this.Certificateparams.organizationid\n services.AddCertificates(this.Certificate).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n context.$notify({\n title: 'Success',\n message: 'Created Successfully',\n type: 'success'\n })\n context.getAllAgencyCertificates();\n context.getAllActiveCertificateAgency()\n\n }, (error) => {\n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n /*FG - FOOF - After Cert - First Release (5) \n I do not think the method below is used anymore. It was left here by digiclarity\n I have changed the text that displays so it reads \"(MSG 01) Are you sure you would like to\"\n instead of \"Are you sure you want to\"... If while testing you see a dialog that says\n \"(MSG 01) Are you sure you would like to...\" then you know it is still being used.\n */\n del: function (data) { alert(\"DELETE 1\")\n\n var ID = data.row.Id\n\n let context = this\n context.$confirm('(MSG 01) Are you sure you would like to delete?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n\n loader.startLoader()\n service.DeleteCertificationType(ID).then(function (response) {\n\n context.GetCertificationTypes()\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Deleted Successfully',\n type: 'success'\n })\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n // context.$message({\n // type: 'success',\n // message: 'Delete completed'\n // });\n }).catch(() => {\n\n })\n\n },\n\n cancelpopup: function () {\n this.IsCertificateTypeEdit = false\n $('#AddCertificatemodel').modal('hide')\n },\n\n editDiscip(data) {\n this.IsDiscEdit = true\n this.DisciplineForm['Id'] = data.row.Id\n\n this.DisciplineForm = data.row\n\n $('#AddEventsmodel').modal('show')\n },\n addCertificateTopic() {\n this.isaddCertificateTopic = true\n },\n createCertificateTopic() {\n //admin cert - CREATE CERTIFICATE NAME (ADD ?)\n let context = this\n var certificateTopic = {\n Name: this.CertificateTopicName,\n IsActive: true,\n OrganizationId: this.Certificateparams.organizationid\n }\n loader.startLoader() \n \n //FG - FOOF - WHILE WRITING SECURITY CODE I FOUND THAT WHEN AN EXCEPTION IS RETURNED FROM THE\n //SERVER THE NOTIFY CODE WAS NOT BEING EXECUTED.\n //I FOUND THAT THE ORIGINAL CODE HAD THE \", (error) => {...}\" IN THE WRONG PLACE.\n //IT'S PROPER PLACE IS JUST AFTER THE then's function\n //\n services.AddCertificateName(certificateTopic).then(\n //function (response) {\n (response) => { //SUCCESS \n \n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.getAllAgencyCertificates()\n context.isaddCertificateTopic = false\n loader.stopLoader()\n context.$notify({\n title: 'Success',\n message: \"Certificate Created\",\n type: 'success'\n }) \n }, //END OF THE FUNCTION THAT I THE FIRST PARAMETER OF then\n (error) => { //FAILURE \n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })//END OF NOTIFY\n } //END OF ERROR FUNCTION\n )//END OF THEN PARARMETERS\n },\n //FG - FOOF - AFTER CERT - FIRST RELEASE - I CANNOT FIND WHERE THE FUNCTION BELOW IS CALLED IS CALLED\n EditCertificateType: function (data) {\n //admin cert - ?? USED ?? EDIT CERT TYPE\n let context = this\n var ID = this.CertificateTypeEditID\n if (ID !== 0) {\n if (context.AddCertificateForm.ExpiryPeriodStatus == 'y') {\n context.cdays = context.AddCertificateForm.ExpiryPeriod * 365\n } else if (context.AddCertificateForm.ExpiryPeriodStatus == 'm') {\n context.cdays = context.AddCertificateForm.ExpiryPeriod * 30\n } else {\n context.cdays = context.AddCertificateForm.ExpiryPeriod\n }\n\n let model = {\n Id: ID,\n Name: context.AddCertificateForm.Name,\n Description: context.AddCertificateForm.Description,\n IsActive: context.AddCertificateForm.IsActive,\n IssuedBy: context.AddCertificateForm.IssuedBy,\n ExpiryPeriod: context.cdays,\n ExpiryPeriodStatus: context.AddCertificateForm.ExpiryPeriodStatus\n }\n loader.startLoader()\n service.UpdateCertificationType(model).then(function (response) \n {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.IsCertificateTypeEdit = false\n $('#AddCertificatemodel').modal('hide')\n context.CertificateTypeEditID = 0\n\n context.$notify({\n title: 'Success',\n message: 'Updated certificate type succesfully',\n type: 'success'\n })\n context.GetCertificationTypes()\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n }\n\n\n },\n\n editcol: function (data) {\n\n var ID = data.row.Id\n\n let context = this\n this.modalTitle = 'Edit Certificate Type'\n context.CertificateTypeEditID = ID\n context.AddCertificateForm = deepcopy(data.row)\n if (context.AddCertificateForm.ExpiryPeriodStatus == 'y') {\n context.AddCertificateForm.ExpiryPeriod = context.AddCertificateForm.ExpiryPeriod / 365\n } else if (context.AddCertificateForm.ExpiryPeriodStatus == 'm') {\n context.AddCertificateForm.ExpiryPeriod = context.AddCertificateForm.ExpiryPeriod / 30\n } else {\n context.AddCertificateForm.ExpiryPeriod = context.AddCertificateForm.ExpiryPeriod\n }\n context.IsCertificateTypeEdit = true\n $('#AddCertificatemodel').modal('show')\n },\n selectlocationCell(row) {\n if (this.selectedlocationId != row.LocationId) {\n this.getPools(row.LocationId)\n this.editLocation = false\n this.locationFlag = false\n }\n\n if (this.selectedlocationId == row.LocationId) {\n this.locationFlag = true\n\n }\n if (!this.locationFlag) {\n\n this.currentLocationName = row.LocationName\n this.Timezoneselected = row.LocationOffset\n }\n\n this.selectedlocationId = row.LocationId\n\n },\n\n selectpoolCell(row) {\n\n if (this.selectedpoolId != row.PoolId) {\n this.editPool = false\n }\n this.currentPoolName = row.PoolName\n this.selectedpoolId = row.PoolId\n\n },\n enableEditCertificateName(item) {\n item.iseditCertificateName = true\n item.EditCertificatename = item.CertificateName\n },\n cancelEditCertificateName(item) {\n item.iseditCertificateName = false\n item.EditCertificatename = \"\"\n },\n UpdateCertificateName(item) {\n //admin cert - Update Certificate Name\n let context = this\n var Object = {\n Id: item.CertificateNameId,\n Name: item.EditCertificatename,\n OrganizationId: this.Certificateparams.organizationid\n }\n\n loader.startLoader()\n services.EditCertificateTopic(Object).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n item.CertificateName = item.EditCertificatename\n item.iseditCertificateName = false\n loader.stopLoader()\n context.$notify({\n title: 'Success',\n message: 'Certificate Name Updated',\n type: 'success'\n })\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n\n })\n })\n },\n selectpositionCell(row) {\n\n //this.currentPositionName = row.PositionName\n // this.selectedpoolId = row.PositionId\n\n },\n togglechildnodes(id) {\n let context = this\n //FG - FOOF - After Cert - First Release Security\n //whether expanding or contracting set isediting to false. \n //it will be set to true when the edit button is clicked after expanding.\n this.isediting = false; \n // elem.next('.row').toggle()\n this.AgencyCertificateList.filter(function (item) { \n if (item.CertificateNameId == id) {\n item.showChild = !item.showChild\n item.isaddChild = false\n }\n })\n },\n addLocation() {\n let context = this\n loader.startLoader()\n let model = {\n LocationName: this.locationName,\n LocationOffset: this.Timezone\n }\n service.AddLocation(model).then(function (response) {\n context.$router.app.$emit('invokePoolLoc')\n\n if (!context.locations) {\n context.locations = []\n } else {\n\n context.locations.push({\n LocationId: response.LocationId,\n LocationName: context.locationName,\n LocationOffset: context.Timezone\n })\n context.locationName = ''\n context.Timezone = ''\n }\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n },\n viewadd(id) {\n this.isediting = false\n\n // elem.next('.row').toggle()\n this.AgencyCertificateList.filter(function (item) {\n if (item.CertificateNameId == id) {\n item.isaddChild = true\n item.showChild = true\n }\n })\n },\n UpdateLocation(locationid, locationname, Timezone) {\n let context = this\n\n loader.startLoader()\n service.UpdateLocation({\n LocationId: locationid,\n LocationName: locationname,\n LocationOffset: Timezone\n }).then(function (response) {\n context.editLocation = false\n context.$router.app.$emit('invokePoolLoc')\n for (var i = 0; i < context.locations.length; i++) {\n\n if (context.locations[i].LocationId == locationid) {\n context.locations[i].LocationName = locationname\n context.locations[i].LocationOffset = Timezone\n context.currentLocationName = locationname,\n context.LocationOffset = Timezone\n }\n }\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n context.currentLocationName = locationname\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n },\n\n handleCurrentChange(item) {\n\n },\n\n },\n watch: {\n selectedagency: function (val) {\n this.isNewCertificates = val == 0 ? false : true\n if (this.isNewCertificates == true)\n this.Certificate.CertificateName = \"\"\n }\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Certificates/managecertificates.controller.js","import * as service from './chemicalsettings.service.js'\nexport default {\n data() {\n return {\n Chemicalcolumns: ['Name', 'IsActive', 'Actions'],\n optionstable: {\n headings: {IsActive: 'Active', Name: 'Template Name', Actions: ''},\n filterable: true,\n sortable: ['Name'],\n sortIcon: this.$hydrowareCommonJS.SortIcons,\n orderBy: {ascending: true},\n texts: {filterPlaceholder: this.$hydrowareCommonJS.SearchFieldPlaceHolder}\n },\n templates: [], //FG - FOOF - This will hold the readings and tasks templates\n //StateName: '', //FG - FOOF - remove this when you are convinced it does nothing\n ////////IsActive: false,//FG - FOOF - remove this when you are convinced it does nothing\n //checked: {}, //FG - FOOF - remove this when you are convinced it does nothing\n itemsSelected: '',\n isEmpty: false,\n idList: [],\n //Locations: [], //FG - FOOF - remove this when you are convinced it does nothing\n locationName: '',\n //templateData: {LocationId: '', isEdit: false, tid: ''},vvvvvv\n templateData: {LocationId: '', isEdit: false, templateId: ''},\n locationId: '',\n LocationPools: [],\n //LocationPoolsBackup: [], //FG - FOOF - remove this when you are convinced it does nothing\n //checklistsBackup: [], //FG - FOOF - remove this when you are convinced it does nothing \n //viewChemical: true, //FG - FOOF - remove this when you are convinced it does nothing \n activatedPoolIds: [],\n editChemical: false,\n chemChecklists: [],\n checklists: [],\n //locationNamesel: '', //FG - FOOF - remove this when you are convinced it does nothing\n displayingTabbedPanes: false,\n }\n },\n mounted() {\n let context = this\n this.$router.app.$on('emittedlocation_obj', (data) => {\n context.locationId = data.LocationId ? data.LocationId : ''\n context.locationName = data.LocationName ? ' - ' + data.LocationName: ''\n if (context.locationId) {\n context.templateData.LocationId = context.locationId\n context.GetTemplates(context.locationId)\n context.$router.app.$emit('hydroware_changelocationname', data.LocationName)\n }\n })\n this.$router.app.$on('hydroware_readingsTemplateSaved', (data) => {\n context.GetTemplates(context.locationId)\n this.isediting = false\n this.displayingTabbedPanes = false\n });\n let seltoggletrue = false\n $('#sel_toggler').on('click', function () {\n if ($(this.parentElement).hasClass('is-checked')) {\n $(this.parentElement).removeClass('is-checked')\n context.activatedPoolIds = []\n context.LocationPools.map(function (el) {\n })\n } else {\n $(this.parentElement).addClass('is-checked')\n context.activatedPoolIds = []\n context.LocationPools.map(function (el) {\n el['rowChecked'] = true\n })\n }\n })\n },\n beforeDestroy() {\n this.$root.$off('hydroware_readingsTemplateSaved')\n },\n methods: {\n showTemplatevit() {\n this.displayingTabbedPanes = false\n },\n displayAddTemplatePage() {\n //FG - FOOF - Jan 23 2019 - I added \"this\" (which is this instance of\n // chemicalsettings.controller.js) the template data that is passed\n // along to the readings_maintenance.controller.js and \n // readings_maintenance.vue files so we have access to all of its\n // functions and variables.\n this.templateData.chemsettingscontroller = this\n this.$router.app.$emit('is_add') //LOOK HERE - zzzzzz\n this.displayingTabbedPanes = true\n this.templateData.isEdit = false\n },\n deleteMeasureTemp(id) {\n let context = this\n if (id) {\n this.chemChecklists.map(function (el) {\n if (el.Id == id) {\n el['UI_Flag'] = false\n }\n })\n this.chemChecklists.map(function (el, index) {\n if (el.Id == id) {\n context.chemChecklists.splice(index, 1)\n context.ChemicalForm.Chemicals.splice(index, 1)\n }\n })\n }\n this.checkChemicalsnull(this.ChemicalForm.Chemicals)\n },\n toggleRowPools(row) {\n let pool = row.LocationPools\n let context = this\n for (var i = 0; i < context.LocationPools.length; i++) {\n if (row.LocationId == context.LocationPools[i].LocationId) {\n if (row.rowChecked == true) {\n context.LocationPools[i]['rowChecked'] = true\n } else {\n context.LocationPools[i]['rowChecked'] = false\n }\n }\n }\n if (pool.length > 0) {\n pool.map(function (el) {\n context.LocationPools.map(function (hl, ind) {\n hl.LocationPools.map(function (vl, index) {\n if (el.PoolId == hl.LocationPools[index].PoolId) {\n if (context.LocationPools[ind].rowChecked == true) {\n vl['IsActive'] = true\n context.activatedPoolIds.push(el.PoolId)\n } else {\n vl['IsActive'] = false\n if (context.activatedPoolIds.length > 0) {\n if (context.activatedPoolIds.indexOf(el.PoolId) > -1) {\n context.activatedPoolIds.splice(context.activatedPoolIds.indexOf(el.PoolId), 1)\n }\n }\n }\n }\n })\n })\n })\n }\n },\n toggleActivatepool(poolid) {\n let context = this\n this.LocationPools.map(function (el) {\n el['LocationPools'].map(function (hl) {\n if (hl.PoolId == poolid) {\n if (hl.IsActive == true) {\n hl['IsActive'] = false\n if (context.activatedPoolIds.length > 0) {\n if (context.activatedPoolIds.indexOf(poolid) > -1) {\n context.activatedPoolIds.splice(context.activatedPoolIds.indexOf(poolid), 1)\n }\n }\n } else {\n hl['IsActive'] = true\n context.activatedPoolIds.push(poolid)\n }\n }\n })\n })\n },\n toggleActivateButton(data) {\n let context = this\n let activateids = []\n window.xp = deepcopy(this.templates)\n this.templates.map(function (el) {\n if (el.Id == data.Id) {\n if (el.IsActive == true) {\n el['IsActive'] = false\n } else {\n el['IsActive'] = true\n }\n activateids.push({\n Id: data.Id,\n IsActive: el.IsActive\n })\n context.toggleActivate(activateids)\n }\n })\n },\n activateSelected() {\n let activateids = []\n this.idList.forEach(function (id) {\n activateids.push({\n Id: id,\n IsActive: true\n })\n })\n this.toggleActivate(activateids)\n },\n deactivateSelected() {\n let activateids = []\n this.idList.forEach(function (id) {\n activateids.push({\n Id: id,\n IsActive: false\n })\n })\n this.toggleActivate(activateids)\n },\n toggleActivate(data) {\n let context = this\n context.$confirm('Are you sure you want to Activate / Deactivate this template ?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n loader.startLoader()\n service.ActivateChemicalChecklist(data).then(function (response) {\n \n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n context.itemsSelected = 0\n context.GetTemplates(context.locationId)\n $('#main_toggler').parent().removeClass('is-checked')\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n }).catch(() => {\n\n context.templates = window.xp\n })\n },\n toggleCheckbox(data) {//alert(\"HELLO\")\n $('#main_toggler').parent().removeClass('is-checked')\n let context = this\n let j = 0\n this.checklists.map(function (el, index) {\n if (el.Id == data.Id) {\n if (el['Checked'] == false) {\n el['Checked'] = true\n context.idList.push(data.Id)\n context.itemsSelected = context.itemsSelected + 1\n } else {\n el['Checked'] = false\n context.itemsSelected = context.itemsSelected - 1\n if (context.idList.indexOf(data.Id) > -1) {\n context.idList.splice(context.idList.indexOf(data.Id), 1)\n }\n }\n }\n })\n },\n //FG - FOOF - Feb 6 2019 --- REMOVE THE FUNC. BELOW IF YOU DON'T SEE THE ALERT AFTER \n // SOME DECENT TESTING\n GetChemicalChecklist(id) {\n alert(\"ChemicalChecklist/chemicalsettings.controller.js\")\n let context = this\n loader.startLoader()\n service.GetChemicalChecklist(id).then(function (response) {\n \n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n context.checklists = []\n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n context.checklists = response ? response : []\n tooltip.startTooltip(50)\n context.checklistsBackup = deepcopy(response ? response : [])\n\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n GetTemplates(id) {\n let context = this\n loader.startLoader()\n service.GetTemplates(id).then(function (response) {\n \n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n context.templates = []\n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n context.templates = response ? response : []\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n deletedSelected() {\n this.del(this.idList)\n },\n copySelected() {\n this.copy(this.idList)\n },\n\n //FG - FOOF - After Cert - First Release (6) - rewrote delete code below to use new methods in hydrowareCommonJS.js\n //The delete function below deletes a row from the table\n del(item){\n let context = this\n var ID = item.row.Id\n var opts = {message: 'Are you sure you want to delete ' + item.row.Name + '?'}\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.deleteTemplateRow.bind(null,ID))\n },\n deleteTemplateRow(ID) {\n var context = this;\n loader.startLoader()\n service.DeleteChemicalChecklist(ID).then(function (response) {\n \n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n loader.stopLoader()\n return;\n }\n\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n context.GetTemplates(context.locationId)\n loader.stopLoader()\n },\n (error) => {\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\n })\n },\n\n someMethod(p1, p2) {\n alert('p1: '+p1 + ' / p2: ' + p2)\n },\n editATemplate(data, anotherParm) {\n this.templateData.isEdit = true\n //this.templateData.tid = data.Id vvvvvv\n this.templateData.templateId = data.Id\n //FG - FOOF - Jan 23 2019 - I added \"this\" (which is this instance of\n // chemicalsettings.controller.js) the template data that is passed\n // along to the readings_maintenance.controller.js and \n // readings_maintenance.vue files so we have access to all of its\n // functions and variables.\n this.templateData.chemsettingscontroller = this\n this.displayingTabbedPanes = true\n },\n copy: function (data) {\n let context = this\n context.$confirm('Are you sure you want to copy this template ?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n loader.startLoader()\n service.CopyChemicalChecklist(data).then(function (response) {\n \n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n context.$notify({\n title: 'Success',\n message: 'Copied Successfully',\n type: 'success'\n })\n context.itemsSelected = 0\n context.GetTemplates(context.locationId)\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n }).catch(() => {})\n },\n resetForm(formName) {\n this.$refs[formName].resetFields()\n },\n },\n watch: {\n displayingTabbedPanes: function (val) {\n this.$router.app.$emit('sidebar_hide', val)\n }\n },\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/ChemicalChecklist/chemicalsettings.controller.js","export const GetTemplates = (id) => {\n\n return $.get('LogTemplate/GetMinLogTemplates?IsActive=null&skip=null&take=null&locationId='+id)\n\n}\n\nexport const GetLocations = () => {\n\n return $.get('Location/GetLocations')\n\n}\n\n\n\nexport const DeleteChemicalChecklist = (model) => {\n\n return $.ajax({\n url: 'LogTemplate/DeleteLogTemplate?Id='+model,\n data: JSON.stringify(model),\n\n contentType: 'application/json',\n\n cache: false,\n type: 'POST'\n })\n\n}\n\n\nexport const CopyChemicalChecklist = (model) => {\n\n return $.ajax({\n url: 'LogTemplate/CopyLogTemplates',\n data: JSON.stringify(model),\n\n contentType: 'application/json',\n\n cache: false,\n type: 'POST'\n })\n\n}\n\n\n\nexport const AddChemicalChecklist = (model) => {\n\n return $.ajax({\n url: 'Chemical/AddChemicalChecklist',\n data: JSON.stringify(model),\n\n contentType: 'application/json',\n\n cache: false,\n type: 'POST'\n })\n\n}\n\nexport const ActivateChemicalChecklist = (model) => {\n\n return $.post('LogTemplate/ChangeStatusLogTemplate?Id='+model[0].Id+'&activeStatus='+model[0].IsActive)\n\n}\n\nexport const UpdateChemicalChecklist = (model) => {\n return $.ajax({\n url: 'Chemical/UpdateChemicalChecklist',\n data: JSON.stringify(model),\n\n contentType: 'application/json',\n\n cache: false,\n type: 'POST'\n })\n\n}\n\n\nexport const GetChemicalChecklist = (id) => {\n\n return $.get('Chemical/GetChemicalChecklist?LocationId='+id)\n\n}\n\nexport const GetChemicalChecklistDetails = (id) => {\n\n return $.get('Chemical/GetChemicalChecklistDetails?chemicalChecklistId='+id)\n\n}\n\nexport const GetLocationPools = () => {\n\n return $.get('Location/GetLocationPools')\n\n}\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/ChemicalChecklist/chemicalsettings.service.js","import * as service from './chemicalrecord.service.js'\nexport default {\n data() {\n let context = this\n return {\n\n allowSubmit: true, //HERE BECAUSE NORMAL VALIDATE CHANNELS DON'T SEEM TO WORK FOR MY FORM\n\n Chemicalcolumns: ['AddedOn', 'LocationName', 'LogTemplateName', 'AddedBy', 'IsAlertRange', 'Actions'],\n isload: false,\n isEmpty: false,\n optionstable: {\n skin: this.$hydrowareCommonJS.hydrowareTableSkin,\n headings: {\n LocationName: 'Aquatic Facility',\n LogTemplateName: 'Template',\n AddedBy: 'Entered by',\n AddedOn: 'Entered on',\n IsAlertRange: 'In Range/Complete',\n Actions: ''\n },\n\n columnsClasses: {\n \"Actions\":\"hydroware-2-button-column\",\n \"AddedOn\":\"hydroware-datetime-column\",\n \"LocationName\":\"hydroware-facility-column hidden-xs hidden-sm\",\n \"IsAlertRange\":\"hidden-xs hidden-sm hidden-md\",\n \"AddedBy\":\"hidden-xs hidden-sm hidden-md\"\n },\n\n sortable: [],\n sortIcon: this.$hydrowareCommonJS.SortIcons,\n orderBy: {\n ascending: true\n },\n texts: {\n filterPlaceholder: 'Search...',\n limit: 'rows per page:',\n noResults: 'No matching records',\n }\n },\n Locations: [],\n StandardCodeName: '',\n Firstloading: false,\n isnull: false,\n countlength: '',\n\n loadmore: {\n skip: 0,\n take: 10\n },\n headerLocationName: '',\n Isenabled: false,\n locationName: '',\n locationNamed: '',\n chemicalRecords: [],\n recordBackup: [],\n listRecord: true,\n addRecord: false,\n addRecordbutton: true,\n\n isAddingOrEditing: '', //FG - After Cert - First Release Security (7) Added this variable, it will be set to either \"A\" or \"E\" when adding or editing\n\n chemicalRecordDetails: [],\n checklists: [],\n checklistName: '',\n cheklistLocation: '',\n chemicalDetails: [],\n cheklistStandard: [],\n standards: [],\n pools: [],\n cheklistPool: '',\n recordForm: {\n Id: '',\n StandardCodeId: '',\n ChemicalChecklistId: '',\n PoolId: '',\n Notes: '',\n ChemicalRecordValues: []\n\n },\n templateForm: {\n LogTemplateId: '',\n TemplateReadings: [],\n TemplateMaintenance: [],\n TemplateTasks: [],\n TemplateNotes: []\n\n },\n templateForUpload: {\n Id: '',\n LogTemplateId: '',\n TemplateReadings: [],\n TemplateMaintenance: [], //when data is uploaded the TemplateTasks from the templateForm are pushed into this array\n TemplateNotes: []\n\n },\n editableTabs: [],\n templateName: '',\n qid: '',\n isDashboardView: false\n \n }\n },\n mounted() {\n\n//this.$el.querySelector('.VueTables__limit').hidden = true\n\n this.GetLocations()\n let context = this\n\n if (this.$route.query.id) {\n\n this.qid = this.$route.query.id\n this.GetChemicalRecordDetails(this.$route.query.id)\n context.isDashboardView = true\n } else {\n this.$router.app.$on('emittedlocation_obj', (data) => {\n context.isDashboardView = false\n context.locationName = data.LocationId ? data.LocationId : ''\n context.locationNamed = data.LocationName ? ' - ' + data.LocationName : ''\n\n if (context.locationName) {\n\n context.GetChemicalRecords(context.locationName)\n }\n\n // alert(JSON.stringify(data))\n\n })\n }\n },\n beforeDestroy() {\n\n //this.$root.$off('emittedlocation_obj') //FG - FOOF - Jan 23 2019\n },\n methods: {\n maintCheckboxChanged(maint) {\n //FG - FOOF - TWO THINGS:\n //1) I could not get the validation rules to trigger when one of the custom buttons\n //was clicked so this is my hack\n //2) I'm sure there is a better way to do the validation but I\n //couldn't get the validation to work on the form item alone so I finally\n //gave up and I just validate the entire form.\n this.validateTheForm('templateForm');\n },\n taskCheckboxChanged(task) {\n //FG - FOOF - TWO THINGS:\n //1) I could not get the validation rules to trigger when one of the custom buttons\n //was clicked so this is my hack\n //2) I'm sure there is a better way to do the validation but I\n //couldn't get the validation to work on the form item alone so I finally\n //gave up and I just validate the entire form.\n this.validateTheForm('templateForm');\n },\n validateMaintenance(rule,aMaint,callback) {\n let context = this\n if(aMaint.LogTemplateMaintenanceValue==false)\n if(aMaint.UserComment == null || aMaint.UserComment.trim().length<1) {\n callback(new Error(\"Comment is required\"))\n context.allowSubmit = false\n }\n },\n validateTask(rule,aTask,callback) {\n let context = this\n if(aTask.LogTemplateTaskValue==false)\n if(aTask.UserComment == null || aTask.UserComment.trim().length<1) {\n callback(new Error(\"Comment is required\"))\n context.allowSubmit = false\n }\n },\n validateReading(rule,aReading,callback) {\n //IGNORE NULLS\n if(aReading.LogTemplateReadingValue==null)\n return;\n let context = this;\n //check to see if reading value a number and does not have a significant digit after the \n //max. number of dec. places allowed\n //NOTE: the checkNumberOfDecimalPlaces function first checks to be sure the value is a number so\n // the isANumber function is not specifically called here\n var objectFromEdit = this.$hydrowareCommonJS.checkNumberOfDecimalPlaces(aReading.LogTemplateReadingValue,aReading.DecimalMarker)\n if(!objectFromEdit.OK) {\n //if the edit check fails then there is no need to continue and we do not replace the \n //reading value with the FORMATTED_VALUE returned from the edit method\n context.allowSubmit=false\n callback(new Error(objectFromEdit.DETAILS.MSG))\n return\n }\n\n //So far so good - the value is a number with no significant digits after decimal marker\n //Replace the reading value with the FORMATTED_VALUE returned from the edit check\n aReading.LogTemplateReadingValue=objectFromEdit.DETAILS.FORMATTED_VALUE\n \n //Is the reading value within its range (If not this doesn't stop submit) \n var rtnMsg = this.checkRange(aReading);\n\n //If the value is out of range then rtnMsg will be a string.\n //This will not stop the value from being stored.\n if(rtnMsg != null) \n callback(new Error(rtnMsg))\n },\n checkRange(aReading) {\n let context = this\n var msgToReturn = null;\n var outOfRangeMsg = \"Out of range\";\n if(aReading.LogTemplateReadingValue) { \n if(context.editableTabs.IsIdealRange) {\n if(aReading.LogTemplateReadingValue < aReading.IdealLow\n || aReading.LogTemplateReadingValue > aReading.IdealHigh) {\n msgToReturn = outOfRangeMsg;\n }\n }\n else {\n if(aReading.LogTemplateReadingValue < aReading.Low\n || aReading.LogTemplateReadingValue > aReading.High) {\n msgToReturn = outOfRangeMsg;\n }\n } \n }\n return msgToReturn;\n },\n\n rediectToDashboard() {\n this.$router.push('dashboard')\n },\n\n cancel() {\n this.addRecord = false\n this.listRecord = true\n this.isAddingOrEditing=\"\"\n },\n cancelpopup() {\n this.viewChemical = true\n\n },\n\n loadMorecall(id) {\n let context = this\n loader.startLoader()\n\n this.loadmore.skip = context.chemicalRecords.length\n this.loadmore.take = context.chemicalRecords.length + 10\n service.GetChemicalRecords(id, this.loadmore.skip, this.loadmore.take).then(function (response) {\n\n//FG - FOOF - After Cert - First Release Security (7) Can the user at least view the data ?\nif(context.$hydrowareSecurityJS.isDataRestricted(response)) {\n context.chemicalRecords = []\n return;\n}\n//FG - FOOF - After Cert - First Release Security (7) - above\n\n\n\n loader.stopLoader()\n if (response) {\n\n response.map(function (el) {\n context.chemicalRecords.push(el)\n })\n context.countlength = response.length\n }\n\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetChemicalRecords(id) {\n let context = this\n loader.startLoader()\n\n service.GetChemicalRecords(id, '', '').then(function (response) {\n\n//FG - FOOF - After Cert - First Release Security (7) Can the user at least view the data ?\nif(context.$hydrowareSecurityJS.isDataRestricted(response)) {\n context.chemicalRecords = []\n return;\n}\n//FG - FOOF - After Cert - First Release Security (7) - above\n\n\n\n loader.stopLoader()\n context.chemicalRecords = []\n context.chemicalRecords = response ? response : []\n tooltip.startTooltip(50)\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n LoadMore() {\n\n this.loadmore.skip = this.loadmore.skip + 10\n this.loadmore.take = this.loadmore.take + 10\n this.loadMorecall(this.locationName)\n\n },\n\n AddChemicals() {\n $('#AddChecklistModal').modal('show')\n this.recordForm = {\n Id: '',\n StandardCodeId: '',\n ChemicalChecklistId: '',\n PoolId: '',\n Notes: '',\n\n ChemicalRecordValues: [],\n Warning: '',\n Label: ''\n\n }\n this.chemicalDetails = []\n this.$refs.templateForm.resetFields();\n this.isAddingOrEditing=\"A\"\n },\n edit() {\n this.addRecord = true\n this.addRecordbutton = false\n this.isAddingOrEditing=\"E\"\n alert(\"edit func---isAddingOrEditing: \" + this.isAddingOrEditing)\n },\n Proceed() {\n this.listRecord = false\n this.addRecord = true\n this.addRecordbutton = true\n this.isAddingOrEditing = \"A\"\n $('#AddChecklistModal').modal('hide')\n\n let context = this\n this.GetPools(this.cheklistLocation.LocationId)\n this.GetStandards(this.cheklistLocation.LocationId)\n loader.startLoader()\n this.recordForm.ChemicalChecklistId = this.checklistName.Id\n\n service.GetChemicalChecklistDetails(this.checklistName.Id).then(function (response) {\n loader.stopLoader()\n\n context.chemicalDetails = response ? response : []\n if (context.chemicalDetails.Chemicals.length > 0) {\n\n context.chemicalDetails.Chemicals.map(function (el) {\n\n context.recordForm.ChemicalRecordValues.push({\n ChemicalId: el.ChemicalId,\n ChemicalValue: '',\n Warning: '',\n Wmessage: '',\n Label: ''\n })\n\n })\n context.recordForm.ChemicalRecordValues.map(function (el, index) {\n if (el.ChemicalValue == '') {\n context.isEmpty = true\n }\n\n })\n\n }\n\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n\n },\n\n getTem(tempid) {\n let context = this\n service.GetLogTemplateById(tempid).then(function (response) {\n loader.stopLoader()\n //this.chemicalRecordDetails\n if (response.Pools.length > 0) {\n response.Pools.unshift(response.LocationRM)\n } else {\n response.Pools.push(response.LocationRM)\n }\n context.editableTabs['Pools'] = response.Pools\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n Proceed1(tempid) {\n this.listRecord = false\n this.addRecord = true\n this.addRecordbutton = true\n this.addRecordbutton=\"A\"\n $('#AddChecklistModal').modal('hide')\n let context = this\n context.templateForm = {\n LogTemplateId: '',\n TemplateReadings: [],\n TemplateMaintenance: [],\n TemplateTasks: [],\n TemplateNotes: []\n }\n service.GetLogTemplateById(tempid).then(function (response) {\n\n loader.stopLoader()\n context.editableTabs = response\n if (response.Pools.length > 0) {\n response.Pools.map(function (item, index) {\n });\n }\n response.Pools.map(function (item, index) {\n item.LogReadings.map(function (item1, index1) {\n context.templateForm.TemplateReadings.push({\n 'LogReadingId': item1.LogReadingsId,\n 'LogName': item1.LogReadingsName,\n 'UoM': item1.UoM,\n 'LogTemplateReadingId': item1.Id,\n 'PoolId': item.PoolId,\n 'LogTemplateReadingValue': null,\n 'IsRange': '',\n 'IdealLow': item1.IdealLow,\n 'IdealHigh': item1.IdealHigh,\n 'High': item1.High,\n 'Low': item1.Low,\n 'DecimalMarker': item1.DecimalMarker\n })\n })\n item.LogMaintenances.map(function (item2, index2) {\n context.templateForm.TemplateMaintenance.push({\n 'LogTemplateMaintenanceId': item2.Id,\n 'MaintenanceName': item2.LogMaintenanceName,\n 'PoolId': item.PoolId,\n 'LogTemplateMaintenanceValue': null,\n 'UserComment': ''\n\n })\n\n })\n\n item.LogTasks.map(function (item2, index2) {\n context.templateForm.TemplateTasks.push({\n 'LogTemplateTaskId': item2.Id,\n 'TaskName': item2.LogTaskName,\n 'PoolId': item.PoolId,\n 'LogTemplateTaskValue': null,\n 'UserComment': ''\n\n })\n\n })\n\n context.templateForm.TemplateNotes.push({\n\n 'PoolId': item.PoolId,\n 'ReadingsNotes': '',\n 'MaintenanceNotes': '',\n 'TaskNotes': ''\n\n })\n\n })\n\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetPools(id) {\n let context = this\n loader.startLoader()\n service.GetPools(id).then(function (response) {\n loader.stopLoader()\n context.pools = response ? response : []\n if (!context.recordForm['PoolId']) {\n context.recordForm.PoolId = context.pools[0].PoolId\n }\n\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n\n },\n\n AddChemicalRecord() {\n var validate = true\n let context = this\n let error = false\n let isFocsed = false\n\n this.templateForUpload.LogTemplateId = this.templateForm.LogTemplateId;\n this.templateForUpload.TemplateReadings = this.templateForm.TemplateReadings\n this.templateForUpload.TemplateMaintenance = []\n this.templateForUpload.TemplateNotes = this.templateForm.TemplateNotes\n\n this.templateForm.TemplateMaintenance.forEach(function (template) {\n if (template.LogTemplateMaintenanceValue === false && (template.UserComment == null || template.UserComment == \"\")) {\n error = true\n if (isFocsed === false) {\n $('#' + template.LogTemplateMaintenanceId).find('input').focus()\n }\n isFocsed = true\n }\n context.templateForUpload.TemplateMaintenance.push(template)\n })\n\n this.templateForm.TemplateTasks.forEach(function (template) {\n if (template.LogTemplateTaskValue === false && (template.UserComment == null || template.UserComment == \"\")) {\n error = true\n if (isFocsed === false) {\n $('#' + template.LogTemplateTaskId).find('input').focus()\n }\n isFocsed = true\n }\n var foofMaintFromTask = {\n 'LogTemplateMaintenanceId': template.LogTemplateTaskId,\n 'MaintenanceName': template.TaskName ? template.TaskName : template.LogTaskName,\n 'PoolId': template.PoolId,\n 'LogTemplateMaintenanceValue': template.LogTemplateTaskValue,\n 'UserComment': template.UserComment\n }\n context.templateForUpload.TemplateMaintenance.push(foofMaintFromTask);\n })\n\n if (error === false) {\n loader.startLoader()\n this.templateForm['LogTemplateId'] = this.checklistName.Id\n this.templateForUpload['LogTemplateId'] = this.checklistName.Id\n service.AddChemicalRecord(this.templateForUpload).then(function (response) {\n\n loader.stopLoader()\n \n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{}))\n return;\n\n context.$notify({\n title: 'Success',\n message: 'Log Created',\n type: 'success'\n })\n context.listRecord = true\n context.addRecord = false\n context.GetChemicalRecords(context.locationName)\n // context.GetChemicalRecords(context.locationName)\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n this.$notify({\n title: 'Error',\n message: 'Further Details are Required',\n type: 'error'\n })\n }\n },\n\n validateTheForm(formName) {\n this.allowSubmit=true;\n this.$refs[formName].validate((valid) => {});\n return this.allowSubmit\n },\n\n UpdateChemicalRecord() {\n var okToSubmit = this.validateTheForm('templateForm');\n if(!okToSubmit) {\n //FG - FOOF - After Cert - First Release (5) - flipped the order of parms msg and ttl\n var optionsToUse = {\n title: \"Fix Problems\",\n message: \"Fix the problems that are indicated and try again. NOTE: They may be on any of the tabs.\",\n }\n this.$hydrowareCommonJS.displayPopupMessage(this, optionsToUse)\n /* CODE BELOW IS PRIOR TO CERTIFICATION\n this.$hydrowareCommonJS.displayPopupMessage(\n this, \n \"Fix the problems that are indicated and try again. NOTE: They may be on any of the tabs.\"\n \"Fix Problems\" //TITLE\n );\n */\n return;\n }\n let context = this\n let error = false\n let isFocsed = false\n\n this.templateForUpload.Id = this.templateForm.Id;\n this.templateForUpload.LogTemplateId = this.templateForm.LogTemplateId;\n this.templateForUpload.TemplateReadings = this.templateForm.TemplateReadings\n this.templateForUpload.TemplateMaintenance = []\n this.templateForUpload.TemplateNotes = this.templateForm.TemplateNotes\n\n this.templateForm.TemplateMaintenance.forEach(function (template) {;\n if (template.LogTemplateMaintenanceValue === false && (template.UserComment == null || template.UserComment == \"\")) {\n error = true\n if (isFocsed === false) {\n $('#' + template.LogTemplateMaintenanceId).find('input').focus()\n }\n isFocsed = true\n }\n context.templateForUpload.TemplateMaintenance.push(template)\n })\n\n this.templateForm.TemplateTasks.forEach(function (template) {;\n if (template.LogTemplateTaskValue === false && (template.UserComment == null || template.UserComment == \"\")) {\n error = true\n if (isFocsed === false) {\n $('#' + template.LogTemplateTaskId).find('input').focus()\n }\n isFocsed = true\n }\n var foofMaintFromTask = {\n 'Id': template.Id,\n 'LogTemplateMaintenanceId': template.LogTemplateTaskId,\n 'MaintenanceName': template.TaskName ? template.TaskName : template.LogTaskName,\n 'PoolId': template.PoolId,\n 'LogTemplateMaintenanceValue': template.LogTemplateTaskValue,\n 'UserComment': template.UserComment\n }\n context.templateForUpload.TemplateMaintenance.push(foofMaintFromTask);\n })\n\n if (error === false) {\n loader.startLoader()\n service.UpdateChemicalRecord(this.templateForUpload).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{}))\n return;\n\n loader.stopLoader()\n context.$notify({\n title: 'Success',\n message: 'Log updated',\n type: 'success'\n })\n context.listRecord = true\n context.addRecord = false\n context.GetChemicalRecords(context.locationName)\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n this.$notify({\n title: 'Error',\n message: 'Further Details are Required',\n type: 'error'\n })\n }\n },\n\n GetStandards(id) {\n let context = this\n loader.startLoader()\n service.GetStandards(id).then(function (response) {\n loader.stopLoader()\n context.standards = response ? response : []\n if (!context.recordForm['StandardCodeId']) {\n context.recordForm.StandardCodeId = context.standards[0].Id\n context.recordForm.StandardCodeName = context.standards[0].Name\n }\n\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n\n },\n GetChemicalChecklist(id) {\n let context = this\n loader.startLoader()\n service.GetChemicalChecklist(id).then(function (response) {\n loader.stopLoader()\n if (response) {\n if (response.length > 0) {\n response.map(function (el, index) {\n if (el.IsActive == false) {\n response.splice(index, 1)\n }\n })\n }\n }\n context.checklists = response ? response : []\n if (context.checklists.length > 0) {\n context.checklistName = context.checklists[0]\n } else {\n context.checklistName = ''\n }\n\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n GetChemicalRecordDetails(id) {\n let context = this\n loader.startLoader()\n service.GetChemicalRecordDetails(id).then(function (response) {\n loader.stopLoader()\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{}))\n return;\n\n context.editableTabs = response\n context.templateName = response.Name\n context.templateForm = {\n LogTemplateId: '',\n TemplateReadings: [],\n TemplateMaintenance: [],\n TemplateTasks: [],\n TemplateNotes: []\n\n }\n response.Pools.map(function (item, index) {\n item.LogReadings.map(function (item1, index1) {\n context.templateForm.TemplateReadings.push({\n 'Id': item1.EntryReadingId,\n 'LogReadingId': item1.LogReadingsId,\n 'LogName': item1.LogReadingsName,\n 'LogTemplateReadingId': item1.Id,\n 'UoM': item1.UoM,\n 'PoolId': item.PoolId,\n 'LogTemplateReadingValue': item1.LogTemplateReadingValue,\n 'IsRange': item1.IsRange,\n 'IdealLow': item1.IdealLow,\n 'IdealHigh': item1.IdealHigh,\n 'High': item1.High,\n 'Low': item1.Low,\n 'DecimalMarker': item1.DecimalMarker\n\n })\n })\n item.LogMaintenances.map(function (item2, index2) {\n context.templateForm.TemplateMaintenance.push({\n 'Id': item2.EntryMaintenanceId,\n 'LogTemplateMaintenanceId': item2.Id,\n 'MaintenanceName': item2.MaintenanceName ? item2.MaintenanceName : item2.LogMaintenanceName,\n 'PoolId': item.PoolId,\n 'LogTemplateMaintenanceValue': item2.LogTemplateMaintenanceValue,\n 'UserComment': item2.UserComment\n\n })\n })\n item.LogTasks.map(function (item2, index2) {\n context.templateForm.TemplateTasks.push({\n 'Id': item2.EntryTaskId,\n 'LogTemplateTaskId': item2.Id,\n 'TaskName': item2.TaskName ? item2.TaskName : item2.LogTaskName,\n 'PoolId': item.PoolId,\n 'LogTemplateTaskValue': item2.LogTemplateTaskValue,\n 'UserComment': item2.UserComment\n \n })\n })\n\n context.templateForm.TemplateNotes.push({\n 'Id': item.EntryNotesId,\n 'PoolId': item.PoolId,\n 'ReadingsNotes': item.ReadingsNotes,\n 'MaintenanceNotes': item.MaintenanceNotes,\n 'TaskNotes': item.TaskNotes\n })\n\n })\n context.templateForm['Id'] = id\n context.listRecord = false\n context.addRecord = true\n context.addRecordbutton = false \n context.isAddingOrEditing = \"E\"\n \n context.$nextTick(() => {\n context.$refs['templateForm'].validate((valid) => {})\n });\n \n\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n backClick() {\n this.listRecord = true\n },\n GetLocations() {\n let context = this\n loader.startLoader()\n service.GetLocations().then(function (response) {\n loader.stopLoader()\n context.Locations = response ? response : []\n context.locationName = context.Locations[0].LocationId\n context.cheklistLocation = context.Locations[0]\n\n if (context.Locations[0].LocationId) {\n context.GetChemicalRecords(context.Locations[0].LocationId)\n context.GetChemicalChecklist(context.Locations[0].LocationId)\n\n }\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n locationChanged(locationName) {\n let context = this\n if (this.Firstloading) {\n this.loadmore.skip = ''\n this.loadmore.take = ''\n this.chemicalRecords = []\n this.recordBackup = []\n this.GetChemicalRecords(locationName)\n this.Locations.filter(function (item) {\n if (item.LocationId == locationName) {\n context.headerLocationName = item.LocationName\n }\n })\n\n } else {\n this.Firstloading = true\n }\n },\n ongetChecklist(aChecklistLocation) {\n if (aChecklistLocation.LocationId) {\n this.GetChemicalChecklist(aChecklistLocation.LocationId)\n }\n\n },\n\n //FG - FOOF - After Cert - First Release (6) - made confirm code consistent with new code (BELOW)\n del(id) {\n let context = this\n var aName = context.$data.checklistName.Name;\n var opts = {message: 'Are you sure you want to delete the Readings and Tasks Log: '+aName+'?'} \n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.deleteAReadingsAndTasksLog.bind(null,id))\n },\n \n deleteAReadingsAndTasksLog(id) {\n var context = this;\n loader.startLoader()\n service.DeleteChemicalRecord(id).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{}))\n return;\n\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n context.GetChemicalRecords(context.locationName)\n }, (error) => {\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\n })\n },\n //FG - FOOF - After Cert - First Release (6) - made confirm code consistent with new code (ABOVE)\n\n markMaintenanceNotDone(status) {\n if (status.LogTemplateMaintenanceValue === false) {\n this.$notify({\n title: '',\n message: 'Further Details are Required',\n type: 'warning'\n })\n }\n },\n markTaskNotDone(status) {\n if (status.LogTemplateTaskValue === false) {\n this.$notify({\n title: '',\n message: 'Further Details are Required',\n type: 'warning'\n })\n }\n }\n },\n\n watch: {\n addRecord: function (val) {\n this.$router.app.$emit('sidebar_hide', val)\n },\n '$route' (to, from) {\n\n this.stateName = to.name\n if (from.name == 'chemicalrecord') {\n\n this.cancel()\n }\n }\n },\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/ChemicalRecord/chemicalrecord.controller.js","export const GetChemicalRecords = (id,skip,take) => {//alert(\"GetChemicalRecords\")\n skip = skip ? skip : 0\n take = take ? take : 10\n return $.get('LogTemplate/GetMinLogTemplateEntry?IsActive=true&skip=null&take=null&locationId='+id)\n\n}\nexport const GetLocations = () => {//alert(\"GetLocations\")\n return $.get('Location/GetLocations?havingPools=true')\n}\nexport const AddChemicalRecord = (model) => {\n return $.ajax({\n url: 'LogTemplate/AddLogTemplateEntry',\n data: JSON.stringify(model),\n contentType: 'application/json',\n cache: false,\n type: 'POST'\n })\n}\nexport const UpdateChemicalRecord = (model) => {\n return $.ajax({\n url: 'LogTemplate/UpdateLogTemplateEntry',\n data: JSON.stringify(model),\n contentType: 'application/json',\n cache: false,\n type: 'POST'\n })\n}\nexport const GetChemicalRecordDetails = (id) => {\n var x = $.get('LogTemplate/GetLogTemplateEntryWRTPoolsById?Id='+id)\n return x\n}\nexport const GetChemicalChecklistDetails = (id) => {//alert(\"GetChemicalChecklistDetails\")\n return $.get('Chemical/GetChemicalChecklistDetails?chemicalChecklistId='+id)\n}\nexport const GetChemicalChecklist = (id) => {//alert(\"GetChemicalChecklist\")\n return $.get('LogTemplate/GetMinLogTemplates?IsActive=null&skip=null&take=null&locationId='+id)\n}\nexport const GetLogTemplateById = (id) => {//alert(\"GetLogTemplateById\")\n return $.get('LogTemplate/GetLogTemplateWRTPoolsById?Id='+id)\n}\nexport const GetLocationPools = () => {//alert(\"GetLocationPools\")\n return $.get('Location/GetLocationPools')\n}\nexport const GetPools = (locationid) => {//alert(\"GetPools\")\n return $.get('Pool/GetPools?locationId='+locationid)\n}\nexport const GetStandards = (locationid) => {//Salert(\"GetStandards\")\n return $.get('Chemical/GetStandards?LocationId='+locationid)\n}\nexport const DeleteChemicalRecord = (Id) => {\n return $.post('LogTemplate/DeleteLogTemplateEntry?Id='+Id)\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/ChemicalRecord/chemicalrecord.service.js","import * as service from './custom_maintenance.service.js'\nexport default {\n data() {\n return {\n customMaintenanceItems: [this.getIntializedCustomMaintenanceItem()],\n }\n },\n mounted() {\n let context = this\n this.GetAllLogCustomMaintenance()\n },\n methods: {\n\n//FG - FOOF - After Cert - First Release Security\nshouldNameBeDisabled(id, aName) {\n //The id will only be zero (the null is really not needed but...) \n //then the maintenance name being checked has to be from an add.\n //If the row was added then the person who added it should have the\n //opportunity to modify it before doing the update to the database\n //therefore any reading with an id of 0 will NOT be disabled. \n if(id == null || id == 0) return false;\n //For rows with id > 1 we need to be sure the user is allowed to edit \n //FG - FOOF - After Cert - First Release Security - custom readings controlled by \"managetemplates\"\n //return !this.$hydrowareSecurityJS.canEdit_A('managecustommaintenance');\n return !this.$hydrowareSecurityJS.canEdit_A('managetemplates');\n},\n//FG - FOOF - After Cert - First Release Security\nshouldDeleteBeDisplayed(id, readingName) {\n //The id will only be zero (the null is really not needed but...) \n //then the maintenance name being checked has to be from an add.\n //If the row was added then the person who added it should have the\n //opportunity to removed it before doing the update to the database\n //therefore any reading with an id of 0 will display the delete button. \n if(id == null || id == 0) return true;\n //For rows with id > 1 we need to be sure the user is allowed to delete \n //FG - FOOF - After Cert - First Release Security - custom readings controlled by \"managetemplates\"\n //return this.$hydrowareSecurityJS.canDelete_A('managecustommaintenance');\n return this.$hydrowareSecurityJS.canDelete_A('managetemplates');\n},\n\n\n getIntializedCustomMaintenanceItem() {\n return {\n 'Id': 0,\n 'Name': '',\n 'Description': '',\n 'IsCustom': true,\n 'IsActive': true,\n 'IsTask': false\n }\n },\n addSlotForNewLogCustomMaintenanceItem(position) {\n if(position=='top') {\n this.customMaintenanceItems.unshift(this.getIntializedCustomMaintenanceItem());\n }\n else {\n this.customMaintenanceItems.push(this.getIntializedCustomMaintenanceItem());\n }\n },\n //FG - FOOF - After Cert - First Release (6) - rewrote delete code below to use new methods in hydrowareCommonJS.js\n //The delete function below deletes a row from the table\n deleteLogCustomMaintenanceItem(index, item) {\n let context = this\n var ID = item.Id\n var opts = {message: 'Are you sure you want to delete ' + item.Name + '?'}\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.deleteCustomMaintRow.bind(null,ID,index))\n },\n deleteCustomMaintRow(ID,index) {\n let context = this;\n if (ID == 0) {\n context.customMaintenanceItems.splice(index, 1)\n return\n }\n loader.startLoader()\n service.DeleteLogCustomMaintenance(ID).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n loader.stopLoader()\n context.customMaintenanceItems.splice(index, 1)\n }, (error) => {\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\n })\n },\n xxxdeleteLogCustomMaintenanceItem(index, item) {\n let context = this\n this.$confirm('Are you sure you want to delete?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n if (item.Id == 0) {\n context.customMaintenanceItems.splice(index, 1)\n return\n }\n loader.startLoader()\n service.DeleteLogCustomMaintenance(item.Id).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.$notify({\n title: 'Success',\n message: 'Deleted Successfully',\n type: 'success'\n })\n loader.stopLoader()\n context.customMaintenanceItems.splice(index, 1)\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n }).catch(() => {\n })\n },\n AddAndUpdateLogCustomMaintenanceItems() {\n let context = this\n loader.startLoader()\n service.AddAndUpdateLogCustomMaintenanceItems(context.customMaintenanceItems).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.GetAllLogCustomMaintenance();//FG - FOOF - After Cert - First Release (6) - get the readings so the id's are correct in the table\n loader.stopLoader()\n context.$notify({\n title: 'Success',\n message: 'Maintenance Items Updated',\n type: 'success'\n })\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n GetAllLogCustomMaintenance() {\n let context = this\n loader.startLoader()\n service.GetAllLogCustomMaintenance().then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n context.customMaintenanceItems = [] \n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n\n if (response) {\n if (response.length > 0) {\n context.customMaintenanceItems = response\n }\n } else {\n //context.customMaintenanceItems = []\n }\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/CustomMaintenance/custom_maintenance.controller.js","export const GetAllLogCustomMaintenance = () => {\n return $.get('LogTemplate/GetAllLogMaintenance?IsCustom=true&IsActive=true')\n}\n\nexport const AddAndUpdateLogCustomMaintenanceItems = (model) => {\n return $.ajax({\n url: 'LogTemplate/UpdateCustomLogMaintenanceList',\n data: JSON.stringify(model),\n contentType: 'application/json',\n cache: false,\n type: 'POST'\n })\n}\n\nexport const DeleteLogCustomMaintenance = (Id) => {\n return $.post('LogTemplate/DeleteLogMaintenance?Id=' + Id)\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/CustomMaintenance/custom_maintenance.service.js","import * as service from './custom_readings.service.js'\nexport default {\n data() {\n return {\n lastreadingname: '',\n customChemReadings: [{\n \"Id\": 0,\n \"Name\": \"\",\n \"Description\": \"\",\n \"Low\": '',\n \"IdealLow\": '',\n \"IdealHigh\": '',\n \"High\": '',\n \"UoM\": \"\",\n \"IsCustom\": true,\n \"IsActive\": true,\n \"DecimalMarker\":0\n }],\n //FG - FOOF - Jan 6 2019 - added the array below to hold the non-custom chemical readings\n // (that is, those delivered from Hydroware)\n deliveredChemReadings: [this.getIntializedCustomChemReading()],\n readingForm: [],\n UOM: []\n }\n },\n mounted() {\n this.UOM = [\"PPM\"]\n let context = this\n this.GetAllCustomLogReadings()\n\n //FG - FOOF - Jan 6 2018 - added line below to get the delivered chem readings\n this.GetAllDeliveredLogReadings()\n },\n methods: {\n /********************************************************************************** */\n //FG - FOOF - Jan 6 2019 - added methods below to check for duplicate name as soon\n // as the name field loses focus.\n customReadingNameHasBeenBlurred(ev) {\n var context = this\n var deliveredReadingErrMsg = \" cannot be used. It duplicates a delivered reading.\"\n var customReadingErrMsg = \" cannot be used. It duplicates another custom reading.\"\n var errMsgToDisplay = '';\n var srcElement = ev.srcElement;\n var readingNameTrimmed = srcElement.value.trim();\n //First see if the reading name is in the delivered list of reading names\n //If it is then we set the error message that will be displayed and we don't have to check any further\n if(this.isReadingNameInDeliveredReadings(readingNameTrimmed)) {\n errMsgToDisplay = deliveredReadingErrMsg;\n }\n else {//The reading name is not in the delivered list, but is it already in the custom list ?\n if(this.isReadingNameInCustomReadings(readingNameTrimmed))\n errMsgToDisplay = customReadingErrMsg\n }\n //If the reading name is a duplicate (either in delivered list or custom list)\n //then the errMsgToDisplay will not be an empty string so we display it.\n if(errMsgToDisplay != '') {\n if(context.lastreadingname =='' || context.lastreadingname.trim() != readingNameTrimmed) {\n context.lastreadingname = readingNameTrimmed\n this.$notify({\n title: 'Duplicate',\n message: readingNameTrimmed + errMsgToDisplay,\n type: 'error'\n })\n }\n $(ev.srcElement).addClass('hydroware_error_border')\n this.$nextTick(() => $(ev.srcElement).focus())\n }\n else {\n context.lastreadingname = ''\n $(ev.srcElement).removeClass('hydroware_error_border')\n }\n },\n isReadingNameInDeliveredReadings(readingName) {\n var readingNameTrimmedEtc = readingName.trim().toLowerCase();\n for(var i=0;i 1) //FG - FOOF - if there is a duplicate return true\n return true;\n }\n }\n return false; //NO DUP IN THE CUSTOM READINGS\n},\n //FG - FOOF - After Cert - First Release Security\n shouldReadingBeDisabled(id, readingName) {\n //The id will only be zero (the null is really not needed but...) \n //then the reading name being checked has to be from an add.\n //If the row was added then the person who added it should have the\n //opportunity to modify it before doing the update to the database\n //therefore any reading with an id of 0 will NOT be disabled. \n if(id == null || id == 0) return false;\n //For rows with id > 1 we need to be sure the user is allowed to edit \n //return !this.$hydrowareSecurityJS.canEdit_A('managecustomreadings'); \n //FG - FOOF - After Cert - First Release Security - custom settings controlled by managetemplates for this release\n return !this.$hydrowareSecurityJS.canEdit_A('managetemplates');\n },\n //FG - FOOF - After Cert - First Release Security\n shouldDeleteBeDisplayed(id, readingName) {\n //The id will only be zero (the null is really not needed but...) \n //then the reading name being checked has to be from an add.\n //If the row was added then the person who added it should have the\n //opportunity to removed it before doing the update to the database\n //therefore any reading with an id of 0 will display the delete button. \n if(id == null || id == 0) return true;\n //For rows with id > 1 we need to be sure the user is allowed to delete \n //return this.$hydrowareSecurityJS.canDelete_A('managecustomreadings');\n //FG - FOOF - After Cert - First Release Security - custom settings controlled by managetemplates for this release\n return !this.$hydrowareSecurityJS.canDelete_A('managetemplates');\n },\n //FG - FOOF - create and return an initialized custom reading\n getIntializedCustomChemReading() {\n return {\n \"Id\": 0,\n \"Name\": \"\",\n \"Description\": \"\",\n \"Low\": '',\n \"IdealLow\": '',\n \"IdealHigh\": '',\n \"High\": '',\n \"UoM\": \"\",\n \"IsCustom\": true,\n \"IsActive\": true,\n \"DecimalMarker\":0\n }\n },\n\n //FG - FOOF - The method below adds a line to the table that is displayed on the page\n // it does not add a reading to the database\n AddReadings(position) {\n if(position == 'top') {\n this.customChemReadings.unshift(this.getIntializedCustomChemReading())\n }\n else {\n this.customChemReadings.push(this.getIntializedCustomChemReading())\n }\n },\n\n //FG - FOOF - The method below adds the readings to the database\n updateRecord() {\n let context = this\n loader.startLoader()\n service.AddLogReadings(context.customChemReadings).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.GetAllCustomLogReadings();//FG - FOOF - After Cert - First Release (6) - get the readings so the id's are correct in the table\n loader.stopLoader()\n context.$notify({\n title: 'Success',\n message: 'Updated Readings',\n type: 'success'\n })\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n //FG - FOOF - After Cert - First Release (6) - rewrote delete code below to use new methods in hydrowareCommonJS.js\n //The delete function below deletes a row from the table\n deleteReading(index, item) {\n let context = this\n var ID = item.Id\n var opts = {message: 'Are you sure you want to delete ' + item.Name + '?'}\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.deleteReadingRow.bind(null,ID,index))\n },\n deleteReadingRow(ID,index) {\n let context = this;\n if (ID == 0) { //Rows with an ID of zero have not yet been uploaded so they only need to be removed from the HTML Table\n context.customChemReadings.splice(index, 1)\n return\n }\n loader.startLoader()\n service.DeleteLogReadings(ID).then(function (response) {\n\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n context.customChemReadings.splice(index, 1)\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\n })\n },\n GetAllCustomLogReadings() {\n let context = this\n loader.startLoader()\n service.GetAllCustomLogReadings().then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n context.customChemReadings = []\n context.deliveredChemReadings = []\n loader.stopLoader()\n return;\n }\n\n if (response) {\n if (response.length > 0) { \n context.customChemReadings = response \n }\n } else {\n //context.customChemReadings = []\n }\n loader.stopLoader();\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n //FG - FOOF - Jan 6 2019 - added function below to get the delivered readings\n // this was done when I added code for better duplicate checking\n GetAllDeliveredLogReadings() {\n let context = this\n loader.startLoader()\n service.GetAllDeliveredLogReadings().then(function (response) {\n \n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n context.customChemReadings = []\n context.deliveredChemReadings = []\n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n if (response) {\n if (response.length > 0) {\n context.deliveredChemReadings = response\n }\n } else {\n //context.deliveredChemReadings = []\n }\n }, (error) => {\n\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/CustomReadings/custom_readings.controller.js","//certifications\n\n// http://dev-hydronew.azurewebsites.net/api/Help/Api/GET-api-Patron-GetAllActivity_LocationId\n\n//FG - FOOF - Jan 6 2019 - the function below used to be called getAllLogReadings but when I\n// modified the code to do better duplicate name checking I changed it to getAllCustomLogReadings\n// because it gets ONLY the custom readings.\nexport const GetAllCustomLogReadings = (locationid) => {\n return $.get('LogTemplate/GetAllLogReadings?IsCustom=true&IsActive=true')\n}\n//FG - FOOF - Jan 6 2019 - added the function below when I added code for better duplicate name\n// checks. It gets only the delivered chem readings (does not include custom readings)\nexport const GetAllDeliveredLogReadings = (locationid) => {\n return $.get('LogTemplate/GetAllLogReadings?IsCustom=false&IsActive=null')\n}\nexport const AddLogReadings = (model) => {\n return $.ajax({\n url: 'LogTemplate/UpdateCustomLogReadingsList',\n data: JSON.stringify(model),\n contentType: 'application/json',\n cache: false,\n type: 'POST'\n })\n}\n\nexport const DeleteLogReadings = (Id) => {\n return $.post('LogTemplate/DeleteLogReadings?Id=' + Id)\n}\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/CustomReadings/custom_readings.service.js","import * as service from './custom_tasks.service.js'\nexport default {\n data() {\n return {\n customTasks: [this.getIntializedCustomTask()],\n }\n },\n mounted() {\n let context = this\n this.GetAllLogCustomTasks()\n },\n methods: {\n\n\n//FG - FOOF - After Cert - First Release Security\nshouldNameBeDisabled(id, aName) {\n //The id will only be zero (the null is really not needed but...) \n //then the task name being checked has to be from an add.\n //If the row was added then the person who added it should have the\n //opportunity to modify it before doing the update to the database\n //therefore any reading with an id of 0 will NOT be disabled. \n if(id == null || id == 0) return false;\n //For rows with id > 1 we need to be sure the user is allowed to edit \n //FG - FOOF - After Cert - First Release Security - custom readings controlled by \"managetemplates\" \n //return !this.$hydrowareSecurityJS.canEdit_A('managecustomtasks');\n return !this.$hydrowareSecurityJS.canEdit_A('managetemplates');\n},\n//FG - FOOF - After Cert - First Release Security\nshouldDeleteBeDisplayed(id, readingName) {\n //The id will only be zero (the null is really not needed but...) \n //then the task name being checked has to be from an add.\n //If the row was added then the person who added it should have the\n //opportunity to removed it before doing the update to the database\n //therefore any reading with an id of 0 will display the delete button. \n if(id == null || id == 0) return true;\n //For rows with id > 1 we need to be sure the user is allowed to delete \n //FG - FOOF - After Cert - First Release Security - custom readings controlled by \"managetemplates\" \n //return this.$hydrowareSecurityJS.canDelete_A('managecustomtasks');\n return this.$hydrowareSecurityJS.canDelete_A('managetemplates');\n},\n\n\n\n\n getIntializedCustomTask() {\n return {\n 'Id': 0,\n 'Name': '',\n 'Description': '',\n 'IsCustom': true,\n 'IsActive': true,\n 'IsTask': true\n }\n },\n addSlotForNewLogCustomTask(position) {\n if(position=='top') {\n this.customTasks.unshift(this.getIntializedCustomTask());\n }\n else {\n this.customTasks.push(this.getIntializedCustomTask());\n }\n },\n //FG - FOOF - After Cert - First Release (6) - rewrote delete code below to use new methods in hydrowareCommonJS.js\n //The delete function below deletes a row from the table\n DeleteLogCustomTask(index, item) {\n let context = this\n var ID = item.Id\n var opts = {message: 'Are you sure you want to delete ' + item.Name + '?'}\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.deleteTaskRow.bind(null,ID,index))\n },\n deleteTaskRow(ID,index) {\n let context = this;\n if (ID == 0) { //Rows with an ID of zero have not yet been uploaded so they only need to be removed from the HTML Table\n context.customTasks.splice(index, 1)\n return\n }\n loader.startLoader()\n service.DeleteLogCustomTask(ID).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n loader.stopLoader()\n return;\n }\n\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n context.customTasks.splice(index, 1)\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\n })\n },\n /*\n DeleteLogCustomTask(index, item) {\n let context = this\n this.$confirm('Are you sure you want to delete?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n if (item.Id == 0) {\n context.customTasks.splice(index, 1)\n return\n }\n loader.startLoader()\n service.DeleteLogCustomTask(item.Id).then(function (response) {\n context.$notify({\n title: 'Success',\n message: 'Deleted Successfully',\n type: 'success'\n })\n loader.stopLoader()\n context.customTasks.splice(index, 1)\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n }).catch(() => {\n })\n },\n */\n AddAndUpdateLogCustomTasks() {\n let context = this\n loader.startLoader()\n service.AddAndUpdateLogCustomTasks(context.customTasks).then(function (response) {\n \n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n loader.stopLoader()\n return;\n }\n \n context.GetAllLogCustomTasks();//FG - FOOF - After Cert - First Release (6) - get the tasks so the id's are correct in the table\n context.$notify({\n title: 'Success',\n message: 'Tasks Updated',\n type: 'success'\n })\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n \n GetAllLogCustomTasks() {\n let context = this\n loader.startLoader()\n service.GetAllLogCustomTasks().then(function (response) {\n \n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n context.customTasks = []\n loader.stopLoader()\n return;\n }\n \n loader.stopLoader()\n if (response) {\n if (response.length > 0) {\n context.customTasks = response\n }\n } else {\n //context.customTasks = []\n }\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/CustomTasks/custom_tasks.controller.js","export const GetAllLogCustomTasks = () => {\n return $.get('LogTemplate/GetAllLogTasks?IsCustom=true&IsActive=true')\n}\n\nexport const AddAndUpdateLogCustomTasks = (model) => {\n return $.ajax({\n url: 'LogTemplate/UpdateCustomLogMaintenanceList', \n data: JSON.stringify(model),\n contentType: 'application/json',\n cache: false,\n type: 'POST'\n })\n}\n\nexport const DeleteLogCustomTask = (Id) => {\n return $.post('LogTemplate/DeleteLogMaintenance?Id=' + Id)\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/CustomTasks/custom_tasks.service.js","import * as service from './calender.service'\n\nexport default {\n data() {\n return {\n events: [],\n config: {\n header: {\n right: 'month'\n },\n edit: false,\n editable: false,\n stick: true,\n defaultView: 'month',\n events: [{\n title: 'Mermaid Races',\n start: '2017-11-01',\n },\n {\n title: 'Swimming Lessons',\n start: '2017-11-07',\n end: '2017-11-10'\n },\n {\n title: 'Kayak Training',\n start: '2017-11-11',\n end: '2017-11-13'\n },\n\n ]\n\n },\n eventDetails: [{\n 'ActivityTypeDesc': '',\n 'ProgramName': '',\n 'Description': '',\n 'StartDate': '',\n 'EndDate': '',\n 'MondayEnd': '',\n 'MondayStart': '',\n 'TuesdayEnd': '',\n 'TuesdayStart': '',\n 'WednesdayEnd': '',\n 'WednesdayStart': '',\n 'ThursdayEnd': '',\n 'ThursdayStart': '',\n 'FridayEnd': '',\n 'FridayStart': '',\n 'SaturdayEnd': '',\n 'SaturdayStart': '',\n 'SundayEnd': '',\n 'SundayStart': '',\n\n }],\n Locations: [],\n Pools: [],\n locationId: '',\n poolId: '',\n\n }\n },\n\n mounted() {\n var cur_d = this.$moment().format('ddd');\n var cur_n = this.$moment().format('DD');\n\n var curr_month_year = this.$moment().month('M').format('MMMM')\n var curr_year = this.$moment().format('Y')\n $('#current_month h2').text(curr_month_year + ' ' + ' ' + curr_year)\n\n $('#curr_day').html('' + cur_d + '');\n $('#curre_dt').html('' + cur_n + 'Mermaid Races Venue - Main Pool ');\n var curr_3 = this.$moment().subtract(1, 'days');\n var curr_2 = this.$moment().subtract(2, 'days');\n var curr_1 = this.$moment().subtract(3, 'days');\n var curr_4 = this.$moment().add(1, 'days');\n var curr_5 = this.$moment().add(2, 'days');\n var curr_6 = this.$moment().add(3, 'days');\n $('#curr_3').html('' + this.$moment(curr_3).format('DD') + '');\n $('#curr_d_3').html('' + this.$moment(curr_3).format('ddd') + '');\n\n $('#curr_2').html('' + this.$moment(curr_2).format('DD') + '');\n $('#curr_d_2').html('' + this.$moment(curr_2).format('ddd') + '');\n\n $('#curr_1').html('' + this.$moment(curr_1).format('DD') + '');\n $('#curr_d_1').html('' + this.$moment(curr_1).format('ddd') + '');\n\n $('#curr_4').html('' + this.$moment(curr_4).format('DD') + '');\n $('#curr_d_4').html('' + this.$moment(curr_4).format('ddd') + '');\n\n $('#curr_5').html('' + this.$moment(curr_5).format('DD') + '');\n $('#curr_d_5').html('' + this.$moment(curr_5).format('ddd') + '');\n\n $('#curr_6').html('' + this.$moment(curr_6).format('DD') + '');\n $('#curr_d_6').html('' + this.$moment(curr_6).format('ddd') + '');\n\n },\n methods: {\n GetActivities(locid) {\n services.GetAllActivity(49).then(\n function (response) {\n\n }\n )\n }\n\n }\n\n\n\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/DashboardCalender/calender.controller.js","import * as service from './EvaluationManage.service'\n\nexport default {\n data() {\n return {\n Evaluationcolumns: ['Name', 'Description', 'Actions'],\n optionstable: {\n\n headings: {\n Name: 'Name',\n Description: 'Description',\n\n Actions: ''\n\n },\n sortIcon: {\n base: 'glyphicon',\n up: 'glyphicon-chevron-up',\n down: 'glyphicon-chevron-down'\n },\n sortable: [],\n orderBy: {\n column: 'Ordinance',\n ascending: true\n },\n texts: {\n\n filterPlaceholder: 'Filter...',\n limit: 'Records:',\n noResults: 'No matching records',\n\n },\n\n },\n\n Performancecolumns: ['Name', 'Description', 'Actions'],\n perfoptionstable: {\n\n headings: {\n Name: 'Name',\n Description: 'Description',\n\n Actions: ''\n\n },\n sortIcon: {\n base: 'glyphicon',\n up: 'glyphicon-chevron-up',\n down: 'glyphicon-chevron-down'\n },\n sortable: [],\n texts: {\n\n filterPlaceholder: 'Filter...',\n limit: 'Records:',\n noResults: 'No matching records',\n\n },\n\n },\n AddEvaluationForm: {\n 'Name': '',\n 'Description': '',\n 'Ordinance': '',\n 'IsActive': true\n },\n AddPerformanceForm: {\n 'Name': '',\n 'Description': '',\n 'Ordinance': '',\n 'IsActive': true\n },\n eordinance: [],\n pordinance: [],\n evaluationtypes: [],\n performancelevels: [],\n IsPerfEdit: false,\n IsEvalEdit: false,\n emodalTitle: '',\n pmodalTitle: '',\n IsAdding: false //FG - FOOF - After Cert - First Release (6) - force add to go to bottom of list hack for first release\n }\n },\n mounted() {\n\n this.GetAllEvaluationTypes()\n\n this.GetAllPerformanceLevels()\n\n },\n\n methods: {\n\n addEvaluation() {\n this.AddEvaluationForm = {\n 'Name': '',\n 'Description': '',\n 'Ordinance': '',\n 'IsActive': true\n }\n this.IsEvalEdit = false\n this.IsAdding = true; //FG - FOOF - After Cert - First Release (6) - force add to go to bottom of list hack for first release\n this.emodalTitle = 'Add Evaluation Type'\n $('#AddEvaluatemodel').modal('show')\n //this.AddEvaluationForm.Ordinance = this.eordinance[0] // COMMENTED OUT - //FG - FOOF - After Cert - First Release (6) - force add to go to bottom of list hack for first release\n //FG - FOOF - After Cert - First Release (6) - force add to go to bottom of list hack for first release below\n var newOrdinance = this.evaluationtypes[this.evaluationtypes.length-1].Ordinance + 1;\n this.AddEvaluationForm.Ordinance = newOrdinance;\n //FG - FOOF - After Cert - First Release (6) - force add to go to bottom of list hack for first release above\n },\n\n addPerformance() {\n this.AddPerformanceForm = {\n 'Name': '',\n 'Description': '',\n 'Ordinance': '',\n 'IsActive': true\n }\n this.IsPerfEdit = false\n this.IsAdding = true;//FG - FOOF - After Cert - First Release (6) - force add to go to bottom of list hack for first release\n this.pmodalTitle = 'Add Performance Level Type'\n $('#Performancemodel').modal('show')\n //this.AddPerformanceForm.Ordinance = this.pordinance[0] //Commented out - //FG - FOOF - After Cert - First Release (6) - force add to go to bottom of list hack for first release\n //FG - FOOF - After Cert - First Release (6) - force add to go to bottom of list hack for first release\n var newOrdinance = this.performancelevels[this.performancelevels.length-1].Ordinance + 1;\n this.AddPerformanceForm.Ordinance = newOrdinance;\n //FG - FOOF - After Cert - First Release (6) - force add to go to bottom of list hack for first release\n },\n\n cancelpopup: function () {\n this.IsCertificateTypeEdit = false\n $('#AddCertificatemodel').modal('hide')\n },\n\n editeval: function (data) {\n var ID = data.row.Id\n this.emodalTitle = 'Edit Evaluation Level Type'\n this.IsEvalEdit = true\n this.IsAdding = false;//FG - FOOF - After Cert - First Release (6) - force add to go to bottom of list hack for first release\n this.AddEvaluationForm = deepcopy(data.row)\n\n $('#AddEvaluatemodel').modal('show')\n\n },\n\n editperf: function (data) {\n var ID = data.row.Id\n this.pmodalTitle = 'Edit Performance Level Type'\n this.IsPerfEdit = true\n this.IsAdding = false;//FG - FOOF - After Cert - First Release (6) - force add to go to bottom of list hack for first release\n this.AddPerformanceForm = deepcopy(data.row)\n\n $('#Performancemodel').modal('show')\n\n },\n\n //FG - FOOF - After Cert - First Release (3) - Greatly simplified the method below so\n // rows would get sorted properly when ordinance was changed.\n ChangeEvaluationTypeOrdinance(res) {\n let context = this\n if(res) {\n if(res.Ordinance < res.OldOrdinance)\n res.Ordinance = res.Ordinance -.5;\n else \n res.Ordinance = res.Ordinance + .5;\n this.evaluationtypes.sort(function(a,b){\n return a.Ordinance - b.Ordinance\n })\n for(var i=0;i {\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n //FG - FOOF - After Cert - First Release (6) - I added an eval type while testing the delete dialog\n // and found that the busy icon didn't dissapear after adding an eval type so I added the line\n // below to fix that.\n loader.stopLoader();\n })\n },\n\n //FG - FOOF - After Cert - First Release (3) - Greatly simplified the method below so\n // rows would get sorted properly when ordinance was changed.\n ChangePerformanceLevelOrdinance(res) {\n let context = this\n if(res) {\n if(res.Ordinance < res.OldOrdinance)\n res.Ordinance = res.Ordinance -.5;\n else \n res.Ordinance = res.Ordinance + .5;\n this.performancelevels.sort(function(a,b){\n return a.Ordinance - b.Ordinance\n })\n for(var i=0;i {\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n //FG - FOOF - After Cert - First Release (6) - I added an eval type while testing the delete dialog\n // and found that the busy icon didn't dissapear after adding an eval type so I added the line\n // below to fix that.\n loader.stopLoader();\n })\n\n },\n\n updateEval(formName) {\n let context = this\n\n this.$refs[formName].validate((valid) => {\n\n\n if (valid) {\n\n let context = this\n loader.startLoader()\n\n service.UpdateEvaluationType(context.AddEvaluationForm).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n $('#AddEvaluatemodel').modal('hide')\n /// context.GetAllEvaluationTypes()\n\n for (var i = 0; i < context.evaluationtypes.length; i++) {\n if (context.evaluationtypes[i].Id == response.Id) {\n context.evaluationtypes.splice(i, 1, response)\n //context.evaluationtypes.push(response)\n\n break\n }\n\n }\n\n\n\n context.ChangeEvaluationTypeOrdinance(response)\n\n\n context.$notify({\n\n title: 'Success',\n\n message: 'Evaluation Type updated',\n\n type: 'success'\n\n })\n\n }, (error) => {\n\n loader.stopLoader()\n $('#AddEvaluatemodel').modal('hide')\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'EVAL - 1 error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n\n updatePerformance(formName) {\n let context = this\n\n this.$refs[formName].validate((valid) => {\n\n\n if (valid) {\n\n let context = this\n loader.startLoader()\n\n service.UpdatePerformanceLevel(context.AddPerformanceForm).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n $('#Performancemodel').modal('hide')\n\n for (var i = 0; i < context.performancelevels.length; i++) {\n if (context.performancelevels[i].Id == response.Id) {\n context.performancelevels.splice(i, 1, response)\n //context.evaluationtypes.push(response)\n\n break\n }\n\n }\n\n context.ChangePerformanceLevelOrdinance(response)\n\n context.$notify({\n\n title: 'Success',\n\n message: 'Performance Level updated',\n\n type: 'success'\n\n })\n\n }, (error) => {\n\n loader.stopLoader()\n $('#Performancemodel').modal('hide')\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'EVAL - 2 error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n\n submitPerformance(formName) {\n let context = this\n\n this.$refs[formName].validate((valid) => {\n\n\n if (valid) {\n\n let context = this\n loader.startLoader()\n\n service.AddPerformanceLevel(context.AddPerformanceForm).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n $('#Performancemodel').modal('hide')\n context.GetAllPerformanceLevels()\n\n //FG - FOOF - After Cert - First Release Security... I don't see the need\n // for the call to ChangePerformanceLevelOrdinance here and it messes with\n // security checks.... I especially don't like the use of the timeout.\n //setTimeout(function () {\n // context.ChangePerformanceLevelOrdinance(response)\n //}, 200)\n\n context.$notify({\n\n title: 'Success',\n\n message: 'Performance Level created',\n\n type: 'success'\n\n })\n\n }, (error) => {\n\n loader.stopLoader()\n $('#Performancemodel').modal('hide')\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'EVAL - 3 error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n\n submitEvaluation(formName) {\n let context = this\n\n this.$refs[formName].validate((valid) => {\n\n\n if (valid) {\n\n let context = this\n loader.startLoader()\n\n service.AddEvaluationType(context.AddEvaluationForm).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n $('#AddEvaluatemodel').modal('hide')\n context.GetAllEvaluationTypes()\n\n //FG - FOOF - After Cert - First Release Security... I don't see the need\n // for the call to ChangeEvaluationOrdiance here and it messes with\n // security checks.... I especially don't like the use of the timeout.\n //setTimeout(function () {\n // context.ChangeEvaluationTypeOrdinance(response) //WHY ??????? FOOF\n //}, 200)\n\n //context.GetAllEvaluationTypes()\n context.$notify({\n\n title: 'Success',\n\n message: 'Evaluation Type created',\n\n type: 'success'\n\n })\n\n }, (error) => {\n\n loader.stopLoader()\n $('#AddEvaluatemodel').modal('hide')\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'EVAL - 4 error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n\n resetForm(formName) {\n this.$refs[formName].resetFields()\n },\n\n //FG - FOOF - After Cert - First Release (6) - rewrote delete code below to use new methods in hydrowareCommonJS.js\n //The delete function below deletes a row from the table\n deleval(item){\n let context = this\n var ID = item.row.Id\n var opts = {message: 'Are you sure you want to delete ' + item.row.Name + '?'}\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.deleteEvalRow.bind(null,ID))\n },\n deleteEvalRow(ID) {\n var context = this;\n loader.startLoader()\n\n service.DeleteEvaluationType(ID).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n loader.stopLoader()\n for (var i = 0; i < context.evaluationtypes.length; i++) {\n if (context.evaluationtypes[i].Id == ID) {\n context.evaluationtypes.splice(i, 1)\n }\n }\n context.ChangeEvaluationTypeOrdinance('')\n }, (error) => {\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\n })\n },\n\n //FG - FOOF - After Cert - First Release (6) - rewrote delete code below to use new methods in hydrowareCommonJS.js\n //The delete function below deletes a row from the table\n delperf(item){\n let context = this\n var ID = item.row.Id\n var opts = {message: 'Are you sure you want to delete ' + item.row.Name + '?'}\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.deletePerfRow.bind(null,ID))\n },\n deletePerfRow(ID) {\n var context = this;\n loader.startLoader()\n\n service.DeletePerformanceLevel(ID).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n for (var i = 0; i < context.performancelevels.length; i++) {\n if (context.performancelevels[i].Id == ID) {\n context.performancelevels.splice(i, 1)\n }\n }\n context.ChangePerformanceLevelOrdinance('')\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n loader.stopLoader()\n }, \n (error) => {\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\n })\n },\n\n GetAllEvaluationTypes() {\n let context = this\n loader.startLoader()\n\n service.GetAllEvaluationTypes().then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n context.eordinance = []\n context.evaluationtypes = [] \n loader.stopLoader()\n return;\n }\n\n\n context.eordinance = []\n if (response) {\n context.evaluationtypes = response\n response.map(function (item, index) {\n context.eordinance.push(index + 1)\n })\n tooltip.startTooltip(50)\n } else {\n context.evaluationtypes = []\n }\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.error_description,\n\n type: 'error'\n\n })\n })\n\n },\n\n GetAllPerformanceLevels() {\n let context = this\n context.pordinance = []\n loader.startLoader()\n service.GetAllPerformanceLevels().then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n context.performancelevels = []\n loader.stopLoader()\n return;\n }\n\n if (response) {\n context.performancelevels = response\n response.map(function (item, index) {\n context.pordinance.push(index + 1)\n })\n tooltip.startTooltip(50)\n } else {\n context.performancelevels = []\n }\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.error_description,\n\n type: 'error'\n\n })\n })\n\n },\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/EvaluationManage/EvaluationManage.controller.js","//Evaluation\n\nexport const GetAllEvaluationTypes = () => {\n\n return $.get('Evaluation/GetAllEvaluationTypes?IsActive=null')\n}\n\nexport const AddEvaluationType = (model) => {\n return $.post('Evaluation/AddEvaluationType', model)\n}\n\nexport const UpdateEvaluationType = (model) => {\n\n return $.post('Evaluation/UpdateEvaluationType', model)\n}\n\nexport const DeleteEvaluationType = (id) => {\n return $.post('Evaluation/DeleteEvaluationType?Id=' + id)\n}\n\nexport const ChangeEvaluationTypeOrdinance = (model) => {\n\n return $.ajax({\n url: 'Evaluation/ChangeEvaluationTypeOrdinance',\n data: JSON.stringify(model),\n\n contentType: 'application/json',\n\n cache: false,\n type: 'POST'\n })\n\n}\n\n// Performance Level\n\nexport const ChangePerformanceLevelOrdinance = (model) => {\n\n return $.ajax({\n url: 'Evaluation/ChangePerformanceLevelOrdinance',\n data: JSON.stringify(model),\n\n contentType: 'application/json',\n\n cache: false,\n type: 'POST'\n })\n\n}\n\nexport const GetAllPerformanceLevels = (id) => {\n return $.get('Evaluation/GetAllPerformanceLevels?IsActive=null')\n}\n\nexport const AddPerformanceLevel = (model) => {\n return $.post('Evaluation/AddPerformanceLevel', model)\n}\n\nexport const UpdatePerformanceLevel = (model) => {\n\n return $.post('Evaluation/UpdatePerformanceLevel', model)\n}\n\nexport const DeletePerformanceLevel = (id) => {\n return $.post('Evaluation/DeletePerformanceLevel?Id=' + id)\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/EvaluationManage/EvaluationManage.service.js","import * as service from './Evaluation.services'\nexport default {\n props: [\"action\"], //FG - FOOF - After Cert - First Release Security (7) - added the prop\n data() {\n return {\n labelPosition: 'top',\n isediting: false,\n EditableColID: '',\n EvaluationTypes: [],\n PerformanceLevels: [],\n personnelID: '',\n ActionTypes: [],\n Evaluations: [],\n label: 'Verified By : ',\n\n\n addEvaluation: {\n\n \"PersonnelId\": '',\n \"ReviewDate\": \"\",\n \"StartPeriod\": \"\",\n \"EndPeroid\": \"\",\n \"SupervisorComments\": \"\",\n \"EmployeeComments\": \"\",\n \"EvaluatedUserId\": \"\",\n \"EvaluatedUser\": \"\",\n \"EvaluationLevels\": []\n\n\n },\n modalTitle: '',\n evalBackup: [],\n users: [],\n rules: {\n /* EvaluationTypeId: [\n {required: true, message: 'Please select Evaluation Type'}\n\n ],\n PerformanceLevelId: [\n {required: true, message: 'Please select Performance Level'}\n\n ],\n Observation: [\n {required: true, message: 'This field is required', trigger: 'blur'},\n {min: 1, max: 1500, message: 'Length should be 1 to 1500', trigger: 'blur'}\n ],\n ActionItem: [\n {required: true, message: 'This field is required', trigger: 'blur'},\n {min: 1, max: 1500, message: 'Length should be 1 to 1500', trigger: 'blur'}\n ],\n TargetDate: [\n {type: 'date', required: true, message: 'Please pick a date', trigger: 'change'}\n ],\n FirstName: [\n {required: true, message: 'This field is required', trigger: 'blur'},\n {min: 1, max: 50, message: 'Length should be 1 to 50', trigger: 'blur'}\n ],\n LastName: [\n {required: true, message: 'This field is required', trigger: 'blur'},\n {min: 1, max: 50, message: 'Length should be 1 to 50', trigger: 'blur'}\n ],*/\n\n },\n }\n },\n mounted() {\n let context = this\n this.personnelID = this.$route.params.id\n\n\n this.$router.app.$on('add_eval', (data) => {\n\n context.addEvaluation = {\n\n \"PersonnelId\": context.personnelID,\n \"ReviewDate\": \"\",\n \"StartPeriod\": \"\",\n \"EndPeroid\": \"\",\n \"SupervisorComments\": \"\",\n \"EmployeeComments\": \"\",\n \"EvaluatedUserId\": \"\",\n \"EvaluatedUser\": \"\",\n \"EvaluationLevels\": []\n\n }\n context.GetAllEvaluationTypes()\n context.GetPerformanceLevels()\n context.GetAllusers()\n context.$refs['addEvaluation'].resetFields()\n })\n this.$router.app.$on('Evaluation_obj', (data) => {\n\n context.GetPerformanceLevels()\n context.GetAllusers()\n context.GetEvaluation(data)\n setTimeout(function () {\n context.GetAllEvaluationTypes()\n }, 500)\n\n\n })\n this.$router.app.$on('submit_eval', (data) => {\n\n context.submitForm(data)\n\n })\n\n this.$router.app.$on('update_eval', (data) => {\n\n context.EditEvaluation(data)\n\n })\n\n this.$router.app.$on('del_eval', (data) => {\n\n context.del(data)\n\n })\n\n /*this.role= JSON.parse(localStorage.getItem('authentication')).role;\n if(this.role=='AquaticsDirector'|| this.role=='PoolManager' || this.role=='AsstPoolManager' || this.role=='ToolAdmin'){\n this.Certificationcolumns= [\"ReviewDate\", \"Observation\", \"StartPeriod\", \"EndPeroid\", \"Actions\"];\n }\n else{\n this.Certificationcolumns= [\"ReviewDate\", \"Observation\", \"StartPeriod\", \"EndPeroid\"];\n }*/\n },\n beforeDestroy() {\n this.$root.$off('update_eval')\n this.$root.$off('del_eval')\n this.$root.$off('submit_eval')\n this.$root.$off('Evaluation_obj')\n\n },\n methods: {\n\n ShowAddEvaluation() {\n let context = this\n\n this.isediting = false\n this.modalTitle = 'Create Evaluation'\n $('#AddEvaluationmodel').modal('show')\n this.resetForm('addEvaluation')\n this.addEvaluation = deepcopy(this.evalBackup)\n },\n\n GetEvaluation(PersonnelId) {\n let context = this\n loader.startLoader()\n service.GetEvaluation(PersonnelId).then(function (response) {\n context.addEvaluation = []\n loader.stopLoader()\n if (response) {\n context.addEvaluation = response\n } else {\n context.addEvaluation = []\n }\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetPerformanceLevels() {\n let context = this\n loader.startLoader()\n service.GetPerformanceLevels().then(function (response) {\n\n context.PerformanceLevels = response\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n del: function (data) {\n var ID = data\n let context = this\n context.$confirm('Are you sure you want to delete?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n\n loader.startLoader()\n service.DeleteEvaluation(ID).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Deleted Successfully',\n type: 'success'\n })\n context.$router.app.$emit('action_done')\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n }).catch(() => {\n\n })\n },\n\n cancelpopup: function () {\n\n $('#AddEvaluationmodel').modal('hide')\n },\n\n EditEvaluation: function (data) {\n\n // this.$refs[formname].validate((valid) => {\n // if (valid) {\n let context = this\n loader.startLoader()\n\n let evaluationData = context.addEvaluation\n\n\n var evalBack = {\n PersonnelId: context.personnelID,\n ReviewDate: context.$options.filters.fdate(context.addEvaluation.ReviewDate),\n StartPeriod: context.$options.filters.fdate(context.addEvaluation.StartPeriod),\n EndPeroid: context.$options.filters.fdate(context.addEvaluation.EndPeroid),\n EvaluatedUserId: context.addEvaluation.EvaluatedUserId,\n SupervisorComments: context.addEvaluation.SupervisorComments,\n EmployeeComments: context.addEvaluation.EmployeeComments,\n EvaluationLevels: [],\n Id: context.addEvaluation.Id\n }\n\n context.addEvaluation.EvaluationLevels.map(function (item) {\n\n if (item.PerformanceLevelId) {\n evalBack.EvaluationLevels.push(item)\n }\n\n })\n\n /* alert(JSON.stringify(evalBack))*/\n\n service.UpdateEvaluation(evalBack).then(function (response) {\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return; \n }\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Successfully Updated Evaluation',\n type: 'success'\n })\n context.$router.app.$emit('action_done')\n\n }, (error) => {\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n\n },\n\n GetAllusers() {\n let context = this\n loader.startLoader()\n service.GetAllusers().then(function (response) {\n context.users = response\n\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n\n GetAllEvaluationTypes() {\n\n\n let context = this\n loader.startLoader()\n service.GetAllEvaluationTypes().then(function (response) {\n\n var sl = response\n // alert(context.addEvaluation.EvaluationLevels.length)\n if (context.addEvaluation.EvaluationLevels.length > 0) {\n\n\n response.map(function (item, index) {\n\n context.addEvaluation.EvaluationLevels.map(function (it, ind) {\n if ((item.Id !== it.EvaluationTypeId) && (!sl[index].Comment && !sl[index].PerformanceLevel && !sl[index].PerformanceLevelId)) {\n\n sl[index] = {\n \"Comment\": \"\",\n \"EvaluationType\": item.Name,\n \"EvaluationTypeId\": item.Id,\n \"PerformanceLevel\": \"\",\n \"PerformanceLevelId\": '',\n \"PerformanceOrdinance\": item.Ordinance\n\n }\n } else {\n if (item.Id == it.EvaluationTypeId) {\n\n sl[index] = it\n }\n }\n\n\n })\n\n\n })\n /* sl.sort(function (a, b) {\n return a.PerformanceOrdinance - b.PerformanceOrdinance\n\n });*/\n context.addEvaluation.EvaluationLevels = sl\n\n\n } else {\n\n response.map(function (item) {\n\n context.addEvaluation.EvaluationLevels.push({\n \"Comment\": \"\",\n \"EvaluationType\": item.Name,\n \"EvaluationTypeId\": item.Id,\n \"PerformanceLevel\": \"\",\n \"PerformanceLevelId\": '',\n \"PerformanceOrdinance\": item.Ordinance\n\n })\n context.addEvaluation.EvaluationLevels.sort(function (a, b) {\n return a.PerformanceOrdinance - b.PerformanceOrdinance\n\n });\n })\n }\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n editcol: function (data, buttonType) {\n alert (\"editcol in Evaluation.controll.js - is this ever used ?\")\n if(buttonType=\"view\")\n this.action=\"V\"\n else\n this.action=\"E\"\n /* var ID = data.row.Id;\n let context = this;\n context.EditableColID = ID;\n context.addKudos.actiondate = data.row.ActionDate;\n context.addKudos.commentedby = data.row.CommentedBy;\n context.addKudos.actiontype = data.row.ActionTypeId;\n context.addKudos.description = data.row.Description;*/\n\n this.resetForm('addEvaluation')\n this.isediting = true\n this.modalTitle = 'Edit Evaluation'\n $('#AddEvaluationmodel').modal('show')\n\n this.addEvaluation = data.row\n\n },\n\n submitForm(formName) {\n\n this.$refs[formName].validate((valid) => {\n if (valid) {\n let context = this\n loader.startLoader()\n\n let evaluationData = context.addEvaluation\n\n\n var evalBack = {\n PersonnelId: context.personnelID,\n ReviewDate: context.$options.filters.fdate(context.addEvaluation.ReviewDate),\n StartPeriod: context.$options.filters.fdate(context.addEvaluation.StartPeriod),\n EndPeroid: context.$options.filters.fdate(context.addEvaluation.EndPeroid),\n EvaluatedUserId: context.addEvaluation.EvaluatedUserId,\n SupervisorComments: context.addEvaluation.SupervisorComments,\n EmployeeComments: context.addEvaluation.EmployeeComments,\n EvaluationLevels: []\n\n }\n\n context.addEvaluation.EvaluationLevels.map(function (item) {\n\n if (item.PerformanceLevelId) {\n evalBack.EvaluationLevels.push(item)\n }\n\n })\n\n\n service.AddEvaluation(evalBack).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Succesfully Created Evaluation',\n type: 'success'\n })\n context.$router.app.$emit('action_done')\n\n }, (error) => {\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'EVAL - error while submit!!',\n\n type: 'error'\n\n })\n\n return false\n }\n })\n },\n resetForm(formName) {\n this.$refs[formName].resetFields()\n },\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Evaluation/Evaluation.controller.js","//certifications\r\n\r\n\r\nexport const GetAllEvaluationTypes = () => {\r\n return $.get('Evaluation/GetAllEvaluationTypes?IsActive=true')\r\n}\r\nexport const GetPerformanceLevels = () => {\r\n return $.get('Evaluation/GetAllPerformanceLevels?IsActive=true')\r\n}\r\nexport const GetEvaluation = (id) => {\r\n return $.get('Personnel/GetEvaluationById?Id=' + id)\r\n}\r\n\r\n\r\nexport const AddEvaluation = (model) => {\r\n return $.post('Personnel/AddEvaluation', model)\r\n}\r\nexport const DeleteEvaluation = (KudosId) => {\r\n return $.post('Personnel/DeleteEvaluation?EvaluationId=' + KudosId)\r\n}\r\nexport const UpdateEvaluation = (model) => {\r\n return $.post('Personnel/UpdateEvaluation', model)\r\n}\r\nexport const GetCommendableActionTypes = () => {\r\n return $.get('Personnel/GetCommendableActionTypes')\r\n}\r\n\r\n\r\nexport const GetAllusers= () => {\r\n return $.get('api/Training/GetAllUsers')\r\n}\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Evaluation/Evaluation.services.js","import * as service from './Icecontacts.services'\nexport default {\n data() {\n return {\n\n currentuseremail: '',\n personaldetails: [],\n iseditable: true,\n // imgSrc: '',\n // suitsize: [],\n fileImg: '',\n personalForm: {\n FirstName: '',\n LastName: '',\n Relation: '',\n PhoneNumber: '',\n altFirstName: '',\n altLastName: '',\n altRelation: '',\n altPhone: '',\n altMiddleName: '',\n MiddleName: '',\n MedicalCondition: '',\n MedicalNotes: '',\n Allergies: '',\n SpecialInstructions: '',\n\n },\n responseModel: []\n\n }\n },\n\n props: ['data', 'editShow'],\n watch: {\n data: function () {\n\n this.responseModel = {\n PersonnelId: this.data.response.PersonnelId,\n FirstName: this.data.response.PersonnelEmergency[0].FirstName,\n LastName: this.data.response.PersonnelEmergency[0].LastName,\n Relation: this.data.response.PersonnelEmergency[0].Relation,\n MiddleName: this.data.response.PersonnelEmergency[0].MiddleName,\n PhoneNumber: this.data.response.PersonnelEmergency[0].PhoneNumber,\n altFirstName: this.data.response.PersonnelEmergency[1].FirstName,\n altLastName: this.data.response.PersonnelEmergency[1].LastName,\n altMiddleName: this.data.response.PersonnelEmergency[1].MiddleName,\n altRelation: this.data.response.PersonnelEmergency[1].Relation,\n altPhoneNumber: this.data.response.PersonnelEmergency[1].PhoneNumber,\n MedicalCondition: this.data.response.MedicalCondition,\n\n Allergies: this.data.response.Allergies,\n MedicalNotes: this.data.response.MedicalNotes,\n SpecialInstructions: this.data.response.SpecialInstructions\n }\n\n this.contBackup = deepcopy(this.responseModel)\n\n this.personalForm = this.contBackup\n\n\n\n\n }\n\n },\n\n mounted() {\n\n\n },\n\n methods: {\n\n modalCancel() {\n if ($('#PostsignupModel').length > 0) {\n $('#PostsignupModel').modal('hide')\n } else {\n\n this.personalForm = deepcopy(this.responseModel)\n\n this.data['isEdit'] = false\n\n }\n this.data['isEdit'] = false\n },\n backProfile() {\n this.$router.push('/addpersonnel')\n\n },\n\n cEdit() {\n\n if (this.data[\"isEdit\"] == true) {\n this.data[\"isEdit\"] = false\n } else if (this.data[\"isEdit\"] == false) {\n this.data[\"isEdit\"] = true\n }\n\n },\n save(formName) {\n let context = this\n\n\n var formdata = {\n PersonnelId: this.data.response.PersonnelId,\n MedicalCondition: context.personalForm.MedicalCondition,\n Allergies: context.personalForm.Allergies,\n MedicalNotes: context.personalForm.MedicalNotes,\n SpecialInstructions: context.personalForm.SpecialInstructions,\n PersonnelEmergency: [{\n PersonnelId: this.data.response.PersonnelId,\n Type: 1,\n FirstName: context.personalForm.FirstName,\n LastName: context.personalForm.LastName,\n PhoneNumber: context.personalForm.PhoneNumber,\n MiddleName: context.personalForm.MiddleName,\n Relation: context.personalForm.Relation,\n },\n {\n PersonnelId: this.data.response.PersonnelId,\n Type: 2,\n FirstName: context.personalForm.altFirstName,\n LastName: context.personalForm.altLastName,\n PhoneNumber: context.personalForm.altPhoneNumber,\n MiddleName: context.personalForm.altMiddleName,\n Relation: context.personalForm.altRelation,\n }\n ]\n }\n\n this.$refs[formName].validate((valid) => {\n if (valid) {\n\n\n loader.startLoader()\n\n service.SaveIceContact(formdata).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n return;\n }\n\n //FG - FOOF - AFTER CERT - First Release Security - seems the broadcast below is not needed\n // AND when it is in place causes problems\n //context.$router.app.$emit('updatedinfo')\n\n context.data['isEdit'] = true\n context.$notify({\n\n title: 'Success',\n\n message: 'Personnel Details Updated',\n\n type: 'success'\n\n })\n loader.stopLoader()\n\n }, (error) => {\n\n context.data['isEdit'] = true\n context.personalForm = deepcopy(context.responseModel)\n context.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n loader.stopLoader()\n\n })\n\n }\n })\n\n }\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/ICEcontacts/Icecontacts.controller.js","export const SaveIceContact = (model) => {\r\n\r\n return $.post('Personnel/UpdatePersonnelICEDetails',model)\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/ICEcontacts/Icecontacts.services.js","import * as service from './Jobdetails.services'\n\nexport default {\n\n data() {\n return {\n iseditable: true,\n disableForRoleOrdination: false,\n jobForm: {\n PersonnelId: '',\n HiredOn: '',\n EmployeeId: '',\n LocationId: '',\n role: '',\n isself: false,\n PositionId: '',\n ActiveStatus: '',\n CurrentSalary: '',\n CurrentPayRate: '',\n NextPayChange: '',\n TerminationDate: '',\n TerminatedBy: '',\n TerminationReason: '',\n TerminatedStatus: '',\n ChangeSalaries: [],\n username: '',\n IsActive: ''\n\n },\n locations: [],\n positions: [],\n users: [],\n salaries: [],\n personelId: '',\n locationNames: '',\n positionNames: '',\n salaryBack: []\n\n }\n },\n mounted() {\n\n if (this.$route.params.id) {\n this.personelId = this.$route.params.id\n this.GetMainUsers(this.$route.params.id)\n }\n\n this.getLocations()\n this.getPosition()\n\n this.role = JSON.parse(localStorage.getItem('authentication')).role\n this.isself = (this.personelId == JSON.parse(localStorage.getItem('authentication')).PersonnelId) ? true : false\n\n },\n props: ['data', 'editShow'],\n watch: {\n data: function () {\n\n this.responseModel = {\n PersonnelId: this.data.response.PersonnelId,\n HiredOn: this.data.response.HiredOn,\n EmployeeId: this.data.response.EmployeeId,\n LocationId: this.data.response.LocationId,\n\n PositionId: this.data.response.PositionId,\n ActiveStatus: this.data.response.ActiveStatus,\n CurrentSalary: this.data.response.CurrentSalary,\n CurrentPayRate: this.data.response.CurrentPayRate,\n NextPayChange: this.data.response.NextPayChange,\n TerminationDate: this.data.response.TerminationDate,\n TerminatedBy: this.data.response.TerminatedBy,\n TerminationReason: this.data.response.TerminationReason,\n TerminatedStatus: this.data.response.TerminatedStatus,\n ChangeSalaries: [],\n username: this.data.response.PrimaryEmail\n\n }\n\n this.jobBackup = deepcopy(this.responseModel)\n\n this.jobForm = this.jobBackup\n\n },\n\n 'jobForm.ActiveStatus' () {\n\n if (this.jobForm.ActiveStatus == true) {\n this.jobForm.TerminatedBy = ''\n this.jobForm.TerminationReason = ''\n this.jobForm.TerminationDate = ''\n this.jobForm.IsActive = true\n } else {\n this.jobForm.TerminatedBy = this.data.response.TerminatedBy\n this.jobForm.TerminationReason = this.data.response.TerminationReason\n this.jobForm.TerminationDate = this.data.response.TerminationDate\n }\n\n },\n\n 'jobForm.TerminatedStatus' () {\n\n },\n\n 'jobForm.LocationId' () {\n this.locationNames = ''\n if (this.jobForm.LocationId.length > 0) {\n\n for (var i = 0, len = this.locations.length; i < len; i++) {\n for (var j = 0, len2 = this.jobForm.LocationId.length; j < len2; j++) {\n if (this.locations[i].LocationId == this.jobForm.LocationId[j]) {\n\n if (this.locationNames.length > 0)\n this.locationNames += ', '\n this.locationNames += this.locations[i].LocationName\n }\n }\n }\n\n }\n },\n 'jobForm.PositionId' () {\n this.positionNames = ''\n if (this.jobForm.PositionId.length > 0) {\n\n for (var i = 0, len = this.positions.length; i < len; i++) {\n for (var j = 0, len2 = this.jobForm.PositionId.length; j < len2; j++) {\n if (this.positions[i].PositionId == this.jobForm.PositionId[j]) {\n if (this.positionNames.length > 0) {\n\n }\n\n if (this.positionNames.length > 0)\n this.positionNames += ', '\n this.positionNames += this.positions[i].PositionName\n }\n }\n }\n this.positionNames = this.positionNames.replace(/\\,$/, '')\n }\n }\n\n },\n methods: {\n addSalary() {\n var model = {\n Salary: this.jobForm.CurrentSalary,\n PayRate: this.jobForm.CurrentPayRate,\n PayTo: this.$moment(this.jobForm.NextPayChange).format('MM-DD-YYYY')\n\n }\n\n this.salaryBack.push(model)\n this.jobForm.ChangeSalaries.push(model)\n\n /* this.jobForm['CurrentSalary'] = this.data.response.CurrentSalary\n this.jobForm['CurrentPayRate'] = this.data.response.CurrentPayRate\n this.jobForm['NextPayChange'] = this.data.response.NextPayChange*/\n this.$notify({\n\n title: 'Success',\n\n message: 'Salary info added to list please save',\n\n type: 'success'\n\n })\n },\n\n CommonFinder(parentarray, childarray, parentkey, childkey, desiredkey, assignName) {\n\n for (var i = 0, len = parentarray.length; i < len; i++) {\n for (var j = 0, len2 = childarray.length; j < len2; j++) {\n if (parentarray[i].parentkey == childarray.childkey[j]) {\n\n this.locationNames += parentarray[i].desiredkey + ','\n }\n }\n }\n\n },\n backProfile() {\n this.$router.push('/addpersonnel')\n\n },\n\n cEdit() {\n\n if (this.data['isEdit'] == true) {\n this.data['isEdit'] = false\n } else if (this.data['isEdit'] == false) {\n this.data['isEdit'] = true\n }\n\n },\n modalCancel() {\n this.salaryBack = []\n if ($('#PostsignupModel').length > 0) {\n $('#PostsignupModel').modal('hide')\n } else {\n\n this.jobForm = deepcopy(this.responseModel)\n //this.jobForm.LocationId = this.data.response.LocationId\n this.jobForm.ChangeSalaries = []\n //FG - FOOF - Jun 2 2019 changed line below, it used to set isEdit to true... \n // that didn't seem right\n // ALSO the line below used to be in the \"else block\" just above but I make sure\n // isEdit is false regardless of anything else if the update is cancelled\n this.data['isEdit'] = false //if the update is cancelled then go back to view instead of edit\n }\n\n },\n getLocations() {\n let context = this\n\n service.GetLocations().then(function (response) {\n\n context.locations = response\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n\n })\n\n },\n testClick(x) {\n alert(\"I WAS CLICKED\")\n },\n \n optionClicked(x,y) {\n alert(\"Option clicked\");\n },\n\n getPosition() {\n let context = this\n\n //FG - FOOF - After Cert - First Release - added the parm to the GetPositions call\n service.GetPositions(this.personelId).then(function (response) {\n\n context.positions = response\n //FG - FOOF - After Cert - First Release Security (if any of the positions is not selectable it\n //means the person being editted has at least one role whose ordinance is greater than that of\n //the person doing the editing... when this is the case the termination settings need to be\n //disabled.)\n for(var i=0;i {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n\n })\n },\n\n GetMainUsers(id) {\n let context = this\n\n service.GetMainUsers(id).then(function (response) {\n\n context.users = response\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n\n })\n },\n\n ViewSalary() {\n\n let context = this\n\n service.GetPersonnelSalaries(this.personelId).then(function (response) {\n\n context.salaries = response ? response : []\n if (context.salaryBack.length > 0) {\n\n context.salaryBack.map(function (el, index) {\n\n if (index == 0) {\n if (context.salaries.length > 0) {\n el['PayFrom'] = context.salaries[context.salaries.length - 1].PayTo\n } else {\n el['PayFrom'] = el['PayTo']\n }\n\n } else {\n\n el['PayFrom'] = context.salaryBack[index - 1].PayTo\n }\n\n })\n\n context.salaryBack.map(function (el) {\n\n context.salaries.push(el)\n\n })\n }\n\n $('#ViewSalary').modal('show')\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n\n })\n\n },\n\n updateJob() {\n let context = this\n\n /* if(this.jobForm.ChangeSalaries.length > 0)\n {\n this.jobForm[\"CurrentSalary\"] = this.jobBackup.CurrentSalary\n this.jobForm[\"CurrentPayRate\"] = this.jobBackup.CurrentPayRate\n this.jobForm[\"NextPayChange\"] = this.jobBackup.NextPayChange\n }*/\n\n this.jobForm['IsActive'] = this.jobForm.ActiveStatus\n\n if (this.jobForm.HiredOn) {\n this.jobForm['HiredOn'] = this.$moment(this.jobForm['HiredOn']).format('MM-DD-YYYY')\n }\n if (this.jobForm.TerminationDate) {\n this.jobForm['TerminationDate'] = this.$moment(this.jobForm['TerminationDate']).format('MM-DD-YYYY')\n }\n if (this.jobForm.NextPayChange) {\n this.jobForm['NextPayChange'] = this.$moment(this.jobForm['NextPayChange']).format('MM-DD-YYYY')\n }\n\n loader.startLoader()\n\n service.UpdatePersonnelJobDetails(this.jobForm).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n if (context.isself) {\n context.$notify({\n title: 'Success',\n message: 'Please login again to apply the changes',\n type: 'success'\n })\n context.$localStorage.remove('authentication')\n window.globallocid = null\n context.$router.push('/login')\n } else {\n //FG - FOOF - AFTER CERT - First Release Security - seems the broadcast below is not needed\n // AND when it is in place causes problems\n //context.$router.app.$emit('updatedinfo')\n context.data['isEdit'] = true\n context.$notify({\n\n title: 'Success',\n\n message: 'Job Details Updated',\n\n type: 'success'\n\n })\n }\n\n }, (error) => {\n\n context.data['isEdit'] = true\n context.personalForm = deepcopy(context.responseModel)\n context.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n loader.stopLoader()\n\n })\n\n }\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Jobdetails/Jobdetails.controller.js","export const GetLocations = (model) => {\n\n return $.get('Location/GetLocations')\n\n}\n\nexport const GetPositions = (model) => {\n\n return $.get('Position/GetMinPositions?addOrEdit=edit&userBeingEditedId='+model) //FG - After Cert - First Release Security - added the addOrEdit Parameter\n\n}\nexport const GetPersonnelSalaries = (personnelId) => {\n\n return $.get('Personnel/GetPersonnelSalaries?personnelId=' + personnelId)\n\n}\n\nexport const GetMainUsers = () => {\n\n return $.get('Personnel/GetMainUsers')\n\n}\n\n\nexport const UpdatePersonnelJobDetails = (model) => {\n\n return $.post('Personnel/UpdatePersonnelJobDetails',model)\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Jobdetails/Jobdetails.services.js","import * as service from './Kudos.service'\nexport default {\n props: [\"action\"], //FG - FOOF - After Cert - First Release Security (7) - added the prop\n data() {\n var checkfuturedate = (rule, value, callback) => {\n\n if (value) {\n let inputdate = new Date(value)\n let todatdate = new Date()\n if (inputdate > todatdate) {\n return callback(new Error('Action Date should not be greater than today\\'s date'))\n } else {\n callback()\n }\n\n } else {\n return callback(new Error('Please pick a date'))\n }\n }\n return {\n Kudoscolumnsq: ['ActionDate', 'Description', 'CommentedBy', 'ActionTypeName', 'Actions'],\n optionstable: {\n headings: {\n ActionDate: 'Date',\n Description: 'Description',\n CommentedBy: 'Kudos given by',\n ActionTypeName: 'Kudos for',\n\n Actions: ''\n },\n labelPosition: 'top',\n isediting: false,\n EditableColID: '',\n role: '',\n\n sortIcon: {\n base: 'glyphicon',\n up: 'glyphicon-chevron-up',\n down: 'glyphicon-chevron-down'\n },\n perPage: 10,\n perPageValues: [5, 10, 25, 50, 100],\n sortable: ['ActionDate', 'Description', 'CommentedBy', 'ActionTypeName'],\n texts: {\n filterPlaceholder: 'Search...',\n limit: 'rows per page:',\n noResults: 'No matching records',\n }\n },\n addKudos: {\n ActionDate: '',\n Id: '',\n commentedby: '',\n CommentedUserId: '',\n ActionTypeId: '',\n Description: ''\n\n },\n\n rules: {\n ActionDate: [{\n type: 'date',\n required: true,\n trigger: 'blur',\n validator: checkfuturedate,\n }],\n CommentedUserId: [{\n required: true,\n message: 'This field is required'\n },\n /* {min: 1, max: 50, message: 'Length should be 1 to 50'}*/\n\n ],\n ActionTypeId: [{\n required: true,\n message: 'Please select one action type'\n }],\n\n Description: [{\n min: 1,\n max: 500,\n message: 'Length should be 1 to 500'\n }]\n\n },\n Kudos: [],\n KudosUsers: [],\n personnelID: '',\n radio2: 3,\n ActionTypes: [],\n kudoBackup: [],\n modalTitle: '',\n action: \"\"\n }\n },\n mounted() {\n let context = this\n this.personnelID = this.$route.params.id\n this.GetCommendableActionTypes()\n this.GetKudosGivenByUsers()\n\n this.$router.app.$on('add_kudos', (data) => {\n\n context.addKudos = {\n ActionDate: '',\n Id: '',\n commentedby: '',\n CommentedUserId: '',\n ActionTypeId: '',\n Description: ''\n\n }\n context.$refs['addKudos'].resetFields()\n })\n this.$router.app.$on('kudos_obj', (data) => {\n\n context.GetKudosById(data)\n\n })\n this.$router.app.$on('submit_kudos', (data) => {\n\n context.submitForm(data)\n\n })\n\n this.$router.app.$on('update_kudos', (data) => {\n\n context.EditKudos(data)\n\n })\n this.$router.app.$on('del_kudos', (data) => {\n\n context.del(data)\n\n })\n },\n beforeDestroy() {\n this.$root.$off('update_kudos')\n this.$root.$off('del_kudos')\n this.$root.$off('submit_kudos')\n this.$root.$off('kudos_obj')\n\n },\n\n methods: {\n\n GetKudosGivenByUsers() {\n let context = this\n loader.startLoader()\n service.GetKudosGivenByUsers().then(function (response) {\n\n if (response && response != null) {\n response.push({\n Id: 0,\n Name: 'Other'\n })\n\n context.KudosUsers = response\n\n } else {\n\n context.KudosUsers = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetKudosById(PersonnelId) {\n let context = this\n loader.startLoader()\n service.GetKudosById(PersonnelId).then(function (response) {\n\n context.addKudos = response\n context.addKudos.actiondate = new Date(response.ActionDate)\n loader.stopLoader()\n if (response) {\n\n\n /* var ID = response.Id;\n let context = this;\n context.EditableColID = ID;\n\n\n context.addKudos.CommentedBy = response.CommentedBy;\n context.addKudos.actiontype = response.ActionTypeId;\n context.addKudos.description = response.Description;\n context.addKudos.CommentedUserId = context.addKudos.CommentedBy ? 0 : response.CommentedUserId;\n context.isediting = true;*/\n\n /* for (var i = 0; i < response.length; i++) {\n\n context.Kudos[i].ActionDate=(context.Kudos[i].ActionDate)? context.$options.filters.fdate(context.Kudos[i].ActionDate):'';\n\n\n }*/\n\n } else {\n context.addKudos = []\n }\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n GetCommendableActionTypes() {\n let context = this\n loader.startLoader()\n service.GetCommendableActionTypes().then(function (response) {\n context.ActionTypes = response\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n del: function (data) {\n var ID = data\n let context = this\n context.$confirm('Are you sure you want to delete?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n\n loader.startLoader()\n service.DeleteKudos(ID).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.$router.app.$emit('action_done')\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Deleted Successfully',\n type: 'success'\n })\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n }).catch(() => {\n\n })\n },\n\n cancelpopup: function () {\n\n $('#Addkudosmodel').modal('hide')\n },\n\n EditKudos: function (formname) {\n\n // this.$refs[formname].validate((valid) => {\n // if (valid) {\n let context = this\n loader.startLoader()\n\n let KudosModel = {\n Id: context.addKudos.Id,\n PersonnelId: context.$route.params.id,\n ActionDate: context.$options.filters.fdate(context.addKudos.ActionDate),\n ActionTypeId: context.addKudos.ActionTypeId,\n CommentedBy: context.addKudos.CommentedBy && context.addKudos.CommentedUserId === 0 ? context.addKudos.CommentedBy : '',\n CommentedUserId: context.addKudos.CommentedUserId !== 0 ? context.addKudos.CommentedUserId : '',\n Description: context.addKudos.Description\n\n }\n\n service.UpdateKudos(KudosModel).then(function (response) {\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Successfully Updated Kudos',\n type: 'success'\n })\n\n context.$router.app.$emit('action_done')\n\n }, (error) => {\n\n loader.stopLoader()\n $('#AddKudosmodel').modal('hide')\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n\n },\n\n editcol: function (data, buttonType) {\n //FG - FOOF - After Cert - First Release Security (7) - this method does not seem to be used\n alert(\"KUDOS CONTROLLER BUTTON TYPE: \" + buttonType)\n if(buttonType==\"view\") \n this.action=\"V\";\n else\n this.action=\"E\";\n alert(this.action) \n var ID = data.row.Id\n let context = this\n context.EditableColID = ID\n context.addKudos.actiondate = new Date(data.row.ActionDate)\n\n context.addKudos.CommentedBy = data.row.CommentedBy\n context.addKudos.actiontype = data.row.ActionTypeId\n context.addKudos.description = data.row.Description\n context.addKudos.CommentedUserId = context.addKudos.CommentedBy ? 0 : data.row.CommentedUserId\n context.isediting = true\n $('#Addkudosmodel').modal('show')\n this.modalTitle = 'Edit Kudos'\n\n },\n\n submitForm(formName) {\n\n\n this.$refs[formName].validate((valid) => {\n if (valid) {\n let context = this\n loader.startLoader()\n\n let KudosModel = {\n\n PersonnelId: context.$route.params.id,\n ActionDate: context.$options.filters.fdate(context.addKudos.ActionDate),\n ActionTypeId: context.addKudos.ActionTypeId,\n\n Description: context.addKudos.Description,\n\n CommentedBy: context.addKudos.CommentedBy && context.addKudos.CommentedUserId === 0 ? context.addKudos.CommentedBy : '',\n CommentedUserId: context.addKudos.CommentedUserId !== 0 ? context.addKudos.CommentedUserId : '',\n }\n\n service.AddKudos(KudosModel).then(function (response) {\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Successfully Created Kudos',\n type: 'success'\n })\n context.$router.app.$emit('action_done')\n\n }, (error) => {\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'KUDOS - error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n resetForm(formName) {\n this.$refs[formName].resetFields()\n },\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Kudos/Kudos.controller.js","\n//certifications\nexport const GetKudosById = (personnelID) => {\n return $.get('Personnel/GetKudosById?Id='+personnelID)\n}\nexport const GetKudosGivenByUsers = (personnelID) => {\n return $.get('Personnel/GetKudosGivenByUsers')\n}\n\nexport const DeleteKudos = (KudosId) => {\n return $.post('Personnel/DeleteKudos?KudosId='+KudosId)\n}\nexport const AddKudos = (model) => {\n return $.post('Personnel/AddKudos',model)\n}\nexport const UpdateKudos = (model) => {\n return $.post('Personnel/UpdateKudos',model)\n}\nexport const GetCommendableActionTypes=()=>{\n return $.get('Personnel/GetCommendableActionTypes')\n}\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Kudos/Kudos.service.js","import Vue from 'vue'\r\nimport * as service from './Location-Pool-Selector.services.js'\r\nexport default {\r\n\r\n data() {\r\n return {\r\n chosenLocation: '',\r\n chosenPool: '',\r\n stateName: '',\r\n locationSelector: '',\r\n poolSelector: '',\r\n currentRole: '',\r\n locations: [],\r\n locationname: '',\r\n pools: [],\r\n pooldisabled: true,\r\n sidebarToggle: false,\r\n showSide: true\r\n }\r\n },\r\n // props:['currentrole'],\r\n mounted() {\r\n let context = this\r\n this.$router.app.$on('sidebar_hide', (data) => {\r\n if (data == true) {\r\n context.showSide = false\r\n } else {\r\n context.showSide = true\r\n }\r\n })\r\n this.$router.app.$on('invokePoolLoc', (data) => {\r\n context.getLocations()\r\n this.getpools(this.chosenLocation)\r\n })\r\n this.$router.app.$on('invocksidebar', (data) => {\r\n if (data) {\r\n context.getLocations()\r\n }\r\n })\r\n this.stateName = this.$route.name\r\n this.currentRole = window.authDetails ? window.authDetails.role : ''\r\n if (this.stateName != 'login' && this.stateName != 'resetpassword' && this.stateName != 'signup' && this.stateName != 'signupconfirm') {\r\n context.getLocations()\r\n }\r\n },\r\n props: ['burgerrotate'],\r\n watch: {\r\n '$route' (to, from) {\r\n this.showSide = true\r\n this.stateName = to.name\r\n this.currentRole = window.authDetails ? window.authDetails.role : ''\r\n this.getLocations()\r\n if (from.name == 'addpersonnel' && this.stateName != 'addpersonnel') {\r\n if (this.chosenLocation.LocationName == 'All') {\r\n this.locations.splice(this.locations.length - 1)\r\n this.chosenLocation = this.locations[0]\r\n }\r\n }\r\n if (this.stateName != 'login') {\r\n //FG - FOOF -aaaaaa FIX FOR NON AQUATICS DIRECTORS - GET POOLS IF THE ARRAY IS EMPTY - BELOW\r\n \r\n if(this.pools == null || this.pools.length==0) { \r\n this.pools = window.poolsAtLogin;\r\n if( this.pools.length > 0)\r\n this.chosenPool=this.pools[0];\r\n }\r\n var initialPool = localStorage.getItem('initpool');\r\n if(initialPool == undefined || initialPool == null)\r\n localStorage.setItem('initialPool', this.chosenPool); \r\n //\r\n\r\n\r\n if (localStorage.getItem('initlocation')) {\r\n var x = localStorage.getItem('initlocation')\r\n this.$router.app.$emit('emittedlocation_obj', JSON.parse(x))\r\n this.$router.app.$emit('emittedpool_obj', this.pools[0]) \r\n }\r\n \r\n }\r\n },\r\n chosenLocation: function (val) {//alert (\"INSIDE VALUE: \" + JSON.stringify(val))\r\n localStorage.setItem('initlocation', JSON.stringify(this.chosenLocation))\r\n this.pools = []\r\n this.getpools(val.LocationId) //aaaaaa - This makes sure there are pools for the pull in \r\n var val1 = val.LocationId ? val.LocationId : 0\r\n //FG - FOOF - March 5 2019\r\n this.chosenLocation.PoolId = this.chosenPool;\r\n this.chosenLocation.PoolName = this.poolName;\r\n let x = this.chosenLocation ? this.chosenLocation : 0\r\n this.$router.app.$emit('emittedlocation_obj', x)\r\n window.globallocid = val1\r\n },\r\n chosenPool: function (val) {//alert(\"INSIDE chosenPool: \" + val)\r\n localStorage.setItem('initpool', JSON.stringify(this.chosenPool))\r\n this.$router.app.$emit('emittedpool_obj', val)\r\n }\r\n },\r\n methods: {\r\n hideSidebar() {\r\n this.sidebarToggle = !this.sidebarToggle\r\n },\r\n getLocations() {\r\n let context = this\r\n //FG - FOOF - Change for certification -Facility/Venue Pull In Fix\r\n // Prior to the Change for certification I had changed the if statement below to always be true\r\n // because after initially signing on (and initially means first time ever) the pull in for\r\n // facility and venue did not contain chosenLocations at all. The comments I made at that time\r\n // appear below:\r\n // 20200806-FG-0001 & 20200811-FG-0001 - WHILE GOING THRU THE MAHC CONFIRMATION PROCESS I MODIFIED THE\r\n // CONDITION BELOW SO IT IS ALWAYS TRUE\r\n // THIS CODE NEEDS TO BE REWORKED AFTER / DURING CONFIRMATION\r\n // Subsequently (in Dec of 2020) while adding code requested by Dewey for our certification I realized\r\n // that the intent of the code below was that sometimes it makes no sense to have a location without\r\n // a pool to be the chosen location.\r\n // Turns out that its OK to have a choice of locations without pools for PersonnelDahsboard\r\n // and dashboard. They are the two landing pages for initial signon.\r\n //\r\n if (this.stateName == 'checklistlanding' \r\n || this.stateName == 'chemicalrecord' \r\n || this.stateName == 'activitylist' \r\n //|| this.stateName == 'PersonnelDashboard' \r\n || this.stateName == 'chemicalsettings' \r\n || this.stateName == 'incidents' \r\n //|| this.stateName == 'dashboard'\r\n ) {\r\n service.GetLocationsPools().then(function (response) {\r\n context.locations = response\r\n var lex = false\r\n //var yl = localStorage.getItem('initlocation') -- PRIOR TO 20200806-FG-0001\r\n //var xy = JSON.parse(yl) -- PRIOR TO 20200806-FG-0001\r\n\r\n //20200806-FG-0001 - below\r\n xy = null;\r\n var yl = localStorage.getItem('initlocation')\r\n if(yl==\"undefined\" || yl==null || yl == \"[object Object]\"){\r\n if(response != null && response.length > 0){\r\n yl=response[0];\r\n //localStorage.setItem('initlocation',yl); //FG - FOOF - FIX FOR NON AQUATICS DIRECTORS - aaaaaa\r\n localStorage.setItem('initlocation',JSON.stringify(yl));\r\n }\r\n else {\r\n yl = null;\r\n }\r\n xy = yl;\r\n }\r\n else {\r\n var xy = JSON.parse(yl);\r\n }\r\n if(xy)\r\n context.getpools(xy.LocationId);\r\n //20200806-FG-0001 - above\r\n\r\n if (xy) {\r\n /*****************************************************************\r\n //FG - 11-7-2018 - It seems that the object should be set as the\r\n //context chosenLocation regardless of whether or not the current role\r\n //is 'AquaticsDirector'... \r\n //ALSO... shouldn't this really be checking\r\n //on a code chosenLocation rather than the text if it is used ?????\r\n //if (context.currentRole == 'AquaticsDirector') {\r\n *****************************************************************/\r\n if (context.stateName != 'addpersonnel' && context.stateName != 'PersonnelDashboard') {\r\n response.map(function (item, index) {\r\n if (item.LocationId == xy.LocationId) {\r\n lex = true\r\n context.chosenLocation = response[index]\r\n }\r\n })\r\n if (lex) {\r\n context.$router.app.$emit('emittedlocation_obj', xy)\r\n //alert(\"4: \" + xy.LocationName)\r\n } else {\r\n context.$router.app.$emit('emittedlocation_obj', response[0])\r\n //alert(\"5: \" + response[0].LocationName)\r\n context.chosenLocation = response[0]\r\n }\r\n } else {\r\n //FG - FOOF - After Cert - First Release (4) - Although I could not find anyplace in the system \r\n // than made the code below put \"All\" in the pull in I removed commented it out\r\n // for the first release anyway anyway just in case\r\n /*\r\n response.push({\r\n LocationName: 'aaaAll',\r\n LocationId: ''\r\n })\r\n */\r\n }\r\n //}\r\n /***************************************************************\r\n //FG - 11-7-2018 - It seems that the object should be set as the\r\n //context chosenLocation regardless of whether or not the current role\r\n //is 'AquaticsDirector'... \r\n //ALSO... shouldn't this really be checking\r\n //on a code chosenLocation rather than the text if it is used ?????\r\n //COMMENTED OUT THE LINES BELOW BECAUSE OF THE COMMENT ABOVE\r\n *****************************************************************/\r\n //if (context.currentRole != 'AquaticsDirector') {\r\n // context.chosenLocation = context.locations[0].LocationId\r\n //}\r\n\r\n if (context.locations.length == 1) {\r\n context.locationname = context.locations[0].LocationName\r\n }\r\n\r\n } else {\r\n /*****************************************************************\r\n //FG - 11-7-2018 - It seems that the object should be set as the\r\n //context chosenLocation regardless of whether or not the current role\r\n //is 'AquaticsDirector'... \r\n //ALSO... shouldn't this really be checking\r\n //on a code chosenLocation rather than the text if it is used ?????\r\n //if (context.currentRole == 'AquaticsDirector') {\r\n *****************************************************************/\r\n if (context.stateName != 'addpersonnel') {\r\n context.chosenLocation = response[0]\r\n } else {\r\n //FG - FOOF - After Cert - First Release (4) - Although I could not find anyplace in the system \r\n // than made the code below put \"All\" in the pull in I removed commented it out\r\n // for the first release anyway anyway just in case\r\n /*\r\n response.push({\r\n LocationName: 'bbbAll',\r\n LocationId: ''\r\n })\r\n */\r\n context.chosenLocation = response[response.length - 1]\r\n }\r\n //}\r\n /***************************************************************\r\n //FG - 11-7-2018 - It seems that the object should be set as the\r\n //context chosenLocation regardless of whether or not the current role\r\n //is 'AquaticsDirector'... \r\n //ALSO... shouldn't this really be checking\r\n //on a code chosenLocation rather than the text if it is used ?????\r\n //COMMENTED OUT THE LINES BELOW BECAUSE OF THE COMMENT ABOVE\r\n //if (context.currentRole != 'AquaticsDirector') {\r\n // context.chosenLocation = context.locations[0].LocationId\r\n //}\r\n *****************************************************************/\r\n if (context.locations.length == 1) {\r\n context.locationname = context.locations[0].LocationName\r\n }\r\n }\r\n\r\n }, (error) => {\r\n\r\n })\r\n\r\n } else {\r\n service.GetLocations().then(function (response) {\r\n\r\n context.locations = response\r\n var lex = false\r\n\r\n //I end up here after first login and when that happens localStorage.getItem('initlocation')\r\n //is null.... SO that needs to grab the chosenLocation from the first location in response\r\n //-- ORIG HAD THIS---->var yl = localStorage.getItem('initlocation')\r\n //-- ORIG HAD THIS ---->var xy = JSON.parse(yl)\r\n //TRY THIS FIX-BELOW\r\n var xy = null;\r\n var yl = localStorage.getItem('initlocation')\r\n if(yl==\"undefined\" || yl==null){\r\n if(response != null && response.length > 0){\r\n yl=response[0];\r\n //localStorage.setItem('initlocation',yl); //FG - FOOF - FIX FOR NON AQUATICS DIRCTORS - aaaaaa\r\n localStorage.setItem('initlocation',JSON.stringify(yl));\r\n }\r\n else\r\n yl = null;\r\n xy = yl;\r\n }\r\n else\r\n var xy = JSON.parse(yl);\r\n //TRY THIS FIX-ABOVE\r\n\r\n\r\n if (xy) {\r\n if (context.currentRole == 'AquaticsDirector') {\r\n if (context.stateName != 'addpersonnel' && context.stateName != 'PersonnelDashboard') {\r\n response.map(function (item, index) {\r\n if (item.LocationId == xy.LocationId) {\r\n lex = true\r\n context.chosenLocation = response[index]\r\n }\r\n\r\n })\r\n if (lex) {\r\n context.$router.app.$emit('emittedlocation_obj', xy)\r\n //alert(\"6: \" + xy.LocationName)\r\n } else {\r\n context.$router.app.$emit('emittedlocation_obj', response[0])\r\n //alert(\"7: \" + JSON.parse(x).response[0])\r\n context.chosenLocation = response[0]\r\n }\r\n } else {\r\n //FG - FOOF - After Cert - First Release (4) - \r\n // ****THIS IS THE ONLY PLACE I COULD FIND THAT ********\r\n // ACTUALLY PUT \"All\" on the pull in. It is there for the Personell/Profile page\r\n // I am removing it for the first release because it causes problems on other pages\r\n // (i.e. the checklist page and others) when there are 2 facilities but only one of\r\n // them has at least one venue.\r\n /*\r\n response.push({\r\n LocationName: 'cccAll', \r\n LocationId: ''\r\n })\r\n */\r\n if (xy.LocationName == 'All' || xy.LocationName == '') {\r\n context.chosenLocation = response[response.length - 1]\r\n } else {\r\n response.map(function (item, index) {\r\n if (item.LocationId == xy.LocationId) {\r\n lex = true\r\n context.chosenLocation = response[index]\r\n }\r\n })\r\n if (lex) {\r\n context.$router.app.$emit('emittedlocation_obj', xy)\r\n //alert(\"8: \" + xy.LocationName)\r\n } else {\r\n context.$router.app.$emit('emittedlocation_obj', response[0])\r\n //alert(\"9: \" + response[0].LocationName)\r\n context.chosenLocation = response[0]\r\n }\r\n }\r\n }\r\n }\r\n if (context.locations.length == 1) {\r\n context.locationname = context.locations[0].LocationName\r\n }\r\n\r\n } else {\r\n if (context.currentRole == 'AquaticsDirector') {\r\n if (context.stateName != 'addpersonnel') {\r\n context.chosenLocation = response[0] \r\n \r\n } else {\r\n //FG - FOOF - After Cert - First Release (4) - Although I could not find anyplace in the system \r\n // than made the code below put \"All\" in the pull in I removed commented it out\r\n // for the first release anyway anyway just in case\r\n /*\r\n response.push({\r\n LocationName: 'dddAll',\r\n LocationId: ''\r\n })\r\n */\r\n context.chosenLocation = response[response.length - 1]\r\n }\r\n }\r\n //FG - ???? I DID NOT GET RID OF THE LINES BELOW WHEN I MODIFIED\r\n //THIS CODE ON NOV 7 and 8 of 2018.... IF THERE IS A PROBLEM WITH\r\n //THE LOC ID BEING EMPTY (resulting in a pull in error... the one\r\n //I WAS SEEING WAS CHECKLIST 2 - error while submit) THEN THE CODE\r\n //BELOW IS THE LIKELY CULPRIT.\r\n if (context.currentRole != 'AquaticsDirector') {\r\n context.chosenLocation = context.locations[0].LocationId\r\n }\r\n\r\n if (context.locations.length == 1) {\r\n context.locationname = context.locations[0].LocationName\r\n }\r\n\r\n }\r\n\r\n }, (error) => {\r\n\r\n })\r\n\r\n }\r\n\r\n },\r\n getpools(locationid) {\r\n let context = this\r\n\r\n\r\n service.GetPools(locationid).then(function (response) {\r\n\r\n\r\n if (response) {\r\n var lex = false\r\n var yl = localStorage.getItem('initpool')\r\n var xy = JSON.parse(yl)\r\n context.pooldisabled = false\r\n context.pools = response\r\n\r\n response.map(function (item, index) {\r\n\r\n if (item.PoolId == xy.PoolId) {\r\n lex = true\r\n context.chosenPool = response[index]\r\n }\r\n\r\n })\r\n\r\n if (lex) {\r\n context.$router.app.$emit('emittedpool_obj', xy)\r\n } else {\r\n context.chosenPool = response[0]\r\n }\r\n\r\n } else {\r\n context.pooldisabled = true\r\n }\r\n\r\n }, (error) => {\r\n\r\n })\r\n },\r\n }\r\n\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Location-Pool-Selector/Location-Pool-Selector.js","// api service calls should be written here (Service ajax calls are managed using Using Axios Library)\nexport const GetLocations = () => {\n\n return $.get('Location/GetLocations')\n\n}\nexport const GetPools = (locationid) => {\n if (!locationid) locationid = 0\n return $.get('Pool/GetPools?locationId=' + locationid)\n\n}\n\nexport const GetLocationsPools = () => {\n let needpool=true;\n return $.get('Location/GetLocations?havingPools='+needpool)\n\n}\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Location-Pool-Selector/Location-Pool-Selector.services.js","import * as service from './ManagePersonnelCertifications.Services'\nexport default {\n data() {\n var context = this\n return {\n pickerOptions: {\n disabledDate(date) {\n\n if (context.$moment(date).isAfter(new Date())) {\n return true\n }\n }\n\n },\n\n\n Certificationcolumns1: ['CertificationName', 'CertNumber', 'IssuedBy', 'CertificationExpiry', 'AttachedFiles', 'Actions'],\n labelposition: 'right',\n attachmentcolor: 'gray',\n\n optionstable: {\n\n headings: {\n Attachments: 'Attachments',\n IssuedBy: 'Issued By',\n CertNumber: 'Number',\n CertificationExpiry: 'Expiration Date',\n CertificationName: 'Certificate Name',\n AttachedFiles: 'Attached Files',\n Actions: ''\n\n },\n dateColumns: ['CertificationExpiry'],\n\n sortIcon: {\n base: 'glyphicon',\n up: 'glyphicon-chevron-up',\n down: 'glyphicon-chevron-down'\n },\n sortable: ['CertificationDate', 'CertificationExpiry', 'CertificationName'],\n orderBy: {\n column: 'CertificationExpiry',\n ascending: true\n },\n texts: {\n\n filterPlaceholder: 'Search...',\n limit: 'rows per page:',\n noResults: 'No matching records',\n\n }\n\n },\n Certifications: [],\n CertificationTypes: [],\n isselfeditable: false,\n\n otherCertificate: true,\n Attachments: [],\n sampleatt: [],\n certiBackup: [],\n modalTitle: '',\n personnelID: '',\n role: '',\n // image_arr:[],\n AddCertificateForm: {\n Id: '',\n CertificationName: '',\n CertificationDate: '',\n CertificationExpiry: '',\n OtherName: '',\n AttachedFiles: [],\n Instructor: '',\n CertNumber: ''\n\n },\n image_data: [],\n test_att: [],\n IsCertificateTypeEdit: '',\n attachedfiles: [],\n certificateList: [],\n baseUrl: ''\n }\n },\n mounted() {\n let context = this\n\n this.personnelID = this.$route.params.id\n\n if (this.personnelID) {\n\n this.GetPersonnelCertifications(this.personnelID)\n }\n\n this.certiBackup = deepcopy(this.AddCertificateForm)\n\n this.role = JSON.parse(localStorage.getItem('authentication')).role\n\n let pid = this.$route.params.id ? this.$route.params.id : ''\n if (JSON.parse(localStorage.getItem('authentication')).PersonnelId == pid) {\n this.isselfeditable = true\n } else {\n this.isselfeditable = false\n }\n\n if (this.role == 'AquaticsDirector' || this.role == 'PoolManager' || this.role == 'AsstPoolManager' || this.role == 'ToolAdmin' || this.isselfeditable) {\n\n this.GetCertificationTypes()\n this.Certificationcolumns = ['CertificationName', 'CertificationDate', 'CertificationExpiry', 'AttachedFiles', 'Actions']\n } else {\n this.Certificationcolumns = ['CertificationName', 'CertificationDate', 'CertificationExpiry']\n }\n\n },\n props: ['data', 'editShow'],\n methods: {\n\n downloadList(cert) {\n this.certificateList = cert.AttachedFiles\n let context = this\n this.certificateList.map(function (el) {\n context.baseUrl = baseUrl + 'Documents/CertificationDocuments/' + el['DocumentPath']\n\n })\n\n $('#certificateModel').modal('show')\n\n },\n\n showcertificate() {\n this.IsCertificateTypeEdit = false\n let context = this\n this.image_data = []\n this.image_data = new FormData()\n this.modalTitle = 'Add Certificate'\n $('#AddCertificatemodel').modal('show')\n context.Attachments = []\n\n setTimeout(function () {\n\n context.$refs['AddCertificateForm'].resetFields()\n }, 10)\n this.AddCertificateForm = deepcopy(this.certiBackup)\n },\n backProfile() {\n this.$router.push('/addpersonnel')\n\n },\n\n cEdit() {\n\n if (this.data['isEdit'] == true) {\n this.data['isEdit'] = false\n } else if (this.data['isEdit'] == false) {\n this.data['isEdit'] = true\n }\n\n },\n\n GetCertificationTypes() {\n let context = this\n loader.startLoader()\n service.GetCertificationTypes().then(function (response) {\n\n context.CertificationTypes = response\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n },\n\n del: function (data) {\n\n var ID = data.row.Id\n\n let context = this\n context.$confirm('Are you sure you want to delete?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n\n loader.startLoader()\n service.DeletePersonnelCertification(ID).then(function (response) {\n\n if (context.personnelID) {\n context.GetPersonnelCertifications(context.personnelID)\n }\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Deleted Successfully',\n type: 'success'\n })\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n }).catch(() => {\n /* context.$message({\n type: 'info',\n message: 'Delete canceled'\n })*/\n })\n\n },\n\n cancelpopup: function () {\n this.IsCertificateTypeEdit = false\n\n $('#AddCertificatemodel').modal('hide')\n\n },\n\n EditCertificateType: function (data) {\n let context = this\n\n loader.startLoader()\n\n var image_arr = {}\n\n image_arr['PersonnelId'] = context.personnelID\n image_arr['Id'] = context.AddCertificateForm.Id\n\n if (this.AddCertificateForm.AttachedFiles.length > 0) {\n\n for (let i = 0; i < this.AddCertificateForm.AttachedFiles.length; i++) {\n this.attachedfiles.push(this.AddCertificateForm.AttachedFiles[i].DocumentPath)\n }\n\n }\n\n image_arr['ChangedAttachFiles'] = context.attachedfiles.toString()\n if (context.AddCertificateForm.OtherName && context.AddCertificateForm.OtherName != \"[object Object]\") {\n image_arr['CertificationName'] = context.AddCertificateForm.OtherName\n } else {\n image_arr['CertificationName'] = context.AddCertificateForm.CertificationName.Name\n }\n\n if (context.AddCertificateForm.CertNumber) {\n image_arr['CertNumber'] = context.AddCertificateForm.CertNumber\n } else {\n image_arr['CertNumber'] = ''\n }\n\n if (context.AddCertificateForm.Instructor) {\n image_arr['Instructor'] = context.AddCertificateForm.Instructor\n } else {\n image_arr['Instructor'] = ''\n }\n\n if (context.AddCertificateForm.CertificationDate) {\n image_arr['CertificationDate'] = this.$moment(context.AddCertificateForm.CertificationDate).format('MM-DD-YYYY')\n } else {\n image_arr['CertificationDate'] = ''\n }\n\n if (context.AddCertificateForm.CertificationExpiry) {\n\n image_arr['CertificationExpiry'] = this.$moment(context.AddCertificateForm.CertificationExpiry).format('MM-DD-YYYY')\n } else {\n image_arr['CertificationExpiry'] = ''\n }\n\n for (var key in image_arr) {\n\n this.image_data.append(key, image_arr[key])\n }\n\n\n service.UpdateCertificationType(this.image_data).then(function (response) {\n context.IsCertificateTypeEdit = false\n $('#AddCertificatemodel').modal('hide')\n context.CertificateTypeEditID = 0\n\n context.$notify({\n title: 'Success',\n message: 'Updation Successfull',\n type: 'success'\n })\n if (context.personnelID) {\n context.GetPersonnelCertifications(context.personnelID)\n }\n /* for (var i = 0; i < context.CertificationTypes.length; i++) {\n if (context.CertificationTypes[i].Id == ID) {h\n\n context.CertificationTypes[i].Name = data.Name\n\n context.CertificationTypes[i].Description = data.Description\n break\n }\n }*/\n\n loader.stopLoader()\n\n }, (error) => {\n\n var alr;\n var err = error.responseText\n if (err.match(/Certification already expired/g)) {\n alr = \"Certification already expired\"\n }\n\n if (err.match(/Certification already exists/g)) {\n alr = \"Certification already exists\"\n }\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: alr,\n\n type: 'error'\n\n })\n })\n\n },\n\n editcol: function (data) {\n $('#AddCertificatemodel').modal('show')\n this.AddCertificateForm = deepcopy(data.row)\n\n\n this.Attachments = []\n this.attachedfiles = []\n this.image_data = []\n this.image_data = new FormData()\n\n\n var isOther = false\n for (var i = 0; i < this.CertificationTypes.length; i++) {\n\n if (this.CertificationTypes[i].Name == data.row.CertificationName && this.CertificationTypes[i].Name != 'Other') {\n isOther = true\n break\n }\n\n }\n\n if (!isOther) {\n this.otherCertificate = false\n this.AddCertificateForm.CertificationName = 'Other'\n this.AddCertificateForm.OtherName = data.row.CertificationName\n }\n if (this.AddCertificateForm.CertificationExpiry) {\n\n\n ;\n var t = this.$moment(this.AddCertificateForm.CertificationExpiry, 'MM-DD-YYYY')\n\n this.AddCertificateForm.CertificationExpiry = t\n\n }\n\n if (this.AddCertificateForm.CertificationDate) {\n\n var y = this.$moment(this.AddCertificateForm.CertificationDate, 'MM-DD-YYYY')\n\n this.AddCertificateForm.CertificationDate = y\n } else {\n\n var y = this.$moment(this.AddCertificateForm.CertificationDate, 'MM-DD-YYYY')\n\n this.AddCertificateForm.CertificationExpiry = y\n }\n\n let context = this\n this.CertificationTypes.map(function (item) {\n if (item.Name == context.AddCertificateForm.CertificationName) {\n context.AddCertificateForm.CertificationName = item\n }\n\n })\n\n\n this.IsCertificateTypeEdit = true\n this.modalTitle = 'Edit Certificate'\n\n\n },\n changeissue() {\n let context = this\n\n\n if (this.AddCertificateForm.CertificationExpiry && context.AddCertificateForm.CertificationName.ExpiryPeriod) {\n if (this.AddCertificateForm.CertificationExpiry != this.AddCertificateForm.CertificationDate) {\n var p = new Date(context.AddCertificateForm.CertificationDate)\n\n context.AddCertificateForm.CertificationExpiry = context.$moment(p).add(context.AddCertificateForm.CertificationName.ExpiryPeriod, 'days')\n\n\n }\n }\n\n\n },\n changecertitype() {\n\n if (this.AddCertificateForm.CertificationName.Name == 'Other') {\n this.otherCertificate = false\n } else {\n this.otherCertificate = true\n\n }\n\n if (this.AddCertificateForm.CertificationName.ExpiryPeriod) {\n this.AddCertificateForm.CertificationDate = this.$moment()\n var edate = this.$moment().add(this.AddCertificateForm.CertificationName.ExpiryPeriod, 'days')\n\n this.AddCertificateForm.CertificationExpiry = edate\n }\n\n },\n\n removeattachedtag(tag) {\n\n let context = this\n let ps = []\n for (var i = 0; i < this.Attachments.length; i++) {\n\n if (this.Attachments[i].id == tag.id) {\n\n this.image_data.delete('Attachments[' + i + ']')\n\n for (var j = 0; j < this.Attachments.length; j++) {\n var files = this.image_data.getAll('Attachments[' + j + ']')\n if (files.length > 0) {\n\n $.each(files, function (h, v) {\n ps.push(v)\n })\n }\n\n }\n\n this.Attachments.splice(i, 1)\n break\n }\n\n }\n\n if (ps.length > 0) {\n this.image_data = []\n this.image_data = new FormData()\n\n for (var k = 0; k < ps.length; k++) {\n this.image_data.append('Attachments[' + k + ']', ps[k])\n }\n }\n\n },\n removeeditattachmnets(tag) {\n\n for (var i = 0; i < this.AddCertificateForm.AttachedFiles.length; i++) {\n\n if (this.AddCertificateForm.AttachedFiles[i].DocumentPath == tag.DocumentPath) {\n\n this.AddCertificateForm.AttachedFiles.splice(i, 1)\n // this.attachedfiles.push(tag.DocumentPath)\n\n //this.image_data.append('AttachedFiles[' + i + ']', rf)\n break\n }\n }\n\n },\n\n GetPersonnelCertifications(perosonnelID) {\n let context = this\n loader.startLoader()\n service.GetPersonnelCertifications(perosonnelID).then(function (response) {\n\n context.Certifications = response ? response : []\n if (response) {\n for (var i = 0; i < response.length; i++) {\n\n if (context.Certifications[i].CertificationDate) {\n context.Certifications[i].CertificationDate = context.$options.filters.fdate(context.Certifications[i].CertificationDate)\n }\n if (context.Certifications[i].CertificationExpiry) {\n context.Certifications[i].CertificationExpiry = new Date(context.Certifications[i].CertificationExpiry)\n } else {\n context.Certifications[i].CertificationExpiry = ''\n }\n }\n\n tooltip.startTooltip(50)\n\n }\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n },\n\n setAttachment(e) {\n\n let context = this\n\n function getExtension(filename) {\n var parts = filename.split('.')\n return parts[parts.length - 1]\n }\n\n for (var i = 0; i < e.target.files.length; i++) {\n\n var name = e.target.files[i].name\n var type = e.target.files[i].type\n var size = e.target.files[i].size\n\n if (type != 'image/jpeg' && type != 'image/jpg' && type != 'image/png' && getExtension(name) != 'docx' && getExtension(name) != 'doc' && getExtension(name) != 'txt' && getExtension(name) != 'pdf') {\n alert('Invalid file format')\n return\n }\n if (size > 5000000) {\n alert('You have exceeded the maximum image size of 5 MB')\n return\n }\n\n var id = i\n\n this.image_data.append('Attachments[' + i + ']', e.target.files[i])\n\n //this.test_att.push(e.target.files[i])\n //this.image_data.append(\"Attachments\", e.target.files[i]);\n\n // if (!file.type.includes('image/jpeg') && !file.type.includes('image/jpg') && !file.type.includes('image/png')) {\n // alert('Please select an image file')\n // return\n // }\n // if (file.size > 200000) {\n // alert('You have exceeded the maximum image size of 200 Kb')\n // return\n // }\n\n this.Attachments.push({\n FileName: name,\n MediaType: type,\n id: id,\n\n })\n\n }\n\n },\n\n submitForm(formName) {\n\n let context = this\n\n this.$refs[formName].validate((valid) => {\n\n if (valid) {\n\n let context = this\n loader.startLoader()\n\n var image_arr = {}\n\n image_arr['PersonnelId'] = context.personnelID\n if (context.AddCertificateForm.OtherName) {\n image_arr['CertificationName'] = context.AddCertificateForm.OtherName\n } else {\n image_arr['CertificationName'] = context.AddCertificateForm.CertificationName.Name\n }\n\n if (context.AddCertificateForm.CertNumber) {\n image_arr['CertNumber'] = context.AddCertificateForm.CertNumber\n } else {\n image_arr['CertNumber'] = ''\n }\n\n if (context.AddCertificateForm.Instructor) {\n image_arr['Instructor'] = context.AddCertificateForm.Instructor\n } else {\n image_arr['Instructor'] = ''\n }\n\n\n\n\n if (context.AddCertificateForm.CertificationDate) {\n image_arr['CertificationDate'] = this.$moment(context.AddCertificateForm.CertificationDate).format('MM-DD-YYYY')\n } else {\n image_arr['CertificationDate'] = ''\n }\n\n if (context.AddCertificateForm.CertificationExpiry) {\n image_arr['CertificationExpiry'] = this.$moment(context.AddCertificateForm.CertificationExpiry).format('MM-DD-YYYY')\n } else {\n image_arr['CertificationExpiry'] = ''\n }\n\n\n for (var key in image_arr) {\n\n this.image_data.append(key, image_arr[key])\n }\n\n service.AddPersonnelCertification(this.image_data).then(function (response) {\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Succesfully added Certificate',\n type: 'success'\n })\n $('#AddCertificatemodel').modal('hide')\n if (context.personnelID) {\n context.GetPersonnelCertifications(context.personnelID)\n }\n\n // alert(response)\n\n }, (error) => {\n context.image_data = new FormData()\n context.$notify({\n\n title: 'Error',\n\n message: error,\n\n type: 'error'\n\n })\n loader.stopLoader()\n\n\n var alr;\n var err = error.responseText\n if (err.match(/Certification already expired/g)) {\n alr = \"Certification already expired\"\n }\n\n if (err.match(/Certification already exists/g)) {\n alr = \"Certification already exists\"\n }\n\n\n this.$notify({\n\n title: 'Error',\n\n message: alr,\n\n type: 'error'\n\n })\n })\n\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'PERSONNEL - error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n resetForm(formName) {\n this.$refs[formName].resetFields()\n },\n\n },\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/ManagePersonnelCertifications/ManagePersonnelCertifications.Controller.js","//certifications\nexport const GetPersonnelCertifications = (personnelID) => {\n\n return $.get('Personnel/GetPersonnelCertifications?PersonnelId=' + personnelID)\n\n}\n\nexport const AddPersonnelCertification = (model) => {\n// return $.post('Personnel/AddPersonnelCertification',model)\n return $.ajax({\n url: 'Personnel/AddPersonnelCertification',\n data: model,\n processData: false,\n contentType: false,\n\n cache: false,\n type: 'POST'\n })\n\n}\n\nexport const DeletePersonnelCertification = (PersonnelCertificationId) => {\n\n return $.post('Personnel/DeletePersonnelCertification?PersonnelCertificationId=' + PersonnelCertificationId)\n\n}\n\nexport const UpdateCertificationType = (model) => {\n return $.ajax({\n url: 'Personnel/UpdatePersonnelCertification',\n data: model,\n processData: false,\n contentType: false,\n\n cache: false,\n type: 'POST'\n })\n // return $.post('Personnel/UpdateCertificationType',model)\n\n}\n\nexport const GetCertificationTypes = () => {\n\n return $.get('Personnel/GetCertificationTypes?activestatus='+true)\n\n}\n\n\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/ManagePersonnelCertifications/ManagePersonnelCertifications.Services.js","import * as service from './medicals.services'\nexport default {\n data() {\n return {\n\n currentuseremail: '',\n personaldetails: [],\n iseditable: true,\n // imgSrc: '',\n // suitsize: [],\n fileImg: '',\n personalForm: {\n\n\n MedicalCondition: '',\n MedicalNotes: '',\n Allergies: '',\n SpecialInstructions: '',\n\n },\n responseModel: {\n PersonnelId: '',\n MedicalCondition: '',\n Allergies: '',\n MedicalNotes: '',\n SpecialInstructions: ''\n }\n\n }\n },\n\n props: ['data', 'editShow'],\n watch: {\n\n data: function () {\n /* alert(JSON.stringify(this.data))*/\n this.responseModel = {\n PersonnelId: this.data.response.PersonnelId,\n\n MedicalCondition: this.data.response.MedicalCondition,\n Allergies: this.data.response.Allergies,\n MedicalNotes: this.data.response.MedicalNotes,\n SpecialInstructions: this.data.response.SpecialInstructions\n }\n\n this.contBackup = deepcopy(this.responseModel)\n\n this.personalForm = this.contBackup\n\n\n\n\n }\n\n },\n\n mounted() {\n\n\n },\n\n methods: {\n modalCancel() {\n\n if ($('#PostsignupModel').length > 0) {\n $('#PostsignupModel').modal('hide')\n } else {\n\n this.personalForm = deepcopy(this.responseModel)\n\n this.data['isEdit'] = false\n\n }\n\n },\n backProfile() {\n this.$router.push('/addpersonnel')\n\n },\n\n cEdit() {\n debugger\n if (this.data[\"isEdit\"] == true) {\n this.data[\"isEdit\"] = false\n } else if (this.data[\"isEdit\"] == false) {\n this.data[\"isEdit\"] = true\n }\n\n },\n save(formName) {\n let context = this\n debugger\n\n var formdata = {\n PersonnelId: this.data.response.PersonnelId,\n MedicalCondition: context.personalForm.MedicalCondition,\n Allergies: context.personalForm.Allergies,\n MedicalNotes: context.personalForm.MedicalNotes,\n SpecialInstructions: context.personalForm.SpecialInstructions,\n\n }\n\n this.$refs[formName].validate((valid) => {\n if (valid) {\n // var form_data = new FormData();\n\n\n\n loader.startLoader()\n\n service.UpdateMedicalConditions(formdata).then(function (response) {\n\n //context.$localStorage.set('authentication', JSON.stringify(authDetails))\n // context.personalForm = context.personalForm\n //FG - FOOF - AFTER CERT - First Release Security - seems the broadcast below is not needed\n // AND when it is in place causes problems\n //context.$router.app.$emit('updatedinfo')\n\n context.data['isEdit'] = true\n context.$notify({\n\n title: 'Success',\n\n message: 'Medical Condition Details Updated',\n\n type: 'success'\n\n })\n loader.stopLoader()\n\n }, (error) => {\n debugger\n context.data['isEdit'] = true\n context.personalForm = deepcopy(context.responseModel)\n context.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n loader.stopLoader()\n\n })\n\n }\n })\n\n }\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/MedicalConditions/medicals.controller.js","export const UpdateMedicalConditions = (model) => {\r\n\r\n return $.post('Personnel/UpdateMedicalConditions',model)\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/MedicalConditions/medicals.services.js","export default {\r\n\r\n data () {\r\n return {\r\n /*******************************************************************************************************\r\n * FG - FOOF - After Cert - First Release Security (7)\r\n * Variables below were put in place when security was added in Feb/March 2021\r\n * They are used by the functions in this file that decide what should / should not be displayed in the\r\n * menu.\r\n *******************************************************************************************************/\r\n DashboardChoiceDependsOn: ['incidents','chemicalrecord','activity'], \r\n ComplianceChoiceDependsOn: ['safetyplanmanagement','compliancedoc','MAHCchecklist','MAHCwebsite','MAHCsearch'],\r\n HealthAndSafetyChoiceDependsOn: ['chemicalrecord','maintenance','incidents'],\r\n AdministrationChoiceDependsOn: ['inventory','suppliers','stafftraining','activity'],\r\n //FG - FOOF - After Cert - First Release Security - custom readings controlled by \"managetemplates\"\r\n //SettingsChoiceDependsOn: ['security','managefacility','managevenue','facilityscheduling','positions','certificates','evaluations','managetemplates','managecustomreadings','managecustomtasks','managecustommaintenance'],\r\n SettingsChoiceDependsOn: ['security','managefacility','managevenue','facilityscheduling','positions','certificates','evaluations','managetemplates'],\r\n //FG - FOOF - After Cert - First Release Security - custom readings controlled by \"managetemplates\"\r\n //TemplatesChoiceDependsOn: ['managetemplates','managecustomreadings','managecustomtasks','managecustommaintenance'],\r\n TemplatesChoiceDependsOn: ['managetemplates'],\r\n /*******************************************************************************************************\r\n * FG - FOOF - After Cert - First Release Security (7)\r\n *******************************************************************************************************/\r\n\r\n stateName: '',\r\n currentRole: '',\r\n locations: [],\r\n value: '',\r\n currentUser:'',\r\n dropStyle: {\r\n display: 'none'\r\n },\r\n templateStyle :{\r\n background: '#344240'\r\n }\r\n }\r\n },\r\n mounted () {\r\n window.globallocid = ''\r\n\r\n this.stateName = this.$route.name\r\n this.currentRole = window.authDetails ? window.authDetails.role : ''\r\n this.currentUser = window.authDetails ? window.authDetails.userName : ''\r\n\r\n if (this.stateName != 'login' && this.stateName != 'resetpassword' && this.stateName != 'signup' && this.stateName != 'signupconfirm') {\r\n //this.getLocations()\r\n //this.getpools(0)\r\n }\r\n\r\n\r\n\r\n },\r\n watch: {\r\n '$route' (to, from) {\r\n this.stateName = to.name\r\n this.currentRole = window.authDetails ? window.authDetails.role : ''\r\n this.currentUser = window.authDetails ? window.authDetails.userName : ''\r\n },\r\n value: function (val) {\r\n\r\n this.pools = []\r\n this.poolid = ''\r\n this.getpools(val)\r\n this.$router.app.$emit('emittedlocation', JSON.stringify(val))\r\n window.globallocid = val\r\n\r\n }\r\n },\r\n methods: {\r\n /*******************************************************************************************************\r\n * FG - FOOF - After Cert - First Release Security (7)\r\n * Methods below were put in place when security was added in Feb/March 2021\r\n * They are used by the navigation_bar.vue file to decide what menu choices are/are not displayed\r\n *******************************************************************************************************/\r\n //\r\n //Dashboard\r\n displayDashboardChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A(this.DashboardChoiceDependsOn)},\r\n \r\n //Compliance\r\n displayComplianceChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A(this.ComplianceChoiceDependsOn)},\r\n displaySafetyPlanChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('safetyplanmanagement');},\r\n displayComplianceDocChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('compliancedoc');},\r\n displayMAHCChecklistChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('MAHCchecklist');},\r\n displayMAHCWebsiteChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('MAHCwebsite');},\r\n displayMAHCSearchChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('MAHCsearch');},\r\n\r\n //Risk Management\r\n displayRiskManagementChoice: function(){return this.$hydrowareSecurityJS.canDisplay_A('potentialhazard');},\r\n displayPotentialHazardChoice:function(){return this.$hydrowareSecurityJS.canDisplay_A('potentialhazard');},\r\n\r\n //Health & Safety\r\n displayHealthAndSafetyChoice:function() {return this.$hydrowareSecurityJS.canDisplay_A(this.HealthAndSafetyChoiceDependsOn)},\r\n displayReadingsAndTasks: function() {return this.$hydrowareSecurityJS.canDisplay_A('chemicalrecord');},\r\n displayMaintenance: function() {\r\n return this.$hydrowareSecurityJS.canDisplay_A('maintenance');\r\n },\r\n displayIncidents: function() {return this.$hydrowareSecurityJS.canDisplay_A('incidents');},\r\n\r\n //Personnel\r\n displayPersonnelChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('personnel');},\r\n displayProfileChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('personnel');},\r\n\r\n //Patrons\r\n // -- ALL OF THE CHOICES UNDER THIS CHOICE ARE UNDER CONSTRUCTION\r\n\r\n //Administration\r\n displayAdministrationChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A(this.AdministrationChoiceDependsOn)},\r\n displayInventoryChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('inventory');},\r\n displaySuppliersChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('suppliers');},\r\n displayStaffTrainingChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('stafftraining');},\r\n displayActivitiesChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('activity');},\r\n\r\n displaySettingsChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A(this.SettingsChoiceDependsOn);},\r\n displaySecurityChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('security');},\r\n displayManageFacilityChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('managefacility');},\r\n displayManageVenueChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('managevenue');},\r\n displayFacilitySchedulingChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('facilityscheduling');},\r\n displayPositionsChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('positions');},\r\n displayCertificatesChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('certificates');}, \r\n displayEvaluationsChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('evaluations');}, \r\n displayTemplatesChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A(this.TemplatesChoiceDependsOn);},\r\n displayManageTemplatesChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('managetemplates');}, \r\n //FG - FOOF - After Cert - First Release Security - custom settings are controlled by \"managetemplates\" for the first release\r\n //displayManageCustomReadingsChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('managecustomreadings');}, \r\n //displayManageCustomTasksChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('managecustomtasks');}, \r\n //displayManageCustomMaintenanceChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('managecustommaintenance');}, \r\n displayManageCustomReadingsChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('managetemplates');}, \r\n displayManageCustomTasksChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('managetemplates');}, \r\n displayManageCustomMaintenanceChoice: function() {return this.$hydrowareSecurityJS.canDisplay_A('managetemplates');}, \r\n /*******************************************************************************************************\r\n * FG - FOOF - After Cert - First Release Security (7) - Above\r\n (*******************************************************************************************************/\r\n\r\n templateDropdown : function(e){\r\n e.stopPropagation();\r\n e.preventDefault();\r\n if(this.dropStyle.display == 'none'){\r\n this.dropStyle.display = 'block';\r\n this.templateStyle.background ='#797979';\r\n } \r\n else{\r\n this.dropStyle.display = 'none';\r\n this.templateStyle.background = '#344240'; \r\n }\r\n },\r\n hideDropdown : function(){\r\n this.dropStyle.display = 'none';\r\n this.templateStyle.background = '#344240';\r\n }\r\n }\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/NavigationBar/navigation_bar.controller.js","export default {\n\n data () {\n return {\n stateName: '',\nsidebar:false\n }\n },\n mounted () {\n this.stateName = this.$route.name\nlet context =this\n this.$router.app.$on('notification_close',function(){\n context.toggleSidebar()\n\n })\n\n\n\n },\n watch: {\n '$route' (to, from) {\n this.stateName = to.name\n }\n },\n methods: {\n\n toggleSidebar()\n {\n this.sidebar = !this.sidebar\n }\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/NotificationSidebar/notification_sidebar.controller.js","import * as service from './Performance.service'\nexport default {\n data() {\n\n return {\n //FG - FOOF - temp vars below\n iamediting: false,\n iamadding: false,\n iamviewing: false,\n action: \"\", //FG - FOOF - After Cert - First Release Security (7) - added action variable\n\n //FG - FOOF - temp vars above\n\n Kudoscolumnsq: ['ActionDate', 'Type', 'WroteBy', 'Actions'],\n optionstable: {\n skin: this.$hydrowareCommonJS.hydrowareTableSkin,\n headings: {\n ActionDate: 'Date',\n Type: 'Type',\n WroteBy: 'Reported By',\n\n Actions: ''\n },\n labelPosition: 'top',\n isediting: false,\n EditableColID: '',\n role: '',\n\n sortIcon: {base: 'glyphicon', up: 'glyphicon-chevron-up', down: 'glyphicon-chevron-down'},\n perPage: 10,\n perPageValues: [5, 10, 25, 50, 100],\n sortable: ['ActionDate'],\n texts: {\n filterPlaceholder: 'Search...',\n limit: 'rows per page:',\n noResults: 'No matching records',\n }\n },\n performances: [],\n perfbackup: [],\n typeFilter: '',\n ptypes: [],\n role: '',\n disci: false,\n isediting: false,\n evalu: false,\n kudo: false,\n modalTitle: '',\n isself: false,//FG - FOOF - After Cert - First Release Security\n }\n },\n mounted() {\n let context = this\n this.personnelID = this.$route.params.id\n //FG - FOOF - After Cert - First Release Security - added line below\n this.isself = (this.personnelID == JSON.parse(localStorage.getItem('authentication')).PersonnelId) ? true : false\n\n this.role = JSON.parse(localStorage.getItem('authentication')).role\n this.ptypes = [{\n label: 'All',\n value: 0\n\n }, {\n label: 'Kudos',\n value: 1\n },\n {\n label: 'Evaluation',\n value: 2\n },\n {\n label: 'Discipline',\n value: 3\n }\n ]\n this.typeFilter = 0\n this.GetPerformance(this.personnelID)\n\n this.$router.app.$on('action_done', (data) => {\n $('#Addperfomodel').modal('hide')\n context.GetPerformance(this.personnelID)\n context.disci = false\n context.kudo = false\n context.evalu = false\n })\n\n },\n beforeDestroy () {\n\n this.$root.$off('action_done')\n\n },\n methods: {\n cancelpopup()\n {\n $('#Addperfomodel').modal('hide')\n },\n del(prop)\n {\n let data = prop.row\n let context = this\n if (data.Type == 'Kudos') {\n this.evalu = false\n this.disci = false\n this.kudo = true\n setTimeout(function () {\n context.$router.app.$emit('del_kudos', data.TypeId)\n })\n }\n if (data.Type == 'Discipline') {\n this.evalu = false\n this.disci = true\n this.kudo = false\n setTimeout(function () {\n context.$router.app.$emit('del_disci', data.TypeId)\n })\n }\n if (data.Type == 'Evaluation') {\n this.evalu = true\n this.disci = false\n this.kudo = false\n setTimeout(function () {\n context.$router.app.$emit('del_eval', data.TypeId)\n }, 100)\n }\n\n },\n\n editcol(prop,buttonType)\n {\n //FG - FOOF - After Cert - First Release Security (7) - added the conditional stmt below to set action\n var firstWordInTitle = \"View\"\n if(buttonType==\"view\") {\n this.action=\"V\"\n }\n else {\n this.action=\"E\" \n }\n \n let data = prop.row\n this.isediting = true\n\nthis.iamviewing=true;\nthis.iamediting=false;\nthis.iamadding=false;\n\n let context = this\n if (data.Type == 'Kudos') {\n this.modalTitle = firstWordInTitle + ' Kudos'\n this.evalu = false\n this.disci = false\n this.kudo = true\n $('#Addperfomodel').modal('show')\n setTimeout(function () {\n context.$router.app.$emit('kudos_obj', data.TypeId)\n }, 100)\n\n }\n\n if (data.Type == 'Discipline') {\n this.modalTitle = firstWordInTitle + ' Discipline'\n this.evalu = false\n this.disci = true\n this.kudo = false\n $('#Addperfomodel').modal('show')\n setTimeout(function () {\n context.$router.app.$emit('Discipline_obj', data.TypeId)\n }, 100)\n\n }\n if (data.Type == 'Evaluation') {\n this.modalTitle = firstWordInTitle + ' Evaluation'\n this.evalu = true\n this.disci = false\n this.kudo = false\n $('#Addperfomodel').modal('show')\n setTimeout(function () {\n context.$router.app.$emit('Evaluation_obj', data.TypeId)\n }, 100)\n\n }\n\n },\n\n ShowAddKudos()\n {\n let context = this\n this.action = \"A\";//FG - FOOF - After Cert - First Release Security (7) - set action to 'A' when adding\n context.iamviewing=true;\n this.modalTitle = 'Create Kudos'\n this.kudo = true\n this.evalu = false\n this.disci = false\n $('#Addperfomodel').modal('show')\n //this.isediting = false\n setTimeout(function () {\n context.$router.app.$emit('add_kudos')\n }, 100)\n },\n ShowAddEvaluation()\n {\n let context = this\n this.action = \"A\";//FG - FOOF - After Cert - First Release Security (7) - set action to 'A' when adding\n this.modalTitle = 'Create Evaluation'\n this.isediting = false\n this.evalu = true\n this.disci = false\n this.kudo = false\n $('#Addperfomodel').modal('show')\n setTimeout(function () {\n context.$router.app.$emit('add_eval')\n }, 100)\n },\n showDiscipline()\n {\n let context = this\n this.action = \"A\";//FG - FOOF - After Cert - First Release Security (7) - set action to 'A' when adding\n this.modalTitle = 'Create Discipline'\n this.isediting = false\n this.disci = true\n this.kudo = false\n this.evalu = false\n $('#Addperfomodel').modal('show')\n setTimeout(function () {\n context.$router.app.$emit('add_dis')\n }, 100)\n },\n submitForm()\n {\n if (this.kudo == true) {\n this.$router.app.$emit('submit_kudos', 'addKudos')\n }\n if (this.disci == true) {\n this.$router.app.$emit('submit_disci', 'DisciplineForm')\n }\n if (this.evalu == true) {\n this.$router.app.$emit('submit_eval', 'addEvaluation')\n }\n },\n updateForm()\n {\n if (this.kudo == true) {\n\n this.$router.app.$emit('update_kudos', 'addKudos')\n }\n if (this.disci == true) {\n this.$router.app.$emit('update_disci', 'DisciplineForm')\n }\n if (this.evalu == true) {\n this.$router.app.$emit('update_eval', 'addEvaluation')\n }\n\n },\n cFilter()\n {\n let context = this\n this.performances = this.perfbackup\n switch (this.typeFilter) {\n\n case 0 :\n this.performances = this.perfbackup\n break\n case 1:\n var pk = []\n this.performances.map(function (item, index) {\n if (item.Type == 'Kudos') {\n pk.push(item)\n }\n\n })\n this.performances = pk\n break\n\n case 2:\n\n var pe = []\n this.performances.map(function (item, index) {\n if (item.Type == 'Evaluation') {\n pe.push(item)\n }\n\n })\n\n this.performances = pe\n break\n\n case 3:\n var pd = []\n this.performances.map(function (item, index) {\n if (item.Type == 'Discipline') {\n pd.push(item)\n }\n\n })\n this.performances = pd\n break\n\n }\n\n },\n\n GetPerformance(PersonnelId) {\n let context = this\n loader.startLoader()\n service.GetPerformance(PersonnelId).then(function (response) {\n context.perfbackup = deepcopy(response)\n context.performances = response\n\n context.$refs.dragtable.setPage(1)\n if (response) {\n tooltip.startTooltip(50)\n\n } else {\n context.performances = []\n }\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Performance/Performance.controller.js","\n//certifications\nexport const GetPerformance = (personnelID) => {\n return $.get('Personnel/GetPerformanceByPersonnelId?PersonnelId='+personnelID)\n}\n\n\n\n\n\n/*export const GetKudosGivenByUsers = (personnelID) => {\n return $.get('Personnel/GetKudosGivenByUsers')\n}\n\nexport const DeleteKudos = (KudosId) => {\n return $.post('Personnel/DeleteKudos?KudosId='+KudosId)\n}\nexport const AddKudos = (model) => {\n return $.post('Personnel/AddKudos',model)\n}\nexport const UpdateKudos = (model) => {\n return $.post('Personnel/UpdateKudos',model)\n}\nexport const GetCommendableActionTypes=()=>{\n return $.get('Personnel/GetCommendableActionTypes')\n}*/\n\n\n\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/Performance/Performance.service.js","import * as service from './PersonalInfo.service'\nexport default {\n data() {\n return {\n foofkey:0,\n imgSrc: '',\n suitsize: [],\n fileImg: '',\n personalForm: {\n FirstName: '',\n LastName: '',\n MiddleName: '',\n Email: '',\n Gender: '',\n DOB: '',\n SSN: '',\n AlternativeEmail: '',\n Notes: '',\n PhoneNumber: '',\n SuitSize: '',\n TShirtSize: '',\n ShortsSize: '',\n HomeNumber: '',\n Address: '',\n City: '',\n State: '',\n IsAppUser: '',\n /* UserZone:'',\n UserOffset:'',*/\n CountryTimeZoneId: '',\n Zip: ''\n },\n onRequest: false,\n licenceActive: '',\n imgPath: '',\n imgDataUrl: '',\n show: false,\n persBackup: {},\n states: [],\n timezones: [],\n ButtonConfig: [],\n currentRole: '',\n rules: {\n\n\n AlternativeEmail: [{\n type: 'email',\n message: 'Invalid Email Id'\n },\n\n ]\n }\n\n\n }\n },\n\n \n mounted() {\n this.currentRole = authDetails.role\n /* FG - FOOF - Jun 2 2019... commented out stuff below.\n if (!this.data.isEdit) {\n this.personalForm.FirstName = this.data.firstName ? this.data.firstName : ''\n this.personalForm.LastName = this.data.lastName ? this.data.lastName : ''\n this.personalForm.Email = this.data.email ? this.data.email : ''\n }\n */\n // this.ButtonConfig=this.data; //FG - FOOF - Jun 2 2019 - THIS HAD BEEN COMMENTED OUT IN THE ORIGINAL CODE... ITS NOT ME\n\n this.suitSize()\n this.getStates()\n this.getTimeZone()\n },\n props: ['data', 'editShow'],\n watch: {\n\n data: function () {\n this.persBackup = deepcopy(this.data.response)\n\n this.personalForm = this.persBackup\n\n if (this.personalForm[\"UserZone\"]) {\n var xsm = this.personalForm[\"UserZone\"].substring(0, 1)\n if (xsm != '-') {\n\n this.personalForm[\"UserZone\"] = '+ ' + this.personalForm[\"UserZone\"].substring(0, this.personalForm[\"UserZone\"].length - 1);\n }\n if (xsm == '-') {\n this.personalForm[\"UserZone\"] = this.personalForm[\"UserZone\"].charAt(0) + \" \" + this.personalForm[\"UserZone\"].substr(1)\n }\n }\n\n this.LicenceCheck()\n this.personalForm['Email'] = deepcopy(this.data.response.PrimaryEmail)\n this.persBackup.ImagePath ? this.imgSrc = baseUrl + 'Documents/ProfilePics/' + this.persBackup.ImagePath : this.imgSrc = 'static/images/Default-avatar.jpg'\n this.persBackup.ImagePath ? this.imgPath = baseUrl + 'Documents/ProfilePics/' + this.persBackup.ImagePath : this.imgPath = 'static/images/Default-avatar.jpg'\n\n }\n\n },\n\n methods: {\n LicenceCheck() {\n let context = this\n\n\n service.LicenceCheck().then(function (response) {\n context.licenceActive = response\n\n }).catch((error) => {\n\n })\n\n\n },\n\n getStates() {\n loader.startLoader()\n let context = this\n service.GetStates().then(function (response) {\n\n context.states = response\n loader.stopLoader()\n\n }, (error) => {\n\n context.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n loader.stopLoader()\n\n })\n\n },\n\n getTimeZone() {\n loader.startLoader()\n let context = this\n service.GetCountryTimeZone().then(function (response) {\n\n context.timezones = response\n loader.stopLoader()\n\n }, (error) => {\n\n context.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n loader.stopLoader()\n\n })\n\n },\n\n\n modalCancel() {\n if ($('#PostsignupModel').length > 0) {\n $('#PostsignupModel').modal('hide')\n } else {\n this.personalForm = deepcopy(this.data.response)\n this.personalForm['Email'] = deepcopy(this.data.response.PrimaryEmail)\n }\n //FG - FOOF - Jun 2 2019 changed line below, it used to set isEdit to true... \n // that didn't seem right\n // ALSO the line below used to be in the \"else block\" just above but I make sure\n // isEdit is false regardless of anything else if the update is cancelled\n this.data['isEdit'] = false //if the update is cancelled then go back to view instead of edit\n },\n setImage(e) {\n let context = this\n const file = e.target.files[0]\n this.fileImg = e.target.files[0]\n\n if (!file.type.includes('image/jpeg') && !file.type.includes('image/jpg') && !file.type.includes('image/png')) {\n return\n }\n if (file.size > 200000) {\n alert('You have exceeded the maximum image size of 200 Kb')\n return\n }\n if (typeof FileReader === 'function') {\n const reader = new FileReader()\n\n reader.onload = (event) => {\n this.imgSrc = event.target.result\n this.imgPath = event.target.result\n\n var image_arr = {}\n var image_data = new FormData()\n\n image_arr['Username'] = context.personalForm.Email\n image_arr['ProfilePic'] = context.fileImg\n\n for (var key in image_arr) {\n image_data.append(key, image_arr[key])\n }\n\n loader.startLoader()\n\n service.UpdateUserImage(image_data).then(function (response) {\n\n //FG - FOOF - 20200902-FG-001\n //ONLY UPDATE THE authDetails IF THE IMAGE THAT WAS UPDATED IS FOR THE\n //SIGNED ON USER (I.E. THE USER THAT IS REPRESENTED IN authDetails)\n //I ADDED THE CONDITION BELOW \n if(context.data.response.PersonnelId == authDetails.PersonnelId) {\n let pic1 = response.replace(/([a-z])([A-Z])/, '$1 $2')\n let pic2 = pic1.replace(/\\n/g, ' ')\n\n let pic3 = pic2.split(' ')\n\n authDetails['ImageName'] = pic3[6]\n authDetails['IsFirstLogin'] = 'False'\n\n context.$localStorage.set('authentication', JSON.stringify(authDetails))\n }\n //END OF FIX 20200902-FG-001 \n context.$notify({\n\n title: 'Success',\n\n message: 'Profile Image Updated',\n\n type: 'success'\n\n })\n context.$router.app.$emit('reloadAuth')\n loader.stopLoader()\n\n }, (error) => {\n\n context.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n loader.stopLoader()\n\n })\n\n }\n\n reader.readAsDataURL(file)\n } else {\n alert('Sorry, FileReader API not supported')\n }\n },\n\n backProfile() {\n this.$router.push('/addpersonnel')\n\n },\n\n cEdit() {\n if (this.data[\"isEdit\"] == true) {\n this.data[\"isEdit\"] = false\n } else if (this.data[\"isEdit\"] == false) {\n this.data[\"isEdit\"] = true\n }\n\n setTimeout(function () {\n var x = $('#time-offset').val()\n $('#time-offset').mask(\"_ xy:ab\", {\n\n translation: {\n '_': {\n pattern: /[+|-]/,\n optional: false\n },\n 'x': {\n pattern: /[0-1]/,\n optional: false\n },\n 'y': {\n pattern: /[0-9]/,\n optional: false\n },\n 'a': {\n pattern: /[0-5]/,\n optional: false\n },\n 'b': {\n pattern: /[0-9]/,\n optional: false\n }\n },\n onComplete: function (cep) {\n var l = cep.substring(2, 7);\n var sym = cep.substring(0, 1)\n var xp = l.split(\":\");\n if (parseInt(xp[0]) == 14) {\n\n if (parseInt(xp[1]) > 0) {\n $('#time-offset').val(sym + ' 14:00');\n }\n\n }\n },\n placeholder: \"_ __:__\"\n\n })\n $('#time-offset').val(x)\n })\n\n },\n\n suitSize() {\n\n for (var i = 26; i < 46; i++) {\n this.suitsize.push({\n label: i,\n value: i\n })\n i = i + 1;\n }\n },\n\n\n updatePersonnel(formName) {\n let context = this\n //Make sure the date of birth is in the correct format\n if (context.personalForm.DOB) {\n context.personalForm['DOB'] = this.$moment(context.personalForm['DOB']).format('MM-DD-YYYY')\n }\n //Validate the data that is on the form\n this.$refs[formName].validate((valid) => {\n if (valid) {\n loader.startLoader()\n this.onRequest = true\n var tempPersonal = {}\n for (var key in context.personalForm) {\n if (context.personalForm.hasOwnProperty(key)) {;\n if (context.personalForm[key] && key !== 'PersonnelEmergency') {\n tempPersonal[key] = context.personalForm[key]\n }\n }\n }\n //Send the data to the server to update the database\n service.PersonnelPostSignUp(tempPersonal).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n context.onRequest = false\n loader.stopLoader()\n return;\n }\n context.onRequest = false\n //FG - FOOF - 20200902-FG-001\n //Update the local data that is displayed for the signed on user (i.e.\n //The image that is displayed, the name that is displayed etc. \n //BUT ONLY IF\n //it is that signed on user that was just updated.\n //I ADDED THE CONDITION BELOW -- to be sure this info is changed locally\n //only if it is for the signed on user.\n if(context.data.response.PersonnelId == authDetails.PersonnelId) {\n authDetails['IsFirstLogin'] = 'False'\n authDetails['FirstName'] = context.personalForm.FirstName\n authDetails['LastName'] = context.personalForm.LastName\n context.$localStorage.set('authentication', JSON.stringify(authDetails))\n context.$router.app.$emit('reloadAuth') //FG - FOOF - 20200902-FG-001 - also added this line \n }\n //FG - FOOF - END FIX -20200902-FG-001\n\n //FG - FOOF - AFTER CERT - First Release Security - seems the broadcast below is not needed\n // AND when it is in place causes problems\n //context.$router.app.$emit('updatedinfo')\n \n context.data['isEdit'] = false //FG - FOOF - jun 2 2019 - this used to set isEdit to true\n context.$notify({title: 'Success', message: 'Personnel Details Updated', type: 'success'})\n context.$router.app.$emit('reloadAuth') \n loader.stopLoader()\n }, (error) => {\n context.onRequest = false\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n loader.stopLoader()\n })\n }\n })\n },\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/PersonalInfo/PersonalInfo.controller.js","export const PersonnelPostSignUp = (model) => {\r\n return $.ajax({\r\n url : 'Personnel/UpdatePersonnelInformation',\r\n data : model,\r\n\r\n type: 'POST'\r\n })\r\n\r\n\r\n}\r\nexport const LicenceCheck = () => {\r\n\r\n return $.get('Personnel/IsLicenseMaxCountReached')\r\n\r\n}\r\n\r\nexport const UpdateUserImage = (model) => {\r\n return $.ajax({\r\n url : 'Personnel/UpdateUserImage',\r\n data : model,\r\n processData : false,\r\n contentType : false,\r\n type: 'POST'\r\n })\r\n\r\n\r\n}\r\n\r\n\r\nexport const GetStates= () => {\r\n\r\n return $.get('Personnel/GetStates')\r\n\r\n}\r\n\r\n\r\nexport const GetCountryTimeZone = ()=> {\r\n return $.get('Personnel/GetCountryTimeZone')\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/PersonalInfo/PersonalInfo.service.js","/*\nFG - FOOF - AFTER CERT - FIRST RELEASE ----\nTHIS IS THE PERSONNEL DASHBOARD CODE\nIT IS NOT BEING USED IN THE FIRST RELEASE\nIF THIS CODE GETS REINSTATED IT MUST BE EVALUATED\nTO BE SURE IT DOES NOT CAUSE ANY PROBLEMS (i.e. \nTHERE ARE PLACES WHERE THE CONTROLLER/SERVICE \nMAY EXPECT A LOCATION OF NULL OR ZERO... THAT WILL\nNOT FLUSH WITH THE FIRST RELEASE CODE)\n*/\nimport * as service from './profiledashboard.service'\nexport default {\n data() {\n return {\n\n locationId:'',\n locationName:'',\n employees:[],\n currentRole:'',\n stateName:'',\n cindex:''\n\n }\n },\n mounted() {\n let context = this\n this.currentRole = authDetails.role\n this.stateName = this.$route.name\n this.$router.app.$on('emittedlocation_obj', (data) => {\n context.locationId = data.LocationId ? data.LocationId : ''\n context.locationName = data.LocationName ? ' - ' + data.LocationName : ''\n if(context.locationId || context.locationId == 0)\n {\n context.GetPersonnelMinDetailsByLocation(context.locationId?context.locationId : 0)\n }\n\n // alert(JSON.stringify(data))\n\n })\n },\n props: ['data', 'editShow'],\n methods: {\n backProfile(){\n this.$router.push('/addpersonnel')\n\n },\n geteDetails(index)\n {\n\n this.cindex = index\n\n },\n GetPersonnelMinDetailsByLocation(locationId) {\n let context = this\n loader.startLoader()\n service.GetPersonnelMinDetailsByLocation(locationId).then(function (response) {\n\n if (response && response != null) {\n context.employees = response\n // tooltip.startTooltip(50)\n }\n else {\n\n context.employees = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n\n },\n\n watch: {\n '$route' (to, from) {\n\n this.stateName = to.name\n if(from.name == 'login' || from.name== 'signupconfirm')\n {\n\n $.event.trigger({\n type: 'newMessage'\n\n })\n }\n }\n },\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/ProfileDashboard/profiledashboard.controller.js","/*\nFG - FOOF - AFTER CERT - FIRST RELEASE ----\nTHIS IS THE PERSONNEL DASHBOARD CODE\nIT IS NOT BEING USED IN THE FIRST RELEASE\nIF THIS CODE GETS REINSTATED IT MUST BE EVALUATED\nTO BE SURE IT DOES NOT CAUSE ANY PROBLEMS (i.e. \nTHERE ARE PLACES WHERE THE CONTROLLER/SERVICE \nMAY EXPECT A LOCATION OF NULL OR ZERO... THAT WILL\nNOT FLUSH WITH THE FIRST RELEASE CODE)\n*/\nexport const GetPersonnelMinDetailsByLocation = (id) => {\n\n return $.get('Personnel/GetPersonnelMinDetailsByLocation?locationId='+id)\n\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/ProfileDashboard/profiledashboard.service.js","import * as service from './readings_maintenance.service.js'\nimport * as poolspecificrangevalues from './readings_pool_specific_range_values.js'\n\nexport default {\n //FG - FOOF - I cannot figure out how to remove the \"editable\" or change the tab\n // to remove the \"X\" (make it NOT closable) so in desperation I am using the\n // vue updated method to remove the \"X\" when there is only one pool.\n updated() {\n var context=this;\n if(context.numberOfPools == 1 && !context.tab_1_displayHasBeenDone) {\n if(context.tab_1_DOM == null) {\n context.tab_1_DOM = $(\"#tab-1 .el-icon-close\");\n if(context.tab_1_DOM != null) {\n this.$nextTick(() => $(\"#tab-1 .el-icon-close\").css(\"display\",\"none\"))\n context.tab_1_displayHasBeenDone=true;\n }\n }\n }\n },\n \n data() {\n return {\n //inMiddleOfThings: false, //LOOK HERE - zzzzzz\n\n //vars below make vue's updated method more efficient\n numberOfPools: 0,\n tab_1_displayHasBeenDone: false,\n tab_1_DOM: null,\n\n //templateModel is used when getting data from and sending data to the server\n templateModel: {\n 'LocationId': '',\n 'Name': '',\n 'TemplateReadings': [],\n 'TemplateMaintenance': []\n },\n\n //FG - FOOF - After Cert - First Release Security\n isAddingOrEditing: 'A', //Default to A\n\n //Readings\n readings: [], //ALL of the readings that can possibly be chosen\n displayedReadings: [], //Either all of the readings or only those chosen\n chosenReadingIds: [], //List of the id values of the readings that have been chosen\n rangevalues: [],\n showOnlyChosenReadings: false, //v-model for checkbox\n //Pools\n pools: [], //All of the pools at a location\n poolListForSelection: [], //List of pools available when adding a tab\n pool: '', //The pool for the chosen tab\n //Tasks\n tasks: [], //ALL of the tasks that can possibly be chosen\n displayedTasks: [], //Either all of the tasks or only those chosen\n chosenTaskIds: [],\n showOnlyChosenTasks: false, //v-model for checkbox\n //Maintenance\n maintenance: [], //ALL of the maintenance items that can possibly be chosen\n displayedMaintenance: [], //Either all of the maintenance items or only those chosen\n chosenMaintenanceIds: [],\n showOnlyChosenMaintenance: false, //v-model for checkbox \n //Tabs (the clickable tabs)\n chosenTabNumber: 0, //Tabs actually start with 1 so 0 is simply an intialization value\n tabModels: [] //An array of objects that hold the data for the tabs\n }\n },\n props: ['templateData'],\n mounted() {\n let context = this\n this.GetAllLogReadings()\n this.GetAllLogMaintenance()\n this.GetAllLogTasks()\n //this.getpools(this.templateData.LocationId);\n if (!context.templateData.isEdit) {\n context.tabModels = []\n }\n //FG - FOOF - Jan 28 2019 the method below was empty when I got this code from Digiclarity\n // I modified it when I changed the L&F of the pages that created/maintained\n // the templates.\n // Before adding we must initialize variables\n this.$router.app.$on('is_add', function () {\n context.AddingATemplate();\n })\n },\n methods: {\n //FG - FOOF - added the method below so when there is only one pool at a facility\n // the tab is already set up for that pool.\n // NOTE: this also initializes the name of the template\n AddingATemplate() {\n var context = this;\n context.templateModel.Name = ''\n context.tabModels = []\n if(context.pools.length == 1) {\n context.pool = context.pools[0];\n context.ok(null,'add');\n }\n else {\n context.handleTabsEdit(null, 'add')\n }\n },\n\n setDisplayForAddATab() {\n var context=this;\n if(context.pools.length == context.tabModels.length \n || (!this.$hydrowareSecurityJS.canAdd_A('managetemplates') && context.isAddingOrEditing == 'A')\n || (!this.$hydrowareSecurityJS.canEdit_A('managetemplates') && context.isAddingOrEditing == 'E')\n ) //true when all pools have been chosen already\n $(\"#readings_maintenance_tabs .el-tabs__new-tab\").css( \"display\", \"none\" );\n else \n $( \"#readings_maintenance_tabs .el-tabs__new-tab\").css( \"display\", \"inline\" );\n },\n\n //Get the log template for which readings etc. will (or have been) chosen\n GetLogTemplateById(id) {\n let context = this\n loader.startLoader()\n service.GetLogTemplateById(id).then(function (response) {\n loader.stopLoader()\n if (response) {\n context.tabModels = []\n context.templateModel.Name = response.Name\n\n //CREATE THE TABS WITH INITIALIZED VALUES\n //\n //For each pool in the template create a tab model\n //NOTE: the tab model includes the tab's\n // title, poolId, name (a numeric value), content, \n // and INITIALIZED ARRAYS FOR chosen and intial reading ids, maintenance ids, \n // and task ids\n response.Pools.map(function (aPoolInTemplate, tabModelIndex) {\n context.tabModels.push({\n title: aPoolInTemplate.PoolName,\n poolId: aPoolInTemplate.PoolId,\n name: tabModelIndex + 1 + '',\n content: 'New Tab content',\n //Choices from the lists\n chosenReadingIds: [], //These are just reading id values (from logReadings table)\n chosenMaintenanceIds: [], //These are just maintenance id values (from logMaintenance table)\n chosenTaskIds: [], //These are just task id values (from logMaintenance table)\n //Each entry in the initialReadingsIds array holds the id of the row in the \n //LogTemplateReadings table and the id of a log reading id from the logReadings table\n //NOTE: the logTemplateReadings table connects the reading for a pool with its\n // template\n initialReadingIds: [],\n //Each entry in the initialMaintenanceIds array holds the id of the row in the \n //LogTemplateMaintenance table and the id of a log task id\n //NOTE: the logTemplateMaintenance table connects the maintenance item for a pool with its\n // template... the column isTask is false on these rows.\n // the column isTask is what separates the maintenance items from the tasks.\n //ALSO NOTE: BOTH maintenance AND task info is stored in the logMaintenance table\n // they are also both in the logTemplateMainenance table\n //\n initialMaintenanceIds: [],\n //Each entry in the initialTaskIds array holds the id of the row in the \n //LogTemplateMaintenance table and the id of a log task id\n //NOTE: the logTemplateMaintenance table connects the task for a pool with its\n // template... the column isTask (true for these) is what separates them from maintenance items.\n //ALSO NOTE: BOTH maintenance AND task info is stored in the logMaintenance table\n // they are also both in the logTemplateMainenance table\n //\n initialTaskIds: []\n })\n })\n\n //MAKE THE FIRST TAB THE SELECTED TAB\n //The line below sets the value of the el-tabs v-model and thus \n //selects the first tab\n context.chosenTabNumber=\"\"+(context.tabModels.length>0 ? context.tabModels[0].name : 0);\n\n //SET THE VALUES ON EACH TAB\n //For each pool in the template set the tab model's values\n //NOTE: to start out the initial readings and the chosen readings are the same\n response.Pools.map(function (aPoolInTemplate, tabModelIndex) {\n aPoolInTemplate.LogReadings.map(function (anInitialLogReadingInTemplate, notUsedIndex) {\n context.tabModels[tabModelIndex].chosenReadingIds.push(anInitialLogReadingInTemplate.LogReadingsId);\n context.tabModels[tabModelIndex].initialReadingIds.push({\n Id: anInitialLogReadingInTemplate.Id,\n rid: anInitialLogReadingInTemplate.LogReadingsId\n })\n })\n //NOTE: to start out the initial maintenance items and the chosen maintenance items are the same\n //ALSO NOTE: both tasks and maintenance items are stored in the same table\n // and both use the same \"object\" thus the use of \n // \"mid\", \"LogMaintenances\" and \"LogMaintenanceId\" in the code below is used for both \n // maintenance items and tasks\n aPoolInTemplate.LogMaintenances.map(function (anInitialMaintenanceInTemplate, notUsedIndex) {\n context.tabModels[tabModelIndex].chosenMaintenanceIds.push(anInitialMaintenanceInTemplate.LogMaintenanceId) \n context.tabModels[tabModelIndex].initialMaintenanceIds.push({\n Id: anInitialMaintenanceInTemplate.Id,\n mid: anInitialMaintenanceInTemplate.LogMaintenanceId\n })\n })\n //NOTE: to start out the initial tasks and the chosen tasks are the same\n //ALSO NOTE: both tasks and maintenance items are stored in the same table\n // and both use the same \"object\" thus the use of \n // \"mid\", \"LogMaintenances\" and \"LogMaintenanceId\" in the code below is used for both\n // maintenance items and tasks\n aPoolInTemplate.LogTasks.map(function (anInitialTaskInTemplate, notUsedIndex) {\n context.tabModels[tabModelIndex].chosenTaskIds.push(anInitialTaskInTemplate.LogTaskId) \n context.tabModels[tabModelIndex].initialTaskIds.push({\n Id: anInitialTaskInTemplate.Id,\n mid: anInitialTaskInTemplate.LogMaintenanceId\n })\n })\n })\n\n context.chosenReadingIds = context.tabModels[0].chosenReadingIds\n context.chosenMaintenanceIds = context.tabModels[0].chosenMaintenanceIds\n context.chosenTaskIds = context.tabModels[0].chosenTaskIds\n context.syncPoolWithTab(context.tabModels[0].poolId)\n context.setDisplayForAddATab()\n context.SetDisplayedReadingsToAllReadings()\n context.SetDisplayedMaintenanceToAllMaintenance()\n context.SetDisplayedTasksToAllTasks()\n } else {\n //context.tabModels = []\n }\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n //The four methods below deal with the Readings display\n GetAllLogReadings() {\n let context = this\n loader.startLoader()\n service.GetAllLogReadings().then(function (response) {\n loader.stopLoader()\n if (response) {\n context.readings = response\n } else {\n context.readings = []\n }\n context.SetDisplayedReadingsToAllReadings();\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n ToggleDisplayedReadings(val) {\n if(val)\n this.SetDisplayedReadingsToChosenReadings()\n else\n this.SetDisplayedReadingsToAllReadings();\n },\n SetDisplayedReadingsToAllReadings() {\n var context=this\n context.displayedReadings=[];\n for(var i=0;i {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n ToggleDisplayedMaintenance(val) {\n if(val)\n this.SetDisplayedMaintenanceToChosenMaintenance()\n else\n this.SetDisplayedMaintenanceToAllMaintenance();\n },\n SetDisplayedMaintenanceToAllMaintenance() {\n var context=this\n context.displayedMaintenance=[];\n for(var i=0;i {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n ToggleDisplayedTasks(val) {\n if(val)\n this.SetDisplayedTasksToChosenTasks()\n else\n this.SetDisplayedTasksToAllTasks();\n },\n SetDisplayedTasksToAllTasks() {\n var context=this\n context.displayedTasks=[];\n for(var i=0;i {\n if (tab.name === targetName) {\n let nextTab = tabs[index + 1] || tabs[index - 1]\n if (nextTab) {\n activeName = nextTab.name\n }\n }\n })\n context.chosenTabNumber = activeName\n context.tabModels = tabs.filter(tab => tab.name !== targetName)\n context.setDisplayForAddATab();\n context.SetDisplayedReadingsToAllReadings();\n context.SetDisplayedTasksToAllTasks();\n context.SetDisplayedMaintenanceToAllMaintenance();\n if(context.tabModels.length == 0) {\n context.handleTabsEdit(null,'add')\n }\n }\n },\n handleClick(ev) {\n $('#PoolSelectModel').modal('show')\n },\n updateTemplate() { //used to be updateReading\n let context = this\n loader.startLoader()\n context.templateModel['TemplateReadings'] = []\n context.templateModel['TemplateMaintenance'] = [] //NOTE: BOTH TASKS AND MAINT. ITEMS END UP IN THIS SLOT\n //READINGS\n this.tabModels.map(function (aTabModel, tabModelIndex) {\n aTabModel.chosenReadingIds.map(function (aChosenReadingId, chosenReadingIdIndex) {\n var rei\n if (aTabModel.initialReadingIds //initialReadingsId array is not null\n && aTabModel.initialReadingIds.length > 0 //and it has at least one entry\n && aTabModel.initialReadingIds[chosenReadingIdIndex]) {//and there is an entry for the chosenReadingIdIndex\n if (aTabModel.initialReadingIds[chosenReadingIdIndex].rid == aChosenReadingId) {\n rei = aTabModel.initialReadingIds[chosenReadingIdIndex].Id\n } \n else {\n rei = 0\n }\n } \n else {\n rei = 0\n }\n context.templateModel['TemplateReadings'].push({\n Id: rei,\n LogReadingsId: aChosenReadingId,\n Ordinance: chosenReadingIdIndex,\n PoolId: aTabModel.poolId\n })\n })\n //NOTE: both the maintenance items and the tasks end up in the same table\n //and thus are both sent to the server in the 'TemplateMaintenance' slot.\n //MAINTENANCE\n aTabModel.chosenMaintenanceIds.map(function (aChosenMaintenanceId, chosenMaintenanceIdIndex) {\n var mei\n if (aTabModel.initialMaintenanceIds\n && aTabModel.initialMaintenanceIds.length > 0 \n && aTabModel.initialMaintenanceIds[chosenMaintenanceIdIndex]) {\n if (aTabModel.initialMaintenanceIds[chosenMaintenanceIdIndex].mid == aChosenMaintenanceId) {\n mei = aTabModel.initialMaintenanceIds[chosenMaintenanceIdIndex].Id\n } else {\n mei = 0\n }\n } else {\n mei = 0\n }\n context.templateModel['TemplateMaintenance'].push({\n Id: mei,\n LogMaintenanceId: aChosenMaintenanceId,\n Ordinance: chosenMaintenanceIdIndex,\n PoolId: aTabModel.poolId\n })\n })\n //TASKS\n aTabModel.chosenTaskIds.map(function (aChosenTaskId, chosenTaskIdIndex) {\n var mei\n if (aTabModel.initialTaskIds) {\n if (aTabModel.initialTaskIds.length > 0 && aTabModel.initialTaskIds[chosenTaskIdIndex]) {\n if (aTabModel.initialTaskIds[chosenTaskIdIndex].mid == aChosenTaskId) {\n mei = aTabModel.initialTaskIds[chosenTaskIdIndex].Id\n } else {\n mei = 0\n }\n } else {\n mei = 0\n }\n } else {\n mei = 0\n }\n context.templateModel['TemplateMaintenance'].push({\n Id: mei,\n LogMaintenanceId: aChosenTaskId,\n Ordinance: chosenTaskIdIndex,\n PoolId: aTabModel.poolId\n })\n })\n })\n context.templateModel.Id = context.templateData.templateId\n service.UpdateLogTemplate(this.templateModel).then(function (response) {\n loader.stopLoader()\n context.$notify({\n title: 'Success',\n message: 'Template Updated',\n type: 'success'\n })\n context.$router.app.$emit('hydroware_readingsTemplateSaved')\n loader.stopLoader()\n }, (error) => {\n context.onRequest = false\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n loader.stopLoader()\n })\n },\n addTemplate() {\n let context = this\n loader.startLoader()\n this.tabModels.map(function (aTabModel, tabModelIndex) {\n aTabModel.chosenReadingIds.map(function (aChosenReadingId, chosenReadingsIdIndex) {\n context.templateModel['TemplateReadings'].push({\n Id: 0,\n LogReadingsId: aChosenReadingId,\n Ordinance: chosenReadingsIdIndex,\n PoolId: aTabModel.poolId\n })\n })\n aTabModel.chosenMaintenanceIds.map(function (aChosenMaintenanceId, chosenMaintenanceIdIndex) {\n context.templateModel['TemplateMaintenance'].push({\n Id: 0,\n LogMaintenanceId: aChosenMaintenanceId,\n Ordinance: chosenMaintenanceIdIndex,\n PoolId: aTabModel.poolId\n })\n })\n aTabModel.chosenTaskIds.map(function (aChosenTaskId, chosenTaskIdIndex) {\n //context.templateModel['TemplateTasks'].push({\n context.templateModel['TemplateMaintenance'].push({\n Id: 0,\n LogMaintenanceId: aChosenTaskId,\n Ordinance: chosenTaskIdIndex,\n PoolId: aTabModel.poolId\n })\n })\n })\n service.AddLogTemplate(this.templateModel).then(function (response) {\n loader.stopLoader()\n context.$notify({\n title: 'Success',\n message: 'New Template Created',\n type: 'success'\n })\n context.$router.app.$emit('hydroware_readingsTemplateSaved')\n loader.stopLoader()\n }, (error) => {\n context.onRequest = false\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n loader.stopLoader()\n })\n },\n getpools(locationid) {\n let context = this\n\n //initialize the vars that help with the updated method\n context.tab_1_displayHasBeenDone=false;\n context.tab_1_DOM = null;\n //$( \"#readings_maintenance_tabs .el-tabs__new-tab\").css( \"display\", \"inline\" );\n\n service.GetPools(locationid).then(function (response) {\n if (response) {\n if (response.length > 0) {\n context.pools = response \n }\n else {\n context.pools = [];\n }\n context.numberOfPools = response.length; \n }\n }, (error) => {}\n )\n },\n //The function below gets the range values for the readings, processes them and makes them display\n showrange() {\n let context = this\n context.rangevalues = []\n //Get the range values for a specific location and use the \"then\" function\n //to process them. \n service.GetRangeValue(authDetails.OrganizationId).then(function (response) {\n //\n for(var i=0;i {\n })\n },\n },\n watch: {\n 'templateData.LocationId': function () {\n this.templateModel.LocationId = this.templateData.LocationId\n this.getpools(this.templateData.LocationId)\n },\n 'templateData.isEdit': function () {\n if (this.templateData.isEdit) {\n this.isediting = true\n this.isAddingOrEditing = 'E' //FG - After Cert - First Release Security\n } else {\n this.isediting = false\n this.isAddingOrEditing = 'A' //FG - After Cert - First Release Security\n }\n },\n 'templateData.templateId': function () {\n if(this.templateData.templateId == null) return; //FG - FOOF - Jan 25 2019\n this.isediting = true\n \n if (this.templateData.isEdit) {\n this.isAddingOrEditing = 'E' //FG - After Cert - First Release Security\n this.GetLogTemplateById(this.templateData.templateId)\n }\n },\n }\n\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/ReadingsMaintenance/readings_maintenance.controller.js","//certifications\r\n\r\n// http://dev-hydronew.azurewebsites.net/api/Help/Api/GET-api-Patron-GetAllActivity_LocationId\r\n\r\nexport const GetAllLogReadings = (locationid) => {\r\n return $.get('LogTemplate/GetAllLogReadings?IsCustom=null&IsActive=true')\r\n}\r\nexport const GetAllLogTasks = (locationid) => {\r\n return $.get('LogTemplate/GetAllLogTasks?IsCustom=null&IsActive=true')\r\n}\r\nexport const GetAllLogMaintenance = (locationid) => {\r\n return $.get('LogTemplate/GetAllLogMaintenance?IsCustom=null&IsActive=true')\r\n}\r\nexport const GetPools = (locationid) => {\r\n return $.get('Pool/GetPools?locationId=' + locationid)\r\n}\r\nexport const AddLogTemplate = (model) => {\r\n return $.post('LogTemplate/AddLogTemplate', model)\r\n}\r\nexport const UpdateLogTemplate = (model) => {\r\n return $.ajax({\r\n url: 'LogTemplate/UpdateLogTemplate',\r\n data: JSON.stringify(model),\r\n contentType: 'application/json',\r\n cache: false,\r\n type: 'POST'\r\n })\r\n}\r\nexport const GetLocations = () => {\r\n let havingPools = true\r\n return $.get('Location/GetLocations?havingPools=' + havingPools)\r\n}\r\nexport const GetLogTemplateById = (id) => {\r\n return $.get('LogTemplate/GetLogTemplateWRTPoolsById?Id=' + id)\r\n}\r\nexport const GetRangeValue = (OrganizationId) => {\r\n return $.get('LogTemplate/GetAllLogReadings?IsCustom=false&IsActive=true&OrganizationId=' + OrganizationId)\r\n}\r\n/********************************************************************\r\nexport const UpdateActivity = (model) => {\r\n return $.post('Patron/UpdateActivity', model)\r\n}\r\nexport const DeleteActivity = (ActivityId) => {\r\n return $.post('Patron/DeleteActivity?ActivityId=' + ActivityId)\r\n}\r\nexport const GetActivityDetails = (ActivityId) => {\r\n return $.get('Patron/GetActivityDetails?ActivityId=' + ActivityId)\r\n}\r\n*********************************************************************/\n\n\n// WEBPACK FOOTER //\n// ./src/components/ReadingsMaintenance/readings_maintenance.service.js","//FG - FOOF - Jan 2 2019 - add into the array that is going to be displayed\r\n // for the pool specific stuff.\r\n //\r\n //NOTE: at the time of writing there was only one value that is pool specific\r\n // it is Bather Load.\r\n\r\n export const setupPoolSpecificRangeValues = (arrayToDisplay, oneSetOfRangeValues, aPool, allPools) => {\r\n //NOTE: location and facility are the same thing\r\n // pool and venue are the same thing\r\n \r\n //The variable poolForThisMethod will hold onto the pool(venue) that needs\r\n // to be displayed in the grid. \r\n //If no pool tab has been chosen and the location (facility) has only\r\n // one pool then that pool's values will be displayed\r\n //If no pool tab is chosen and there are multiple pools at the location\r\n // then the pool specific info will not be displayed in the grid.\r\n //\r\n var poolForThisMethod = null;\r\n if(aPool=='') {\r\n if(allPools.length == 1) {\r\n poolForThisMethod = allPools[0]\r\n }\r\n else{\r\n poolForThisMethod = '';\r\n }\r\n }\r\n else {\r\n poolForThisMethod = aPool\r\n }\r\n if(poolForThisMethod == '')\r\n return;\r\n \r\n var poolSpecificValues = JSON.parse(JSON.stringify(oneSetOfRangeValues));\r\n poolSpecificValues.Name = oneSetOfRangeValues.Name;\r\n \r\n //Use the PoolSpecificHint to grab the pool specific value for the reading\r\n if(oneSetOfRangeValues.PoolSpecificHint==\"BLT\") {//Bather Load Total\r\n poolSpecificValues.Low = \"0\";\r\n poolSpecificValues.IdealLow = \"0\";\r\n poolSpecificValues.High = poolForThisMethod.PoolTotalMaxBathers;\r\n poolSpecificValues.IdealHigh = poolForThisMethod.PoolTotalMaxBathers;\r\n arrayToDisplay.push(poolSpecificValues)\r\n return;\r\n }\r\n \r\n if(oneSetOfRangeValues.PoolSpecificHint==\"BLS\") {//Bather Load Shallow\r\n poolSpecificValues.Low = \"0\";\r\n poolSpecificValues.IdealLow = \"0\";\r\n poolSpecificValues.High = poolForThisMethod.PoolShalowMaxBathers;\r\n poolSpecificValues.IdealHigh = poolForThisMethod.PoolShalowMaxBathers;\r\n arrayToDisplay.push(poolSpecificValues)\r\n return;\r\n }\r\n if(oneSetOfRangeValues.PoolSpecificHint==\"BLD\") {//Bather Load Deep\r\n poolSpecificValues.Low = \"0\";\r\n poolSpecificValues.IdealLow = \"0\";\r\n poolSpecificValues.High = poolForThisMethod.PoolDeepMaxBathers;\r\n poolSpecificValues.IdealHigh = poolForThisMethod.PoolDeepMaxBathers;\r\n arrayToDisplay.push(poolSpecificValues)\r\n return;\r\n }\r\n if(oneSetOfRangeValues.PoolSpecificHint==\"TOT\") {//Turn Over Time\r\n poolSpecificValues.Low = poolForThisMethod.PoolTurnOverTime_Min;\r\n poolSpecificValues.IdealLow = poolForThisMethod.PoolTurnOverTime;\r\n poolSpecificValues.High = poolForThisMethod.PoolTurnOverTime_Max;\r\n poolSpecificValues.IdealHigh = poolForThisMethod.PoolTurnOverTime;\r\n arrayToDisplay.push(poolSpecificValues)\r\n return;\r\n }\r\n if(oneSetOfRangeValues.PoolSpecificHint==\"InP\") {//Influent Pressure\r\n poolSpecificValues.Low = poolForThisMethod.PoolInfluentPressure_Min;\r\n poolSpecificValues.IdealLow = poolForThisMethod.PoolInfluentPressure;\r\n poolSpecificValues.High = poolForThisMethod.PoolInfluentPressure_Max;\r\n poolSpecificValues.IdealHigh = poolForThisMethod.PoolInfluentPressure;\r\n arrayToDisplay.push(poolSpecificValues)\r\n return;\r\n }\r\n if(oneSetOfRangeValues.PoolSpecificHint==\"EfP\") {//Efluent Pressure\r\n poolSpecificValues.Low = poolForThisMethod.PoolEfluentPressure_Min;\r\n poolSpecificValues.IdealLow = poolForThisMethod.PoolEfluentPressure;\r\n poolSpecificValues.High = poolForThisMethod.PoolEfluentPressure_Max;\r\n poolSpecificValues.IdealHigh = poolForThisMethod.PoolEfluentPressure;\r\n arrayToDisplay.push(poolSpecificValues)\r\n return;\r\n }\r\n }\n\n\n// WEBPACK FOOTER //\n// ./src/components/ReadingsMaintenance/readings_pool_specific_range_values.js","import * as service from './calender.service'\n\nexport default {\n data() {\n return {\n events: [],\n config: {\n header: {\n right: 'month'\n },\n edit: false,\n editable: false,\n stick: true,\n defaultView: 'month'\n },\n eventDetails: [{\n 'ActivityTypeDesc': '',\n 'ProgramName': '',\n 'Description': '',\n 'StartDate': '',\n 'EndDate': '',\n 'MondayEnd': '',\n 'MondayStart': '',\n 'TuesdayEnd': '',\n 'TuesdayStart': '',\n 'WednesdayEnd': '',\n 'WednesdayStart': '',\n 'ThursdayEnd': '',\n 'ThursdayStart': '',\n 'FridayEnd': '',\n 'FridayStart': '',\n 'SaturdayEnd': '',\n 'SaturdayStart': '',\n 'SundayEnd': '',\n 'SundayStart': '',\n\n }],\n Locations: [],\n Pools: [],\n locationId: '',\n locationName: '',\n poolId: '',\n\n }\n },\n\n mounted() {\n\n let context = this\n\n this.$router.app.$on('emittedlocation_obj', (data) => {\n context.locationId = data.LocationId ? data.LocationId : ''\n context.locationName = data.LocationName ? ' - ' + data.LocationName : ''\n if (context.locationId) {\n context.GetAllSessionsByFilter(this.locationId)\n }\n\n // alert(JSON.stringify(data))\n\n })\n\n this.$router.app.$on('emitTrain', (data) => {\n if (context.locationId) {\n context.GetAllSessionsByFilter(context.locationId)\n }\n\n })\n\n },\n\n methods: {\n eventSelected(event) {\n\n this.eventDetails = []\n this.eventDetails.push(event.data)\n $('#eventsModel').modal('show')\n },\n\n GetAllSessionsByFilter(locationid) {\n let context = this\n\n service.GetAllSessionsByFilter(locationid).then(function (response) {\n context.events = []\n if (response) {\n\n if (response.length > 0) {\n\n response.map(function (el) {\n\n\n var xt = el.Topic ? ' | Topic: ' + el.Topic : ''\n var xy = el.TrainingName ? 'Training Name: ' + el.TrainingName : ''\n context.events.push({\n title: xy + '' + xt,\n start: context.$moment(el.Date).format('YYYY-MM-DD'),\n\n data: el,\n allDay: true\n })\n })\n\n }\n }\n }, (error) => {\n\n })\n },\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/TrainingCalender/calender.controller.js","\nexport const GetAllSessionsByFilter = (locationid) => {\n\n return $.get('api/Training/GetAllSessionsByFilter?LocationId='+locationid)\n\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/TrainingCalender/calender.service.js","export default {\n props: { justword: Boolean },\n methods: {\n displayVersion() {\n //FG - FOOF - After Cert - First Release (5) - flipped the order of parms msg and ttl\n var optionsToUse = {\n title: \"About Hydroware\",\n message: \"Version: \" + this.$hydrowareCommonJS.Version \n }\n this.$hydrowareCommonJS.displayPopupMessage(this, optionsToUse)\n\n /* CODE BELOW IS BEFORE FIRST RELEASE (5)\n const h = this.$createElement;\n var message = h('div', [\n h('div', \"Version: \" + this.$hydrowareCommonJS.Version),\n ])\n this.$hydrowareCommonJS.displayPopupMessage(\n this, \n \"About Hydroware\", //TITLE\n message\n );\n */\n }\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/VersionSystem/VersionSystem.controller.js","import * as service from './checklist.services.js'\n\nexport default {\n data() {\n return {\n removeitems: true,\n isprintablearea: true,\n checklist_Data: [],\n checklistid: '',\n checkId: '',\n wordmeaning: '',\n selecteditemid: '',\n data: [],\n test: '',\n radio2: '',\n chosen: [],\n ccount: 0,\n nccount: 0,\n pcount: 0,\n nacount: 0,\n totalpercentage: 0,\n helptext: [],\n mahctext: ''\n\n }\n },\n\n props: ['data', 'isediting', 'isAddingOrEditing'], //FG - FOOF - After Cert - First Release (7) - First Release Security\n\n mounted() {\n\n let context = this\n this.$router.app.$on('check_back', (data) => {\n this.$emit('cancel', true)\n\n })\n $('body').on('hidden.bs.modal', function () {\n if ($('.modal.in').length > 0) {\n $('body').addClass('modal-open')\n }\n })\n if (this.isediting) {\n\n var CheckListRunId = this.data.Id\n this.checklistid = this.data.ChecklistId\n this.checkId = CheckListRunId\n this.GetChecklistRunDetails(CheckListRunId)\n } else {\n\n var CheckListId = this.data.CheckListId\n\n this.checklistid = CheckListId\n this.getchecklist(CheckListId)\n }\n\n setTimeout(function () {\n\n $('.glossaryLookup').click(function () {\n\n let text = $(this).text()\n\n var checklistid = context.checklistid\n context.getworddef(text, checklistid)\n\n })\n\n }, 1000)\n },\n\n methods: {\n getchecklist(id) {\n let context = this\n service.Getchecklist_data(id).then(function (response) {\n\n context.checklist_Data = response\n context.totalpercentage = context.checklist_Data[0].Completion\n\n }, (error) => {\n this.$notify({\n\n title: 'Error',\n\n message: error,\n\n type: 'error'\n\n })\n })\n\n },\n Print() {\n\n },\n GetChecklistRunDetails(checklistRunId) {\n let context = this\n service.GetChecklistRunDetails(checklistRunId).then(function (response) {\n\n context.totalpercentage = ''\n context.checklist_Data = response\n context.totalpercentage = context.checklist_Data[0].Completion\n context.selected('', '')\n\n setTimeout(function () {\n $('.tooltip1').tooltipster({\n contentCloning: true,\n maxWidth: '300',\n contentAsHTML: true\n /* side: 'left',*/\n }, 200)\n })\n\n }, (error) => {\n this.$notify({\n\n title: 'Error',\n\n message: error,\n\n type: 'error'\n\n })\n })\n },\n backProfile() {\n\n this.$emit('cancel', true)\n tooltip.startTooltip(50)\n },\n openhelp(data) {\n\n let context = this\n var checklistItemId = data.Id\n service.GetChecklistItemHelps(checklistItemId).then(function (response) {\n\n response = response ? response : []\n\n // context.helptext = response\n\n // context.helptext = \"sd\"\n let helptxt = ''\n if (response.length > 0) {\n\n context.helptext = ''\n\n let cou = 0\n let p = ''\n let weight = 0\n let k = 0\n for (let i = 0; i < response.length; i++) {\n\n if (response[i].TextType == 0) {\n weight = 700\n } else {\n weight = 0\n }\n\n /* k = response[i].Code.split('.').length - 1\n\n cou = k * 20*/\n\n k = response[i].Ordinance\n\n cou = k * 20\n\n helptxt += '' + response[i].Description + ' '\n\n //helptxt += response[i].Description\n let old_k = k\n }\n context.showdesc1(helptxt)\n } else {\n\n helptxt = 'No Help Available '\n context.showdesc1(helptxt)\n }\n\n $('#HelpModel').modal('show')\n setTimeout(function () {\n\n $('.glossaryLookup').click(function () {\n\n let text = $(this).text()\n\n var checklistid = context.checklistid\n context.getworddef(text, checklistid)\n\n })\n $('.codeTextLookup').click(function () {\n\n let text = $(this).text()\n\n var checklistid = context.checklistid\n\n text = text.replace('MAHC', '').trim()\n context.GetChecklistItemHelpsByCode(text, checklistid)\n\n })\n\n }, 1000)\n }, (error) => {\n this.$notify({\n\n title: 'Error',\n\n message: error,\n\n type: 'error'\n\n })\n })\n },\n\n selected(item, key) {\n\n this.ccount = 0\n this.nccount = 0\n this.pcount = 0\n this.nacount = 0\n\n var num = 0\n\n for (var i = 0; i < this.checklist_Data.length; i++) {\n\n for (var z = 0; z < this.checklist_Data[i].ChecklistItems.length; z++) {\n if (this.checklist_Data[i].ChecklistItems[z].SelectedStatus == 'C') {\n\n this.ccount = this.ccount + 1\n\n }\n if (this.checklist_Data[i].ChecklistItems[z].SelectedStatus == 'NC') {\n\n this.nccount = this.nccount + 1\n }\n if (this.checklist_Data[i].ChecklistItems[z].SelectedStatus == 'P') {\n\n this.pcount = this.pcount + 1\n }\n if (this.checklist_Data[i].ChecklistItems[z].SelectedStatus == 'NA') {\n\n this.nacount = this.nacount + 1\n }\n\n }\n num = num + this.checklist_Data[i].ChecklistItems.length\n }\n\n if (item == '') {\n\n } else {\n this.totalpercentage = (this.ccount + this.nccount + this.pcount + this.nacount) / num\n this.totalpercentage = Math.round(this.totalpercentage * 100, 2)\n }\n\n },\n\n print_pdf() {\n\n loader.startLoader()\n service.GetPdf(this.checkId).then(function () {\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n save() {\n\n let model = {\n PoolId: this.data.PoolID,\n ChecklistId: this.data.CheckListId,\n Completion: this.totalpercentage,\n ChecklistItems: []\n\n }\n\n for (var i = 0; i < this.checklist_Data.length; i++) {\n for (var z = 0; z < this.checklist_Data[i].ChecklistItems.length; z++) {\n\n model.ChecklistItems.push({\n ChecklistItemId: this.checklist_Data[i].ChecklistItems[z].Id,\n SelectedStatus: this.checklist_Data[i].ChecklistItems[z].SelectedStatus,\n })\n\n }\n }\n\n let context = this\n loader.startLoader()\n service.AddChecklistRun(model).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{}))\n return;\n\n context.$notify({\n title: 'Success',\n message: 'Checklist submitted',\n type: 'success'\n })\n loader.stopLoader()\n context.$emit('cancel', true)\n\n }, (error) => {\n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n this.$notify({\n\n title: 'Error',\n\n message: error,\n\n type: 'error'\n\n })\n })\n\n },\n update() {\n let model = {\n Id: this.data.Id,\n PoolId: this.data.PoolId,\n ChecklistId: this.data.ChecklistId,\n Completion: this.totalpercentage,\n ChecklistItems: []\n\n }\n\n for (var i = 0; i < this.checklist_Data.length; i++) {\n for (var z = 0; z < this.checklist_Data[i].ChecklistItems.length; z++) {\n\n model.ChecklistItems.push({\n ChecklistItemId: this.checklist_Data[i].ChecklistItems[z].Id,\n SelectedStatus: this.checklist_Data[i].ChecklistItems[z].SelectedStatus,\n })\n\n }\n }\n\n let context = this\n loader.startLoader()\n service.UpdateChecklistRun(model).then(function (response) {\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{}))\n return;\n\n context.$notify({\n title: 'Success',\n message: 'Updated Successfully',\n type: 'success'\n })\n loader.stopLoader()\n context.$emit('cancel', true)\n\n }, (error) => {\n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n cancel() {\n this.$emit('cancel', true)\n },\n\n replaceTextBetweenBars1(x, y) {\n\n return '' + x + ''\n\n },\n replaceTextBetweenCarets1(x) {\n return '' + x + ''\n },\n showdesc1(desc) {\n var regexpBars = /\\|(.*?)\\|/g //Find strings between bars and replace it (note: g at end means globally.. so every one is replaced)\n var regexpCarets = /\\^(.*?)\\^/g //Find strings between carets\n\n var result = desc.replace(regexpBars, this.replaceTextBetweenBars1('$1', desc.Id))\n .replace(regexpCarets, this.replaceTextBetweenCarets1('$1'))\n\n this.helptext = result\n\n },\n\n replaceTextBetweenBars(x, y) {\n\n return '' + x + ''\n\n },\n replaceTextBetweenCarets(x) {\n return '' + x + ''\n },\n showdesc(desc) {\n var regexpBars = /\\|(.*?)\\|/g //Find strings between bars and replace it (note: g at end means globally.. so every one is replaced)\n var regexpCarets = /\\^(.*?)\\^/g //Find strings between carets\n var str = desc.Name\n\n var result = str.replace(regexpBars, this.replaceTextBetweenBars('$1', desc.Id))\n .replace(regexpCarets, this.replaceTextBetweenCarets('$1'))\n\n return result\n },\n\n getworddef(text, id) {\n\n let context = this\n let model = {\n ChecklistId: id,\n AlternateWord: text\n }\n service.GetChecklistGlossary(model).then(function (response) {\n\n $('#wordmeaningModel').modal('show')\n context.wordmeaning = response\n\n }, (error) => {\n this.$notify({\n\n title: 'Error',\n\n message: error,\n\n type: 'error'\n\n })\n })\n\n },\n\n GetChecklistItemHelpsByCode(text, id) {\n\n let context = this\n\n service.GetChecklistItemHelpsByCode(text, id).then(function (response) {\n context.mahctext = ''\n let cou = 0\n let p = ''\n let weight = 0\n let k = 0\n for (let i = 0; i < response.length; i++) {\n\n if (response[i].TextType == 0) {\n weight = 700\n } else {\n weight = 0\n }\n\n k = response[i].Code.split('.').length - 1\n\n cou = k * 20\n\n context.mahctext += '' + response[i].Description + ' '\n\n //helptxt += response[i].Description\n\n }\n\n $('#MahcModel').modal('show')\n }, (error) => {\n this.$notify({\n\n title: 'Error',\n\n message: error,\n\n type: 'error'\n\n })\n })\n\n }\n\n },\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/checklist/checklist.controller.js","\n\nexport const Getchecklist_data=(checklistId)=>{\n return $.get('Checklist/GetChecklistCategoryItems?checklistId='+checklistId)\n }\n\n export const GetChecklistGlossary=(model)=>{\n return $.post('Checklist/GetChecklistGlossary',model)\n}\n\n\n\nexport const GetChecklistItemHelps=(checklistItemId)=>{\n return $.get('Checklist/GetChecklistItemHelps?checklistItemId='+checklistItemId)\n}\n\n\n\nexport const GetChecklistItemHelpsByCode=(code,checklistId)=>{\n return $.get('Checklist/GetChecklistItemHelpsByCode?code='+code+'&checklistId='+checklistId)\n}\n\n\n\nexport const AddChecklistRun = (model) => {\n\n return $.post('Checklist/AddChecklistRun', model)\n\n }\n\n export const GetChecklistRunDetails = (checklistRunId) => {\n \n return $.get('Checklist/GetChecklistRunDetails?checklistRunId='+checklistRunId)\n\n}\n\n\nexport const UpdateChecklistRun = (model) => {\n\n return $.post('Checklist/UpdateChecklistRun', model)\n\n }\n\n\nexport const GetPdf_DIGICLARITY_THREW_ERROR_ON_209_UNKNOWN_NETWORK = (id) => {\n var xhr = new XMLHttpRequest();\n var auth = JSON.parse(localStorage.getItem('authentication'))\n xhr.open('GET', window.baseUrl+'PDF/CheckList?checklistRunId='+id, true);\n xhr.responseType = 'arraybuffer';\n xhr.setRequestHeader(\"authorization\", \"bearer \"+auth.access_token );\n xhr.onload = function(e) {\n loader.stopLoader()\n if (this.status == 200) {\n var blob=new Blob([this.response], {type:\"application/pdf\"});\n FileSaver.saveAs(blob, \"checklist.pdf\");\n }\n };\n xhr.send();\n}\n\nexport const GetPdf = (id) => {\n var xhrOverride = new XMLHttpRequest();\n xhrOverride.responseType = 'arraybuffer';\n $.ajax({\n url: 'PDF/CheckList?checklistRunId='+id,\n method: 'GET',\n xhr: function() {\n return xhrOverride;\n }\n }).then(function (responseData) {\n var blob=new Blob([responseData], {type:\"application/pdf\"});\n FileSaver.saveAs(blob, \"checklist.pdf\");\n });\n}\n\n\n// WEBPACK FOOTER //\n// ./src/components/checklist/checklist.services.js","import * as service from './discipline.service'\nexport default {\n props: [\"action\"], //FG - FOOF - After Cert - First Release Security (7) - added the prop\n data() {\n return {\n Disciplinecolumns: ['Date', 'Description', 'DisciplinaryAction', 'Actions'],\n optionstable: {\n\n headings: {\n DisciplinaryAction: 'Action',\n Description: 'Infraction',\n CorrectiveAction: 'Corrective Action',\n Actions: ''\n\n },\n sortIcon: {\n base: 'glyphicon',\n up: 'glyphicon-chevron-up',\n down: 'glyphicon-chevron-down'\n },\n\n perPage: 10,\n perPageValues: [5, 10, 25, 50, 100],\n sortable: ['Name', 'Description', 'CorrectiveAction', 'Severity', 'Date'],\n texts: {\n\n filterPlaceholder: 'Search...',\n limit: 'rows per page:',\n noResults: 'No matching records',\n\n }\n\n },\n personalId: '',\n disciplines: [],\n DisciplineUsers: [],\n DisciplineForm: {\n Date: '',\n PersonnelId: '',\n Severity: '',\n Implication: '',\n Description: '',\n CorrectiveAction: '',\n TargetDate: '',\n CompletionDate: '',\n CompletionVerified: '',\n SupervisorComments: '',\n EmployeeComments: '',\n role: '',\n DisciplinedBy: '',\n DisciplinaryActionId: ''\n\n },\n disActions: ['Coaching', 'Warning', 'Verbal', 'Written', 'Suspension', 'Final', 'Termination'],\n editDiscipline: false,\n modalTitle: '',\n dispBackup: [],\n severity: [{\n value: 'Coaching',\n label: 'Coaching'\n }, {\n value: 'Warning',\n label: 'Warning'\n }, {\n value: 'Verbal',\n label: 'Verbal'\n }, {\n value: 'Written',\n label: 'Written'\n }, {\n value: 'Suspension',\n label: 'Suspension'\n }, {\n value: 'Final',\n label: 'Final'\n },\n {\n value: 'Termination',\n label: 'Termination'\n }\n ],\n\n }\n },\n\n mounted() {\n\n this.personelId = this.$route.params.id\n\n let context = this\n this.GetDisciplinedByUsers()\n //this.GetDisciplinaryActions()\n this.$router.app.$on('add_kudos', (data) => {\n\n context.DisciplineForm = {\n Date: '',\n PersonnelId: '',\n Severity: '',\n Implication: '',\n Description: '',\n CorrectiveAction: '',\n TargetDate: '',\n CompletionDate: '',\n CompletionVerified: '',\n SupervisorComments: '',\n EmployeeComments: '',\n role: '',\n DisciplinedBy: '',\n DisciplinaryActionId: ''\n\n }\n if (context.$refs['DisciplineForm']) {\n context.$refs['DisciplineForm'].resetFields()\n }\n\n })\n this.$router.app.$on('Discipline_obj', (data) => {\n\n context.GetDisciplineById(data)\n\n })\n this.$router.app.$on('submit_disci', (data) => {\n\n context.submitForm(data)\n\n })\n\n this.$router.app.$on('update_disci', (data) => {\n\n context.EditDiscipline(data)\n\n })\n this.$router.app.$on('del_disci', (data) => {\n\n context.del(data)\n\n })\n\n\n },\n\n beforeDestroy() {\n this.$root.$off('update_disci')\n this.$root.$off('del_disci')\n this.$root.$off('submit_disci')\n this.$root.$off('Discipline_obj')\n\n },\n\n methods: {\n\n GetDisciplinaryActions() {\n let context = this\n loader.startLoader()\n service.GetDisciplinaryActions().then(function (response) {\n\n if (response && response != null) {\n context.disActions = response\n\n } else {\n\n context.disActions = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetDisciplinedByUsers() {\n let context = this\n loader.startLoader()\n service.GetDisciplinedByUsers().then(function (response) {\n\n if (response && response != null) {\n context.DisciplineUsers = response\n\n } else {\n\n context.DisciplineUsers = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n showDiscipline() {\n this.editDiscipline = false\n\n this.DisciplineForm = {\n Date: '',\n PersonnelId: '',\n Severity: '',\n Implication: '',\n Description: '',\n CorrectiveAction: '',\n TargetDate: '',\n CompletionDate: '',\n CompletionVerified: '',\n SupervisorComments: '',\n EmployeeComments: '',\n role: '',\n DisciplinedBy: '',\n DisciplinaryActionId: ''\n\n }\n this.resetForm('DisciplineForm')\n this.modalTitle = 'Create Discipline'\n\n $('#DForm').modal('show')\n\n },\n editcol(data) {\n //FG - FOOF - After Cert - First Release Security (7) - this method does not seem to be used\n alert(\"in editcol of discipline.controller.js - IS THIS USED???\")\n if(buttonType==\"view\") \n this.action=\"V\";\n else\n this.action=\"E\";\n alert(this.action) \n this.editDiscipline = true\n $('#DForm').modal('show')\n\n this.modalTitle = 'Edit Discipline'\n this.DisciplineForm = deepcopy(data.row)\n this.DisciplineForm.Severity = parseInt(data.row.DisciplinaryActionId)\n\n },\n cancelpopup() {\n\n this.DisciplineForm = {}\n\n },\n GetDisciplineById(id) {\n let context = this\n\n service.GetDisciplineById(id).then(function (response) {\n context.DisciplineForm = response\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n\n })\n\n },\n\n submitForm(formName) {\n\n this.$refs[formName].validate((valid) => {\n\n if (valid) {\n\n let context = this\n loader.startLoader()\n\n if (this.DisciplineForm['Date']) {\n this.DisciplineForm['Date'] = this.$moment(this.DisciplineForm['Date']).format('MM-DD-YYYY')\n }\n if (this.DisciplineForm['TargetDate']) {\n this.DisciplineForm['TargetDate'] = this.$moment(this.DisciplineForm['TargetDate']).format('MM-DD-YYYY')\n }\n\n if (this.DisciplineForm['CompletionDate']) {\n this.DisciplineForm['CompletionDate'] = this.$moment(this.DisciplineForm['CompletionDate']).format('MM-DD-YYYY')\n }\n\n this.DisciplineForm['PersonnelId'] = this.personelId\n\n service.AddDiscipline(this.DisciplineForm).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.$notify({\n title: 'Success',\n message: 'Successfully Created Discipline',\n type: 'success'\n })\n\n context.$router.app.$emit('action_done')\n loader.stopLoader()\n\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'DISCIPLINE -1 error while submit!!',\n\n type: 'error'\n\n })\n\n return false\n }\n })\n },\n\n del: function (data) {\n var ID = data\n let context = this\n context.$confirm('Are you sure you want to delete?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n\n loader.startLoader()\n service.DeleteDiscipline(ID).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n if (context.personnelID) {\n context.GetDiscipline()\n }\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Deleted Successfully',\n type: 'success'\n })\n\n context.$router.app.$emit('action_done')\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n }).catch(() => {\n\n })\n },\n\n EditDiscipline(formName) {\n\n this.$refs[formName].validate((valid) => {\n\n if (valid) {\n\n let context = this\n loader.startLoader()\n\n if (context.DisciplineForm['Date']) {\n context.DisciplineForm['Date'] = context.$moment(context.DisciplineForm['Date']).format('MM-DD-YYYY')\n }\n if (context.DisciplineForm['TargetDate']) {\n this.DisciplineForm['TargetDate'] = context.$moment(context.DisciplineForm['TargetDate']).format('MM-DD-YYYY')\n }\n\n if (context.DisciplineForm['CompletionDate']) {\n context.DisciplineForm['CompletionDate'] = context.$moment(context.DisciplineForm['CompletionDate']).format('MM-DD-YYYY')\n }\n\n context.DisciplineForm['PersonnelId'] = context.personelId\n\n service.UpdateDiscipline(context.DisciplineForm).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n\n context.$notify({\n\n title: 'Success',\n\n message: 'Successfully Updated',\n\n type: 'success'\n\n })\n\n context.$router.app.$emit('action_done')\n\n }, (error) => {\n\n loader.stopLoader()\n\n context.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'DISCIPLINE - 2 error while submit!!',\n\n type: 'error'\n\n })\n\n return false\n }\n })\n },\n resetForm(formName) {\n this.$refs[formName].resetFields()\n },\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/discipline/discipline.controller.js","export const GetDisciplineById = (personelid) => {\n\n return $.get('Personnel/GetDisciplineById?Id=' + personelid)\n\n}\nexport const GetDisciplinedByUsers = (personelid) => {\n\n return $.get('Personnel/GetDisciplinedByUsers')\n\n}\n\nexport const AddDiscipline = (model) => {\n return $.post('Personnel/AddDiscipline', model)\n}\nexport const UpdateDiscipline = (model) => {\n return $.post('Personnel/UpdateDiscipline', model)\n}\nexport const DeleteDiscipline = (DisciplineId) => {\n\n return $.post('Personnel/DeleteDiscipline?DisciplineId=' + DisciplineId)\n\n}\n\nexport const GetDisciplinaryActions = () => {\n\n return $.get('Personnel/GetDisciplinaryActions?IsActive=' + true)\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/discipline/discipline.service.js","export default {\n\n data () {\n return {\n stateName: '',\n\n }\n },\n mounted () {\n this.stateName = this.$route.name\n\n },\n watch: {\n '$route' (to, from) {\n this.stateName = to.name\n }\n },\n methods: {\n showabouthydroware() {\n //FG - FOOF - After Cert - First Release (5) - flipped the order of parms msg and ttl\n var optionsToUse = {\n title: \"About HydroWare\",\n message: \"Version: \" + this.$hydrowareCommonJS.Version\n }\n this.$hydrowareCommonJS.displayPopupMessage(this, optionsToUse)\n /* CODE BELOW IS PRIOR TO CERTIFICATION\n this.$hydrowareCommonJS.displayPopupMessage(\n this, \n \"About HydroWare\", //TITLE\n \"Version: \" + this.$hydrowareCommonJS.Version \n );\n */\n }\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/footer/footer.controller.js","import * as service from './header.service'\nexport default {\n\n data() {\n return {\n stateName: '',\n userName: '',\n currentUser: '',\n Heading: '',\n headingFullText: '',\n burgerrotate: true,\n isMob: false,\n imgPath: '',\n isdisablebutton: true,\n Ispasswordok: false,\n ResetForm: {\n OldPassword: '',\n NewPassword: '',\n ConfirmPassword: '',\n\n },\n dLocation: '',\n dPoolName: ''\n }\n },\n\n mounted() {\n\n let context = this\n\n //FG - FOOF - Apr 5 2019\n // this.widthCalculator()\n this.locPoolSe()\n\n $(window).resize(function () {\n //context.widthCalculator()\n })\n this.stateName = this.$route.name \n \n this.Heading = this.$route.matched ? this.$route.matched['0'].props.default.default.name : ''\n if(this.stateName == \"dashboard\") this.Heading = \"Dashboard\"; //FG - FOOF - Jan 23 2019\n \n //FG - FOOF - Jan 23 2019\n this.$router.app.$on('emittedlocation_obj', (data) => {\n context.dLocation = data.LocationName\n //FG - FOOF - After Cert - First Release (4)\n //I reinstated the facility and venue name in the heading and added the code below\n //so there would not be a venue name displayed when the chosen facility does not\n //have a venue.\n if(data.PoolId != null && data.PoolId.LocationId != data.LocationId) {\n context.dPoolName = \"No Venue\"\n }\n })\n this.$router.app.$on('emittedlocation', (data) => {\n //alert(\"good by\")\n context.dLocation = data\n context.buildHeaderTextFull(context.stateName, context.dLocation, context.$data.dPoolName); //FG - FOOF - 20200806-FG-0001\n })\n\n //FG - FOOF - Apr 5 2019\n this.$router.app.$on('emittedpool_obj', (data) => {\n context.dPoolName = data.PoolName ? data.PoolName : ''\n context.buildHeaderTextFull(context.stateName, context.$data.dLocation, context.dPoolName); //FG - FOOF - 20200806-FG-0001\n })\n \n this.userName = window.userName ? window.userName : ''\n this.currentUser = authDetails.userName\n this.$router.app.$on('reloadAuth', (data) => {\n this.currentUser = authDetails.userName\n authDetails.ImageName ? context.imgPath = baseUrl + 'Documents/ProfilePics/' + authDetails.ImageName : context.imgPath = ''\n context.userName = window.userName ? window.userName : ''\n\n })\n\n if (this.stateName != 'login' && this.stateName != 'resetpassword' && this.stateName != 'signup' && this.stateName != 'signupconfirm') {\n authDetails.ImageName ? this.imgPath = baseUrl + 'Documents/ProfilePics/' + authDetails.ImageName : this.imgPath = ''\n }\n\n },\n watch: {\n '$route' (to, from) {\n this.Heading = to.matched['0'].props.default.default.name\n this.stateName = to.name\n if(this.stateName == 'dashboard') this.Heading = \"Dashboard\"\n //this.Heading = \"sheeet\" + this.stateName\n\n this.userName = window.userName ? window.userName : ''\n\n if (authDetails) {\n this.currentUser = authDetails.userName\n authDetails.ImageName ? this.imgPath = baseUrl + 'Documents/ProfilePics/' + authDetails.ImageName : this.imgPath = ''\n }\n\n //FG - FOOF - 20200806-FG-0001\n this.buildHeaderTextFull(this.$data.stateName, this.$data.dLocation, this.$data.dPoolName);\n\n },\n ResetForm: {\n handler: function (newValue) {\n if (newValue.NewPassword.length >= 8 && newValue.NewPassword.match(/[!@#$%^&*(){}[\\]<>?/|.:;_-]/) && newValue.NewPassword.match(/^(?=.*[A-Z])/) && newValue.NewPassword == newValue.ConfirmPassword) {\n\n this.isdisablebutton = false;\n } else {\n this.isdisablebutton = true;\n }\n if (newValue.NewPassword.length >= 8 && newValue.NewPassword.match(/[!@#$%^&*(){}[\\]<>?/|.:;_-]/) && newValue.NewPassword.match(/^(?=.*[A-Z])/)) {\n\n this.Ispasswordok = false;\n } else {\n this.Ispasswordok = true;\n }\n },\n deep: true\n },\n burgerrotate() {\n\n this.$router.app.$emit('BurgerRotated', this.burgerrotate)\n\n }\n },\n\n\n methods: {\n //FG - FOOF - 20200806-FG-0001\n // I modified the code such that the page heading will only display Location name and Pool name along with the page title \n // (if they are available) when the dashboard is being shown. Otherwise it will display only the page title.\n buildHeaderTextFull(stateName, locName, poolName) {\n if(stateName == \"dashboard\") {\n var tempHead = this.$data.Heading;\n /*\n FG - FOOF - Change for certification\n >>>>>>>>>>>>FG - FOOF - NEED TO FIX AFTER CERTIFICATION <<<<<<<<<\n NOTE: THIS CODE IS COMMENTED OUT UNTIL AFTER CERTIFICATION\n BECAUSE IT DOES NOT PROPERLY SET THE LOC/POOL IN THE HEADER\n if(this.$data.dLocation != null && this.$data.dLocation != \"undefined\" && this.$data.dLocation.length != 0) {\n tempHead = tempHead + \" - \" + this.$data.dLocation;\n if(this.$data.dPoolName != null && this.$data.dPoolName != \"undefinded\" && this.$data.dPoolName.length != 0)\n tempHead = tempHead + \" - \" + this.$data.dPoolName;\n } \n */\n this.$data.headingFullText = tempHead;\n }\n else\n this.$data.headingFullText = this.$data.Heading;\n },\n\n viewAlerts() {\n $('#emailAlert').modal('show')\n },\n\n notificationClose() {\n this.$router.app.$emit('notification_close')\n },\n toggleCurrentPassword() {\n\n if (!this.passClicked) {\n $('#passwordCurrent').children().attr('type', 'text')\n this.passClicked = true\n } else {\n $('#passwordCurrent').children().attr('type', 'password')\n this.passClicked = false\n }\n },\n togglePassword() {\n\n if (!this.passClicked) {\n $('#password').children().attr('type', 'text')\n this.passClicked = true\n } else {\n $('#password').children().attr('type', 'password')\n this.passClicked = false\n }\n },\n togglePasswordConfirm() {\n\n if (!this.passClickedConfirm) {\n $('#passwordconfirm').children().attr('type', 'text')\n this.passClickedConfirm = true\n } else {\n $('#passwordconfirm').children().attr('type', 'password')\n this.passClickedConfirm = false\n }\n\n },\n submitchangePassword(model) {\n let context = this\n this.isdisablebutton = true\n service.ChangePassword(model).then(function (response) {\n context.isdisablebutton = false\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Password changed successfully',\n type: 'success'\n })\n $('#ChangePasswordModel').modal('hide')\n }).catch((error) => {\n context.isdisablebutton = false\n var message = error.responseText\n var parsed = JSON.parse(message)\n\n context.$notify.error({\n title: 'Error',\n message: parsed.Message\n })\n context.buttonclicked = true\n\n loader.stopLoader()\n $('.alert').show()\n })\n\n },\n\n changepassword() {\n\n $('#ChangePasswordModel').modal('show')\n this.ResetForm = {\n OldPassword: '',\n NewPassword: '',\n ConfirmPassword: ''\n }\n },\n\n myprofile() {\n\n this.$router.push('/UpdatePersonnel/' + authDetails.PersonnelId)\n },\n\n locPoolSe() {\n $('ul.dropdown-menu.mega-dropdown-menu').on('click', function (event) {\n\n event.stopPropagation()\n })\n },\n\n widthCalculator() {\n\n let winwidth = $(window).width()\n\n if (winwidth < 992) {\n this.isMob = true\n this.burgerrotate = false\n } else {\n this.isMob = false\n this.burgerrotate = true\n }\n\n },\n\n logout: function () {\n\n this.$confirm('Are you sure you want to logout ?', 'Log Out', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n\n this.$localStorage.remove('authentication')\n this.$localStorage.remove('initlocation')\n this.$localStorage.remove('initialPool') //FG - After Cert - First Release - for fix of pull in (Feb 19 2021)\n window.globallocid = null //<--??? WHY DO WE NEED THIS AND THE initlocation (which seems to be used as current choice of location)\n this.$router.push('/login')\n\n }).catch(() => {\n\n })\n\n }\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/header/header.controller.js","\n// api service calls should be written here (Service ajax calls are managed using Using Axios Library)\n\n/*Example:\n export const fetchPosts = () => {\n return axios.get(window.baseUrl + '/users');\n }*/\n\n\nexport const ChangePassword=(model)=>{\n\n return $.post('Account/ChangePassword', model)\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/header/header.service.js","export const startLoader = (message) => {\n //Loading\n let msg = message ? message : ''\n let load = `\n`\n $('body').append(load);\n}\n\n/*\n\n \n\n \n */\n\nexport const stopLoader = () => {\n$('.bowl').remove();\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/loader/loader.js","export const startTooltip = (time) => {\n time = time ? time : 0\n\n //FG - ADDED LINE BELOW WHEN TABLES WERE MADE TO BE RESPONSIVE\n // WHEN DATA IN v-client-tables CHANGES FORMAT (i.e. data from multiple\n // columns are combined into a one column) SOME COLUMNS (i.e. ACTIONS)\n // would display a tooltip when it should not. This cures that.\n // BUT every page that contains a table on which this might happen\n // MUST have the following code in it.\n /*\n created() {\n this.$hydrowareCommonJS.handleTooltips(\"create\");\n },\n\n destroyed() {\n this.$hydrowareCommonJS.handleTooltips(\"destroy\");\n },\n */\n $('.tooltips').tooltipster('destroy')\n\n setTimeout(function () {\n\n /*$('table td').append('')*/\n $('table td').removeClass('tooltips')\n $('table td').addClass('tooltips')\n\n\n // $('#calendar .tooltips').remove()\n $('#calendar td').removeClass('tooltips')\n $('#calendar td').removeClass('tooltipstered')\n $('#calender_table td').removeClass('tooltips')\n\n\n\n //$('table td').addClass()\n $('.tooltips').each(function () {\n\n if ($(this).find('.fc-head').length < 1) {\n\n var x = ''\n //$(this).text().replace(/\\s/g,\"\")\n if ($(this).find('button').length < 1 && $(this).find('.el-switch').length < 1) {\n if (x) {\n\n\n // $(this).find('.tooltips').attr('title', x)\n $(this).attr('data-tooltip-content', x)\n }\n\n }\n }\n })\n\n $('.tooltips').tooltipster({\n contentAsHTML: 'true',\n maxWidth: '300',\n })\n \n $('.tooltips').hover(function () {\n\n if ($(this).find('button').length < 1 && $(this).find('.el-switch').length < 1) {\n var ts = $(this).text().replace(/\\s/g, '')\n if (ts) {\n\n $(this).tooltipster('content', $(this).text())\n }\n\n }\n })\n }, 600)\n\n $('.page-link').click(function () {\n $('table td').addClass('tooltips')\n setTimeout(function () {\n\n $('#calendar td').removeClass('tooltips')\n $('#calendar td').removeClass('tooltipstered')\n $('#calender_table td').removeClass('tooltips')\n\n\n //$('table td').addClass()\n $('.tooltips').each(function () {\n\n if ($(this).find('.fc-head').length < 1) {\n\n var x = $(this).text().replace(/\\s/g, '')\n\n if ($(this).find('button').length < 1 && $(this).find('.el-switch').length < 1) {\n if (x) {\n\n\n // $(this).find('.tooltips').attr('title', x)\n $(this).attr('data-tooltip-content', x)\n }\n\n }\n }\n })\n $('.tooltips').tooltipster({\n contentAsHTML: 'true',\n maxWidth: '300'\n /* side: 'left',*/\n })\n $('.tooltips').hover(function () {\n if ($(this).find('button').length < 1 && $(this).find('.el-switch').length < 1) {\n var ts = $(this).text().replace(/\\s/g, '')\n if (ts) {\n\n $(this).tooltipster('content', $(this).text())\n }\n\n }\n })\n\n }, 100)\n\n })\n\n setTimeout(function () {\n $('select').change(function () {\n\n setTimeout(function () {\n $('table td').addClass('tooltips')\n\n $('#calendar td').removeClass('tooltips')\n $('#calendar td').removeClass('tooltipstered')\n $('#calender_table td').removeClass('tooltips')\n\n\n //$('table td').addClass()\n $('.tooltips').each(function () {\n\n if ($(this).find('.fc-head').length < 1) {\n\n var x = $(this).text().replace(/\\s/g, '')\n\n if ($(this).find('button').length < 1 && $(this).find('.el-switch').length < 1) {\n if (x) {\n\n\n // $(this).find('.tooltips').attr('title', x)\n $(this).attr('data-tooltip-content', x)\n }\n\n }\n }\n })\n $('.tooltips').tooltipster({\n contentAsHTML: 'true',\n maxWidth: '300'\n /* side: 'left',*/\n })\n $('.tooltips').hover(function () {\n if ($(this).find('button').length < 1 && $(this).find('.el-switch').length < 1) {\n var ts = $(this).text().replace(/\\s/g, '')\n if (ts) {\n\n $(this).tooltipster('content', $(this).text())\n }\n\n }\n })\n\n }, 500)\n })\n\n }, 100)\n\n\n\n\n\n\n setTimeout(function () {\n $('.VueTables__search input').keyup(function () {\n\n setTimeout(function () {\n $('table td').addClass('tooltips')\n\n $('#calendar td').removeClass('tooltips')\n $('#calendar td').removeClass('tooltipstered')\n $('#calender_table td').removeClass('tooltips')\n\n\n //$('table td').addClass()\n $('.tooltips').each(function () {\n\n if ($(this).find('.fc-head').length < 1) {\n\n var x = $(this).text().replace(/\\s/g, '')\n\n if ($(this).find('button').length < 1 && $(this).find('.el-switch').length < 1) {\n if (x) {\n\n\n // $(this).find('.tooltips').attr('title', x)\n $(this).attr('data-tooltip-content', x)\n }\n\n }\n }\n })\n $('.tooltips').tooltipster({\n contentAsHTML: 'true',\n maxWidth: '300'\n /* side: 'left',*/\n })\n $('.tooltips').hover(function () {\n if ($(this).find('button').length < 1 && $(this).find('.el-switch').length < 1) {\n var ts = $(this).text().replace(/\\s/g, '')\n if (ts) {\n\n $(this).tooltipster('content', $(this).text())\n }\n\n }\n })\n\n }, 500)\n })\n\n }, 100)\n\n\n setTimeout(function () {\n $('.VueTables__limit select').change(function () {\n\n setTimeout(function () {\n $('table td').addClass('tooltips')\n\n $('#calendar td').removeClass('tooltips')\n $('#calendar td').removeClass('tooltipstered')\n $('#calender_table td').removeClass('tooltips')\n\n //$('table td').addClass()\n $('.tooltips').each(function () {\n\n if ($(this).find('.fc-head').length < 1) {\n\n var x = $(this).text().replace(/\\s/g, '')\n\n if ($(this).find('button').length < 1 && $(this).find('.el-switch').length < 1) {\n if (x) {\n\n\n // $(this).find('.tooltips').attr('title', x)\n $(this).attr('data-tooltip-content', x)\n }\n\n }\n }\n })\n $('.tooltips').tooltipster({\n contentAsHTML: 'true',\n maxWidth: '300'\n /* side: 'left',*/\n })\n $('.tooltips').hover(function () {\n if ($(this).find('button').length < 1 && $(this).find('.el-switch').length < 1) {\n var ts = $(this).text().replace(/\\s/g, '')\n if (ts) {\n\n $(this).tooltipster('content', $(this).text())\n }\n\n }\n })\n\n }, 500)\n })\n\n }, 100)\n\n\n\n\n\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/loader/tooltip.js","export default {\r\n\r\n data() {\r\n return {\r\n tc: false,\r\n\r\n }\r\n },\r\n props: ['value'],\r\n mounted() {\r\n let context = this\r\n\r\n $('.pa').focus(function () {\r\n\r\n\r\n let ps = `\r\n \r\n - At least one Upper Case
\r\n - At Least one Special Character
\r\n - At least 8 characters
\r\n \r\n `\r\n $(this).parent().last().append(ps)\r\n\r\n let sent = $(this).val();\r\n\r\n context.initializevalidator(sent);\r\n\r\n\r\n $(this).bind('input', function () {\r\n\r\n let sent = $(this).val()\r\n \r\n \r\n context.initializevalidator(sent);\r\n\r\n\r\n\r\n })\r\n\r\n\r\n })\r\n\r\n $('.pa').focusout(function () {\r\n\r\n $('#vs').remove();\r\n\r\n\r\n });\r\n\r\n\r\n },\r\n\r\n methods: {\r\n\r\n initializevalidator(sent) {\r\n\r\n if (sent.length >= 8) {\r\n $('.password-validator').find('li:nth-child(3) .symb').html('')\r\n $('.password-validator').find('li:nth-child(3)').css('color', 'rgb(18, 255, 233)')\r\n }\r\n else {\r\n $('.password-validator').find('li:nth-child(3) .symb').html('')\r\n $('.password-validator').find('li:nth-child(3)').css('color', 'white')\r\n }\r\n\r\n // Special character check\r\n\r\n if (sent.match(/[!@#$%^&*(){}[\\]<>?/|.:;_-]/)) {\r\n\r\n $('.password-validator').find('li:nth-child(2) .symb').html('')\r\n $('.password-validator').find('li:nth-child(2)').css('color', 'rgb(18, 255, 233)')\r\n }\r\n else {\r\n $('.password-validator').find('li:nth-child(2) .symb').html('')\r\n $('.password-validator').find('li:nth-child(2)').css('color', 'white')\r\n\r\n }\r\n\r\n if (sent.match(/^(?=.*[A-Z])/)) {\r\n\r\n $('.password-validator').find('li:nth-child(1) .symb').html('')\r\n $('.password-validator').find('li:nth-child(1)').css('color', 'rgb(18, 255, 233)')\r\n }\r\n else {\r\n $('.password-validator').find('li:nth-child(1) .symb').html('')\r\n $('.password-validator').find('li:nth-child(1)').css('color', 'white')\r\n\r\n }\r\n\r\n \r\n\r\n }\r\n\r\n\r\n }\r\n\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/password-validator/PasswordValidator.js","export default {\n\n data() {\n return {\n tempIds: [],\n tempIdsl: [],\n st: [],\n lt: [],\n check: '',\n\n }\n\n },\n props: ['source', 'heading', 'keys', 'value'],\n watch: {\n value: function() {\n this.watchArray(this.value, this.lt)\n\n },\n\n lt: function() {\n this.watchArray(this.lt, this.value)\n }\n\n },\n mounted() {\n let context = this\n\n this.source.map(function(item) {\n\n context.lt.push(item)\n })\n this.watchArray(this.value, this.lt)\n },\n\n methods: {\n remove() {\n this.value.splice(0, 1)\n\n },\n pushLeft() {\n let context = this\n this.tempIdsl.map(function(item, index) {\n context.lt.push(item)\n\n })\n // $('.el-checkbox__input').removeClass('is-checked')\n // $('.el-checkbox__input').addClass('is-focus')\n $('.check').prop('checked', false);\n this.temspIdsl = []\n\n\n },\n pushRight() {\n let context = this\n this.tempIds.map(function(item, index) {\n context.value.push(item)\n })\n $('.check').prop('checked', false);\n this.tempIds = []\n\n },\n tempPushl(item1) {\n\n let context = this\n\n\n var removeIndex = context.tempIdsl.map(function(item) {\n return item.Id;\n }).indexOf(item1.Id);\n\n if (removeIndex < 0) {\n this.tempIdsl.push(item1)\n } else {\n context.tempIdsl.splice(removeIndex, 1);\n }\n\n\n\n },\n tempPush(item1) {\n\n let context = this\n\n var removeIndex = context.tempIds.map(function(item) {\n return item.Id;\n }).indexOf(item1.Id);\n\n if (removeIndex < 0) {\n this.tempIds.push(item1)\n } else {\n context.tempIds.splice(removeIndex, 1);\n }\n\n\n\n },\n\n watchArray(val1, val2) {\n let context = this\n val1.map(function(item1, index) {\n var removeIndex = val2.map(function(item) {\n return item.Id;\n }).indexOf(item1.Id);\n if (removeIndex > -1) {\n val2.splice(removeIndex, 1);\n\n }\n\n\n })\n\n\n\n }\n\n\n },\n\n\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/components/transfer/transfer.controller.js","export default {\n //Constants\n showInnerPageHeading: true,\n Version: '2.0.3 Development',\n SortIcons: {base: 'glyphicon', up: 'glyphicon-chevron-up', down: 'glyphicon-chevron-down'},\n SearchFieldPlaceHolder: \"Filter...\",\n hydrowareTableSkin: \"hydroware-table VueTables__table table table-bordered table-hover\",\n hydrowareMsgForNoData: \"Nothing to display\",\n hydrowareTimePickerFormat: \"hh:mm a\",\n hydrowareTimePickerPlaceholder: \"Pick a time\",\n\n //function below is simply for testing - sometimes I (FG) just need to know if I can get to a function in this file\n testing(msg) {\n if(msg == null)\n alert (\"THIS IS A TEST\")\n else\n alert(\"MSG: \" + msg)\n },\n\n //Helper Functions --------------------------------------------------------------------------------------\n /********************************************************************************************************\n *********************************************************************************************************\n ** FG - FOOF - After Cert - First Release (5) - instead of msg and ttl as parms I am now using options **\n ** NOTE: any place in the code that had been calling on this function has been modified **\n ** ALSO NOTE: I removed the old code because all of the commented out code started to become **\n ** unwieldy. That old code can be found in any from the backups from **\n ** Version Foof_Latest - 1stRelease_Changes_04.80_StillFurtherAlong_DeleteDialogs **\n ** and prior. **\n *********************************************************************************************************\n *********************************************************************************************************/\n\n /********************************************************************************************************\n *********************************************************************************************************\n ** WORK Functions below are called upon by the convenience functions\n *********************************************************************************************************\n ********************************************************************************************************/\n mergeOptions(defaultOptions, overrideWithTheseOptions) {\n return $.extend({}, defaultOptions, (overrideWithTheseOptions || {}));\n },\n /********************************************************************************************************\n *********************************************************************************************************\n ** WORK Functions below do the actual work of displaying messages in either a popup or a slide in \n ** notification and they are called on by helper methods down further in this code. **\n *********************************************************************************************************\n *********************************************************************************************************/\n //A popup that displays a message and a single button\n //This function was here in the code prior to certification but I modified it to use options \n //instead of separate parms for title, message, etc. I also added the ability to set a flag \n //so and HTML string can be passed in.\n displayPopupMessage(aVueComponent,options) {\n //when call to this function is made anonymously \"this\" is undefined/null so the aVueComponent can be used to get this script\n var context = this ? this : aVueComponent.$hydrowareCommonJS;\n var defaultOptions = {title: \"Information\", message: \"A bit of information for you\", useHTML: true, confirmButtonText: 'OK'}\n var optionsToUse = context.mergeOptions(defaultOptions,options)\n //aVueComponent.$msgbox({title: optionsToUse.title, message: optionsToUse.message, confirmButtonText: optionsToUse.confirmButtonText})\n aVueComponent.$msgbox(optionsToUse);\n },\n\n //FG - FOOF - After Cert - First Release Security\n displayHydrowareRestrictedMessage(aVueComponent,options) {\n var defaultOptions = {title: \"SECURITY WARNING\", \n message: 'RESTRICTED RESTRICTED RESTRICTED', \n type: 'warning', \n customClass:'hydrowareRestricted'}\n var optionsToUse = $.extend({}, defaultOptions, (options || {})); \n this.displayPopupMessage(aVueComponent,optionsToUse) \n },\n displayHydrowareRestrictedMessageIfApplicable(aResponse,aVueComponent,options) {\n if(aVueComponent.$hydrowareSecurityJS.isDataRestricted(aResponse)) {\n loader.stopLoader();\n this.displayHydrowareRestrictedMessage(aVueComponent,options) \n return true;\n }\n },\n //\n\n //A popup that displays a confirm dialog (two buttons), I added this code so all of the confirms\n //can go thru the same code\n displayConfirmPopup(aVueComponent,options,okCallback,cancelCallback) {\n //when call to this function is made anonymously \"this\" is undefined/null so the aVueComponent can be used to get this script\n var context = this ? this : aVueComponent.$hydrowareCommonJS;\n var defaultOptions = {\n title: \"Please Confirm\",\n message: \"Arrrre you sure you want to complete this action ?\",\n useHTML: true,\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }\n var optionsToUse = context.mergeOptions(defaultOptions,options)\n var okCallback = okCallback ? okCallback : context.displayPopupOKCallbackNotSpecified.bind(null,aVueComponent);\n var cancelCallback = cancelCallback ? cancelCallback : context.displayPopupActionCancelled.bind(null,aVueComponent);\n return aVueComponent.$confirm(\n optionsToUse.message,\n optionsToUse.title, \n {\n dangerouslyUseHTMLString: optionsToUse.useHTML,\n confirmButtonText: optionsToUse.confirmButtonText, \n cancelButtonText: optionsToUse.cancelButtonText,\n type: optionsToUse.type\n }\n )\n .then(\n ok=>okCallback(),\n ng=>cancelCallback()\n )\n },\n //A slide in that displays a message, I added this code so all of the notify(s)\n //can go thru the same code\n displayNotification(objectFromUser,options) {\n var defaultOptions = {title: \"Notification\", message: 'You have been notified', type: 'success'}\n var optionsToUse = $.extend({}, defaultOptions, (options || {}));\n objectFromUser.$notify({title: optionsToUse.title, message: optionsToUse.message, type: optionsToUse.type})\n },\n /********************************************************************************************************\n *********************************************************************************************************\n ** DEFAULT Functions below display default messages when specific callbacks are not specified at the time \n ** the methods above (those that actually display messages) are run/are called upon **\n *********************************************************************************************************\n *********************************************************************************************************/\n //Function below is called by default if no \"OK\" callback is specified\n //NOTE: IF THIS POPS UP THEN IN ALL LIKELYHOOD SOMEONE WROTE BAD CODE\n displayPopupOKCallbackNotSpecified(aVueComponent,options) {\n //when call to this function is made anonymously \"this\" is undefined/null so the aVueComponent can be used to get this script\n var context = this ? this : aVueComponent.$hydrowareCommonJS;\n var defaultOptions = {title: \"No Action\", message: \"No Action Specified\"}\n return context.displayPopupMessage(aVueComponent, context.mergeOptions(defaultOptions,options))\n },\n //Function below is called by default if no \"Cancel\" callback is specified\n displayPopupActionCancelled(aVueComponent,options) {\n //when call to this function is made anonymously \"this\" is undefined/null so the aVueComponent can be used to get this script\n var context = this ? this : aVueComponent.$hydrowareCommonJS;\n var defaultOptions = {title: \"Cancelled\", message: \"Action Cancelled.\"}\n return context.displayPopupMessage(aVueComponent, context.mergeOptions(defaultOptions,options))\n },\n \n /********************************************************************************************************\n *********************************************************************************************************\n ** CONVENIENCE functions AND the default functions that they use when callbacks are not specified appear \n ** below.\n ** They should be used to display specific types of confirmations and notifies **\n *********************************************************************************************************\n ********************************************************************************************************/\n //DELETE CONFIRMATION - SHOULD BE USED TO DISPLAY A DELETE CONFIRMATION POPUP\n displayConfirmDeletePopup(aVueComponent,options,okCallback,cancelCallback) {\n var context = this ? this : aVueComponent.$hydrowareCommonJS; //when call is made anonymously the aVueComponent can be used to get this script\n var defaultOptions = {title: \"Confirm Delete\", message: \"Are you sure you want to delete ?\"}\n var cancelCallback = cancelCallback ? cancelCallback : context.displayPopupNoDelete.bind(null,aVueComponent);\n context.displayConfirmPopup(aVueComponent, context.mergeOptions(defaultOptions,options),okCallback,cancelCallback)\n },\n //DELETE CONFIRMATION - DEFAULT WHEN A CANCEL CALLBACK IS NOT SPECIFIED\n displayPopupNoDelete(aVueComponent,options) {\n var context = this ? this : aVueComponent.$hydrowareCommonJS;\n var defaultOptions = {title: \"Delete Cancelled\", message: \"The delete was cancelled.\"}\n return context.displayPopupMessage(aVueComponent, context.mergeOptions(defaultOptions,options))\n },\n //UPDATE CONFIRMATION - SHOULD BE USED TO DISPLAY AN UPDATE CONFIRMATION POPUP\n displayConfirmUploadPopup(aVueComponent,options,okCallback,cancelCallback) {\n var context = this ? this : aVueComponent.$hydrowareCommonJS; //when call is made anonymously the aVueComponent can be used to get this script\n var defaultOptions = {title: \"Confirm Upload\", message: \"Are you sure you want to upload ?\"}\n var cancelCallback = cancelCallback ? cancelCallback : context.displayPopupNoUpload.bind(null,aVueComponent);\n context.displayConfirmPopup(aVueComponent, context.mergeOptions(defaultOptions,options),okCallback,cancelCallback)\n },\n //UPDATE CONFIRMATION - DEFAULT WHEN CANCEL CALLBACK IS NOT SPECIFIED\n displayPopupNoUpload(aVueComponent,options) {\n var context = this ? this : aVueComponent.$hydrowareCommonJS; //when call is made anonymously the aVueComponent can be used to get this script\n var defaultOptions = {title: \"Upload Cancelled\", message: \"The upload was cancelled.\"}\n return context.displayPopupMessage(aVueComponent, context.mergeOptions(defaultOptions,options))\n },\n\n //NOTIFY CONVENIENCE METHODS BELOW SHOULD BE USED TO DISPLAY NOTIFY SLIDE IN MESSAGES\n notifyError(objectFromUser,options) {\n var defaultOptions = {title: \"Error\", message: 'An error occurred', type: 'error'}\n this.displayNotification(objectFromUser,this.mergeOptions(defaultOptions,options));\n },\n notifyDeleteSuccess(objectFromUser,options) {\n var defaultOptions = {title: \"Deleted\",message: 'Deleted Successfully'}\n this.displayNotification(objectFromUser,this.mergeOptions(defaultOptions,options));\n },\n notifyAddSuccess(objectFromUser,options) {\n var defaultOptions = {title: \"Added\",message: 'Added Successfully'}\n this.displayNotification(objectFromUser,this.mergeOptions(defaultOptions,options));\n },\n notifyUpdateSuccess(objectFromUser,options) {\n var defaultOptions = {title: \"Updated\", message: 'Updated Successfully'}\n this.displayNotification(objectFromUser,this.mergeOptions(defaultOptions,options));\n },\n notifyUploadSuccess(objectFromUser,options) {\n var defaultOptions = {title: \"Uploaded\", message: 'Uploaded Successfully'}\n this.displayNotification(objectFromUser,this.mergeOptions(defaultOptions,options));\n },\n //FG - FOOF - After Cert - First Release (5) - ABOVE\n //*****************************************************************************************\n //*****************************************************************************************\n\n\n handleTooltips(createOrDestroy) {\n var giveItSomeTimeMilliseconds = 600;\n if(\"create\")\n window.addEventListener(\"resize\", function(){setTimeout(tooltip.startTooltip(50),giveItSomeTimeMilliseconds)})\n else\n window.removeEventListener(\"resize\", function(){setTimeout(tooltip.startTooltip(50),giveItSomeTimeMilliseconds)})\n },\n\n\n //Data masking for data entry\n maskValue(el, aMask) {\n if ( $(el).is( \"input\" ) ) {\n $(el).mask(aMask)\n }\n else {\n var inputEls = $(el).find('input');\n if(inputEls) {\n $(inputEls[0]).mask(aMask)\n }\n }\n },\n\n\n //Edit Functions\n // The edit function accepts \n // the value to be edited\n // \n // The edit functions return an object as follows:\n // OK: a boolean to indicate if the edit passed (true)\n // or failed (false)\n // DETAILS: an object as follows:\n // MSG: a message returned from the edit function \n // other key values pairs different for each function\n //isANumber accepts a value and returns true or false to indicate\n //if that value is a number\n isANumber(val) {\n var rtnVal = {\"OK\": true, \"DETAILS\":{\"MSG\":null}}\n rtnVal.OK=!isNaN(parseFloat(val)) && !isNaN(val - 0)\n if(!rtnVal.OK) {\n rtnVal.DETAILS.MSG=\"Must be a number\";\n } \n return rtnVal;\n },\n //are there too many decimal positions in the reading value\n // pass into the edit function: \n // value to edit\n // max number of dec places\n // find out if the value (val) has no more than numberOfDecPlaces significant digits after\n // the decimal point\n // The FORMATTED_VALUE returned will be the value with a decimal point and maxNumberOfDecPlaces digits\n checkNumberOfDecimalPlaces(val,maxNumberOfDecPlaces) {\n //If the value passed in isn't a number then we don't continue to check dec. places\n var rtnVal = this.isANumber(val)\n if(rtnVal.OK==false) {\n rtnVal.DETAILS.FORMATTED_VALUE=\"\";\n return rtnVal;\n }\n var val = val.trim()\n //If we get to this point then the val is a number\n rtnVal = {\"OK\": true, \"DETAILS\":{\"MSG\":null,\"FORMATTED_VALUE\":val}}\n\n //keep a hold of \"this\" as context so its available in things like if stmts\n let context = this\n \n //split val at the dec point\n var beforeAndAfterDecPoint = val.split('.')\n\n //start to build up the FORMATTED_VALUE that will be returned\n // we have everthing before the dec. point\n rtnVal.DETAILS.FORMATTED_VALUE = beforeAndAfterDecPoint[0]\n\n //If there are no digits after the dec point and the max number of dec places is zero\n //then we are done\n if(maxNumberOfDecPlaces < 1 && beforeAndAfterDecPoint.length < 2)\n return rtnVal;\n\n //If we reach this point then there should be at least one digit after the dec. point\n //so we concatenate the dec. point onto the FORMATTED_VALUE that is returned\n rtnVal.DETAILS.FORMATTED_VALUE += '.'\n\n //If the value being checked has no dec. point or no digits after the dec. point then we are OK\n //and we simply add the proper number of zeros after the dec. point to the FORMATTED_VALUE\n //that we return\n if(beforeAndAfterDecPoint.length<2) {\n rtnVal.DETAILS.FORMATTED_VALUE += ('0'.repeat(maxNumberOfDecPlaces))\n return rtnVal; //OK - there are no dec places\n }\n\n //If we reach this point then there are digits after a decimal point\n var afterDecPoint = beforeAndAfterDecPoint[1]\n\n //If there are exactly the same number of digits after the dec. point as maxNumberOfDecPlaces\n //then we finish creating the FORMATTED_VALUE that will be returned and we are OK\n if(afterDecPoint.length == maxNumberOfDecPlaces) {\n rtnVal.DETAILS.FORMATTED_VALUE += afterDecPoint\n return rtnVal; //OK - exactly the right number of dec. places\n }\n\n //if there are less than maxNumberOfDecPlaces then I pad the FORMATTED_VALUE that will be\n //returned with zeros and its OK\n if(afterDecPoint.length < maxNumberOfDecPlaces) {\n var numOfZerosNeeded = maxNumberOfDecPlaces - afterDecPoint.length;\n rtnVal.DETAILS.FORMATTED_VALUE += (\"\" + afterDecPoint + ('0'.repeat(numOfZerosNeeded)))\n return rtnVal;\n }\n\n //If we reach this point then there are more digits after the decimal point than\n //maxNumberOfDecPlaces so we look to see if there are any non-zero digits after\n //the maxNumberOfDecPlaces \n \n //if the digits after the dec point are all zeros then add the proper number of zeros\n // to the FORMATTED_VALUE that is returned and we OK\n if(afterDecPoint == 0) {\n rtnVal.DETAILS.FORMATTED_VALUE += ('0'.repeat(maxNumberOfDecPlaces))\n return rtnVal;\n }\n \n //if we reach this point then the number of digits after the decimal point are not\n // all zeros \n //Split the digits after the dec point at the max number of digits\n var digitsUpToMax = afterDecPoint.slice(0,maxNumberOfDecPlaces); \n //Finish building the FORMATTED_VALUE that will be returned\n rtnVal.DETAILS.FORMATTED_VALUE += digitsUpToMax\n\n //If all the digits after maxNumberOfDecPlaces are zero then concatenate all the digits\n // up to the maxNumberOfDecDigit onto the FORMATTED_VALUE that will be returned and we OK\n var digitsAfterMax = parseInt(afterDecPoint.slice(maxNumberOfDecPlaces)); \n if(digitsAfterMax == 0) {\n return rtnVal;\n }\n\n //If we reach this point then there are too many significnt digits after the decimal point\n //so this edit fails. The FORMATTED_VALUE we return will be the original value up to the\n //maxNumberOfDecDigits.\n rtnVal.OK = false\n if(maxNumberOfDecPlaces == 0)\n rtnVal.DETAILS.MSG = \"No decimal places allowed\"\n else\n rtnVal.DETAILS.MSG = \"Only \" + maxNumberOfDecPlaces + \" decimal places allowed\"\n\n return rtnVal; \n }\n}\n\n\n\n\n// WEBPACK FOOTER //\n// ./src/hydrowareCommonJS.js","export default {//default was const... changed to \"default\" when this became a global mixin\n methods: {\n //FG - FIX Nov 11, 2018 - BELOW - fix for tabbing after choosing date\n hydroware_picker_hasBlurred(aComponent) {\n aComponent.focus();\n aComponent.hidePicker();\n }\n }\n}\n\n \n\n\n// WEBPACK FOOTER //\n// ./src/hydrowareCommonMixins.js","import { Alert } from \"element-ui\";\n\n/********************************************************************************************\n * FG - FOOF - After Cert - First Release (7) - First Release Security\n * I created this file to do the security checks for the first release\n * *****************************************************************************************/\nexport default {\n //aaaaaaa - FOR SECURITY - NEW SECURITY\n //The data returned from the server will be a string starting with \"Restricted\"\n //if the user is not allowed to even see the data. \n //This convenience method makes code cleaner when checking for \"Restricted\" data\n isDataRestricted(data) {\n let stringToCheck = \"\";\n if(data != null) {\n if(typeof data === 'string') {\n stringToCheck = data;\n }\n else if(data.hasOwnProperty('responseText')) { \n stringToCheck = data.responseText;\n }\n }\n return stringToCheck.startsWith(\"Hydroware - Restricted:\")?stringToCheck:false;\n //return data !=null && typeof data === 'string' && data.startsWith(\"Hydroware - Restricted\")\n },\n\n //elementIdentifier is the type of data being checked (i.e. incidents, personelljobinfo, etc)\n //action is what the signed on user is trying to do with the data (i.e. view, add, etc.)\n //when action is not specified the array of rules for the elementIdentifier is returned \n //otherwise \n //the rule for the specific action (a string) on that elementIdentifier is returned.\n getRule(elementIdentifier,action=null) {\n if(window.securityRules == null ) return \"\"\n if (!(elementIdentifier in window.securityRules)) return \"\"\n var rule = window.securityRules[elementIdentifier] \n if(action != null) return rule[action]; \n else return rule\n },\n\n /**************************************************************************************\n * METHODS BELOW ARE SPECIFIC TO DOING SECURITY CHECKS FOR PERSONELL DATA *\n **************************************************************************************/\n allow_P(rule,pid_employee,ordinance_employee) {\n //if(1==1) return true;\n var ordinance_SignedOnUser = authDetails.roleOrdinance;\n var pid_SignedOnUser = authDetails.PersonnelId;\n //Personnel rules may be complex. If so, then each rule within that complex set of rules\n //is separated by a semicolon. (i.e. 'O,LT', or '!O;Y')\n //In order to use \"includes\" to check on for values in both complex and single rules I\n //make sure there is a semicolon as the last character in the string that represents\n //the rule.\n if(rule.endsWith(\";\")==false) rule += \";\";\n //var isComplexRule = rule.includes(\";\");\n \n //1) If the signed on user is accessing themself then check to be sure if\n // a rule is in place to specifically allow/disallow that.\n // If there is then that rule take precedence over all others.\n if(pid_SignedOnUser == pid_employee) {\n if(rule.includes('!O;')) return false;\n if(rule.includes('O;')) return true;\n }\n\n //2) if we get here then either the signed on user is not accessing themself\n // OR there is no specific rule in place for accessing onesself\n // We now check rules in the following order\n // a) if the rule contains an 'N' we disallow\n // b) if the rule contains a 'Y' we allow\n // c) if the rule contains 'LT' and the role ordinance value of the signed on user \n // is less than that of the employee being accessed then\n // we allow (higher ordinance value means lesser role, i.e.\n // AquaticsDirector is ord: 2, PoolManager: 3, ... Office Staff: 7)\n // d) if the rule contains 'LE' and the role ordinance value of the signed on user\n // is less than or equal to the role ordinance of employee being \n // accessed then we allow (higher ordinance value means lesser role, \n // i.e. AquaticsDirector is ord: 2, PoolManager: 3, ... Office Staff: 7) \n // e) if the rule doesn't contain any of the things we looked for above then disallow\n\n if(rule.includes('N;')) return false; //Regardless of anything else if 'N' then disallow\n if(rule.includes('Y;')) return true; //Regardless of anything else if 'Y' then allow\n if(rule.includes('LT;')) {//Check for signed on ordinance < employee being accessed ordinance\n if(ordinance_SignedOnUser < ordinance_employee) return true;\n }\n if(rule.includes('LE;')) {//Check for signed on ordinance <= employee being accessed ordinance\n if(ordinance_SignedOnUser <= ordinance_employee) return true;\n }\n //If the code above didn't make a determination then be pessimistic and return false\n return false;\n },\n allowActionForElement_P(action,elementIdentifier,pid_employeeOrNull,ordinance_employeeOrNull) { \n var rule = this.getRule(elementIdentifier,action)\n if(rule.length==0) return false; //be pessimistic if there is no rule\n var ordinance_employee = ordinance_employeeOrNull;\n var pid_employee = pid_employeeOrNull;\n if(ordinance_employee == null) \n ordinance_employee = sessionStorage.getItem('employeeBeingViewed_ordinance');\n if(pid_employee == null)\n pid_employee = sessionStorage.getItem('employeeBeingViewed_pid');\n return this.allow_P(rule,pid_employee,ordinance_employee)\n },\n canAdd_P(elementIdentifier,pid_employee,ordinance_employee) {\n return this.allowActionForElement_P(\"add\",elementIdentifier,pid_employee,ordinance_employee)\n },\n canEdit_P(elementIdentifier,pid_employee,ordinance_employee) {\n return this.allowActionForElement_P(\"edit\",elementIdentifier,pid_employee,ordinance_employee)\n },\n canDelete_P(elementIdentifier,pid_employee,ordinance_employee) {\n return this.allowActionForElement_P(\"delete\",elementIdentifier,pid_employee,ordinance_employee)\n },\n canView_P(elementIdentifier,pid_employee=null,ordinance_employee=null) {\n return this.allowActionForElement_P(\"view\",elementIdentifier,pid_employee,ordinance_employee)\n },\n canUpload_P(elementIdentifier,pid_employee,ordinance_employee) {\n return this.allowActionForElement_P(\"upload\",elementIdentifier,pid_employee,ordinance_employee)\n },\n canDownload_P(elementIdentifier,pid_employee,ordinance_employee) {\n return this.allowActionForElement_P(\"download\",elementIdentifier,pid_employee,ordinance_employee)\n },\n //action parm below should be either \"add\" or \"edit\"\n //When action is add the employee id passed to this method should be null thus\n //it will be set to -1 and it will not possibly be equal to the id of the signed on user\n //When action is edit the actual id of the person being edited should be passed along.\n //The ordinance value passed along is the ordinance value associated with the position\n //in question.\n disablePositionSelectable_P(action, position, pid_employee=-1) { \n //When editing we check to see if the signed on user's role ordinance is the same as the\n //position's role ordinance and if so we pass along the signed on users employee id so the\n //\"O or !O\" security check can be done. \n var ordinance_SignedOnUser = authDetails.roleOrdinance;\n var pid_employee_passItOn = pid_employee;\n if(action==\"edit\" && (position.roleOrdinance!=ordinance_SignedOnUser))\n pid_employee_passItOn = -1;\n var disableTheChoice = !this.allowActionForElement_P(action,'personnelposition', pid_employee_passItOn, position.roleOrdinance);\n //alert(\"xxxSaction: \"+action+\" / ord: \" + position.roleOrdinance + \" / pid_employee: \" + pid_employee)\n return disableTheChoice\n },\n //If arrayOrSingleString is an array then we use the all param value to make the determination\n // when all is false (default) then if any elementIdentifier rule is true we allow\n // when all is true then if any elementIdentifier rule is false we disallow\n canDisplay_P(arrayOf_orSingle_elementIdentifier,pid_employee,ordinance_employee,all=false) {\n var ordinance_SignedOnUser = authDetails.roleOrdinance;\n var pid_SignedOnUser = authDetails.PersonnelId;\n if(typeof arrayOf_orSingle_elementIdentifier === 'string') {//checking a single elementIdentifier no need to check the anyOrAll setting\n return this.canView_P(arrayOf_orSingle_elementIdentifier,pid_employee,ordinance_employee)\n }\n\n for(var i=0;i {\n\n /* initTooltip(to.name)*/\n full_screen(to.name)\n if (localStorage.getItem('authentication')) {\n var auth = JSON.parse(localStorage.getItem('authentication'))\n window.authDetails = auth\n } else {\n window.authDetails = ''\n }\n\n\n if (auth) {\n //FG - FOOF - 20200811-FG-0001\n // TRY THIS TO MAKE THE AQUATICS DIR.\n // CHANGE THEIR PASSWORD BEFORE DISPLAYING THE SIGNUP CONFIRM FORM\n // (i.e. the email says first time you'll be asked to chg pw)\n if(auth.access_token) {\n if (auth.ForceUpdatePassword == \"True\" && auth.IsFirstLogin == \"True\") {\n context.$router.push('/resetpassword?code=' + code + '&Username=' + auth.email);\n return;\n }\n }\n //FG - FOOF - ABOVE\n\n //FG - FOOF - 20200811-FG-0001\n //if (auth.access_token) { <-- ORIG LINE\n if (auth.access_token && auth.ForceUpdatePassword != \"True\") { \n window.authDetails = auth\n if (auth.FirstName) {\n router.app.$on('reloadAuth', (data) => {\n\n window.userName = auth.FirstName + ' ' + auth.LastName\n })\n window.userName = auth.FirstName + ' ' + auth.LastName\n\n /********************************************************************************************\n * FG - FOOF - After Cert - First Release (7) - First Release Security\n * A security \"module\" was created for the first release (feb 2021)\n * The line below makes sure the security rules remain in place when a page is reloaded\n * *****************************************************************************************/\n window.securityRules=JSON.parse(auth.SecurityRules)\n }\n\n if (!auth.FirstName && auth.role == 'AquaticsDirector') {\n router.push('/signupconfirm?OrganizationName=' + auth.OrganizationName)\n } else {\n // router.push('/AdminDashboard') //FG - FOOF - THIS WAS COMMENTED OUT IN THE ORIG. CODE\n }\n\n } else {\n\n router.push('login')\n }\n\n } else {\n\n var forceupdate = ''\n if (auth) {\n\n forceupdate = auth.ForceUpdatePassword\n if (forceupdate == 'True') {\n var forceupdate = 'False'\n\n router.push('login')\n }\n } else {\n if (to.name != 'login' && to.name != 'signup' && to.name != 'PersonalPostSignup' && to.name != 'resetpassword') {\n router.push('login')\n }\n\n }\n\n }\n\n})\n\n/*End Router redirection on token not present*/\n\n/*Injecting main vue container*/\nnew Vue({\n el: '#app',\n router,\n template: '',\n components: {\n App\n }\n})\n\n/*Loading sidebar , header , footer*/\n\n\n\n\n$('.page-link').click(function () {\n\n})\n\n\n\n// method to make the table full screen\nfunction full_screen(routeName) {\n if (routeName == 'dashboard') {\n\n setTimeout(function () {\n\n if ($('.x_title').find('button').length == 1) {\n\n $('.x_title').append('')\n $('.full_screen_icon').css({\n 'right': '93px',\n 'bottom': '44px'\n })\n\n } else if (routeName == 'chemicalsettings') {\n $('.x_title').append('')\n $('.full_screen_icon').css({\n 'right': '93px',\n 'bottom': '28px'\n })\n } else {\n //FG - FOOF - After Cert - First Release - (2) - Do not show the expand icon (upper right for activity calendar on dashboard)\n //$('.x_title').append('') //<---line before \"After Cert change\"\n $('.x_title').not('.foof_no_expand_icon').append('')\n }\n \n\n $('.full_screen_icon').click(function () {\n\n $('body').append('')\n\n $(this).parent().parent().parent().find('.x_title').addClass('popup_header')\n $(this).parent().parent().parent().find('.x_title').append('×')\n $(this).parent().parent().parent().find('.table-responsive').addClass('max_height')\n $(this).parent().parent().parent().find('.x_panel').addClass('popup_no_padding')\n\n var context = this\n /*var topP = $(context).parent().parent().parent().offset().top - 200*/\n if (routeName == 'dashboard') {\n $(context).parent().parent().parent().addClass('full_screen')\n\n $(context).hide()\n } else if (routeName == 'certificates') {\n\n $(context).closest('.x_content').parent().addClass('full_screen')\n $(context).hide()\n } else {\n $(context).parent().parent().addClass('full_screen')\n $(context).hide()\n\n }\n /* $('html, body').animate({\n scrollTop: 0\n }, 600)*/\n\n $('.overlay1 , .close_button').click(function () {\n\n if (routeName == 'dashboard') {\n\n $(context).parent().parent().parent().removeClass('full_screen')\n $(this).parent().parent().parent().find('.x_title').removeClass('popup_header')\n $(this).parent().parent().parent().find('.x_panel').removeClass('popup_no_padding')\n } else if (routeName == 'certificates') {\n $(context).closest('.x_content').parent().removeClass('full_screen')\n } else {\n\n $(context).parent().parent().removeClass('full_screen')\n }\n $(context).show()\n $('.overlay1').remove()\n $('.close_button').remove()\n\n })\n initTooltip()\n })\n\n }, 1000)\n }\n}\n\nvar SidebarComponent = Vue.extend({\n router\n})\n\n\nvar SidebarComponent = Vue.extend({\n router\n})\nnew SidebarComponent(Sidebar).$mount('#sidebar')\n\nvar HeaderComponent = Vue.extend({\n router\n})\nnew HeaderComponent(Header).$mount('#header')\n\nvar FooterComponent = Vue.extend({\n router\n})\nnew FooterComponent(Footer).$mount('#footer')\n\nvar NotificationSidebar = Vue.extend({\n router\n})\nnew NotificationSidebar(Notification_Sidebar).$mount('#notification_sidebar')\n\n\n\n// WEBPACK FOOTER //\n// ./src/main.js","import hydroscripts from '../../assets/js/site.scripts.js'\n\nexport default {\n\n data() {\n return {\n\n firstName: '',\n lastName: '',\n data: []\n\n }\n\n },\n\n mounted() {\n this.$router.app.$on('reloadAuth', (data) => {\n this.firstName = authDetails.FirstName\n this.lastName = authDetails.LastName\n\n })\n\n this.firstName = authDetails.FirstName\n this.lastName = authDetails.LastName;\n this.data = {\n\n firstName: this.firstName,\n lastName: this.lastName,\n email: authDetails.email,\n isEdit: false\n\n\n }\n if (authDetails.IsFirstLogin == \"True\") {\n this.loadPostsignupModel()\n }\n\n\n this.$router.app.$emit('invocksidebar', true)\n $.event.trigger({\n type: 'newMessage'\n\n })\n\n },\n methods: {\n loadPostsignupModel() {\n\n\n\n\n $('#PostsignupModel').modal('show')\n }\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/AdminDashboard/AdminDashboard.controller.js","import * as services from './managelocation.services'\nexport default {\n data() {\n let context = this\n var validLocationName = (rule, value, callback) => {\n if (context.NewLocation.LocationName == \"\") {\n return callback(\"Please Enter Facility Name\")\n } else {\n return callback();\n }\n }\n return {\n locations_columns: ['LocationName', 'LocationAddress', 'LocationPhoneNumber', 'LocationFaxNumber',\n 'UsersCount',\n 'PoolsCount',\n 'Actions'\n ],\n optionstable: {\n headings: {\n LocationName: 'Facility Name',\n LocationAddress: 'Facility Address',\n LocationPhoneNumber: 'Facility Phone Number',\n LocationFaxNumber: 'Facility Fax Number',\n UsersCount: 'Users',\n PoolsCount: 'Venues',\n Actions: ''\n },\n // templates: {\n // UsersCount: function (h, row) {\n // return ``\n // },\n // },\n\n perPage: 5,\n perPageValues: [5, 10, 25, 50, 100],\n /* sortable: [\"ActionDate\",\"Description\", \"CommentedBy\", \"ActionTypeName\"],*/\n sortable: [],\n },\n user_columns: ['SlNo', 'UserName'],\n optionsusertable: {\n headings: {\n SlNo: '#',\n UserName: 'User',\n },\n perPage: 5,\n perPageValues: [5, 10, 25, 50, 100],\n sortable: [''],\n },\n pool_columns: ['SlNo', 'PoolName'],\n optionspoolstable: {\n headings: {\n SlNo: '#',\n PoolName: 'Venue',\n },\n perPage: 5,\n perPageValues: [5, 10, 25, 50, 100],\n sortable: [''],\n },\n Locations: {\n IsIdealRange: \"\",\n LocationAddress: \"\",\n LocationCreatedOn: \"\",\n LocationFaxNumber: \"\",\n LocationId: \"\",\n LocationIsActive: \"\",\n LocationName: \"\",\n LocationOffset: \"\",\n LocationOrganizationId: \"\",\n LocationOrganizationName: \"\",\n LocationPhoneNumber: \"\",\n LocationUpdatedOn: \"\",\n Pools: [],\n SearchTag: \"\",\n //FG - FOOF - After Cert - First Release - (1) FORCE DEFAULT TO BE MAHC, thus null for StateId (was setting to \"\")\n StateId: null, //\"\",\n StateName: \"\",\n Users: [],\n UsersCount: '',\n PoolsCount: '',\n },\n options: [],\n isediting: false,\n isuserlist: false,\n isAddingOrEditing: \"\",\n NewLocation: {\n LocationName: \"\",\n LocationAddress: \"\",\n LocationFaxNumber: \"\",\n LocationPhoneNumber: \"\",\n IsIdealRange: '',\n //FG - FOOF - After Cert - First Release - (1) MAKE MAHC THE DEFAULT CHOICE\n StateId: null //''\n\n },\n UsersList: [],\n PoolsList: [],\n isShowallLocations: false,\n rules: {\n LocationName: [{\n validator: validLocationName,\n trigger: 'blur'\n }]\n }\n }\n },\n mounted() {\n this.GetAllLocationList(true)\n this.getstates()\n },\n methods: {\n GetAllLocationList(status) {\n let context = this\n services.GetAllLocationList(status).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n context.Locations = [] \n loader.stopLoader()\n return;\n }\n\n\n context.Locations = response\n context.Locations.filter(function (item) {\n item.UsersCount = item.Users.length\n item.PoolsCount = item.Pools.length\n })\n }, (error) => {\n\n })\n },\n addLocation(formName) {\n this.isAddingOrEditing=\"A\"\n this.showPopup(formName)\n this.resetEditAdd()\n this.isediting = false\n },\n CancelledAddFacility() {\n isAddingOrEditing=\"\"\n },\n editlocation(item) {\n this.NewLocation.LocationId = item.row.LocationId\n this.isediting = true\n this.isAddingOrEditing=\"E\"\n this.showPopup()\n this.NewLocation.LocationName = item.row.LocationName\n this.NewLocation.LocationAddress = item.row.LocationAddress\n this.NewLocation.LocationFaxNumber = item.row.LocationFaxNumber\n this.NewLocation.LocationPhoneNumber = item.row.LocationPhoneNumber\n //FG - FOOF - After Cert - First Release - (1) the radio button changed for all faciclities when changed in one\n // AND we there was sometimes nothing chosen.\n // IN AN EFFORT TO NOT CHANGE GOO MUCH I AM STAYING WITH THE VALUES 1 and 2 for the radio button (THAT CAME FROM DIGICLARITY)\n if(item.row.IsIdealRange)\n this.NewLocation.IsIdealRange = \"true\";\n else\n this.NewLocation.IsIdealRange = \"false\";\n \n\n },\n //FG - FOOF - After Cert - First Release (6) - rewrote delete code below to use new methods in hydrowareCommonJS.js\n //The delete function below deletes a row from the table\n DeleteLocation(props){\n let context = this\n var locid = props.row.LocationId\n var opts = {message: 'Are you sure you want to delete ' + props.row.LocationName + '?'}\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.deleteLocationRow.bind(null,locid))\n },\n deleteLocationRow(locid) {\n var context = this;\n loader.startLoader()\n services.DeleteLocation(locid).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.GetAllLocationList(true);\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n loader.stopLoader()\n },\n (error) => {\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\n })\n },\n \n getstates() {\n\n let context = this\n\n services.GetStates().then(function (response) {\n\n //FG - FOOF - After Cert - First Release - (1) ONLY FOR MAHC SO WE DON'T POPULATE DROP DOWN LIST WITH STATES\n // IF/WHEN we supply state bating codes the line below should be uncommented\n //context.options = response\n\n context.options.unshift({\n \"StateId\": null,\n \"StateName\": \"MAHC\"\n\n })\n context.SelectedState = context.options[0].StateId\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n },\n toggleLocationList() {\n\n this.isShowallLocations = !this.isShowallLocations\n this.GetAllLocationList(this.isShowallLocations ? null : \"true\")\n },\n UpdateLocation(formName) {\n let context = this\n loader.startLoader()\n this.$refs[formName].validate((valid) => {\n if (valid) {\n if (context.NewLocation.IsIdealRange == 1)\n context.NewLocation.IsIdealRange = true\n else if (context.NewLocation.IsIdealRange == 2)\n context.NewLocation.IsIdealRange = false\n services.UpdateLocation(this.NewLocation).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.GetAllLocationList(this.isShowallLocations ? null : \"true\");\n context.$notify({\n title: 'Success',\n message: 'Facility Updated',\n type: 'success'\n })\n loader.stopLoader()\n $('#Addlocationmodel').modal('hide')\n }, (error) => {\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n context.$notify({\n title: 'Error',\n message: 'Enter location Name',\n type: 'error'\n })\n loader.stopLoader()\n }\n })\n },\n Createlocation(formName) {\n let context = this\n loader.startLoader()\n this.$refs[formName].validate((valid) => {\n if (valid) {\n if (context.NewLocation.IsIdealRange == 1)\n context.NewLocation.IsIdealRange = true\n else if (context.NewLocation.IsIdealRange == 2)\n context.NewLocation.IsIdealRange = false\n services.Createlocation(this.NewLocation).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.GetAllLocationList(this.isShowallLocations ? null : \"true\");\n context.$notify({\n title: 'Success',\n message: 'Created Facility',\n type: 'success'\n })\n loader.stopLoader()\n $('#Addlocationmodel').modal('hide')\n }, (error) => {\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n context.$notify({\n title: 'Error',\n message: 'Enter Facility Name',\n type: 'error'\n })\n loader.stopLoader()\n }\n })\n },\n ChangeStatus(item) {\n let context = this\n loader.startLoader()\n services.ChangeLocationStatus(item.row.LocationId, !item.row.LocationIsActive).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n \n \n context.GetAllLocationList(true);\n context.$notify({\n title: 'Success',\n message: 'Status Changed',\n type: 'success'\n })\n loader.stopLoader()\n\n }, (error) => {\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n loader.stopLoader()\n })\n },\n showPopup(formName) {\n\n let context = this\n context.buttonclicked = true\n this.isadding = true\n $('#Addlocationmodel').modal('show')\n },\n showUser(item) {\n this.isuserlist = true\n $('#LocationDetailmodel').modal('show')\n this.UsersList = item.Users\n },\n showPools(item) {\n this.isuserlist = false\n $('#LocationDetailmodel').modal('show')\n this.PoolsList = item.Pools\n },\n resetEditAdd() {\n this.NewLocation.LocationName = \"\",\n this.NewLocation.LocationAddress = \"\",\n this.NewLocation.LocationFaxNumber = \"\",\n this.NewLocation.LocationPhoneNumber = \"\"\n //FG - FOOF - After Cert - First Release - (1) the radio button changed for all faciclities when changed in one\n // AND we there was sometimes nothing chosen.\n // IN AN EFFORT TO NOT CHANGE GOO MUCH I AM STAYING WITH THE VALUES 1 and 2 for the radio button (THAT CAME FROM DIGICLARITY)\n this.NewLocation.IsIdealRange = \"false\";\n },\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Administration/ManageLocation/managelocation.controller.js","export const GetAllLocationList=(isactive)=>{\r\n return $.get('Location/GetMinLocationDetails?IsActive='+isactive)\r\n}\r\nexport const Createlocation=(loc)=>{\r\n return $.post('Location/AddLocation',loc)\r\n}\r\nexport const UpdateLocation=(location)=>{\r\n return $.post('Location/UpdateLocation',location)\r\n}\r\nexport const DeleteLocation=(locationid)=>{\r\n return $.post('Location/DeleteLocation?locationId='+locationid)\r\n}\r\nexport const ChangeLocationStatus=(locationId,activeStatus)=>{\r\n return $.post('Location/LocationStatusChange?locationId='+locationId+'&activeStatus='+activeStatus)\r\n}\r\nexport const GetStates = () => {\r\n return $.get('Location/GetStates')\r\n }\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Administration/ManageLocation/managelocation.services.js","import * as services from './ManagePools.services'\nimport {\n error\n} from 'util';\nimport {\n fail\n} from 'assert';\nexport default {\n data() {\n let context = this\n var validateLocationName = (rule, value, callback) => {\n if (context.addPool.PoolLocationName == \"\" && context.isnewLocation == true) {\n return callback(new Error('Please enter Facility Name'));\n } else\n callback();\n }\n var validPoolName = (rule, value, callback) => {\n if (context.addPool.PoolName == '') {\n return callback(new Error('Please enter a Name'));\n } else\n callback();\n }\n \n return {\n isadding: false,\n isShowallpools: true,\n locationList: [],\n isediting: false,\n isAddingOrEditing: \"\",\n poolTypes: [],\n UomList: [{\n Id: 1,\n Uom: \"Feet\"\n }, {\n Id: 2,\n Uom: \"Yard\"\n }, {\n Id: 3,\n Uom: \"Meters\"\n }],\n\n //FG - FOOF - 20200830-FG-0012 - BELOW\n VolumeUomList: [{\n Id: 1,\n Uom: \"Gallons\"\n }, {\n Id: 2,\n Uom: \"Litres\"\n }],\n //FG - FOOF - 20200830-FG-0012 - ABOVE\n\n TimeUoM: [{\n Id: 1,\n Uom: \"Hours\"\n }, {\n Id: 2,\n Uom: \"Minutes\"\n }],\n ShapeList: [{\n Id: 1,\n Shape: \"Rectangle\"\n }, {\n Id: 2,\n Shape: \"Square\"\n }, {\n Id: 3,\n Shape: \"Round\"\n }, {\n Id: 4,\n Shape: \"Oval\"\n }, {\n Id: 5,\n Shape: \"Kidney\"\n }, {\n Id: 6,\n Shape: \"Freeform\"\n }],\n addPool: {\n PoolName: '',\n PoolLocated: 'Indoor',\n PoolTypeDescription: '',\n PoolLanes: '',\n PoolStations: '',\n PoolShape: 'Rectangle',\n PoolVolume: '',\n PoolLength: '',\n PoolWidth: '',\n PoolLengthWidthUoM: 'Feet',\n PoolShalowMaxBathers: '',\n PoolDeepMaxBathers: '',\n PoolTotalMaxBathers: '',\n PoolMaxDepth: '',\n PoolMaxDepthUoM: '',\n PoolMinDepth: '',\n PoolMinDepthUoM: '',\n PoolVolume: '',\n PoolArea: '',\n PoolId: '',\n PoolPoolTypeId: '',\n PoolLocationId: '',\n PoolLocationName: '',\n PoolLocationAddress: '',\n PoolLocationPhoneNumber: '',\n PoolLocationFaxNumber: '',\n PoolVolumeUoM: '',\n PoolAreaUoM: '',\n PoolTurnOverTime: '',\n PoolTurnOverTime_Min: '',\n PoolTurnOverTime_Max: '',\n PoolInfluentPressure: '',\n PoolInfluentPressure_Min: '',\n PoolInfluentPressure_Max: '',\n PoolInfluentPressureUoM: 'PSI', //FG - FOOF - 20200730-FG-0010 - added 'PSI'so the value wouldn't be null or empty\n PoolEfluentPressure: '',\n PoolEfluentPressure_Min: '',\n PoolEfluentPressure_Max: '',\n PoolEfluentPressureUoM: 'PSI', //FG - FOOF - 20200730-FG-0011 - added 'PSI'so the value wouldn't be null or empty\n disabled: 'disabled',\n PoolTurnOverTime_UoM: '',\n PoolTurnOverPerDay: '',\n PoolTurnOverDayUoM: '',\n PoolCreatedOn: '',\n PoolUpdatedOn: '',\n UserName: '',\n OldUserName: '',\n PoolIsActive: '',\n PoolOpening: '',\n PoolClosing: '',\n SearchTag: '',\n PoolDescription: ''\n },\n rules: {\n PoolName: [{\n validator: validPoolName,\n trigger: 'blur'\n }],\n PoolLocationName: [{\n validator: validateLocationName,\n trigger: 'blur'\n }],\n },\n venueList: [],\n poolList: [],\n pooltypeId: '',\n poollocationId: '',\n locationId: '',\n locationName: '',\n isnewLocation: false,\n pools_columns: ['PoolName',\n 'PoolLocationName', 'PoolTypeDescription', 'PoolShape', 'PoolVolume', 'PoolLength',\n 'PoolWidth', 'PoolShalowMaxBathers', 'PoolDeepMaxBathers', 'PoolTotalMaxBathers', 'PoolMaxDepth', 'PoolMinDepth', 'PoolArea', 'Actions'\n ],\n sortable: [],\n optionstable: {\n headings: {\n PoolName: 'Venue Name',\n PoolLocationName: 'Facility',\n PoolTypeDescription: 'Type',\n PoolShape: 'Shape',\n PoolVolume: 'Volume',\n PoolLength: 'Length',\n PoolWidth: 'Width',\n PoolShalowMaxBathers: 'Shallow Max Bathers',\n PoolDeepMaxBathers: 'Deep Max Bathers',\n PoolTotalMaxBathers: 'Total Max Bathers',\n PoolMaxDepth: 'Max Depth',\n PoolMinDepth: 'Min Depth',\n PoolArea: 'Water Area',\n Actions: ''\n },\n\n perPage: 5,\n perPageValues: [5, 10, 25, 50, 100],\n sortable: ['IncidentDate'],\n },\n }\n },\n mounted() {\n let context = this\n this.$router.app.$on('emittedlocation_obj', (data) => {\n context.locationId = data.LocationId ? data.LocationId : 0\n context.locationName = data.LocationName ? ' - ' + data.LocationName : ''\n var status = this.isShowallpools ? true : \"\";\n context.getPoolList(context.locationId, true);\n })\n this.getLocationList()\n this.getPoolTypes()\n },\n methods: {\n getPoolList(locid, status) {\n let context = this\n services.GetPoolList(status, locid).then(function (response) {\n\n context.poolList = []\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n \n if (response != null) {\n context.poolList = response\n }\n }),\n (error) => {\n }\n },\n getLocationList() {\n let context = this\n services.GetLocationlist(true).then(function (response) {\n context.locationList = response\n context.poollocationId = context.locationList[0].LocationId\n }, (error) => {\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n getPoolTypes() {\n let context = this;\n services.GetPoolTypes().then(function (response) {\n context.poolTypes = response\n context.pooltypeId = context.poolTypes[0].PoolPoolTypeId\n }, (error) => {\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n togglePoolList() {\n\n this.isShowallpools = !this.isShowallpools\n var status = this.isShowallpools ? true : null;\n this.getPoolList(this.locationId, status)\n\n },\n ChangeStatus(item) {\n let context = this\n\n services.ChangePoolstatus(item.row.PoolId, !item.row.PoolIsActive).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.getPoolList(context.locationId, true);\n context.$notify({\n title: 'Success',\n message: 'Status Changed Successfully',\n type: 'success'\n })\n }, (error) => {\n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n CreatePool(formName) {\n let context = this\n this.$refs[formName].validate((valid) => {\n if (valid) {\n this.addPool.PoolLocationId = this.poollocationId\n this.addPool.PoolPoolTypeId = this.pooltypeId\n if (context.addPool.PoolOpening != '' && context.addPool.PoolOpening != null) {\n var openingtime = new Date(context.addPool.PoolOpening)\n context.addPool.PoolOpening = (openingtime.getHours() < 10 ? '0' : '') + openingtime.getHours() + \":\" + (openingtime.getMinutes() < 10 ? '0' : '') + openingtime.getMinutes()\n }\n if (context.addPool.PoolClosing != '' && context.addPool.PoolClosing != null) {\n var closingtime = new Date(context.addPool.PoolClosing)\n context.addPool.PoolClosing = (closingtime.getHours() < 10 ? '0' : '') + closingtime.getHours() + \":\" + (closingtime.getMinutes() < 10 ? '0' : '') + closingtime.getMinutes()\n }\n loader.startLoader()\n\n if (context.isnewLocation == true) {\n context.addPool.PoolLocationId = ''\n } else {\n context.addPool.PoolLocationName = ''\n }\n services.CreatePool(this.addPool).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.getPoolList(context.locationId, true);\n context.reintializeObject();\n loader.stopLoader()\n $('#Addpoolmodel').modal('hide')\n context.$notify({\n title: 'Success',\n message: 'Venue Created',\n type: 'success'\n }, (error) => {\n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n })\n } else {\n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: 'Please enter required fields',\n type: 'error'\n })\n }\n })\n },\n UpdatePool(formName) {\n let context = this\n this.$refs[formName].validate((valid) => {\n if (valid) {\n this.addPool.PoolLocationId = this.poollocationId\n this.addPool.PoolPoolTypeId = this.pooltypeId\n if (context.addPool.PoolOpening != null) {\n var openingtime = new Date(context.addPool.PoolOpening)\n context.addPool.PoolOpening = (openingtime.getHours() < 10 ? '0' : '') + openingtime.getHours() + \":\" + (openingtime.getMinutes() < 10 ? '0' : '') + openingtime.getMinutes()\n }\n if (context.addPool.PoolClosing != null) {\n var closingtime = new Date(context.addPool.PoolClosing)\n context.addPool.PoolClosing = (closingtime.getHours() < 10 ? '0' : '') + closingtime.getHours() + \":\" + (closingtime.getMinutes() < 10 ? '0' : '') + closingtime.getMinutes()\n }\n loader.startLoader()\n\n if (context.isnewLocation == true) {\n context.addPool.PoolLocationId = ''\n } else {\n context.addPool.PoolLocationName = ''\n }\n services.UpdatePool(this.addPool).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n context.getPoolList(context.locationId, true);\n context.reintializeObject();\n loader.stopLoader()\n context.isediting = false\n $('#Addpoolmodel').modal('hide')\n context.$notify({\n title: 'Success',\n message: 'Venue Updated',\n type: 'success'\n })\n }, (error) => {\n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: 'Please enter required fields',\n type: 'error'\n })\n\n }\n })\n },\n ValidatePoolDetails(formname) {\n\n let context = this\n this.$refs[formName].validate((valid) => {\n if (valid) {\n\n } else {\n\n }\n })\n\n },\n EditPool(item) {\n this.isediting = true\n this.isAddingOrEditing = \"E\"\n this.addPool = deepcopy(item.row)\n this.poollocationId = this.addPool.PoolLocationId\n var openingdate = new Date();\n if (this.addPool.PoolOpening != null) {\n openingdate.setHours(this.addPool.PoolOpening.split(':')[0]);\n openingdate.setMinutes(this.addPool.PoolOpening.split(':')[1]);\n this.addPool.PoolOpening = openingdate\n }\n var date = new Date()\n if (this.addPool.PoolClosing != null) {\n date.setHours(this.addPool.PoolClosing.split(':')[0]);\n date.setMinutes(this.addPool.PoolClosing.split(':')[1]);\n this.addPool.PoolClosing = date\n }\n this.showPopup('addPool')\n },\n handleCommand(item, command) {\n if (command == \"edit\")\n this.EditPool(item)\n else if (command == \"archive\")\n this.ChangeStatus(item)\n else if (command == \"delete\")\n this.DeletePool(item)\n\n },\n //FG - FOOF - After Cert - First Release (6) - rewrote delete code below to use new methods in hydrowareCommonJS.js\n //The delete function below deletes a row from the table\n DeletePool(item){\n let context = this\n var poolid = item.row.PoolId\n var opts = {message: 'Are you sure you want to delete ' + item.row.PoolName + '?'}\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.deletePoolRow.bind(null,poolid))\n },\n deletePoolRow(poolid) {\n var context = this;\n loader.startLoader()\n services.DeletePool(poolid).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n context.getPoolList(context.locationId, true);\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n loader.stopLoader()\n },\n (error) => {\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\n })\n },\n\n/*\n DeletePool(item) {\n alert('here I be');\n if(1==1) return;\n let context = this\n\n services.DeletePool(item.row.PoolId).then(function (response) {\n context.getPoolList(context.locationId, true);\n context.$notify({\n title: 'Success',\n message: 'Venue Deleted Successfully',\n type: 'success'\n })\n }, (error) => {\n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n */\n showNewLocation() {\n this.isnewLocation = true\n },\n addCurrentLocation() {\n this.isnewLocation = false\n },\n addPools(formName) {\n this.isediting = false\n this.isAddingOrEditing=\"A\"\n this.reintializeObject()\n this.showPopup(formName)\n },\n CancelAddPool() {\n $('#Addpoolmodel').modal('hide')\n this.isadding = false\n this.isediting = false\n this.isAddingOrEditing=\"\"\n },\n showPopup(formName) {\n\n let context = this\n context.buttonclicked = true\n this.isadding = true\n $('#Addpoolmodel').modal('show')\n },\n\n reintializeObject() {\n this.addPool.PoolName = ''\n this.addPool.PoolLocated = 'Indoor'\n this.addPool.PoolTypeDescription = ''\n this.addPool.PoolLanes = ''\n this.addPool.PoolStations = ''\n this.addPool.PoolShape = 'Rectangle'\n this.addPool.PoolVolume = ''\n this.addPool.PoolLength = ''\n this.addPool.PoolWidth = ''\n this.addPool.PoolLengthWidthUoM = 'Feet'\n this.addPool.PoolShalowMaxBathers = ''\n this.addPool.PoolDeepMaxBathers = ''\n this.addPool.PoolTotalMaxBathers = ''\n this.PoolMaxDepth = ''\n this.addPool.PoolMaxDepthUoM = ''\n this.addPool.PoolMinDepth = ''\n this.addPool.PoolMinDepthUoM = ''\n this.addPool.PoolVolume = ''\n this.addPool.PoolArea = ''\n this.addPool.PoolId = ''\n this.addPool.PoolPoolTypeId = ''\n this.addPool.PoolLocationId = ''\n this.addPool.PoolLocationName = ''\n this.addPool.PoolLocationAddress = ''\n this.addPool.PoolLocationPhoneNumber = ''\n this.addPool.PoolLocationFaxNumber = ''\n this.addPool.PoolVolumeUoM = ''\n this.addPool.PoolAreaUoM = ''\n this.addPool.PoolTurnOverTime = ''\n this.addPool.PoolTurnOverTime_Min = ''\n this.addPool.PoolTurnOverTime_Max = ''\n this.addPool.PoolTurnOverTime_UoM = ''\n this.addPool.PoolTurnOverPerDay = ''\n this.addPool.PoolTurnOverDayUoM = ''\n this.addPool.InfluentPressure = ''\n this.addPool.InfluentPressure_Min = ''\n this.addPool.InfluentPressure_Max = ''\n this.addPool.InfluentPressureUoM = ''\n this.addPool.EfluentPressure = ''\n this.addPool.EfluentPressure_Min = ''\n this.addPool.EfluentPressure_Max = ''\n this.addPool.EfluentPressureUoM = ''\n this.addPool.PoolCreatedOn = ''\n this.addPool.PoolUpdatedOn = ''\n this.addPool.UserName = ''\n this.addPool.OldUserName = ''\n this.addPool.PoolIsActive = ''\n this.addPool.PoolOpening = ''\n this.addPool.PoolClosing = ''\n this.addPool.SearchTag = ''\n this.addPool.PoolDescription = ''\n },\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Administration/ManagePools/ManagePools.controller.js","export const GetPoolList=(activestatus,locationId)=>{\r\n return $.get('Pool/GetMinPoolDetails?locationId='+locationId+'&isActive='+activestatus)\r\n}\r\nexport const CreatePool=(pool)=>{\r\n return $.post('Location/AddLocationNPool',pool)\r\n }\r\nexport const UpdatePool=(pool)=>{\r\n return $.post('Pool/UpdatePool',pool)\r\n}\r\nexport const DeletePool=(poolId)=>{\r\n return $.post('Pool/DeletePool?poolId='+poolId)\r\n}\r\nexport const ChangePoolstatus=(poolId,activeStatus)=>{\r\n return $.post('Pool/PoolStatusChange?poolId='+poolId+'&activeStatus='+activeStatus)\r\n}\r\n\r\nexport const GetLocationlist=(status)=>{\r\n return $.get('Location/GetMinLocationDetails?IsActive='+status)\r\n}\r\nexport const GetPoolTypes=()=>{\r\n return $.get('Pool/GetPoolTypes')\r\n}\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Administration/ManagePools/ManagePools.services.js","import * as service from './OrganizationDetails.service.js'\n\nexport default {\n data() {\n return {\n Certificationcolumns: ['Name', 'Description', 'Actions'],\n optionstable: {\n\n headings: {\n Name: 'Name',\n Description: 'Description',\n edit: 'Edit',\n delete: 'Delete'\n\n },\n sortIcon: {\n base: 'glyphicon',\n up: 'glyphicon-chevron-up',\n down: 'glyphicon-chevron-down'\n },\n sortable: ['Name', 'Description'],\n texts: {\n\n filterPlaceholder: 'Search...',\n limit: 'Records:',\n noResults: 'No matching records',\n\n }\n\n },\n CertificationTypes: [],\n AddCertificateForm: {\n\n Name: '',\n Description: ''\n },\n IsCertificateTypeEdit: false,\n CertificateTypeEditID: 0,\n organizationDetails: {},\n locations: [],\n pools: [],\n locationName: '',\n poolName: '',\n selectedlocationId: '',\n selectedpoolId: '',\n editLocation: false,\n editPool: false,\n currentLocationName: '',\n currentPoolName: '',\n act: false,\n poolpromptVisible: false,\n locationpromptVisible: false,\n positionpromptVisible: false,\n\n organizationName: '',\n locationFlag: false,\n orgEditorgEdit: false,\n tabName: 'first',\n position: '',\n positions: [],\n //FG - FOOF - After Cert - First Release Security - below\n deliveredPositions: ['Aquatics Director','Pool Manager', 'Assistant Pool Manager','Head Lifeguard','Lifeguard','Office Staff','Pool Manager'],\n newlyAddedPositions: [], \n //FG - FOOF - After Cert - First Release Security - above\n roles: [],\n editPosition: false,\n selectedpositionId: '',\n currentPositionName: '',\n roleModel: '',\n modalTitle: '',\n options: [{\n value: 'PDT',\n label: 'PDT'\n }, {\n value: 'MDT',\n label: 'MDT'\n }, {\n value: 'CDT',\n label: 'CDT'\n }, {\n value: 'EDT',\n label: 'EDT'\n }],\n Timezone: '',\n Timezoneselected: ''\n }\n },\n\n mounted() {\n\n this.organizationDetails = {\n organizationId: authDetails.OrganizationId,\n organizationName: authDetails.OrganizationName\n }\n this.getLocations()\n this.getPositions()\n this.getRoles()\n this.GetCertificationTypes()\n },\n\n methods: {\n showcertificate() {\n\n let context = this\n this.modalTitle = 'Create Certificate'\n $('#AddCertificatemodel').modal('show')\n\n setTimeout(function () {\n context.$refs['AddCertificateForm'].resetFields()\n }, 10)\n },\n\n del: function (data) {\n\n var ID = data.row.Id\n\n let context = this\n context.$confirm('Are you sure you want to delete?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n\n loader.startLoader()\n service.DeleteCertificationType(ID).then(function (response) {\n\n context.GetCertificationTypes()\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Deleted Successfully',\n type: 'success'\n })\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n // context.$message({\n // type: 'success',\n // message: 'Delete completed'\n // });\n }).catch(() => {\n\n })\n\n },\n\n cancelpopup: function () {\n this.IsCertificateTypeEdit = false\n $('#AddCertificatemodel').modal('hide')\n },\n\n EditCertificateType: function (data) {\n let context = this\n var ID = this.CertificateTypeEditID\n if (ID !== 0) {\n let model = {\n Id: ID,\n Name: data.Name,\n Description: data.Description\n }\n loader.startLoader()\n service.UpdateCertificationType(model).then(function (response) {\n context.IsCertificateTypeEdit = false\n $('#AddCertificatemodel').modal('hide')\n context.CertificateTypeEditID = 0\n\n context.$notify({\n title: 'Success',\n message: 'Updated certificate type succesfully',\n type: 'success'\n })\n\n for (var i = 0; i < context.CertificationTypes.length; i++) {\n if (context.CertificationTypes[i].Id == ID) {\n\n context.CertificationTypes[i].Name = data.Name\n\n context.CertificationTypes[i].Description = data.Description\n break\n }\n }\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n }\n\n\n },\n\n editcol: function (data) {\n\n var ID = data.row.Id\n\n let context = this\n this.modalTitle = 'Edit Certificate'\n context.CertificateTypeEditID = ID\n for (var i = 0; i < context.CertificationTypes.length; i++) {\n if (context.CertificationTypes[i].Id == data.row.Id) {\n context.AddCertificateForm.Name = data.row.Name\n\n context.AddCertificateForm.Description = data.row.Description\n break\n }\n }\n context.IsCertificateTypeEdit = true\n\n $('#AddCertificatemodel').modal('show')\n\n },\n\n GetCertificationTypes() {\n let context = this\n loader.startLoader()\n service.GetCertificationTypes().then(function (response) {\n\n context.CertificationTypes = response\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n },\n\n submitForm(formName) {\n\n\n this.$refs[formName].validate((valid) => {\n\n\n if (valid) {\n\n let context = this\n loader.startLoader()\n\n let Model = {\n Name: context.AddCertificateForm.Name,\n Description: context.AddCertificateForm.Description\n }\n\n service.AddCertificationType(Model).then(function (response) {\n\n loader.stopLoader()\n $('#AddCertificatemodel').modal('hide')\n context.GetCertificationTypes()\n\n }, (error) => {\n\n loader.stopLoader()\n $('#AddCertificatemodel').modal('hide')\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'POSITIONS - error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n resetForm(formName) {\n this.$refs[formName].resetFields()\n },\n checkSpace() {\n\n if (this.organizationName) {\n this.organizationName = this.organizationName.replace(/^\\s+|\\s+$/g, '')\n\n }\n\n if (this.locationName) {\n this.locationName = this.locationName.replace(/^\\s+|\\s+$/g, '')\n }\n if (this.currentLocationName) {\n this.currentLocationName = this.currentLocationName.replace(/^\\s+|\\s+$/g, '')\n }\n if (this.poolName) {\n this.poolName = this.poolName.replace(/^\\s+|\\s+$/g, '')\n }\n if (this.currentPoolName) {\n this.currentPoolName = this.currentPoolName.replace(/^\\s+|\\s+$/g, '')\n }\n if (this.position) {\n this.position = this.position.replace(/^\\s+|\\s+$/g, '')\n }\n if (this.currentPositionName) {\n this.currentPositionName = this.currentPositionName.replace(/^\\s+|\\s+$/g, '')\n }\n },\n\n UpdateOrganization() {\n let context = this\n loader.startLoader()\n service.UpdateOrganization({\n OrganizationId: authDetails.OrganizationId,\n OrganizationName: this.organizationName\n }).then(function (response) {\n authDetails.OrganizationName = context.organizationName\n context.organizationDetails.organizationName = context.organizationName\n context.$localStorage.set('authentication', JSON.stringify(authDetails))\n context.orgEditorgEdit = false\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n },\n //FG - FOOF - After Cert - First Release (6) - rewrote delete code below to use new methods in hydrowareCommonJS.js\n //The delete function below deletes a row from the table\n DeletePosition(item){\n let context = this\n var ID = item.row.PositionId\n var opts = {message: 'Are you sure you want to delete ' + item.row.PositionName + '?'}\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.deletePositionRow.bind(null,ID))\n },\n deletePositionRow(ID) {\n var context = this;\n loader.startLoader()\n service.DeletePosition(ID).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n for (var i = 0; i < context.positions.length; i++) {\n if (context.positions[i].PositionId == ID) {\n context.positions.splice(i, 1)\n i--\n }\n }\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n loader.stopLoader()\n\n }, \n (error) => {\n loader.stopLoader()\n //context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\n var opts = {message: error.responseJSON.Message}\n context.$hydrowareCommonJS.displayPopupNoDelete(this,opts)\n })\n },\n\n updateRole(positionId, roleId, positionName) {\n let context = this\n\n let positionModel = {\n PositionId: positionId,\n RoleId: roleId,\n PositionName: positionName\n\n }\n let cfinish = false\n let i = 0\n\n let resTime = setInterval(function () {\n i = i++\n\n if (i > 10 && !cfinish) {\n loader.startLoader()\n clearInterval(resTime)\n }\n\n }, 10)\n\n service.updateRole(positionModel).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n cfinish = true\n clearInterval(resTime)\n\n for (var i = 0; i < context.positions.length; i++) {\n\n if (context.positions[i].PositionId == positionId) {\n context.positions[i].PositionName = positionName\n context.currentPositionName = positionName\n context.selectedpositionId = ''\n context.editPosition = false\n }\n }\n\n loader.stopLoader()\n\n }, (error) => {\n cfinish = true\n clearInterval(resTime)\n loader.stopLoader()\n context.currentPositionName = positionName\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n },\n\n //FG - FOOF - After Cert - First Release - added code below\n doesPositionAlreadyExist(aPositionName) {\n //If the position name is one of those delivered with Hydroware\n //then isDelivered will be a text message otherwise it will be null\n var isDelivered = this.isADeliveredPosition(aPositionName);\n if(isDelivered != null) return isDelivered;\n\n //Is this a newly added position ?\n var isNew = this.isNewlyAddedPosition(aPositionName)\n if(isNew != null) return isNew;\n\n //The position is not one that was delivered with our application\n //nor was it added while this window was currently being used\n //so we check to see if it is the list of all of the positions that\n //were returned from the database (these don't include any that have\n //been added while currently on this page)\n for(var i=0;i {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n },\n getLocations() {\n let context = this\n loader.startLoader()\n service.GetLocations().then(function (response) {\n\n context.locations = response\n if (response) {\n if (response.length > 0) {\n setTimeout(function () {\n\n context.$refs.locationTable.setCurrentRow(context.locations[0])\n\n }, 500)\n\n context.getPools(response[0].LocationId)\n context.selectedlocationId = response[0].LocationId\n context.currentLocationName = response[0].LocationName\n }\n }\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.error_description,\n\n type: 'error'\n\n })\n })\n\n },\n getPositions() {\n let context = this\n loader.startLoader()\n service.GetPositions().then(function (response) {\n \n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n context.positions = []\n loader.stopLoader()\n return;\n }\n\n context.positions = response\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.error_description,\n\n type: 'error'\n\n })\n })\n\n },\n getRoles() {\n let context = this\n loader.startLoader()\n service.GetRoles().then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n context.roles = []\n loader.stopLoader()\n return;\n }\n\n window.xt = JSON.stringify(response)\n\n context.roles = response\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.error_description,\n\n type: 'error'\n\n })\n })\n\n },\n getPools(locationId) {\n this.poolName = ''\n let context = this\n let cfinish = false\n let i = 0\n\n let resTime = setInterval(function () {\n i = i++\n\n if (i > 10 && !cfinish) {\n loader.startLoader()\n clearInterval(resTime)\n }\n\n }, 10)\n\n service.GetPoolsById(locationId).then(function (response) {\n cfinish = true\n context.pools = response\n clearInterval(resTime)\n if (response) {\n if (response.length > 0) {\n\n context.selectedpoolId = response[0].PoolId\n context.currentPoolName = response[0].PoolName\n }\n }\n\n loader.stopLoader()\n\n }, (error) => {\n cfinish = true\n clearInterval(resTime)\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.error_description,\n\n type: 'error'\n\n })\n })\n\n },\n addPool() {\n let context = this\n loader.startLoader()\n\n service.AddPool({\n PoolName: this.poolName,\n LocationId: this.selectedlocationId\n }).then(function (response) {\n\n if (!context.pools) {\n context.pools = []\n }\n context.pools.push({\n PoolId: response.PoolId,\n PoolName: context.poolName\n })\n context.$router.app.$emit('invokePoolLoc')\n\n context.poolName = ''\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n },\n UpdatePool(poolid, poolname) {\n\n let context = this\n\n loader.startLoader()\n service.UpdatePool({\n PoolId: poolid,\n PoolName: poolname,\n LocationId: this.selectedlocationId\n }).then(function (response) {\n context.editPool = false\n context.$router.app.$emit('invokePoolLoc')\n for (var i = 0; i < context.pools.length; i++) {\n\n if (context.pools[i].PoolId == poolid) {\n context.pools[i].PoolName = poolname\n context.currentPoolName = poolname\n }\n }\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n context.currentPoolName = poolname\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n },\n DeletePool(poolid) {\n let context = this\n\n this.$confirm('This will permanently delete the pool. Continue?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning',\n\n }).then(() => {\n\n loader.startLoader()\n\n service.DeletePool(poolid).then(function (response) {\n\n context.$router.app.$emit('invokePoolLoc')\n for (var i = 0; i < context.pools.length; i++) {\n\n if (context.pools[i].PoolId == poolid) {\n context.pools.splice(i, 1)\n i--\n }\n }\n\n context.$notify({\n\n title: 'Success',\n\n message: 'Pool deleted',\n\n type: 'success'\n\n })\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n }).catch(() => {\n /* this.$message({\n type: 'info',\n message: 'Delete canceled'\n });*/\n })\n\n },\n DeleteLocation(locationid) {\n let context = this\n\n this.$confirm('This will permanently delete the location. Continue?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n\n loader.startLoader()\n\n service.DeleteLocation(locationid).then(function (response) {\n context.$router.app.$emit('invokePoolLoc')\n for (var i = 0; i < context.locations.length; i++) {\n\n if (context.locations[i].LocationId == locationid) {\n context.locations.splice(i, 1)\n i--\n }\n }\n\n // context.$message({\n // type: 'success',\n // message: 'Location deleted'\n // });\n context.$notify({\n\n title: 'Success',\n\n message: 'Location deleted',\n\n type: 'success'\n\n })\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n }).catch(() => {\n\n })\n\n },\n selectlocationCell(row) {\n if (this.selectedlocationId != row.LocationId) {\n this.getPools(row.LocationId)\n this.editLocation = false\n this.locationFlag = false\n }\n\n\n if (this.selectedlocationId == row.LocationId) {\n this.locationFlag = true;\n\n }\n if (!this.locationFlag) {\n\n this.currentLocationName = row.LocationName\n this.Timezoneselected = row.LocationOffset\n }\n\n this.selectedlocationId = row.LocationId\n\n\n },\n selectpoolCell(row) {\n\n if (this.selectedpoolId != row.PoolId) {\n this.editPool = false\n }\n this.currentPoolName = row.PoolName\n this.selectedpoolId = row.PoolId\n\n },\n\n selectpositionCell(row) {\n\n //this.currentPositionName = row.PositionName\n // this.selectedpoolId = row.PositionId\n\n },\n addLocation() {\n let context = this\n loader.startLoader()\n let model = {\n LocationName: this.locationName,\n LocationOffset: this.Timezone\n }\n service.AddLocation(model).then(function (response) {\n context.$router.app.$emit('invokePoolLoc')\n\n if (!context.locations) {\n context.locations = []\n } else {\n\n context.locations.push({\n LocationId: response.LocationId,\n LocationName: context.locationName,\n LocationOffset: context.Timezone\n })\n context.locationName = '';\n context.Timezone = '';\n }\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n },\n UpdateLocation(locationid, locationname, Timezone) {\n let context = this\n\n loader.startLoader()\n service.UpdateLocation({\n LocationId: locationid,\n LocationName: locationname,\n LocationOffset: Timezone\n }).then(function (response) {\n context.editLocation = false\n context.$router.app.$emit('invokePoolLoc')\n for (var i = 0; i < context.locations.length; i++) {\n\n if (context.locations[i].LocationId == locationid) {\n context.locations[i].LocationName = locationname\n context.locations[i].LocationOffset = Timezone\n context.currentLocationName = locationname,\n context.LocationOffset = Timezone\n }\n }\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n context.currentLocationName = locationname\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n },\n\n handleCurrentChange(item) {\n\n },\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Administration/Positions.controller.js","import * as service from './OrganizationDetails.service.js'\n\nexport default {\n data() {\n return {\n Certificationcolumns: ['Name', 'Description', 'Actions'],\n optionstable: {\n\n headings: {\n Name: 'Name',\n Description: 'Description',\n edit: 'Edit',\n delete: 'Delete'\n\n },\n sortIcon: {\n base: 'glyphicon',\n up: 'glyphicon-chevron-up',\n down: 'glyphicon-chevron-down'\n },\n sortable: ['Name', 'Description'],\n texts: {\n\n filterPlaceholder: 'Search...',\n limit: 'Records:',\n noResults: 'No matching records',\n\n }\n\n },\n CertificationTypes: [],\n AddCertificateForm: {\n\n Name: '',\n Description: ''\n },\n IsCertificateTypeEdit: false,\n CertificateTypeEditID: 0,\n SelectedStateName: '',\n organizationDetails: {},\n locations: [],\n pools: [],\n locationName: '',\n poolName: '',\n IsIdealRange: '1',\n selectedlocationId: '',\n selectedpoolId: '',\n editLocation: false,\n editPool: false,\n currentLocationName: '',\n currentPoolName: '',\n act: false,\n poolpromptVisible: false,\n locationpromptVisible: false,\n positionpromptVisible: false,\n currentRange: '',\n currentRange1: '',\n organizationName: '',\n locationFlag: false,\n orgEditorgEdit: false,\n tabName: 'first',\n position: '',\n positions: [],\n roles: [],\n editPosition: false,\n selectedpositionId: '',\n currentPositionName: '',\n roleModel: '',\n Selectedstatefilled: '',\n modalTitle: '',\n init: true,\n // options: [{\n // value: 'PDT',\n // label: 'PDT'\n // }, {\n // value: 'MDT',\n // label: 'MDT'\n // }, {\n // value: 'CDT',\n // label: 'CDT'\n // }, {\n // value: 'EDT',\n // label: 'EDT'\n // }],\n options: [],\n ranges: [],\n // Timezone:'',\n // Timezoneselected:''\n State: '',\n SelectedState: ''\n }\n },\n\n mounted() {\n this.ranges = [{\n value: true,\n label: 'Ideal Range'\n },\n {\n value: false,\n label: 'Full Range'\n }\n ]\n this.organizationDetails = {\n organizationId: authDetails.OrganizationId,\n organizationName: authDetails.OrganizationName\n }\n this.getLocations()\n this.getPositions()\n this.getRoles()\n this.GetCertificationTypes()\n\n this.getstates()\n },\n\n methods: {\n showcertificate() {\n\n let context = this\n this.modalTitle = 'Create Certificate'\n $('#AddCertificatemodel').modal('show')\n\n setTimeout(function () {\n context.$refs['AddCertificateForm'].resetFields()\n }, 10)\n },\n\n del: function (data) {\n\n var ID = data.row.Id\n\n let context = this\n context.$confirm('Are you sure you want to delete?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n\n loader.startLoader()\n service.DeleteCertificationType(ID).then(function (response) {\n\n context.GetCertificationTypes()\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Delected Successfully',\n type: 'success'\n })\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n // context.$message({\n // type: 'success',\n // message: 'Delete completed'\n // });\n }).catch(() => {\n\n })\n\n },\n\n cancelpopup: function () {\n this.IsCertificateTypeEdit = false\n $('#AddCertificatemodel').modal('hide')\n },\n getstates() {\n\n let context = this\n\n service.GetStates().then(function (response) {\n\n context.options = response\n\n context.options.unshift({\n \"StateId\": null,\n \"StateName\": \"MAHC\"\n\n })\n context.SelectedState = context.options[0].StateId\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n },\n EditCertificateType: function (data) {\n let context = this\n var ID = this.CertificateTypeEditID\n if (ID !== 0) {\n let model = {\n Id: ID,\n Name: data.Name,\n Description: data.Description\n }\n loader.startLoader()\n service.UpdateCertificationType(model).then(function (response) {\n context.IsCertificateTypeEdit = false\n $('#AddCertificatemodel').modal('hide')\n context.CertificateTypeEditID = 0\n\n context.$notify({\n title: 'Success',\n message: 'Updated certificate type succesfully',\n type: 'success'\n })\n\n for (var i = 0; i < context.CertificationTypes.length; i++) {\n if (context.CertificationTypes[i].Id == ID) {\n\n context.CertificationTypes[i].Name = data.Name\n\n context.CertificationTypes[i].Description = data.Description\n break\n }\n }\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n }\n\n },\n\n editcol: function (data) {\n\n var ID = data.row.Id\n\n let context = this\n this.modalTitle = 'Edit Certificate'\n context.CertificateTypeEditID = ID\n for (var i = 0; i < context.CertificationTypes.length; i++) {\n if (context.CertificationTypes[i].Id == data.row.Id) {\n context.AddCertificateForm.Name = data.row.Name\n\n context.AddCertificateForm.Description = data.row.Description\n break\n }\n }\n context.IsCertificateTypeEdit = true\n\n $('#AddCertificatemodel').modal('show')\n\n },\n\n GetCertificationTypes() {\n let context = this\n loader.startLoader()\n service.GetCertificationTypes().then(function (response) {\n\n context.CertificationTypes = response\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n },\n\n submitForm(formName) {\n\n\n this.$refs[formName].validate((valid) => {\n\n\n if (valid) {\n\n let context = this\n loader.startLoader()\n\n let Model = {\n Name: context.AddCertificateForm.Name,\n Description: context.AddCertificateForm.Description\n }\n\n service.AddCertificationType(Model).then(function (response) {\n\n loader.stopLoader()\n $('#AddCertificatemodel').modal('hide')\n context.GetCertificationTypes()\n\n }, (error) => {\n\n loader.stopLoader()\n $('#AddCertificatemodel').modal('hide')\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'LOC_POOS - error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n resetForm(formName) {\n this.$refs[formName].resetFields()\n },\n checkSpace() {\n\n if (this.organizationName) {\n this.organizationName = this.organizationName.replace(/^\\s+|\\s+$/g, '')\n\n }\n\n if (this.locationName) {\n this.locationName = this.locationName.replace(/^\\s+|\\s+$/g, '')\n }\n if (this.currentLocationName) {\n this.currentLocationName = this.currentLocationName.replace(/^\\s+|\\s+$/g, '')\n }\n if (this.poolName) {\n this.poolName = this.poolName.replace(/^\\s+|\\s+$/g, '')\n }\n if (this.currentPoolName) {\n this.currentPoolName = this.currentPoolName.replace(/^\\s+|\\s+$/g, '')\n }\n if (this.position) {\n this.position = this.position.replace(/^\\s+|\\s+$/g, '')\n }\n if (this.currentPositionName) {\n this.currentPositionName = this.currentPositionName.replace(/^\\s+|\\s+$/g, '')\n }\n },\n\n UpdateOrganization() {\n let context = this\n loader.startLoader()\n service.UpdateOrganization({\n OrganizationId: authDetails.OrganizationId,\n OrganizationName: this.organizationName\n }).then(function (response) {\n authDetails.OrganizationName = context.organizationName\n context.organizationDetails.organizationName = context.organizationName\n context.$localStorage.set('authentication', JSON.stringify(authDetails))\n context.orgEditorgEdit = false\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n },\n\n DeletePosition(positionId) {\n let context = this\n\n this.$confirm('This will permanently delete the position. Continue?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n\n loader.startLoader()\n\n service.DeletePosition(positionId).then(function (response) {\n\n for (var i = 0; i < context.positions.length; i++) {\n\n if (context.positions[i].PositionId == positionId) {\n context.positions.splice(i, 1)\n i--\n }\n }\n context.$notify({\n\n title: 'Success',\n\n message: 'Position deleted',\n\n type: 'success'\n\n })\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n }).catch(() => {\n\n })\n },\n\n updateRole(positionId, roleId, positionName) {\n let context = this\n\n let positionModel = {\n PositionId: positionId,\n RoleId: roleId,\n PositionName: positionName\n\n }\n let cfinish = false\n let i = 0\n\n let resTime = setInterval(function () {\n i = i++\n\n if (i > 10 && !cfinish) {\n loader.startLoader()\n clearInterval(resTime)\n }\n\n }, 10)\n\n service.updateRole(positionModel).then(function (response) {\n\n\n cfinish = true\n clearInterval(resTime)\n\n for (var i = 0; i < context.positions.length; i++) {\n\n if (context.positions[i].PositionId == positionId) {\n context.positions[i].PositionName = positionName\n context.currentPositionName = positionName\n context.selectedpositionId = ''\n context.editPosition = false\n }\n }\n\n loader.stopLoader()\n\n }, (error) => {\n cfinish = true\n clearInterval(resTime)\n loader.stopLoader()\n context.currentPositionName = positionName\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n },\n addPosition() {\n let context = this\n loader.startLoader()\n\n let positionModel = {\n\n PositionName: this.position\n\n }\n\n service.AddPosition(positionModel).then(function (response) {\n\n if (!context.positions) {\n context.positions = []\n }\n\n context.positions.push({\n PositionId: response[0].PositionId,\n PositionName: context.position,\n RoleId: response[0].RoleId,\n RoleName: response[0].RoleName\n })\n\n context.position = ''\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n },\n getLocations() {\n let context = this\n loader.startLoader()\n service.GetLocations().then(function (response) {\n\n context.locations = response\n\n if (response) {\n\n if (response.length > 0) {\n setTimeout(function () {\n\n context.$refs.locationTable.setCurrentRow(context.locations[0])\n\n }, 500)\n\n context.getPools(response[0].LocationId)\n context.selectedlocationId = response[0].LocationId\n context.currentLocationName = response[0].LocationName\n }\n }\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.error_description,\n\n type: 'error'\n\n })\n })\n\n },\n getPositions() {\n let context = this\n loader.startLoader()\n service.GetPositions().then(function (response) {\n\n context.positions = response\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.error_description,\n\n type: 'error'\n\n })\n })\n\n },\n getRoles() {\n let context = this\n loader.startLoader()\n service.GetRoles().then(function (response) {\n window.xt = JSON.stringify(response)\n\n context.roles = response\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.error_description,\n\n type: 'error'\n\n })\n })\n\n },\n getPools(locationId) {\n this.poolName = ''\n let context = this\n let cfinish = false\n let i = 0\n\n let resTime = setInterval(function () {\n i = i++\n\n if (i > 10 && !cfinish) {\n loader.startLoader()\n clearInterval(resTime)\n }\n\n }, 10)\n\n service.GetPoolsById(locationId).then(function (response) {\n cfinish = true\n context.pools = response\n clearInterval(resTime)\n if (response) {\n if (response.length > 0) {\n\n context.selectedpoolId = response[0].PoolId\n context.currentPoolName = response[0].PoolName\n }\n }\n\n loader.stopLoader()\n\n }, (error) => {\n cfinish = true\n clearInterval(resTime)\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.error_description,\n\n type: 'error'\n\n })\n })\n\n },\n addPool() {\n let context = this\n loader.startLoader()\n\n service.AddPool({\n PoolName: this.poolName,\n LocationId: this.selectedlocationId\n }).then(function (response) {\n\n if (!context.pools) {\n context.pools = []\n }\n context.pools.push({\n PoolId: response.PoolId,\n PoolName: context.poolName\n })\n context.$router.app.$emit('invokePoolLoc')\n\n context.poolName = ''\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n },\n UpdatePool(poolid, poolname) {\n\n let context = this\n\n loader.startLoader()\n service.UpdatePool({\n PoolId: poolid,\n PoolName: poolname,\n LocationId: this.selectedlocationId\n }).then(function (response) {\n context.editPool = false\n context.$router.app.$emit('invokePoolLoc')\n for (var i = 0; i < context.pools.length; i++) {\n\n if (context.pools[i].PoolId == poolid) {\n context.pools[i].PoolName = poolname\n context.currentPoolName = poolname\n }\n }\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n context.currentPoolName = poolname\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n },\n DeletePool(poolid) {\n let context = this\n\n this.$confirm('This will permanently delete the Aquatic venue. Continue?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning',\n\n }).then(() => {\n\n loader.startLoader()\n\n service.DeletePool(poolid).then(function (response) {\n\n context.$router.app.$emit('invokePoolLoc')\n for (var i = 0; i < context.pools.length; i++) {\n\n if (context.pools[i].PoolId == poolid) {\n context.pools.splice(i, 1)\n i--\n }\n }\n\n context.$notify({\n\n title: 'Success',\n\n message: 'Aquatic venue deleted',\n\n type: 'success'\n\n })\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n }).catch(() => {\n /* this.$message({\n type: 'info',\n message: 'Delete canceled'\n });*/\n })\n\n },\n DeleteLocation(locationid) {\n let context = this\n\n this.$confirm('This will permanently delete the Aquatic facility. Continue?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n\n loader.startLoader()\n\n service.DeleteLocation(locationid).then(function (response) {\n context.$router.app.$emit('invokePoolLoc')\n for (var i = 0; i < context.locations.length; i++) {\n\n if (context.locations[i].LocationId == locationid) {\n context.locations.splice(i, 1)\n i--\n }\n }\n\n context.$notify({\n\n title: 'Success',\n\n message: 'Aquatic facility deleted',\n\n type: 'success'\n\n })\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n }).catch(() => {\n\n })\n\n },\n selectlocationCell(row) {\n\n if (this.selectedlocationId != row.LocationId) {\n this.getPools(row.LocationId)\n this.editLocation = false\n this.locationFlag = false\n }\n\n if (this.selectedlocationId == row.LocationId) {\n this.locationFlag = true\n\n }\n if (!this.locationFlag) {\n\n this.currentLocationName = row.LocationName\n this.Selectedstatefilled = row.StateId\n }\n\n this.selectedlocationId = row.LocationId\n\n },\n selectpoolCell(row) {\n\n if (this.selectedpoolId != row.PoolId) {\n this.editPool = false\n }\n this.currentPoolName = row.PoolName\n this.selectedpoolId = row.PoolId\n\n },\n\n selectpositionCell(row) {\n\n //this.currentPositionName = row.PositionName\n // this.selectedpoolId = row.PositionId\n\n },\n addLocation() {\n let context = this\n loader.startLoader()\n\n let ir\n if (this.IsIdealRange == '1') {\n ir = true\n } else {\n ir = false\n }\n let model = {\n LocationName: this.locationName,\n StateId: this.SelectedState,\n IsIdealRange: ir\n }\n service.AddLocation(model).then(function (response) {\n context.$router.app.$emit('invokePoolLoc')\n context.IsIdealRange = '1'\n if (!context.locations) {\n context.locations = []\n } else {\n\n context.locations.push({\n LocationId: response.LocationId,\n LocationName: context.locationName,\n StateId: context.SelectedState,\n StateName: context.SelectedStateName\n })\n context.locationName = ''\n context.State = ''\n context.SelectedState = ''\n }\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n },\n findlocationname(SelectedStateID) {\n\n if (this.options && SelectedStateID != null) {\n\n for (var i = 0; i < this.options.length; i++) {\n if (this.options[i].StateId == SelectedStateID) {\n this.SelectedStateName = this.options[i].StateName\n break\n }\n }\n }\n\n },\n lrChange(val) {\n\n if (val == '1') {\n this.currentRange = '2'\n\n } else {\n this.currentRange = '1'\n\n }\n },\n UpdateLocation(locationid, locationname, currentRange, StateId) {\n let context = this\n\n loader.startLoader()\n service.UpdateLocation({\n LocationId: locationid,\n LocationName: locationname,\n IsIdealRange: currentRange,\n StateId: StateId\n }).then(function (response) {\n context.editLocation = false\n context.$router.app.$emit('invokePoolLoc')\n\n // context.locations.push({LocationId: response.LocationId, LocationName: context.locationName,StateId: context.SelectedState,StateName:context.SelectedStateName })\n // for (var i = 0; i < context.locations.length; i++) {\n\n // if (context.locations[i].LocationId == locationid) {\n // context.locations[i].LocationName = locationname\n // context.locations[i].StateId = StateId,\n // context.locations[i].StateName=context.SelectedStateName\n // context.currentLocationName = locationname,\n // context.LocationOffset=StateId\n // }\n // }\n\n context.getLocations()\n\n loader.stopLoader()\n\n }, (error) => {\n\n loader.stopLoader()\n context.currentLocationName = locationname\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n },\n\n handleCurrentChange(item) {\n\n },\n\n }\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Administration/location_pools.controller.js","import * as service from './suppliers.service'\nexport default {\n data() {\n\n return {\n compliance_columns: ['CompanyName', 'MainNumber', 'FirstName', 'CellNumber', 'PrimaryEmail', 'Actions'],\n optionstable: {\n headings: {\n FirstName: 'Contact Name',\n LastName: 'Last Name',\n CompanyName: 'Company Name',\n MainNumber: 'Company Contact Number',\n CellNumber: 'Contact Number',\n PrimaryEmail: 'Email Address',\n\n Actions: ''\n },\n labelPosition: 'top',\n // sortIcon: {base: 'glyphicon', up: 'glyphicon-chevron-up', down: 'glyphicon-chevron-down'},\n perPage: 10,\n perPageValues: [5, 10, 25, 50, 100],\n /* sortable: [\"ActionDate\",\"Description\", \"CommentedBy\", \"ActionTypeName\"],*/\n sortable: [],\n\n texts: {\n filterPlaceholder: 'Search...',\n limit: 'Rows per page:',\n noResults: 'No matching records',\n }\n },\n\n supplier: {\n CompanyName: '',\n WebAddress: '',\n Address1: '',\n City: '',\n State: '',\n ZipCode: '',\n MainNumber: '',\n MainFaxNumber: '',\n PaymentCompanyName: '',\n PaymentAddress1: '',\n PaymentCity: '',\n PaymentState: '',\n PaymentZipCode: '',\n SupplierContacts: [{\n FirstName: '',\n LastName: '',\n Address1: '',\n City: '',\n State: '',\n ZipCode: '',\n SupplierNotes: '',\n CellNumber: '',\n HomeNumber: '',\n PrimaryEmail: '',\n AlternativeEmail: '',\n EmployeeNotes: '',\n\n }],\n\n },\n copyToPayment: false,\n addComplianceCopy: {},\n rules: {\n\n CompanyName: [\n\n {\n required: true,\n message: 'This field is required'\n },\n {\n min: 1,\n max: 50,\n message: 'Length should be 1 to 50'\n }\n ],\n PaymentCompanyName: [\n\n {\n required: true,\n message: 'This field is required'\n },\n {\n min: 1,\n max: 50,\n message: 'Length should be 1 to 50'\n }\n ],\n MainNumber: [\n\n /* {required: true, message: 'This field is required'},\n // {min: 1, max: 50, message: 'Length should be 1 to 50'},\n { type: 'number', message: 'This Field must be a number'}*/\n\n ],\n\n },\n Suppliers: [],\n\n modalTitle: '',\n locationId: 25,\n isediting: false,\n isaddding: false,\n isAddingOrEditing: \"\" //FG - FOOF - After Cert - First Release Security(7)\n\n }\n },\n mounted() {\n\n this.GetAllSuppliers()\n\n\n },\n\n methods: {\n showFtab() {\n $('#fli').addClass('active')\n $('#sli').removeClass('active')\n $('#profile-tab-1').show()\n $('#profile-tab-2').hide()\n },\n\n showStab() {\n this.$refs['addCompliance'].validate((valid) => {\n if (valid) {\n $('#sli').addClass('active')\n $('#fli').removeClass('active')\n $('#profile-tab-2').show()\n $('#profile-tab-1').hide()\n }\n })\n },\n CopyTo() {\n\n if (this.copyToPayment) {\n this.supplier.PaymentCompanyName = this.supplier.CompanyName\n this.supplier.PaymentAddress1 = this.supplier.Address1\n this.supplier.PaymentCity = this.supplier.City\n this.supplier.PaymentState = this.supplier.State\n this.supplier.PaymentZipCode = this.supplier.ZipCode\n\n } else {\n\n this.supplier.PaymentCompanyName = \"\"\n this.supplier.PaymentAddress1 = \"\"\n this.supplier.PaymentCity = \"\"\n this.supplier.PaymentState = \"\"\n this.supplier.PaymentZipCode = \"\"\n\n }\n\n\n },\n addCompliancevit() {\n this.isaddding = true\n this.isAddingOrEditing = \"A\"\n this.supplier = {\n CompanyName: '',\n WebAddress: '',\n Address1: '',\n City: '',\n State: '',\n ZipCode: '',\n MainNumber: '',\n MainFaxNumber: '',\n PaymentCompanyName: '',\n PaymentAddress1: '',\n PaymentCity: '',\n PaymentState: '',\n PaymentZipCode: '',\n SupplierContacts: [{\n FirstName: '',\n LastName: '',\n Address1: '',\n City: '',\n State: '',\n ZipCode: '',\n SupplierNotes: '',\n CellNumber: '',\n HomeNumber: '',\n PrimaryEmail: '',\n AlternativeEmail: '',\n EmployeeNotes: '',\n\n }]\n }\n\n this.copyToPayment = false\n },\n showCompliancevit() {\n this.isaddding = false\n this.isediting = false\n this.isAddingOrEditing = \"\"\n },\n\n\n GetAllSuppliers() {\n let context = this\n loader.startLoader()\n service.GetAllSuppliers().then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n context.Suppliers = []\n loader.stopLoader()\n return;\n }\n\n if (response && response != null) {\n context.Suppliers = response\n tooltip.startTooltip(50)\n } else {\n\n context.Suppliers = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetMemberDetails(id) {\n let context = this\n loader.startLoader()\n service.GetMemberDetails(id).then(function (response) {\n\n if (response && response != null) {\n context.addAccount = response\n }\n\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n //FG - FOOF - After Cert - First Release (6) - rewrote delete code below to use new methods in hydrowareCommonJS.js\n //The delete function below deletes a row from the table\n del: function (data) {\n var ID = data.row.SupplierId\n let context = this\n var opts = {message: 'Are you sure you want to delete ' + data.row.CompanyName + '?'}\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.deleteSupplierRow.bind(null,ID))\n },\n deleteSupplierRow(ID) {\n var context = this;\n loader.startLoader()\n service.DeleteSupplier(ID).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.GetAllSuppliers()\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n },\n (error) => {\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\n })\n },\n \n cancelpopup: function () {\n\n $('#Addkudosmodel').modal('hide')\n },\n\n editcol: function (data) {\n\n var ID = data.row.Id\n\n let context = this\n context.EditableColID = ID;\n this.supplier = data.row\n\n context.isediting = true\n context.isAddingOrEditing = \"E\"\n\n },\n\n\n AddSupplier(formName) {\n\n\n let context = this\n this.$refs[formName].validate((valid) => {\n if (valid) {\n let context1 = this\n loader.startLoader()\n\n // context.addAccount['LocationId'] = context.locationId\n\n service.AddSupplier(context.supplier).then(function (response) {\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n loader.stopLoader()\n\n var a = context.supplier;\n context.$notify({\n title: 'Success',\n message: 'Supplier details Created',\n type: 'success'\n })\n context.GetAllSuppliers()\n context.isediting = false\n context.isaddding = false\n context.isAddingOrEditing = \"\"\n\n }, (error) => {\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'SUPPLIERS - 1 error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n\n\n UpdateSupplier(formName) {\n\n\n let context = this\n this.$refs[formName].validate((valid) => {\n if (valid) {\n let context1 = this\n loader.startLoader()\n //context.addAccount['LocationId'] = context.locationId\n\n\n // context.addCompliance['Id'] =\n service.UpdateSupplier(context.supplier).then(function (response) {\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Supplier details Updated',\n type: 'success'\n })\n context.GetAllSuppliers()\n context.isediting = false\n context.isaddding = false\n context.isAddingOrEditing = \"\"\n\n }, (error) => {\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'SUPPLIERS -2 error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n\n\n resetForm(formName) {\n this.$refs[formName].resetFields()\n },\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Administration/suppliers.controller.js","//Compliance\r\n\r\nexport const GetAllSuppliers = () => {\r\n return $.get('api/Supplier/GetAllSuppliers')\r\n}\r\n\r\nexport const GetMemberDetails = (id) => {\r\n return $.get('Patron/GetMemberDetails?MemberId='+id)\r\n}\r\n\r\nexport const AddSupplier = (model) => {\r\n return $.post('api/Supplier/AddSupplier', model)\r\n}\r\n\r\nexport const UpdateSupplier = (model) => {\r\n\r\n return $.post('api/Supplier/UpdateSupplier', model)\r\n}\r\n\r\n\r\n\r\nexport const DeleteSupplier = (id) => {\r\n return $.post('api/Supplier/DeleteSupplier?supplierId=' + id)\r\n}\r\n\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Administration/suppliers.service.js","import * as service from './administrator.service'\nexport default {\n data() {\n var validatePass = (rule, value, callback) => {\n if (value != '' && value) {\n var letter = /^[-+]?\\d+$/;\n value = value + ''\n if (!value.match(letter)) {\n callback(new Error('value must be a number'));\n }\n\n\n // this.$refs.addCompliance.resetFields('LicenseCount');\n }\n\n callback();\n };\n return {\n compliance_columns: ['OrganizationId', 'OrganizationName', 'LicenseCount', 'LocationCount', 'PoolCount', 'LastUpdatedOn', 'Actions'],\n optionstable: {\n headings: {\n OrganizationName: 'Organization',\n LicenseCount: 'License Count',\n LocationCount: 'Facility Count',\n PoolCount: 'Venue Count',\n LastUpdatedOn: 'Last Updated (UTC)',\n OrganizationId: 'ID',\n Actions: ''\n },\n labelPosition: 'top',\n\n /* isediting: false,\n EditableColID: '',\n role: '',*/\n // sortIcon: {base: 'glyphicon', up: 'glyphicon-chevron-up', down: 'glyphicon-chevron-down'},\n perPage: 10,\n perPageValues: [5, 10, 25, 50, 100],\n /* sortable: [\"ActionDate\",\"Description\", \"CommentedBy\", \"ActionTypeName\"],*/\n sortable: ['OrganizationId', 'OrganizationName', 'LicenseCount', 'LocationCount', 'PoolCount', 'LastUpdatedOn'],\n orderBy: 'Ascending',\n texts: {\n filterPlaceholder: 'Search...',\n limit: 'rows per page:',\n noResults: 'No matching records',\n }\n },\n\n signupForm: {\n Email: '',\n OrganizationName: '',\n NewPassword: '',\n ConfirmPassword: '',\n LicenseCount: '',\n LocationCount: '',\n PoolCount: ''\n },\n addComplianceCopy: {},\n rules: {\n organisation: [{\n required: true,\n message: 'This field is required'\n },\n {\n min: 1,\n max: 40,\n message: 'Length should be 1 to 40'\n }\n\n ],\n OrganizationName: [{\n required: true,\n message: 'This field is required'\n },\n {\n min: 1,\n max: 40,\n message: 'Length should be 1 to 40'\n }\n\n ],\n Email: [{\n required: true,\n message: 'This field is required',\n trigger: 'blur'\n },\n {\n type: 'email',\n message: 'Invalid Email Address'\n },\n\n ],\n NewPassword: [{\n required: true,\n message: 'This field is required'\n },\n {\n max: 40,\n message: 'Length should be 8 to 40'\n }\n\n ],\n ConfirmPassword: [{\n required: true,\n message: 'This field is required'\n },\n {\n max: 40,\n message: 'Length should be 8 to 40'\n }\n ],\n LicenseCount: [\n\n {\n validator: validatePass\n }\n ],\n LocationCount: [{\n validator: validatePass\n }],\n PoolCount: [{\n validator: validatePass\n }\n\n ]\n\n },\n Organizations: [],\n locationName: '',\n modalTitle: '',\n locationId: 25,\n isediting: false,\n isaddding: false,\n passClicked: false,\n passClickedConfirm: false,\n ispasswordok: false,\n isdisablebutton: true,\n Certificateparams: {\n organizationid: '',\n Role: 'Tool-admin'\n }\n\n }\n },\n mounted() {\n let context = this\n /* this.$router.app.$on('emittedlocation_obj', (data) => {\n context.locationId = data.LocationId ? data.LocationId : ''\n context.locationName = data.LocationName ? ' - ' + data.LocationName : ''\n\n // alert(JSON.stringify(data))\n\n })*/\n\n this.GetOrganizations()\n\n },\n\n methods: {\n togglePassword() {\n\n if (this.passClicked == false) {\n\n $('#password1').children().attr('type', 'text')\n this.passClicked = true\n } else {\n $('#password1').children().attr('type', 'password')\n this.passClicked = false\n }\n },\n\n togglePasswordConfirm() {;\n if (!this.passClickedConfirm) {\n $('#passwordconfirm1').children().attr('type', 'text')\n this.passClickedConfirm = true\n } else {\n $('#passwordconfirm1').children().attr('type', 'password')\n this.passClickedConfirm = false\n }\n\n },\n addCompliancevit() {\n this.isaddding = true\n\n this.signupForm = {\n\n Email: '',\n OrganizationName: '',\n NewPassword: '',\n ConfirmPassword: '',\n LicenseCount: '',\n LocationCount: '',\n PoolCount: ''\n\n }\n\n },\n showCompliancevit() {\n this.isaddding = false\n this.isediting = false\n },\n\n GetOrganizations(locationId) {\n let context = this\n loader.startLoader()\n service.GetOrganizations(locationId).then(function (response) {\n\n if (response && response != null) {\n context.Organizations = response\n tooltip.startTooltip(50)\n } else {\n\n context.Organizations = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n\n\n\n\n editcol: function (data) {\n\n var ID = data.row.Id\n this.Certificateparams.organizationid = data.row.OrganizationId\n let context = this\n context.EditableColID = ID\n\n context.signupForm = data.row\n context.isediting = true\n\n },\n\n AddDirector(formName) {\n\n let context = this\n this.$refs[formName].validate((valid) => {\n if (valid) {\n let context1 = this\n loader.startLoader()\n\n\n service.AddDirector(context.signupForm).then(function (response) {\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Account Created Successfully',\n type: 'success'\n })\n context.GetOrganizations()\n context.isediting = false\n context.isaddding = false\n\n }, (error) => {\n\n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'ADMIN - 1 error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n\n UpdateOrganizationByToolAdmin(formName) {\n\n\n let context = this\n this.$refs[formName].validate((valid) => {\n if (valid) {\n let context1 = this\n loader.startLoader()\n\n\n // context.addCompliance['Id'] =\n service.UpdateOrganizationByToolAdmin(context.signupForm).then(function (response) {\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Account Updated Successfully',\n type: 'success'\n })\n context.GetOrganizations()\n context.isediting = false\n context.isaddding = false\n\n }, (error) => {\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Error',\n message: error.responseJSON.ExceptionMessage,\n type: 'error'\n })\n })\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'ADMIN -2 error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n\n resetForm(formName) {\n this.$refs[formName].resetFields()\n },\n },\n watch: {\n\n signupForm: {\n handler: function (newValue) {\n\n if (newValue.NewPassword.length >= 8 && newValue.NewPassword.match(/[!@#$%^&*(){}[\\]<>?/|.:;_-]/) && newValue.NewPassword.match(/^(?=.*[A-Z])/) && newValue.NewPassword == newValue.ConfirmPassword) {\n\n this.isdisablebutton = false;\n } else {\n this.isdisablebutton = true;\n }\n\n\n if (newValue.NewPassword.length >= 8 && newValue.NewPassword.match(/[!@#$%^&*(){}[\\]<>?/|.:;_-]/)) {\n\n this.ispasswordok = false;\n } else {\n this.ispasswordok = true;\n }\n\n\n },\n deep: true\n }\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Administrator/administrator.controller.js","//Compliance\r\n\r\nexport const GetOrganizations = (id) => {\r\n return $.get('Account/GetOrganizations')\r\n}\r\n\r\nexport const AddDirector = (model) => {\r\n return $.post('Account/AddDirector', model)\r\n}\r\n\r\nexport const UpdateOrganizationByToolAdmin = (model) => {\r\n\r\n return $.post('Account/UpdateOrganizationByToolAdmin', model)\r\n}\r\n\r\n\r\n\r\n/*export const DeleteMember = (id) => {\r\n return $.post('Patron/DeleteMember?MemberId=' + id)\r\n}*/\r\n\r\n\r\n\r\n\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Administrator/administrator.service.js","import * as service from './compliance.service'\n//FG - FOOF - 12-11-2018 - I added the class below. \n// It is used locally (as in a \"work\" variable) to keep\n// track of the \"uploaded\" files.\nclass ComplianceDocumentUploadFileHelper {\n helperListIndex=0 //filled in by code in this file\n ComplianceDocumentId=0 //corresponds to the Id value downloaded from the server for existing (i.e. already uploaded) files\n ComplianceDocumentPath='' //corresponds to the DocumentPath value downloaded from the server for existing (i.e. already uploaded) files\n ComplianceDocumentRealFileName='' //corresponds to the RealFileName value downloaded from the server for existing (i.e. already uploaded) files\n actualFile='' //filled in when a user chooses a file to uploaded (file content)\n action=0 //action to take for the file (0-do nothing, 1-delete, 2-add)\n static ACTION_DO_NOTHING = 0;\n static ACTION_DELETE = 1;\n static ACTION_ADD = 2;\n}\nexport default {\n data() {\n /********************************************************************************************\n * FG - FOOF - 12-4-2018 - \n * Columns were:\n * compliance_columns: ['Number', 'Title', 'Revision', 'AttachedFiles', 'Actions'],\n * I changed them to:\n * compliance_columns: ['Title', 'CreatedOn', 'RevisedOn','ApprovedOn', 'AttachedFiles', 'Actions'],\n *******************************************************************************************/\n return {\n compliance_columns: ['Title', 'CreatedOn', 'RevisedOn','ApprovedOn', 'AttachedFiles', 'Actions'],\n attachmentcolor: 'gray',\n optionstable: {\n skin: this.$hydrowareCommonJS.hydrowareTableSkin,\n headings: {\n AttachedFiles: 'Attached Files',\n CreatedOn: 'Created On',\n RevisedOn: 'Revised On',\n ApprovedOn:'Approved On',\n Actions: ''\n },\n\n columnsClasses: {\n //\"Title\":\"hydroware-title-column\",\n \"Actions\":\"hydroware-2-button-column\",\n \"CreatedOn\":\"hidden-xs hydroware-date-column\",\n \"RevisedOn\":\"hidden-xs hydroware-date-column\",\n \"ApprovedOn\":\"hidden-xs hydroware-date-column\",\n \"AttachedFiles\":\"hidden-xs hidden-sm\"\n },\n perPage: 5,\n perPageValues: [5, 10, 25, 50, 100],\n sortable: [\"Title\", \"CreatedOn\",\"RevisedOn\", \"ApprovedOn\"],\n texts: {\n filterPlaceholder: 'Search...',\n limit: 'rows per page:',\n noResults: 'No matching records',\n }\n },\n //FG - FOOF - 12-211-2018 - the name \"addDocument\" was in place before I got the code\n // it is not necassarily a document that is being added and at some point in the\n // future I may change the name.\n addDocument: {\n Instructions: '',\n Title: '',\n Number: '',\n Revision: '',\n CreatedBy: '',\n CreatedOn: '',\n RevisedBy: '',\n RevisedOn: '',\n ApprovedBy: '',\n ApprovedOn: '',\n Notes: '',\n Attachments: [],\n ForAllLocations: ''\n },\n rules: {\n Title: [\n {required: true, message: 'This field is required'},\n {min: 1, max: 50, message: 'Length should be 1 to 50'}\n ],\n //FG - FOOF - After Cert - First Release - (2) \n // - For first release, at least, Number is NOT required\n // - ALSO - this value is specified as nvarchar(5) in the DB so it does not HAVE TO BE A number either\n Number: [\n //{required: false, message: 'This field is required'},\n //{type: 'number', message: 'value must be a number'}\n ],\n //FG - FOOF - After Cert - First Release - (2) \n // - For first release, at least, Revision is NOT required\n // - ALSO - this value is specified as nvarchar(5) in the DB so it does not HAVE TO BE A number either\n Revision: [\n //{required: true,message: 'This field is required'},\n //{type: 'number', message: 'value must be a number'},\n ],\n },\n labelPosition: 'top',\n Documents: [],\n Users: [],\n image_data: [], //FG - FOOF - this becomes a FormData instance and is passed to the server\n attachedfiles: [], \n //FG - FOOF - Dec 11 2018 - added variable below\n // It holds onto one ComplianceDocumentUploadFileHelper instance for each file that either has been or will be uploaded\n uploadFileHelperArray: [], \n Attachments: [], //FG - FOOF - this array will the files to be uploaded to the server \n //FG - FOOF - DEC 11 2018 - I'd like to change things so the var below lists the id's of the files to be deleted\n DocIds: [], //FG - FOOF - this array will become a delimited string of the ids that should be kept\n locationName: '',\n modalTitle: '',\n locationId: 25,\n isediting: false,\n isaddding: false,\n isAddingOrEditing:\"\" //FG - FOOF - After Cert - First Release Security (7)\n }\n },\n mounted() {\n \n let context = this\n this.$router.app.$on('emittedlocation_obj', (data) => {\n context.locationId = data.LocationId ? data.LocationId : ''\n context.locationName = data.LocationName ? ' - ' + data.LocationName : ''\n if (context.locationId) {\n context.GetAllComplianceDocs(context.locationId) \n }\n })\n this.image_data=[]\n this.image_data = new FormData()\n this.GetAllUsers()\n },\n\n //FG - FOOF - TOOLTIPSTER REINITIALIZE ON RESIZE\n created() {\n this.$hydrowareCommonJS.handleTooltips(\"create\");\n },\n\n destroyed() {\n this.$hydrowareCommonJS.handleTooltips(\"destroy\");\n },\n\n methods: {\n \n addCompliancevit() {\n this.isaddding = true\n this.isAddingOrEditing=\"A\"; //FG - FOOF - After Cert - First Release Security (7)\n \n this.uploadFileHelperArray = [] //FG - Dec 11 2018 - initialize the array that is used to keep track of the upload files\n \n this.addDocument = {\n Instructions: '',\n Title: '',\n Number: '',\n Revision: '',\n CreatedBy: '',\n CreatedOn: '',\n RevisedBy: '',\n RevisedOn: '',\n ApprovedBy: '',\n ApprovedOn: '',\n Notes: '',\n Attachments: [],\n ForAllLocations: false\n }\n this.Attachments = [] //FG - FOOF - is this necassary ?\n this.addDocument.RevisedBy = this.Users[0].Id\n this.addDocument.CreatedBy = this.Users[0].Id\n this.addDocument.ApprovedBy = this.Users[0].Id\n },\n setAttachment(e) {\n let context = this\n function getExtension(filename) {\n var parts = filename.split('.')\n return parts[parts.length - 1]\n }\n for (var i = 0; i < e.target.files.length; i++) {\n var name = e.target.files[i].name\n var type = e.target.files[i].type\n var size = e.target.files[i].size\n //FG - FOOF - needs to add the xlsx and xls extentions\n if ( type != 'image/jpeg' \n && type != 'image/jpg' \n && type != 'image/png' \n && getExtension(name) != 'xlsx' //FG - FOOF - Dec 12 2018\n && getExtension(name) != 'xls' //FG - FOOF - Dec 12 2018\n && getExtension(name) != 'docx' \n && getExtension(name) != 'doc' \n && getExtension(name) != 'txt' \n && getExtension(name) != 'pdf') {\n alert('Invalid file format')\n return\n }\n if (size == 0) {\n alert('File is Empty')\n return\n }\n if (size > 5000000) {\n alert('You have exceeded the maximum image size of 5 MB')\n return\n }\n //FG - FOOF - DEC 11 2018 - push the new file into the uploadFileHelperArray\n var newFile = new ComplianceDocumentUploadFileHelper();\n newFile.helperListIndex=this.uploadFileHelperArray.length \n newFile.ComplianceDocumentId=-1 \n newFile.ComplianceDocumentPath='' \n newFile.ComplianceDocumentRealFileName=name\n newFile.actualFile=e.target.files[i] \n newFile.action=ComplianceDocumentUploadFileHelper.ACTION_ADD \n this.uploadFileHelperArray.push(newFile)\n }\n },\n removeAttachedFile(tag) {\n //FG - FOOF - After Cert - First Release (6) - added confirm for removing uploaded files\n //PRIOR MODS\n // FG - FOOF - Dec 11 2018 - Mark the file for deletion\n // NOTE: this will set the value of action for the entry in the\n // uploadFileHelperArray that corresponds to the file\n // whose \"x\" was clicked.\n let context = this\n var opts = {title:\"Remove file\", \n message: 'Are you sure you want to delete file ' + tag.ComplianceDocumentRealFileName + ' from this document?'\n + '
NOTE: This action will not be completed until you add (or update) the document.'\n }\n context.$hydrowareCommonJS.displayConfirmDeletePopup(this, opts, this.tagDocumentForDelete.bind(null,tag))\n //tag.action=ComplianceDocumentUploadFileHelper.ACTION_DELETE;\n },\n tagDocumentForDelete(tag) {\n //alert(\"TAGGING\")\n tag.action=ComplianceDocumentUploadFileHelper.ACTION_DELETE;\n },\n showCompliancevit() {\n this.isaddding = false \n this.isediting = false\n this.isAddingOrEditing=\"\"; //FG - FOOF - After Cert - First Release Security (7)\n },\n GetAllComplianceDocs(locationId) {\n let context = this\n loader.startLoader()\n service.GetAllComplianceDocs(locationId).then(function (response) {\n //FG - FOOF - After Cert - First Release Security (7) Can the user at least view the data ?\n if(context.$hydrowareSecurityJS.isDataRestricted(response)) {\n context.Documents = []\n loader.stopLoader();\n return;\n }\n //FG - FOOF - After Cert - First Release Security (7) - above\n\n if (response && response != null) {\n context.Documents = response\n tooltip.startTooltip(50)\n } else {\n context.Documents = []\n }\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetAllUsers() {\n let context = this\n loader.startLoader()\n service.GetAllUsers().then(function (response) {\n if (response && response != null) {\n context.Users = response\n } else {\n context.Users = []\n }\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n //FG - FOOF - After Cert - First Release (6) - rewrote delete code below to use new methods in hydrowareCommonJS.js\n //The delete function below deletes a row from the table\n del: function (data) {\n var ID = data.row.Id\n let context = this\n var opts = {message: 'Are you sure you want to delete document ' + data.row.Title +'?'}\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.deleteAComplianceDocument.bind(null,ID))\n },\n deleteAComplianceDocument(ID) {\n var context=this;\n loader.startLoader()\n service.DeleteComplianceDoc(ID).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{}))\n return;\n\n context.GetAllComplianceDocs(context.locationId)\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n }, (error) => {\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\n })\n },\n //FG - FOOF - After Cert - First Release (6) - rewrote delete code above to use new methods in hydrowareCommonJS.js\n \n \n cancelpopup: function () {\n $('#Addkudosmodel').modal('hide')\n },\n\n\n editcol: function (data) {\n this.uploadFileHelperArray = [] //FG - Dec 11 2018 - initialize the array that is used to keep track of the upload files\n this.Attachments = []\n this.DocIds = [] //FG - FOOF - Dec 8 2018 - added this because docs were sometimes left behind\n var ID = data.row.Id\n let context = this\n context.EditableColID = ID\n context.addDocument = data.row\n context.addDocument['Id'] = ID\n context.addDocument['CreatedBy'] = data.row.CreatedUserId\n context.addDocument['RevisedBy'] = data.row.RevisedUserId\n context.addDocument['ApprovedBy'] = data.row.ApprovedUserId\n if (data.row.CreatedOn) {context.addDocument[\"CreatedOn\"] = new Date(data.row.CreatedOn)}\n if (data.row.RevisedOn) {context.addDocument[\"RevisedOn\"] = new Date(data.row.RevisedOn)}\n if (data.row.ApprovedOn) {context.addDocument[\"ApprovedOn\"] = new Date(data.row.ApprovedOn)}\n //FG - FOOF - After Cert - First Release (2) - The database has the columns for number and revision\n // defined as nvarchar(50) thus they DO NOT NEED TO BE NUMBERS... parsing them causes\n // \"NaN\" to be displayed so they should not be parsed.\n //if (data.row.Number) {context.addDocument[\"Number\"] = parseInt(data.row.Number)}\n //if (data.row.Revision) {context.addDocument[\"Revision\"] = parseInt(data.row.Revision)}\n context.addDocument[\"Number\"] = data.row.Number\n context.addDocument[\"Revision\"] = data.row.Revision\n\n context.addDocument.ComplianceDocumentFiles = context.addDocument.ComplianceDocumentFiles ? context.addDocument.ComplianceDocumentFiles : []\n //FG - FOOF - 12-11-2018 - added comment\n // ComplianceDocumentFiles hold onto the list of files that have already been\n // uploaded for a Compliance Document. It is the list of files that is\n // delivered FROM the server to the client when editting a row.\n // The pertinent info for each entry in the list is:\n // Id (aka DocId) - the id for the DB row storing the uploaded doc\n // DocumentPath - the path to find the uploaded doc in the file system (including filename)\n // RealFileName - the name of the file as stored in the file system (same as the filename in the path)\n //\n //FG - FOOF - 12-11-2018 - I changed the way we process uploaded files.\n // I use the uploadFileHelper and uploadFileHelperArray to hold onto all the\n // info I need to process the uploaded and to be uploaded files.\n // When the user \"submits\" this page I go thru the uploadFileHelperArray\n // to create the info the server needs to process the files properly.\n for (var i = 0; i < context.addDocument.ComplianceDocumentFiles.length; i++) {\n var uploadFileHelper = new ComplianceDocumentUploadFileHelper ()\n uploadFileHelper.helperListIndex = i\n uploadFileHelper.ComplianceDocumentId =context.addDocument.ComplianceDocumentFiles[i].Id, \n uploadFileHelper.ComplianceDocumentPath =context.addDocument.ComplianceDocumentFiles[i].DocumentPath, \n uploadFileHelper.ComplianceDocumentRealFileName=context.addDocument.ComplianceDocumentFiles[i].RealFileName, \n uploadFileHelper.actualFile =null, \n uploadFileHelper.action =ComplianceDocumentUploadFileHelper.ACTION_DO_NOTHING\n context.uploadFileHelperArray.push(uploadFileHelper);\n }\n context.isediting = true\n context.isAddingOrEditing=context.$hydrowareSecurityJS.showViewOrEditOrNeitherButton_A('compliancedoc');\n //context.isAddingOrEditing=\"E\"; //FG - FOOF - After Cert - First Release Security (7)\n\n }, //FG - END OF editcol\n\n //FG - DEC 12-2018 CONDENSED THIS CODE WHEN I RE-WROTE THE WAY UPLOADS WORK\n AddComplianceDocument(formName) {\n return this.AddOrUpdateComplianceDocument(formName);\n },\n //FG - DEC 12-2018 CONDENSED THIS CODE WHEN I RE-WROTE THE WAY UPLOADS WORK\n UpdateComplianceDocument(formName) {\n return this.AddOrUpdateComplianceDocument(formName,true);\n },\n //FG - DEC 12-2018 One of the methods for the condensed code I wrote for update and add\n AddOrUpdateComplianceDocument(formName, isUpdate=false) {\n let context = this\n this.$refs[formName].validate((valid) => {\n if (valid) {\n loader.startLoader()\n this.setupDataThatWillBeSentToServer(true); //FG - FOOF - Dec 12-2018 - \"true\" indicates update\n service.AddOrUpdateComplianceDocument(this.image_data,isUpdate).then(function (response) {\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{}))\n return;\n\n loader.stopLoader()\n context.$notify({\n title: 'Success',\n message: isUpdate ? 'Compliance Document Details Updated' : 'Compliance Document Detail Created',\n //message: 'Compliance Document Details Updated',\n type: 'success'\n })\n context.GetAllComplianceDocs(context.locationId)\n context.isediting = false\n context.isaddding = false\n this.isAddingOrEditing=\"\"; //FG - FOOF - After Cert - First Release Security (7)\n }, (error) => {\n loader.stopLoader()\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } \n else {\n this.$notify({\n title: 'Error',\n message: 'compliance_doc.controller AddOrUpdate error on submit!!',\n type: 'error'\n })\n return false\n }\n })\n },\n //FG - FOOF - Dec 12 2018 - function below eliminated duplicate code from Digiclarity and\n // is another method I wrote to condense code\n setupDataThatWillBeSentToServer(isUpdate) {\n let context = this\n var image_arr = {}\n this.image_data = new FormData() //FG - FOOF - added on Dec 12 2018 while testing for uploads\n if(isUpdate) {\n if (context.addDocument.Id) {\n image_arr['Id'] = context.addDocument.Id\n }\n }\n if (context.locationId) {\n image_arr['LocationId'] = context.locationId\n }\n if (context.addDocument.Instructions) {\n image_arr['Instructions'] = context.addDocument.Instructions\n } else {\n image_arr['Instructions'] = ''\n }\n if (context.addDocument.Title) {\n image_arr['Title'] = context.addDocument.Title\n } else {\n image_arr['Title'] = ''\n }\n if (context.addDocument.Number) {\n image_arr['Number'] = context.addDocument.Number\n } else {\n image_arr['Number'] = ''\n }\n if (context.addDocument.Revision) {\n image_arr['Revision'] = context.addDocument.Revision\n } else {\n image_arr['Revision'] = ''\n }\n if (context.addDocument.CreatedBy) {\n image_arr['CreatedBy'] = context.addDocument.CreatedBy\n } else {\n image_arr['CreatedBy'] = ''\n }\n if (context.addDocument.CreatedOn) {\n image_arr['CreatedOn'] = context.$options.filters.fdate(context.addDocument.CreatedOn)\n } else {\n image_arr['CreatedOn'] = ''\n }\n if (context.addDocument.RevisedBy) {\n image_arr['RevisedBy'] = context.addDocument.RevisedBy\n } else {\n image_arr['RevisedBy'] = ''\n }\n if (context.addDocument.RevisedOn) {\n image_arr['RevisedOn'] = context.$options.filters.fdate(context.addDocument.RevisedOn)\n } else {\n image_arr['RevisedOn'] = ''\n }\n if (context.addDocument.ApprovedBy) {\n image_arr['ApprovedBy'] = context.addDocument.ApprovedBy\n } else {\n image_arr['ApprovedBy'] = ''\n }\n if (context.addDocument.ApprovedOn) {\n image_arr['ApprovedOn'] = context.$options.filters.fdate(context.addDocument.ApprovedOn)\n } else {\n image_arr['ApprovedOn'] = ''\n }\n if (context.addDocument.Notes) {\n image_arr['Notes'] = context.addDocument.Notes\n } else {\n image_arr['Notes'] = ''\n }\n if (context.addDocument.ForAllLocations) {\n image_arr['ForAllLocations'] = context.addDocument.ForAllLocations\n } else {\n image_arr['ForAllLocations'] = ''\n }\n for (var key in image_arr) {\n this.image_data.append(key, image_arr[key])\n }\n //FG - FOOF - Dec 11 2018 - make sure the new files are uploaded (Attachements)\n // AND the id's of the files to keep DocIds are also uploaded\n // NOTE: THIS SEEMS BACKWARD TO ME... I'D LIKE THIS TO BE THE ID's OF DOCS TO BE DELETED\n context.DocIds=\"0\";\n var attachmentsIdx=0;\n for(var foofidx=0; foofidx {\n context.locationId = data.LocationId ? data.LocationId : ''\n context.locationName = data.LocationName ? ' - ' + data.LocationName : ''\n if (context.locationId) {\n context.GetAllCompliance(context.locationId)\n context.GetComplianceDocuments(context.locationId)\n }\n })\n\n // this.GetAllCompliance(this.locationId)\n this.GetAllParentMahcCodes()\n // this.GetComplianceDocuments(this.locationId)\n this.GetAllUsers()\n\n },\n \n //FG - FOOF - TOOLTIPSTER REINITIALIZE ON RESIZE\n created() {\n this.$hydrowareCommonJS.handleTooltips(\"create\");\n },\n\n destroyed() {\n this.$hydrowareCommonJS.handleTooltips(\"destroy\");\n },\n\n\n\n\n\n methods: {\n addCompliancevit() {\n this.isaddding = true\n this.GetChildsByMahcId(this.MahcCodes[0].Id)\n this.addCompliance = {\n ComplianceDocumentDetailId: '',\n DueDate: '',\n LocationId: '', \n MahcCodeChildId: this.MahcChildes[0].Id,\n MahcCodeId: this.MahcCodes[0].Id,\n Notes: '',\n Responsibility: this.AllUsers[0].Id,\n LocationId: '',\n Id: ''\n }\n },\n showCompliancevit() {\n this.isaddding = false\n this.isediting = false\n },\n ShowAddKudos() {\n let context = this\n\n setTimeout(function () {\n context.$refs['addKudos'].resetFields()\n }, 10)\n this.isediting = false\n $('#Addkudosmodel').modal('show')\n this.modalTitle = 'Create Kudos'\n this.addKudos = deepcopy(this.kudoBackup)\n },\n\n GetAllCompliance(locationId) {\n let context = this\n loader.startLoader()\n service.GetAllCompliance(locationId).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security (7) Can the user at least view the data ?\n if(context.$hydrowareSecurityJS.isDataRestricted(response)) {\n context.complianceMeasures = []\n return;\n }\n //FG - FOOF - After Cert - First Release Security (7) - above\n\n if (response && response != null) {\n context.complianceMeasures = response\n tooltip.startTooltip(50)\n } else {\n\n context.complianceMeasures = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetAllParentMahcCodes() {\n let context = this\n loader.startLoader()\n service.GetAllParentMahcCodes().then(function (response) {\n\n if (response && response != null) {\n context.MahcCodes = response\n context.addCompliance.MahcCodeId = response[0].Id\n context.GetChildsByMahcId(response[0].Id)\n } else {\n\n context.MahcCodes = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetChildsByMahcId(id,childId) {//FG - FOOF - 20200908-DG-007 - ADDED childId AS A PARM..IF NOT NULL CHOOSE IT\n let context = this\n loader.startLoader()\n service.GetChildsByMahcId(id).then(function (response) {\n context.disableChildMeasure=true;//FG - FOOF - 20200908-DG-007 - disable the dropdown while its populated and child is chosen\n if (response && response != null) {\n context.MahcChildes = response \n //FG - FOOF - 20200908-DG-007 - added the if portion of the condition below\n //Prior to this change the child was always set to the first choice in the list\n if(childId != null) \n context.addCompliance.MahcCodeChildId = childId\n else \n context.addCompliance.MahcCodeChildId = response[0].Id\n } else {\n context.addCompliance.MahcCodeChildId = \"\"\n context.MahcChildes = []\n }\n context.disableChildMeasure=false; //FG - FOOF - 20200908-DG-007 - enable the dropdown after its populated and child has been chosen\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetComplianceDocuments(id) {\n let context = this\n loader.startLoader()\n service.GetAllComplianceDocuments(id).then(function (response) {\n\n if (response && response != null) {\n context.RefDocuments = response\n context.addCompliance.ComplianceDocumentDetailId = response[0].ComplianceDocumentDetailsId\n } else {\n\n context.RefDocuments = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetAllUsers() {\n let context = this\n loader.startLoader()\n service.GetAllUsers().then(function (response) {\n\n if (response && response != null) {\n context.AllUsers = response\n context.addCompliance.Responsibility = response[0].Id\n\n } else {\n\n context.AllUsers = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n\n del: function (data) {\n var ID = data.row.Id\n\n let context = this\n context.$confirm('Are you sure you want to delete?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n\n loader.startLoader()\n service.DeleteCompliance(ID).then(function (response) {\n\n context.GetAllCompliance(context.locationId)\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Deleted Successfully',\n type: 'success'\n })\n\n }, (error) => {\n\n loader.stopLoader()\n\n this.$notify({\n\n title: 'Error',\n\n message: error.responseJSON.Message,\n\n type: 'error'\n\n })\n })\n\n }).catch(() => {\n\n })\n },\n\n cancelpopup: function () {\n\n $('#Addkudosmodel').modal('hide')\n },\n\n editcol: function (data) {\n\n var ID = data.row.Id\n let context = this\n context.EditableColID = ID\n context.addCompliance.MahcCodeId = data.row.MahcCodeParentId\n\n //FG - FOOF - 20200908-DG-007 - BELOW\n // DUE TO THE LAG ON DOREEN'S PC WE FOUND THAT THE CHILD CHOICE WOULD REMAIN AS THE FIRST CHOICE\n // IN THE LIST SOMETIMES SO INSTEAD OF SETTING IT AFTER A TIMEOUT (SEE MORE COMMENTS FOR THIS FIX\n // A BIT DOWN FURTHER IN THE CODE) I NOW SET THE SELECTED CHILD TO AN EMPTY STRING (THIS FORCES IT\n // TO BE THE PLACEHOLDER - 'Select'. I ADDED A PARM TO THE GetChildsByMahcId FUNCTION. THAT PARM\n // IS THE CHILD ID. THAT METHOD NOW GETS THE LIST OF CHILD MEASURES FOR THE PARENT AND THEN SETS\n // THE SELECTED CHILD TO THE CHILD ID IT WAS PASSED)\n //context.GetChildsByMahcId(context.addCompliance.MahcCodeId)\n context.addCompliance.MahcCodeChildId = \"\"\n context.GetChildsByMahcId(context.addCompliance.MahcCodeId, data.row.MahcCodeChildId)\n //FG - FOOF - 20200908-DG-007 - ABOVE\n\n context.addCompliance.ComplianceDocumentDetailId = data.row.ComplianceDocumentDetailId\n context.addCompliance.Responsibility = data.row.Responsibility\n context.addCompliance.Notes = data.row.Notes\n context.addCompliance.LocationId = data.row.LocationId\n context.addCompliance.DueDate = new Date(data.row.DueDate)\n context.addCompliance.Id = data.row.Id\n\n //FG - FOOF - 20200908-DG-007 - BELOW\n // SEE COMMENTS FOR 20200908-DG-007 A BIT UP IN THIS CODE\n //setTimeout(function () {\n // context.addCompliance.MahcCodeChildId = data.row.MahcCodeChildId\n //}, 200)\n //FG - FOOF - 20200908-DG-007 - ABOVE\n\n context.isediting = true\n\n\n },\n\n\n\n\n\n AddCompliance(formName) {\n\n\n let context = this\n this.$refs[formName].validate((valid) => {\n if (valid) {\n let context1 = this\n loader.startLoader()\n\n context.addCompliance['LocationId'] = context.locationId\n context.addCompliance['DueDate'] = context.$options.filters.fdate(context.addCompliance.DueDate)\n\n\n service.AddCompliance(context.addCompliance).then(function (response) {\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Successfully Created Compliance',\n type: 'success'\n })\n context.GetAllCompliance(context.locationId)\n context.isediting = false\n context.isaddding = false\n\n\n\n /* if (context.personnelID) {\n context.GetKudos(context.personnelID)\n }*/\n\n }, (error) => {\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'COMPLIANCE - 1 error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n\n\n UpdateCompliance(formName) {\n\n\n let context = this\n this.$refs[formName].validate((valid) => {\n if (valid) {\n let context1 = this\n loader.startLoader()\n\n context.addCompliance['LocationId'] = context.locationId\n\n context.addCompliance['DueDate'] = context.$options.filters.fdate(context.addCompliance.DueDate)\n\n context.addCompliance['Id'] =\n service.UpdateCompliance(context.addCompliance).then(function (response) {\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: ' Compliance Updated successfully',\n type: 'success'\n })\n context.GetAllCompliance(context.locationId)\n context.isediting = false\n context.isaddding = false\n\n\n /* if (context.personnelID) {\n context.GetKudos(context.personnelID)\n }*/\n\n }, (error) => {\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'COMPLIANCE -2 error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n\n\n resetForm(formName) {\n this.$refs[formName].resetFields()\n },\n },\n watch: {\n\n isediting: function (val) {\n this.$router.app.$emit('sidebar_hide', val)\n },\n isaddding: function (val) {\n\n this.$router.app.$emit('sidebar_hide', val)\n }\n\n\n },\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Compliance/compliance_management.controller.js","import * as service from './compliance.service.js'\r\n\r\nexport default {\r\n data() {\r\n\r\n return {\r\n mahc_columns: ['TitleNumber', 'Description', 'Actions'],\r\n optionstable: {\r\n headings: {\r\n TitleNumber : 'Title',\r\n\r\n Actions: ''\r\n },\r\n labelPosition: 'top',\r\n\r\n /* isediting: false,\r\n EditableColID: '',\r\n role: '',*/\r\n // sortIcon: {base: 'glyphicon', up: 'glyphicon-chevron-up', down: 'glyphicon-chevron-down'},\r\n perPage: 100,\r\n orderBy: { ascending:true },\r\n perPageValues: [5, 10, 25, 50, 100],\r\n /* sortable: [\"ActionDate\",\"Description\", \"CommentedBy\", \"ActionTypeName\"],*/\r\n sortable:[],\r\n texts: {\r\n filterPlaceholder: 'Search...',\r\n limit: 'rows per page:',\r\n noResults: 'No matching records',\r\n }\r\n },\r\n\r\n MahcCodes: [],\r\n MahcCodeTree: [],\r\n mahcnumber: '',\r\n MahcRowDetail:[]\r\n\r\n }\r\n },\r\n mounted() {\r\n\r\n\r\n this.GetAllMahc()\r\n this.GetAllMahcCodeAsTree()\r\n\r\n },\r\n\r\n methods: {\r\n applyFilter(letter) {\r\n this.selectedLetter = letter;\r\n Event.$emit('vue-tables.filter::alphabet', letter);\r\n },\r\n viewMahc1(detail)\r\n {\r\n this.MahcRowDetail = detail ? detail : []\r\n $('#MahcPopup').modal('show')\r\n\r\n },\r\n GetMahcId(id)\r\n {\r\n\r\nthis.GetAllMahc(id)\r\n\r\n },\r\n\r\n viewMahc()\r\n {\r\n\r\n\r\n },\r\n\r\n\r\n GetAllMahc(id) {\r\n let context = this\r\n loader.startLoader()\r\n service.GetAllMahc(id).then(function (response) {\r\n\r\n if (response && response != null) {\r\n response.map(function(item){\r\n\r\n item[\"TitleNumber\"] = item.Number+\" - \"+item.Title\r\n\r\n });\r\n context.MahcCodes = response\r\n tooltip.startTooltip(50)\r\n\r\n }\r\n else {\r\n\r\n context.MahcCodes = []\r\n }\r\n\r\n //context.$refs.dragtable.setPage(1)\r\n\r\n loader.stopLoader()\r\n }, (error) => {\r\n loader.stopLoader()\r\n this.$notify({\r\n title: 'Error',\r\n message: error.responseJSON.Message,\r\n type: 'error'\r\n })\r\n })\r\n },\r\n GetAllMahcCodeAsTree() {\r\n let context = this\r\n loader.startLoader()\r\n service.GetAllMahcCodeAsTree().then(function (response) {\r\n\r\n if (response && response != null) {\r\n\r\n\r\n\r\n\r\n context.MahcCodeTree = response\r\n\r\n\r\n }\r\n else {\r\n\r\n context.MahcCodeTree = []\r\n }\r\n\r\n //context.$refs.dragtable.setPage(1)\r\n\r\n loader.stopLoader()\r\n }, (error) => {\r\n loader.stopLoader()\r\n this.$notify({\r\n title: 'Error',\r\n message: error.responseJSON.Message,\r\n type: 'error'\r\n })\r\n })\r\n },\r\n\r\n\r\n cancelpopup: function () {\r\n\r\n $('#Addkudosmodel').modal('hide')\r\n },\r\n\r\n\r\n }\r\n}\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Compliance/mahc.controller.js","import * as service from './safetyplan.service'\r\n\r\n\r\n//FG - FOOF - Change for certification - Created this class\r\n\r\n\r\nexport default {\r\n data() {\r\n return {\r\n mustGetData: true,\r\n elementInfoForServer: {\r\n id: null, //future use\r\n locId: '',\r\n elementId: '',\r\n listOfFiles: null\r\n },\r\n arrayOfElementsFromServer: []\r\n }\r\n },\r\n mounted() {\r\n let context = this\r\n this.$router.app.$on('emittedlocation_obj', (data) => {\r\n if(!context.mustGetData && (context.locationId != data.LocationId)) {\r\n context.mustGetData=true;\r\n }\r\n context.locationId = data.LocationId ? data.LocationId : ''\r\n context.locationName = data.LocationName ? ' - ' + data.LocationName : ''\r\n if(context.mustGetData) {\r\n context.getSafetyPlanElements();\r\n context.mustGetData=false;\r\n }\r\n })\r\n },\r\n\r\n //FG - FOOF - TOOLTIPSTER REINITIALIZE ON RESIZE\r\n created() {\r\n this.$hydrowareCommonJS.handleTooltips(\"create\");\r\n },\r\n\r\n destroyed() {\r\n this.$hydrowareCommonJS.handleTooltips(\"destroy\");\r\n },\r\n\r\n methods: {\r\n getSafetyPlanElements() {\r\n let context = this\r\n loader.startLoader()\r\n service.getSafetyPlanElements(context.locationId).then(function (response) {\r\n\r\n //FG - FOOF - After Cert - First Release Security (7) Can the user at least view the data ?\r\n if(context.$hydrowareSecurityJS.isDataRestricted(response)) {\r\n context.Documents = []\r\n return;\r\n }\r\n //FG - FOOF - After Cert - First Release Security (7) - above\r\n\r\n\r\n if (response && response != null) {\r\n context.arrayOfElementsFromServer = response;\r\n } else {\r\n context.Documents = []\r\n }\r\n loader.stopLoader()\r\n }, (error) => {\r\n loader.stopLoader()\r\n alert(\"EeeeRROR LOC IS: \" + context.locationId)\r\n this.$notify({\r\n title: 'Error',\r\n message: error.responseJSON.Message,\r\n type: 'error'\r\n })\r\n })\r\n },\r\n\r\n UploadSafetyPlanElement(e) {\r\n let context = this;\r\n this.elementInfoForServer.id=-1; //FUTURE USE\r\n this.elementInfoForServer.locId=this.locationId;\r\n //The upload and delete buttons are named such that the integer after the underscore\r\n //is the element number for the file being uploaded or deleted\r\n //AND the string prior to the underscore is either speUploadBtn or speDeleteBtn\r\n var splitButtonName = e.currentTarget.name.split('_')\r\n var buttonName = splitButtonName[0]\r\n var elementNumber = splitButtonName[1];\r\n this.elementInfoForServer.elementId=elementNumber;\r\n this.elementInfoForServer.listOfFiles=[];\r\n this.elementInfoForServer.listOfFiles=e.target.files;\r\n var isUpload = buttonName == \"speUploadBtn\"\r\n var uploadFileName = null;\r\n if(isUpload) {\r\n this.elementInfoForServer.listOfFiles=e.target.files;\r\n uploadFileName = e.target.files[0].name;\r\n }\r\n \r\n\r\n\r\n /*\r\n var okToUploadOrDelete = this.uploadConfirmOrDeleteSafetyPlanElement(isUpload, context.arrayOfElementsFromServer[elementNumber], uploadFileName);\r\n if(okToUploadOrDelete) {\r\n loader.startLoader()\r\n service.HandleSafetyPlanElement(this.setupDataThatWillBeSentToServer(this.elementInfoForServer)).then(function (response) {\r\n context.getSafetyPlanElements()\r\n loader.stopLoader()\r\n context.$notify({\r\n title: 'Success',\r\n message: 'Safety Plan Updated',\r\n type: 'success'\r\n })\r\n }, \r\n (error) => {\r\n loader.stopLoader()\r\n alert(\"ERROR AFTER UPLOAD: \" + error.responseJSON.Message)\r\n this.$notify({\r\n title: 'Error',\r\n message: error.responseJSON.Message,\r\n type: 'error'\r\n })\r\n })\r\n } \r\n */\r\n\r\n\r\n\r\n\r\n \r\n var oneElement = context.arrayOfElementsFromServer[elementNumber]\r\n \r\n var msg = \"Replace Element: \" + oneElement.elementName + '?';\r\n if(!isUpload) {\r\n msg = \"Delete Element: \" + oneElement.elementName + '?';\r\n }\r\n msg = msg + \"
Current file: \" + oneElement.origFileName;\r\n var opts = {message: msg}\r\n if(isUpload) {\r\n if(oneElement.origFileName == '' || oneElement.origFileName == null) {\r\n context.okToUploadOrDeleteSafetyPlanElement()//upload the file because there is nothing there yet\r\n return;\r\n }\r\n msg = msg + \" New file: \" + uploadFileName;\r\n opts = {message: msg}\r\n context.$hydrowareCommonJS.displayConfirmUploadPopup(context, opts, context.okToUploadOrDeleteSafetyPlanElement)\r\n }\r\n else\r\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.okToUploadOrDeleteSafetyPlanElement)\r\n },\r\n\r\n\r\n okToUploadOrDeleteSafetyPlanElement() {\r\n var context=this;\r\n loader.startLoader() \r\n service.HandleSafetyPlanElement(this.setupDataThatWillBeSentToServer(this.elementInfoForServer)).then(function (response) {\r\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\r\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\r\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{}))\r\n return;\r\n \r\n context.getSafetyPlanElements()\r\n loader.stopLoader()\r\n context.$notify({\r\n title: 'Success',\r\n message: 'Safety Plan Updated',\r\n type: 'success'\r\n })\r\n }, \r\n (error) => {\r\n loader.stopLoader() \r\n //context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\r\n this.$notify({\r\n title: 'Error',\r\n message: error.responseJSON.Message,\r\n type: 'error'\r\n })\r\n })\r\n },\r\n\r\n DownloadSafetyPlanElement(e) {\r\n window.open(e, '_blank');\r\n },\r\n\r\n setupDataThatWillBeSentToServer(elementInfoForServer) {\r\n let context = this\r\n var image_arr = {}\r\n var image_data = new FormData() //FG - FOOF - added on Dec 12 2018 while testing for uploads\r\n image_arr['locId'] = elementInfoForServer.locId;\r\n image_arr['id'] = elementInfoForServer.id;\r\n image_arr['elementId'] = elementInfoForServer.elementId;\r\n \r\n for (var key in image_arr) {\r\n image_data.append(key, image_arr[key])\r\n }\r\n if(elementInfoForServer.listOfFiles != null && elementInfoForServer.listOfFiles.length > 0) {\r\n for(var foofidx=0; foofidx {\r\n return $.ajax({\r\n url: 'SafetyPlan/HandleSafetyPlanElement',\r\n data: safetyPlanElementInfo,\r\n //dataType: \"json\",\r\n processData: false,\r\n contentType: false,\r\n 'accept-charset': 'utf-8',\r\n cache: false,\r\n type: 'POST'\r\n })\r\n} \r\n\r\nexport const getSafetyPlanElements = (locId) => {\r\n var x= $.get('SafetyPlan/GetSafetyPlan?locId='+locId)\r\n return x;\r\n }\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Compliance/safetyplan.service.js","import * as services from './dashboard.services'\n\nexport default {\n data() {\n return {\n DashboardChoiceDependsOn: ['incidents','chemicalrecord','activity'], \n\n Incidents: [],\n Accidents: [],\n logs: [],\n events: [],\n\n locationId: '',\n poolId: '',\n locationName: '',\n \n dLocation: '',\n config: {\n header: {\n right: ''\n },\n edit: false,\n editable: false,\n stick: true,\n defaultView: 'month'\n },\n }\n },\n\n updated() {\n //alert(\"updated\")\n },\n\n mounted() {\n tooltip.startTooltip(50)\n let context = this\n this.$router.app.$on('emittedlocation_obj', (data) => {\n context.Incidents.length = 0\n context.Accidents.length = 0\n context.locationId = data.LocationId ? data.LocationId : 0\n context.locationName = data.LocationName ? ' - ' + data.LocationName : ''\n context.$router.app.$emit('dash_loc', data.LocationName)\n \n context.GetAllIncidentsByLocation(context.locationId)\n context.GetAllDailylogs(null, null, null, context.locationId)\n context.GetActivityCalendar(context.locationId, context.poolId)\n\n })\n this.$router.app.$on('emittedpool_obj', (data) => {\n context.poolId = data.PoolId ? data.PoolId : ''\n context.poolName = data.PoolName ? '(Aquatic Venue : ' + data.PoolName + ')' : ''\n if (context.poolId) {\n context.GetActivityCalendar(context.locationId, context.poolId)\n }\n })\n\n\n },\n beforeDestroy() {\n //this.$root.$off('emittedlocation_obj') // - FG - FOOF - Jan 23 2019\n },\n\n methods: {\n //FG - FOOF - After Cert - First Release Security (7)\n //METHODS BELOW HELP TO CONTROL WHAT IS DISPLAYED BY THE GUI\n //\n // I use methods like this rather than set variables at say mounting\n // because it is more real time.\n //\n //SECURITY EXAMPLE: I use the methods below in the Dashboard.vue to\n //control whether the incident/accidents lists etc. are displayed\n displayDashboardPage: function() {return this.$hydrowareSecurityJS.canDisplay_A(this.DashboardChoiceDependsOn)},\n showIncidentsList: function() {return this.$hydrowareSecurityJS.canView_A('incidents')},\n showAccidentsList: function() {return this.$hydrowareSecurityJS.canView_A('incidents')},\n showDailyLog : function() {return this.$hydrowareSecurityJS.canView_A('chemicalrecord')},\n showCalendar : function() {return this.$hydrowareSecurityJS.canView_A('activity')},\n //METHODS THAT DECIDE WHETHER MENU CHOICES ARE SHOWN - ABOVE\n\n //FG - FOOF - After Cert - First Release Security (7)\n // NOTE: FOR THE FIRST RELEASE EITHER BOTH OR NEITHER WILL SHOW\n GetClassForIncidentsTable() {\n if(this.showIncidentsList() && this.showAccidentsList())\n return 'col-lg-6'\n else\n return 'col-lg-12'\n },\n\n GetAllIncidentsByLocation(id) {\n let context = this\n\n //FG - FOOF - After Cert - First Release Security (7) - added so we don't go to \n //the server unecassarily! \n //NOTE: FOR FIRST RELEASE INCIDENTS AND ACCIDENTS ARE TREATED THE SAME\n if( context.showIncidentsList == false) {\n context.Incidents = []\n context.Accidents = []\n //context.showIncidentsList=false;\n //context.showAccidentsList=false;\n return;\n }\n\n //FG - FOOF - After Cert - First Release Security (7) reworked \"then\" function\n services.AllIncidentsByLocation(id).then(function (data) {\n //If security does not allow this then data will begin with \"Restricted\"\n context.Incidents = []\n context.Accidents = []\n if(context.$hydrowareSecurityJS.isDataRestricted(data)) {\n //context.showIncidentsList=false;\n //context.showAccidentsList=false;\n return;\n }\n //If we reach this then this action is allowed\n //context.showIncidentsList=true;\n //context.showAccidentsList=true;\n data.map(function (item) {\n if (item.IncidentType == 'Incident') {\n context.Incidents.push(item)\n } else if (item.IncidentType == 'Accident') {\n context.Accidents.push(item)\n }\n })\n }, \n (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetAllDailylogs(isActive, pagestart, pagelimit, location) {\n let context = this\n\n //FG - FOOF - After Cert - First Release Security (7) - added so we don't go to \n //the server unecassarily!\n if( this.showDailyLog() == false) {\n context.logs = []\n //context.showDailyLog=false;\n return;\n }\n\n var pos = ''\n var pos1 = ''\n //FG - FOOF - After Cert - First Release Security (7) Reworked \"then\" function\n services.AllDailyLogs(isActive, pagestart, pagelimit, location).then(function (response) {\n\n //If security does not allow this then data will begin with \"Restricted\"\n context.logs = []\n if(context.$hydrowareSecurityJS.isDataRestricted(response)) {\n //context.showDailyLog = false\n return;\n }\n //If we reach this then this action is allowed\n //context.showDailyLog=true;\n\n var limit = 1\n if (response && response != null) {\n context.logs = []\n var x = []\n response.map(function (item, index) {\n item.TemplateReadings.map(function (item2, index2) {\n pos1 = context.logs.map(function (e) {\n return e.rid\n }).indexOf(item.Id)\n if (pos1 < 0) {\n context.logs.push({\n pid: item2.PoolId,\n rid: item.Id,\n venue: item2.PoolName ? item2.PoolName : item.LocationName,\n LocationName: item.LocationName,\n AddedOn: item.AddedOn,\n AddedBy: item.AddedBy,\n })\n\n }\n\n pos = context.logs.map(function (e) {\n if (e.rid == item.Id) {\n return e.pid\n }\n\n }).indexOf(item2.PoolId)\n if (pos > -1) {\n\n context.logs[pos][item2.Name] = item2.LogTemplateReadingValue\n\n // x[pos]['rid'] = item.Id\n\n } else {\n context.logs.push({\n pid: item2.PoolId,\n rid: item.Id,\n venue: item2.PoolName ? item2.PoolName : item.LocationName,\n LocationName: item.LocationName,\n AddedOn: item.AddedOn,\n AddedBy: item.AddedBy,\n })\n }\n\n })\n\n })\n\n\n } else {\n\n context.logs = []\n }\n\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n\n },\n FormatDate(date) {\n let newdate = new Date(date)\n let formatteddate = newdate.getDate() + '-' + (newdate.getMonth() + 1) + '-' + newdate.getFullYear()\n return formatteddate\n\n },\n redirectToIncident(data) {\n let routeData = this.$router.resolve({\n name: 'incidents',\n query: {\n id: data.Id,\n location: this.locationName,\n locationId: this.locationId,\n type: data.IncidentType\n }\n })\n window.open(routeData.href, '_self')\n },\n redirectToActivityPatron() {\n\n let routeData = this.$router.resolve({\n name: 'activitylist',\n query: {\n location: this.locationName\n }\n })\n window.open(routeData.href, '_self')\n },\n redirectToChemrecords(data) {\n let routeData = this.$router.resolve({\n name: 'chemicalrecord',\n query: {\n id: data.rid\n }\n })\n window.open(routeData.href, '_self')\n },\n ShowAddActivities() {\n this.ShowActivityList = false\n this.btn = \"Save\"\n let context = this;\n this.addActivities = {\n\n \"LocationId\": \"\",\n \"PoolIds\": [],\n \"Organizer\": \"\",\n \"StartDate\": \"\",\n \"EndDate\": \"\",\n \"Description\": \"\",\n \"PoolLane\": \"\",\n \"PoolZone\": \"\",\n \"Notes\": \"\",\n \"Capacity\": \"\",\n \"TargetRevenue\": \"\",\n \"TargetExpense\": \"\",\n \"TargetProfit\": \"\",\n \"MondayStart\": \"\",\n \"MondayEnd\": \"\",\n \"TuesdayStart\": \"\",\n \"TuesdayEnd\": \"\",\n \"WednesdayStart\": \"\",\n \"WednesdayEnd\": \"\",\n \"ThursdayStart\": \"\",\n \"ThursdayEnd\": \"\",\n \"FridayStart\": \"\",\n \"FridayEnd\": \"\",\n \"SaturdayStart\": \"\",\n \"SaturdayEnd\": \"\",\n \"SundayStart\": \"\",\n \"SundayEnd\": \"\",\n \"Id\": \"\",\n \"ProgramName\": \"\",\n \"ActivityTypeId\": \"\",\n \"ActivityTypeDesc\": \"\"\n }\n this.WeekDays = this.SetWeekDays();\n },\n eventSelected(event) {\n\n this.eventDetails = []\n this.eventDetails.push(event.data)\n $('#eventsModel').modal('show')\n },\n GetActivityCalendar(locationid, poolId) {\n let context = this\n context.events=[]\n\n //FG - FOOF - After Cert - First Release Security (7) - added so we don't go to \n //the server unecassarily!\n if(context.showCalendar()==false) {\n context.events = []\n //context.showCalendar=false;\n return;\n }\n\n //FG - After Cert - First Release Security - line below was added when coding security\n //if (poolId) {//FG - THIS WAS HERE BEFORE MY CODE SEEMS CALENDAR IS ONLY FOR SPECIFIC POOL\n //If security does not allow this then data will begin with \"Restricted\"\n //FG - FOOF - After Cert - First Release Security (7) reworked \"then\" function\n var poolIdForServerCall = poolId==\"\"? 0 : poolId;\n services.GetActivityCalendar(locationid, poolIdForServerCall).then(function (response) {\n\n if(context.$hydrowareSecurityJS.isDataRestricted(response)) {\n //context.showCalendar=false;\n return;\n }\n //If we reach this then this action is allowed\n //context.showCalendar=true;\n if (response) {\n context.events=[]\n if (response.length > 0) {\n response.map(function (el) {\n context.events.push({\n title: el.ProgramName,\n start: context.$moment(el.StartDate).format('YYYY-MM-DD'),\n end: context.$moment(el.EndDate).format('YYYY-MM-DD') + '' + 'T23:59:00',\n data: el,\n allDay: false\n })\n })\n\n }\n }\n }, (error) => {\n\n })\n //}\n\n }\n\n\n }\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Dashboard/dashboard.controller.js","export const AllIncidentsByLocation=(id)=>{\r\n return $.get('api/Incident/GetAllIncidents?LocationId='+id)\r\n}\r\nexport const AllDailyLogs=(IsActive,skip,take,locationId)=>{\r\n return $.get('LogTemplate/GetDashboardLogTemplateEntries?IsActive=true&skip=null&take=null&locationId='+locationId)\r\n}\r\nexport const GetAllActivity = (LocationId) => {\r\n return $.get('Patron/GetAllActivity?LocationId='+LocationId) \r\n }\r\nexport const GetActivityCalendar = (locationId,poolId) => {\r\n return $.get('Patron/GetActivityCalendar?locationId='+locationId+'&poolId='+poolId)\r\n}\r\n/*\r\nexport const AllDailyLogs=(IsActive,skip,take,locationId)=>{\r\n return $.get('LogTemplate/GetDashboardLogTemplateEntries?IsActive=true&skip=null&take=null&locationId='+locationId)\r\n}\r\n*/\r\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/Dashboard/dashboard.services.js","import * as service from '../healthsafety.service'\nimport incidentAndAccidentTable from './incidentAndAccidentTable'\nimport incidentForm from './incidentForm'\nimport accidentForm from './accidentForm'\nexport default {\n components: {\n incidentAndAccidentTable,\n incidentForm,\n accidentForm\n },\n \n data() {\n return {\n /*** FG - FOOF ********************************************************\n ** NOTE: the variable below is set to \"this\" at beforeMount time and **\n ** is passed along to the templates that are used to display the **\n ** table displaying incidents/accidents, and the forms **\n ** ACCORDING TO Vue DOCS THOSE TEMPLATES SHOULD BE ABLE TO USE **\n ** $parent IN ORDER TO GET TO THE DATA, METHODS, ETC. IN THIS **\n ** CONTROLLER BUT THAT DOES NOT WORK WHEN THE TEMPLATE IS INSIDE OF **\n ** AND \"el-xxx\" TAG. **\n **********************************************************************/\n thisController: null,\n timepickerformat: 'hh:mm:ss a',\n compliance_columns: ['Title', 'IncidentDate', 'IncidentType', 'Severity', 'ViolatorClass', 'BehaviorType', 'SubmittedBy', 'Actions'],\n optionstable: {\n skin: this.$hydrowareCommonJS.hydrowareTableSkin,\n columnsClasses: {'Actions':'hydroware-2-button-column'},\n headings: {\n Title: 'Title',\n IncidentDate: 'Date',\n IncidentType: 'Incident Type',\n ViolatorClass: 'Violator',\n BehaviorType: 'Behavior',\n SubmittedBy: 'Submitted By',\n Actions: ''\n },\n labelPosition: 'top',\n // sortIcon: {base: 'glyphicon', up: 'glyphicon-chevron-up', down: 'glyphicon-chevron-down'},\n perPage: 5,\n perPageValues: [5, 10, 25, 50, 100],\n /* sortable: [\"ActionDate\",\"Description\", \"CommentedBy\", \"ActionTypeName\"],*/\n sortable: ['IncidentDate'],\n orderBy: {\n column: 'IncidentDate',\n ascending: false\n },\n texts: {\n filterPlaceholder: 'Search...',\n limit: 'rows per page:',\n noResults: 'No matching records',\n }\n },\n Locations: [],\n PoolId: '',\n Incident: {\n\n 'Title': '',\n 'IncidentDate': '',\n 'IncidentTime': '',\n 'Description': '',\n 'IncidentType': '',\n 'Severity': '',\n 'ViolatorClass': '',\n 'BehaviorType': '',\n 'Area': '',\n 'SubmittedBy': '',\n 'PoolID': '',\n 'PoolName': '',\n 'AddedBy': '',\n 'AddedByName': '',\n 'RoleId': '',\n 'RoleName': '',\n 'NatureOfIncident': '',\n // 'Location': '',\n 'PositionId': '',\n 'LocationId': '',\n 'Response': '',\n 'Police': false,\n 'PoliceCase': '',\n 'FireDepartment': false,\n 'FireDepartmentCase': '',\n 'FirstAidAdministered': false,\n 'Injury': '',\n 'Treatment': '',\n 'InjuryType': '',\n 'Supervisor': '',\n 'SupervisorName': '',\n 'SupervisorLocation': '',\n 'Lifeguard': '',\n 'LifeguardName': '',\n 'LifeguardLocation': '',\n 'AdvancedMedicalCare': false,\n 'AdvancedMedicalCarePlace': '',\n 'AdvancedMedicalCareInformation': '',\n 'EMS': false,\n 'EMSCase': '',\n 'AddedOn': '',\n 'ModifiedBy': '',\n 'ModifiedOn': '',\n 'PoolType': '',\n 'NatureOfIncidentOther': '',\n 'ViolatorClassOther': '',\n 'BehaviorTypeOther': '',\n 'InjuryTypeOther': '',\n 'AddOnTime': '',\n 'Attachments': [],\n 'IncidentInvolvedPartyList': [],\n 'IncidentStaffOnDutyList': [],\n 'IncidentWitnessList': [],\n 'IncidentVictimsList': [],\n 'OtherTypeIncident': '',\n 'OtherTypeBehavior': '',\n 'OtherTypeAccidents': '',\n 'OtherAccidentsBehaviour': '',\n 'OtherInjuries': '',\n 'LocationText': '',\n 'ManagerOnDuty': '',\n 'StaffOther': '',\n 'ReportPreparedByOther': '',\n 'ManagerOnDutyOther': '',\n 'ViolatorOther': '',\n 'StaffOther': ''\n },\n\n displayDate: '',\n\n // rules: {\n // ZipCode: [\n // { type: 'number', required: false, message: 'Please pick a time', trigger: 'change' }\n // ]\n // },\n value4: [],\n uindex: '',\n\n supervisors: [],\n\n staffmembers: [],\n roles: [],\n incidents: [],\n pools: [],\n\n locationId: '',\n IsCurrentReportDate: false,\n IsCurrentReportTime: false,\n locationName: '',\n modalTitle: '',\n\n isediting: false,\n isaddding: false,\n\n isAddingOrEditing: \"\", //FG - FOOF - After Cert - First Release Security (7) - added to control enable/disable of form fields\n\n poolTypes: [],\n lifeguards: [],\n Severitys: [],\n Violator: [],\n Behavior: [],\n injuryType: [],\n locationName: '',\n incidentId: '',\n isDashboardView: false,\n isIncidentType: false,\n isincidentdisabled: false,\n isaccidentdisabled: false,\n PoolName: '',\n PoolIdEdit: ''\n\n }\n },\n beforeMount() {\n this.thisController=this;\n },\n mounted() { \n let context = this\n this.DashboardRedirection()\n this.$router.app.$on('emittedlocation_obj', (data) => {\n\n if (!context.isDashboardView) {\n\n context.locationId = data.LocationId ? data.LocationId : 0\n context.locationName = data.LocationName ? ' - ' + data.LocationName : ''\n }\n })\n this.$router.app.$on('emittedpool_obj', (data) => {\n if (!context.isDashboardView) {\n\n context.PoolId = data.PoolId ? data.PoolId : ''\n context.PoolName = data.PoolName ? '(Aquatic Venue : ' + data.PoolName + ')' : ''\n }\n if (context.locationId && context.PoolId) {\n context.GetAllIncidents(context.locationId, context.PoolId)\n }\n if (context.locationId) {\n\n context.GetAllStaffMember(context.locationId)\n }\n })\n context.GetAllSupervisor()\n context.GetAllRoles()\n context.GetAllLifeguard()\n // context.GetAllPoolsByUserName()\n this.poolTypes = ['Accident', 'Medical', 'Contamination', 'Behavior', 'Weather', 'Outage', 'Disaster', 'Crime']\n this.IncidentTypes = ['Crime', 'Defective Equipment', 'Medical', 'Other']\n this.AccidentTypes = ['Drowning', 'Medical Condition', 'Slip/Fall', 'Spinal Injury', 'Water-Entry Injury', 'Weather', 'Other']\n this.Severitys = ['High', 'Medium', 'Low']\n this.Violator = ['Patron', 'Member', 'Guest', 'Employee', 'Other']\n this.IncidentBehavior = ['Disorderly Conduct', 'Fighting', 'Safety Disregard', 'Other']\n this.AccidentBehavior = ['Defective Equipment', 'Lack of Knowledge/Skills', 'Personal Factors', 'Safety Disregard', 'Other']\n this.injuryType = ['Cut', 'Dislocation', 'Puncture Wound', 'Diabetic Emergency', 'Bruise', 'Burn', 'Near Drowning', 'Respiratory Emergency', 'Fracture', 'Poisoning', 'Heart Attack', 'Sudden Illness', 'Sprain/Strain', 'Amputation', 'Stroke', 'Fainting', 'Other']\n },\n beforeDestroy() {\n\n //this.$root.$off('emittedpool_obj') //FG - After Cert - First Release Security (7) - discovered after writing security for this page... this SHOULD NOT BE TURNED OFF !!!!!!\n //this.$root.$off('emittedlocation_obj') //FG - FOOF - Jan 23 2019\n },\n methods: {\n\n addCompliancevit() {\n this.isaddding = true\n this.isAddingOrEditing = \"A\"\n\n this.Incident = {\n\n 'Title': '',\n 'IncidentDate': '',\n 'IncidentTime': '',\n 'Description': '',\n 'IncidentType': 'Incident',\n 'Severity': '',\n 'ViolatorClass': '',\n 'BehaviorType': '',\n 'Area': '',\n 'SubmittedBy': '',\n 'PoolID': '',\n 'PoolName': '',\n 'AddedBy': '',\n 'AddedByName': '',\n 'PositionId': '',\n 'RoleName': '',\n 'NatureOfIncident': '',\n // 'Location': '',\n 'LocationId': '',\n 'Response': '',\n 'Police': false,\n 'PoliceCase': '',\n 'FireDepartment': false,\n 'FireDepartmentCase': '',\n 'FirstAidAdministered': false,\n 'Injury': '',\n 'Treatment': '',\n 'InjuryType': '',\n 'Supervisor': '',\n 'SupervisorName': '',\n 'SupervisorLocation': '',\n 'Lifeguard': '',\n // 'LifeguardName': '',\n 'AdvancedMedicalCare': false,\n 'AdvancedMedicalCarePlace': '',\n 'AdvancedMedicalCareInformation': '',\n 'EMS': false,\n 'EMSCase': '',\n 'AddedOn': '',\n 'ModifiedBy': '',\n 'ModifiedOn': '',\n 'PoolType': '',\n 'NatureOfIncidentOther': '',\n 'ViolatorClassOther': '',\n 'BehaviorTypeOther': '',\n 'InjuryTypeOther': '',\n 'AddOnTime': '',\n 'Attachments': [],\n 'IncidentInvolvedPartyList': [],\n 'IncidentStaffOnDutyList': [],\n 'IncidentWitnessList': [],\n 'IncidentVictimsList': [],\n 'ManagerOnDuty': '',\n 'StaffOther': '',\n 'ReportPreparedByOther': '',\n 'ManagerOnDutyOther': '',\n 'ViolatorOther': '',\n 'StaffOther': ''\n }\n this.PoolIdEdit = this.PoolId\n this.IsCurrentReportDate = true\n this.IsCurrentReportTime = true\n this.GetPoolsByLocation(this.locationId)\n this.displayDate = ''\n\n if (this.ttypes) {\n\n this.Training.TrainingTypeId = this.ttypes[0].Id\n this.GetEquipments(this.Training.TrainingTypeId)\n this.GetSupplyItems(this.Training.TrainingTypeId)\n this.GetMahcCodes()\n }\n\n },\n showCompliancevit() {\n this.isaddding = false\n this.isediting = false\n this.isAddingOrEditing = \"\"\n },\n\n addInvolvedParty() {\n\n this.Incident.IncidentInvolvedPartyList.push({\n Name: '',\n Address: '',\n City: '',\n State: '',\n ZipCode: '',\n PhoneNumber: '',\n Age: ''\n\n })\n\n },\n addWitness() {\n this.Incident.IncidentWitnessList.push({\n Name: '',\n Address: '',\n PhoneNumber: '',\n\n })\n },\n addStaff() {\n this.Incident.IncidentStaffOnDutyList.push({\n StaffId: '',\n StaffOther: ''\n\n })\n },\n\n addVictim() {\n this.Incident.IncidentVictimsList.push({\n Name: '',\n Address: '',\n PhoneNumber: '',\n Age: '',\n Activity: ''\n\n })\n },\n\n setFilename: function (e, row) {\n // var file = event.target.files[0];\n\n var t = []\n for (var i = 0; i < e.target.files.length; i++) {\n var reader = new FileReader()\n t.push({\n 'FileName': e.target.files[i].name,\n 'MediaType': e.target.files[i].type,\n 'Buffer': reader.readAsArrayBuffer(e.target.files[i])\n })\n }\n this.Training.TrainingSessions[row].Attachments = t\n //row.file = file\n },\n userAppend(val) {\n\n\n // alert(JSON.stringify(this.value4))\n\n this.Training.TrainingSessions[this.uindex].UserIds = val\n },\n addUser(index, data) {\n this.uindex = index\n this.value4 = data\n $('#AttendeesModal').modal('show')\n },\n addSupply() {\n this.Training.SupplyItems.push({\n\n SupplyItemId: '',\n Quantity: ''\n\n })\n\n },\n\n addEquipment() {\n this.Training.Equipments.push({\n EquipmentId: '',\n Quantity: ''\n\n })\n },\n\n removeWitness(index) {\n this.Incident.IncidentWitnessList.splice(index, 1)\n },\n removeInvolved(index) {\n this.Incident.IncidentInvolvedPartyList.splice(index, 1)\n },\n removeStaff(index) {\n this.Incident.IncidentStaffOnDutyList.splice(index, 1)\n },\n removeVictim(index) {\n this.Incident.IncidentVictimsList.splice(index, 1)\n },\n removeWitness(index) {\n this.Incident.IncidentWitnessList.splice(index, 1)\n },\n GetAllIncidents(id, poolid) {\n let context = this\n loader.startLoader()\n service.GetAllIncidents(id, poolid).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security (7) Can the user at least view the data ?\n if(context.$hydrowareSecurityJS.isDataRestricted(response)) {\n context.incidents = []\n loader.stopLoader()\n return;\n }\n\n if (response && response != null) {\n\n context.incidents = response\n tooltip.startTooltip(50)\n } else {\n\n context.incidents = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetAllSupervisor() {\n let context = this\n loader.startLoader()\n service.GetAllSupervisor().then(function (response) {\n\n if (response && response != null) {\n context.supervisors = response\n\n } else {\n\n context.supervisors = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetAllRoles() {\n let context = this\n loader.startLoader()\n service.GetAllRoles().then(function (response) {\n if (response && response != null) {\n context.roles = response\n\n } else {\n\n context.roles = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetAllStaffMember(lid) {\n\n let context = this\n loader.startLoader()\n service.GetUsersByLocation(lid ? lid : context.locationId).then(function (response) {\n\n if (response && response != null) {\n context.staffmembers = response\n context.staffmembers.push({\n 'Id': '0',\n 'Name': 'Other'\n })\n\n } else {\n\n context.staffmembers = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n GetAllLifeguard() {\n let context = this\n loader.startLoader()\n service.GetAllLifeguard().then(function (response) {\n\n if (response && response != null) {\n context.lifeguards = response\n\n } else {\n\n context.lifeguards = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n GetAllPoolsByUserName() {\n let context = this\n loader.startLoader()\n service.GetAllPoolsByUserName().then(function (response) {\n\n if (response && response != null) {\n context.pools = response\n\n } else {\n\n context.pools = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n view(data) {\n\n this.Incident = data.row\n $('#IncidentModal').modal('show')\n },\n\n cancelpopup: function () {\n\n $('#Addkudosmodel').modal('hide')\n },\n\n //FG - FOOF - After Cert - First Release (6) - rewrote delete code below to use new methods in hydrowareCommonJS.js\n //The delete function below deletes a row from the table\n del: function (data) {\n var ID = data.row.Id\n let context = this\n var opts = {message: 'Are you sure you want to delete ' + data.row.Title +'?'}\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.deleteIncidentAccidentRow.bind(null,ID))\n },\n deleteIncidentAccidentRow(ID) {\n var context = this;\n loader.startLoader()\n service.DeleteIcident(ID).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n context.GetAllIncidents(context.locationId, context.PoolId)\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n\n }, (error) => {\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\n })\n \n },\n\n editcol: function (data) {\n // this.PoolIdEdit = this.PoolId\n this.IsCurrentReportDate = false,\n this.IsCurrentReportTime = false\n this.GetPoolsByLocation(this.locationId)\n this.PoolIdEdit = data.row.PoolID\n if (data.row.IncidentType == 'Incident') {\n if (this.IncidentTypes.indexOf(data.row.PoolType) < 0) {\n data.row.OtherTypeIncident = data.row.PoolType\n data.row.PoolType = 'Other'\n }\n if (this.IncidentBehavior.indexOf(data.row.BehaviorType) < 0) {\n data.row.OtherTypeBehavior = data.row.BehaviorType\n data.row.BehaviorType = 'Other'\n }\n\n } else {\n if (this.AccidentTypes.indexOf(data.row.PoolType) < 0) {\n data.row.OtherTypeIncident = data.row.PoolType\n data.row.PoolType = 'Other'\n }\n if (this.AccidentBehavior.indexOf(data.row.BehaviorType) < 0) {\n data.row.OtherTypeBehavior = data.row.BehaviorType\n data.row.BehaviorType = 'Other'\n }\n if (this.injuryType.indexOf(data.row.InjuryType) < 0) {\n data.row.OtherInjuries = data.row.InjuryType\n data.row.InjuryType = 'Other'\n }\n\n }\n var ID = data.row.Id\n let context = this\n context.EditableColID = ID\n context.Incident = data.row\n context.Incident['Id'] = ID\n //context.Incident['PlanDate'] = new Date(data.row['PlanDate'])\n if (this.Incident.IncidentDate) {\n //FG - FOOF - May 5 2019 - I FOUND THE LINE BELOW WHEN LOOKING TO REPLACE THE TIME PICKER\n // WHY WOULD THEY HAVE SET THE ADDEDON DATE TO THE INCIDENT DATE ????\n //this.Incident.AddedOn = this.Incident.IncidentDate\n this.Incident.IncidentDate = new Date(this.Incident.IncidentDate)\n }\n context.isediting = true\n context.isAddingOrEditing = \"E\"\n\n },\n\n CreateIncident(formName) {\n\n let context = this\n if (this.Incident.BehaviorType == 'Other' && this.Incident.OtherTypeBehavior != '') {\n this.Incident.BehaviorType = this.Incident.OtherTypeBehavior\n }\n if (this.Incident.PoolType == 'Other' && this.Incident.OtherTypeIncident != '') {\n this.Incident.PoolType = this.Incident.OtherTypeIncident\n }\n if (this.Incident.IncidentType == 'Accident') {\n if (this.Incident.InjuryType == 'Other') {\n this.Incident.InjuryType = this.Incident.OtherInjuries\n }\n };\n if (this.IsCurrentReportDate && context.Incident.IncidentType != \"Accident\") {\n\n this.Incident.AddedOn = new Date().getMonth() + 1 + \"-\" + new Date().getDate() + \"-\" + new Date().getFullYear();\n }\n\n if (this.IsCurrentReportTime) {\n\n this.Incident.AddOnTime = new Date()\n }\n this.$refs[formName].validate((valid) => {\n if (valid) {\n let context1 = this\n loader.startLoader()\n context.Incident.LocationId = context.locationId\n context.Incident.PoolID = context.PoolIdEdit\n if (context.Incident.IncidentDate) {\n context.Incident.IncidentDate = context.$options.filters.fdate(context.Incident.IncidentDate)\n }\n\n if (context.Incident.AddedOn) {\n context.Incident.AddedOn = context.$options.filters.fdate(context.Incident.AddedOn)\n\n }\n context.Incident.SubmittedBy = authDetails.FirstName + ' ' + authDetails.LastName\n\n /* context.addMaintenance['LocationId'] = context.locationId\n context.addMaintenance['PlanDate'] = context.$options.filters.fdate(context.addMaintenance['PlanDate'])*/\n\n service.CreateIncident(context.Incident).then(function (response) {\n loader.stopLoader()\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n return;\n }\n\n context.$notify({\n title: 'Success',\n message: 'Incident Created',\n type: 'success'\n })\n context.GetAllIncidents(context.locationId, context.PoolId)\n context.isediting = false\n context.isaddding = false\n context.isAddingOrEditing = \"\"\n\n }, (error) => {\n /* context.addMaintenance['PlanDate'] = new Date(context.addMaintenance['PlanDate'])*/\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n return false\n }\n })\n },\n\n UpdateIncident(formName) {\n\n this.Incident.PoolID = this.PoolIdEdit\n this.Incident.LocationId = this.locationId\n if (this.Incident.BehaviorType == 'Other' && this.Incident.OtherTypeBehavior != '') {\n this.Incident.BehaviorType = this.Incident.OtherTypeBehavior\n }\n if (this.Incident.PoolType == 'Other' && this.Incident.OtherTypeIncident != '') {\n this.Incident.PoolType = this.Incident.OtherTypeIncident\n }\n if (this.Incident.InjuryType == 'Other') {\n this.Incident.InjuryType = this.Incident.OtherInjuries\n }\n if (this.IsCurrentReportDate) {\n\n this.Incident.AddedOn = new Date().getMonth() + 1 + \"-\" + new Date().getDate() + \"-\" + new Date().getFullYear();\n }\n\n if (this.IsCurrentReportTime) {\n\n this.Incident.AddOnTime = new Date()\n }\n\n let context = this\n this.$refs[formName].validate((valid) => {\n if (valid) {\n let context1 = this\n loader.startLoader()\n\n if (context.Incident.IncidentDate) {\n context.Incident.IncidentDate = context.$options.filters.fdate(context.Incident.IncidentDate)\n }\n if (context.Incident.AddedOn) {\n context.Incident.AddedOn = context.$options.filters.fdate(context.Incident.AddedOn)\n\n }\n context.Incident.SubmittedBy = authDetails.FirstName + ' ' + authDetails.LastName\n\n /* context.addMaintenance['LocationId'] = context.locationId\n context.addMaintenance['PlanDate'] = context.$options.filters.fdate(context.addMaintenance['PlanDate'])*/\n // context.addCompliance['Id'] =\n service.UpdateIncident(context.Incident).then(function (response) {\n loader.stopLoader()\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n return;\n }\n\n context.$notify({\n title: 'Success',\n message: 'Incident details Updated',\n type: 'success'\n })\n context.GetAllIncidents(context.locationId, context.PoolId)\n context.isediting = false\n context.isaddding = false\n context.isAddingOrEditing = \"\"\n\n }, (error) => {\n /* context.addMaintenance['PlanDate'] = new Date(context.addMaintenance['PlanDate'])*/\n loader.stopLoader()\n\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'INCIDENTS - error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n\n resetForm(formName) {\n this.$refs[formName].resetFields()\n },\n /*Purpose-Used to identify whether the page is redirected from dashboard by checking querystring\n Assigns values to variables to show only edit portion,disable radio button\n and call to load data by passing id */\n DashboardRedirection() {\n if (this.getParameterByName('locationId')) {\n this.GetPoolsByLocation(this.getParameterByName('locationId'))\n this.GetAllStaffMember(this.getParameterByName('locationId'))\n }\n\n this.incidentId = this.getParameterByName('id')\n let context = this\n if (this.incidentId != null && this.incidentId != '') {\n context.isDashboardView = true\n context.isediting = true\n context.isAddingOrEditing = \"E\"\n if (context.getParameterByName('type').toLowerCase() == 'incident') {\n\n context.isIncidentType = true\n context.Incident.IncidentType = 'Incident'\n context.isaccidentdisabled = true\n context.GetIncidentByID(context.incidentId)\n }\n if (context.getParameterByName('type').toLowerCase() == 'accident') {\n\n context.isIncidentType = false\n context.Incident.IncidentType = 'Accident'\n context.isincidentdisabled = true\n context.GetIncidentByID(context.incidentId)\n }\n\n // context.GetIncidentByID(context.incidentId)\n\n }\n\n },\n /*Purpose-to get value of querystring parameters\n Argument name-Name of the parameter to get the value\n Url-any specific url if any,if not current url is automically used*/\n\n getParameterByName(name, url) {\n if (!url) url = window.location.href\n name = name.replace(/[\\[\\]]/g, '\\\\$&')\n var regex = new RegExp('[?&]' + name + '(=([^]*)|&|#|$)'),\n results = regex.exec(url)\n if (!results) return null\n if (!results[2]) return ''\n return decodeURIComponent(results[2].replace(/\\+/g, ' '))\n },\n /*To get incident/accident details from the service and assign it to incident to populate the fields\n (Used when the redirection occurs from the dashboard)*/\n\n GetIncidentByID(id) {\n let context = this\n service.GetIncidentById(id).then(function (response) {\n if (response && response != null) {\n\n context.Incident = response\n context.PoolIdEdit = response.PoolID\n context.locationName = ' - ' + context.Incident.LocationName\n context.PoolName = '(Aquatic Venue : ' + context.Incident.PoolName + ')'\n tooltip.startTooltip(50)\n } else {\n context.Incident = ''\n }\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n GetPoolsByLocation(id) {\n let context = this\n\n service.GetPools(id).then(function (response) {\n context.pools = response\n })\n },\n //to redirect to dashboard page\n rediectToDashboard() {\n this.$router.push('dashboard')\n },\n\n },\n watch: {\n isediting: function (val) {\n this.$router.app.$emit('sidebar_hide', val)\n },\n isaddding: function (val) {\n\n this.$router.app.$emit('sidebar_hide', val)\n },\n '$route' (to, from) {\n\n this.stateName = to.name\n if (from.name == 'incidents') {\n\n this.isDashboardView = false\n this.isIncidentType = false\n this.isincidentdisabled = false\n this.isaccidentdisabled = false\n this.isediting = false\n this.isaddding = false\n this.isAddingOrEditing = \"\"\n }\n }\n\n },\n\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/HealthSafety/IncidentAccident/incidents.controller.js","import * as service from './healthsafety.service'\nexport default {\n data() {\n var validatePass = (rule, value, callback) => {\n if (value != '' && value) {\n var letter = /^[-+]?\\d+$/;\n value = value + ''\n if (!value.match(letter)) {\n callback(new Error('value must be a number'));\n }\n // this.$refs.addCompliance.resetFields('LicenseCount');\n }\n\n callback();\n };\n return {\n compliance_columns: ['InventoryName', 'Brand', 'Category', 'Type', 'NameAndBrand','CategoryAndType', 'Actions'],\n optionstable: {\n skin: this.$hydrowareCommonJS.hydrowareTableSkin,\n headings: {\n InventoryName: 'Inventory Name',\n Brand: 'Brand Name',\n Category: 'Category Name',\n NameAndBrand: 'Name/Brand',\n CategoryAndType: 'Category/Type',\n Actions: ''\n },\n columnsClasses: {\n \"Actions\":\"hydroware-2-button-column\",\n \"InventoryName\":\"hidden-xs hidden-sm\",\n \"Brand\":\"hidden-xs hidden-sm\",\n \"Category\":\"hidden-xs hidden-sm\",\n \"Type\":\"hidden-xs hidden-sm\",\n \"NameAndBrand\":\"hydroware-label-in-column col-xs-6 hidden-md hidden-lg hidden-xl\",\n \"CategoryAndType\":\"hydroware-label-in-column col-xs-6 hidden-md hidden-lg hidden-xl\"\n },\n\n labelPosition: 'top',\n perPage: 5,\n perPageValues: [5, 10, 25, 50, 100],\n /* sortable: [\"ActionDate\",\"Description\", \"CommentedBy\", \"ActionTypeName\"],*/\n sortable: [],\n texts: {\n filterPlaceholder: 'Search...',\n limit: 'rows per page:',\n noResults: 'No matching records',\n }\n },\n\n Inventory: {\n\n \"InventoryId\": '',\n \"InventoryTypeId\": '',\n \"InventoryCategoryId\": '',\n \"Model\": '',\n \"Color\": '',\n \"Size\": '',\n \"Description\": '',\n \"Notes\": '',\n \"LocationId\": '',\n \"LocationName\": '',\n \"StorageLocation\": '',\n \"LeadTime\": '',\n \"UsageRate\": '',\n \"Date\": '',\n \"Quantity\": '',\n \"UOM\": '',\n \"Suppliers\": [],\n \"InventoryName\": \"\",\n \"Brand\": \"\",\n \"Category\": \"\",\n \"Type\": \"\",\n /* \"InventoryDetailsId\": ''*/\n\n\n },\n addComplianceCopy: {},\n rules: {\n\n InventoryTypeId: [\n\n {\n required: true,\n message: 'This field is required'\n },\n\n ],\n InventoryCategoryId: [\n\n {\n required: true,\n message: 'This field is required'\n },\n\n ],\n InventoryId: [\n\n {\n required: true,\n required: true,\n message: 'This field is required'\n },\n\n ],\n Quantity: [\n\n {\n validator: validatePass\n }\n ],\n Brand: [\n\n {\n required: true,\n message: 'This field is required'\n },\n\n ]\n },\n Inventories: [],\n inventoryPreRequisites: [],\n types: [],\n categories: [],\n cinventories: [],\n suppliers: [],\n modalTitle: '',\n locationId: 25,\n isediting: false,\n isaddding: false,\n isAddingOrEditing:\"\", //FG - FOOF - After Cert - First Release Security (7)\n locationName: ''\n\n }\n },\n mounted() {\n let context = this\n this.$router.app.$on('emittedlocation_obj', (data) => {\n context.locationId = data.LocationId ? data.LocationId : ''\n context.locationName = data.LocationName ? ' - ' + data.LocationName : ''\n if (context.locationId) {\n context.GetAllInventoryItems(context.locationId)\n }\n })\n\n // this.GetAllInventoryItems(this.locationId)\n this.PreRequisites()\n\n },\n\n methods: {\n\n addCompliancevit() {\n this.isaddding = true\n this.isAddingOrEditing=\"A\"\n\n this.Inventory = {\n\n \"InventoryId\": '',\n \"InventoryTypeId\": '',\n \"InventoryCategoryId\": '',\n \"Model\": '',\n \"Color\": '',\n \"Size\": '',\n \"Description\": '',\n \"Notes\": '',\n \"LocationId\": '',\n \"LocationName\": '',\n \"StorageLocation\": '',\n \"LeadTime\": '',\n \"UsageRate\": '',\n \"Date\": '',\n \"Quantity\": '',\n \"UOM\": '',\n \"Suppliers\": [],\n \"InventoryName\": \"\",\n \"Brand\": \"\",\n \"Category\": \"\",\n \"Type\": \"\",\n /* \"InventoryDetailsId\": ''*/\n\n\n }\n\n },\n\n Getcategory(typeId) {\n let context = this\n\n this.Inventory.InventoryCategoryId = window.edCat ? window.edCat : \"\"\n window.edCat = \"\"\n context.categories = []\n this.types.map(function (item) {\n\n item[\"InventoryCategoryList\"].map(function (item1) {\n\n if (item1[\"TypeIdId\"] === typeId) {\n context.categories.push(item1)\n }\n\n });\n\n\n })\n\n },\n getInventory(id) {\n let context = this\n context.cinventories = []\n this.categories.map(function (item) {\n\n item[\"InventoryList\"].map(function (item1) {\n\n if (item1[\"InventoryCategoryId\"] === id) {\n context.cinventories.push(item1)\n }\n\n });\n\n\n })\n\n },\n\n showCompliancevit() {\n this.isaddding = false\n this.isediting = false\n this.isAddingOrEditing=\"\"\n },\n\n\n GetAllInventoryItems(locationId) {\n let context = this\n loader.startLoader()\n service.GetAllInventoryItems(locationId).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n context.Inventories = [] \n loader.stopLoader()\n return;\n }\n\n if (response && response != null) {\n context.Inventories = response\n tooltip.startTooltip(50)\n } else {\n\n context.Inventories = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n GetInventoryDetialById(Id) {\n let context = this\n loader.startLoader()\n service.GetInventoryDetialById(Id).then(function (response) {\n if (response.InventoryCategoryId) {\n window.edCat = response.InventoryCategoryId\n //FG - FOOF - the line had been commented out by Digiclarity\n // but it needed to be reinstated for element-ui vers 2.4.11\n // so the category dropdown would be populated when the page is\n // initially loaded\n context.Getcategory(response.InventoryTypeId)\n //FG - FOOF - added the line below so the inventory drop down would populate\n // when the page is initially loaded\n context.getInventory(response.InventoryCategoryId) \n }\n if (response.InventoryId) {\n //context.getInventory(response.InventoryId)\n }\n\n if (response && response != null) {\n\n\n context.Inventory = response\n\n context.Inventory[\"InventoryDetailsId\"] = response.InventoryDetailsId\n if (response.Date) {\n context.Inventory[\"Date\"] = new Date(response.Date)\n }\n }\n\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n PreRequisites() {\n let context = this\n loader.startLoader()\n service.PreRequisites().then(function (response) {\n\n if (response && response != null) {\n context.inventoryPreRequisites = response\n context.types = response.Inventory[\"InventoryTypeList\"]\n context.suppliers = response.supplier\n }\n\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n /*\n del: function (data) {alert(\"INVEN\");if(1==1) return;\n var ID = data.row.InventoryDetailsId\n let context = this\n context.$confirm('Are you sure you want to delete' + data.row.InventoryName+'?', 'Warning', {\n confirmButtonText: 'OK',\n cancelButtonText: 'Cancel',\n type: 'warning'\n }).then(() => {\n loader.startLoader()\n service.DeleteInventory(ID).then(function (response) {\n context.GetAllInventoryItems(context.locationId)\n loader.stopLoader()\n context.$notify({\n title: 'Success',\n message: 'Deleted Successfully',\n type: 'success'\n })\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n }).catch(() => {\n })\n },\n */\n //FG - FOOF - After Cert - First Release (6) - rewrote delete code below to use new methods in hydrowareCommonJS.js\n //The delete function below deletes a row from the table\n del: function (data) {\n var ID = data.row.InventoryDetailsId\n let context = this\n var opts = {message: 'Are you sure you want to delete ' + data.row.InventoryName + '?'}\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.deleteInventoryRow.bind(null,ID))\n },\n deleteInventoryRow(ID) {\n var context = this;\n loader.startLoader()\n service.DeleteInventory(ID).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n loader.stopLoader()\n return;\n }\n\n context.GetAllInventoryItems(context.locationId)\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n },\n (error) => {\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\n })\n },\n cancelpopup: function () {\n\n $('#Addkudosmodel').modal('hide')\n },\n\n editcol: function (data) {\n\n var ID = data.row.InventoryDetailsId\n let context = this\n context.EditableColID = ID\n\n context.GetInventoryDetialById(ID)\n\n context.isediting = true\n context.isAddingOrEditing=\"E\"\n\n },\n\n\n AddInventoryItem(formName) {\n\n\n let context = this\n this.$refs[formName].validate((valid) => {\n if (valid) {\n let context1 = this\n loader.startLoader()\n\n context.Inventory['LocationId'] = context.locationId\n if (context.Inventory.Date) {\n context.Inventory['Date'] = context.$options.filters.fdate(context.Inventory.Date)\n }\n\n service.AddInventoryItem(context.Inventory).then(function (response) {\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n loader.stopLoader()\n return;\n }\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Inventory Details Added',\n type: 'success'\n })\n context.GetAllInventoryItems(context.locationId)\n context.isediting = false\n context.isaddding = false\n context.isAddingOrEditing=\"\"\n\n }, (error) => {\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'INVENTORY - 1 error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n\n\n UpdateInventoryDetails(formName) {\n\n\n let context = this\n this.$refs[formName].validate((valid) => {\n if (valid) {\n let context1 = this\n loader.startLoader()\n context.Inventory['LocationId'] = context.locationId\n if (context.Inventory.Date) {\n context.Inventory['Date'] = context.$options.filters.fdate(context.Inventory.Date)\n }\n\n // context.addCompliance['Id'] =\n service.UpdateInventoryDetails(context.Inventory).then(function (response) {\n\n //Is this restricted ? -- FG - After Cert - First Release Security\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n loader.stopLoader()\n return;\n }\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Success',\n message: 'Inventory Details Updated',\n type: 'success'\n })\n context.GetAllInventoryItems(context.locationId)\n context.isediting = false\n context.isaddding = false\n context.isAddingOrEditing=\"\"\n\n }, (error) => {\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'INVENTORY -2 error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n\n\n resetForm(formName) {\n this.$refs[formName].resetFields()\n },\n },\n watch: {\n\n isediting: function (val) {\n this.$router.app.$emit('sidebar_hide', val)\n },\n isaddding: function (val) {\n this.$router.app.$emit('sidebar_hide', val)\n }\n\n\n },\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/HealthSafety/inventory.controller.js","import * as service from './healthsafety.service'\nexport default {\n data() {\n return {\n compliance_columns: ['PlanDate', 'ProfileItemName', 'PlanResponsibleUser', 'PlanFrequency', 'AllInOne', 'Actions'],\n optionstable: {\n skin: this.$hydrowareCommonJS.hydrowareTableSkin,\n headings: {\n PlanDate: 'Date',\n ProfileItemName: 'Item Name',\n PlanResponsibleUser: 'Responsibility',\n PlanFrequency: 'Frequency',\n AllInOne: '',\n Actions: ''\n },\n columnsClasses: {\n \"Actions\":\"hydroware-2-button-column\",\n \"ProfileItemName\":\"hidden-xs hidden-sm\",\n \"PlanDate\":\"hydroware-date-column hidden-xs hidden-sm\",\n \"PlanResponsibleUser\":\"hydroware-name-column hidden-xs hidden-sm\",\n \"PlanFrequency\":\"hydroware-frequency-colomn hidden-xs hidden-sm\",\n \"AllInOne\":\"hydroware-label-in-column hidden-md hidden-lg hidden-xl\"\n },\n labelPosition: 'top',\n\n /* isediting: false,\n EditableColID: '',\n role: '',*/\n // sortIcon: {base: 'glyphicon', up: 'glyphicon-chevron-up', down: 'glyphicon-chevron-down'},\n perPage: 5,\n perPageValues: [5, 10, 25, 50, 100],\n /* sortable: [\"ActionDate\",\"Description\", \"CommentedBy\", \"ActionTypeName\"],*/\n sortable: ['PlanDate', 'ProfileItemName', 'PlanResponsibleUser', 'PlanFrequency'],\n texts: {\n filterPlaceholder: 'Search...',\n limit: 'rows per page:',\n noResults: 'No matching records',\n }\n },\n\n addMaintenance: {\n 'MaintenanceId': '',\n 'LocationId': '',\n 'ProfileItemName': '',\n 'ProfileMake': '',\n 'ProfileModelNo': '',\n 'ProfileSerialNumber': '',\n 'ProfileDescription': '',\n 'PlanFrequency': '',\n 'PlanDate': '',\n 'PlanResponsibility': '',\n 'PlanPriority': '',\n 'PlanDescription': '',\n 'MaintenanceInventoryList': [],\n 'PlanResponsibleUser': ''\n },\n addComplianceCopy: {},\n rules: {\n\n ProfileItemName: [\n\n {\n required: true,\n message: 'This field is required'\n },\n {\n min: 1,\n max: 50,\n message: 'Length should be 1 to 50'\n }\n ],\n ProfileMake: [\n\n {\n required: true,\n message: 'This field is required'\n },\n {\n min: 1,\n max: 50,\n message: 'Length should be 1 to 50'\n }\n ],\n PlanDate: [{\n type: 'date',\n required: true,\n message: 'This field is required'\n }, ],\n PlanResponsibility: [\n\n {\n required: true,\n message: 'This field is required'\n },\n\n ],\n PlanPriority: [\n\n {\n required: true,\n message: 'This field is required'\n },\n\n ],\n\n },\n mitems: [],\n cinventories: [],\n types: [],\n makes: [],\n locationId: '',\n suppliers: [],\n categories: [],\n Users: [],\n eindex: 's',\n selectedInventoryType: '',\n selectedInventoryCategory: '',\n selectedInventoryInventory: '',\n selectedInventoryItem: '',\n Quantity: '',\n Notes: '',\n locationName: '',\n modalTitle: '',\n\n isediting: false,\n isaddding: false,\n isAddingOrEditing: \"\" //FG - After Cert - First Release Security (7) added this variable for use when disabling fields in the el-form\n\n }\n },\n mounted() {\n let context = this\n this.$router.app.$on('emittedlocation_obj', (data) => {\n context.locationId = data.LocationId ? data.LocationId : ''\n context.locationName = data.LocationName ? ' - ' + data.LocationName : ''\n context.GetMaintenance(context.locationId)\n // alert(JSON.stringify(data))\n context.PreRequisites(context.locationId)\n this.GetAllUsers(this.locationId)\n })\n\n },\n\n methods: {\n\n addCompliancevit() {\n this.isaddding = true\n this.isAddingOrEditing=\"A\" //FG - FOOF - After Cert - First Release Security (7) - added isAddingOrEditing for use when disabling el-form\n\n this.addMaintenance = {\n 'MaintenanceId': '',\n 'LocationId': '',\n 'ProfileItemName': '',\n 'ProfileMake': '',\n 'ProfileModelNo': '',\n 'ProfileSerialNumber': '',\n 'ProfileDescription': '',\n 'PlanFrequency': '',\n 'PlanDate': '',\n 'PlanResponsibility': '',\n 'PlanPriority': '',\n 'PlanDescription': '',\n 'MaintenanceInventoryList': [],\n 'PlanResponsibleUser': ''\n }\n\n },\n showCompliancevit() {\n this.isaddding = false\n this.isediting = false\n this.isAddingOrEditing=\"\"\n this.eindex = 's'\n },\n\n //FG - FOOF - renamed the method below\n // changed the first param that is passed into the function so that it is\n // now the inventory type id rather than an full object. Why ? because\n // by doing so I can now use this function to set things up for a line\n // item that is being edited and also when a user changes a choice in\n // the \"type\" drop down.\n // added the \"chosenCategoryId\" parameter so we know if we need to fill in\n // a category in the drop down's text field. \n // When editing a line item we need to fill in the category from that line item but when\n // adding a new line item we need to show the default (\"select a category\")\n // reworked function and changed variable names in it to be more descriptive\n // added code to the methos so it will call on the\n // initializeInventoryForCategoryType(...) function when the chosenCategory\n // is not null (THIS LAST BIT MAY NOT BE NEEDED)\n // added comments\n initializeCategoriesForInventoryType(inventoryTypeId,chosenCategoryId=null) {\n let context = this\n context.categories = []\n let chosenCategory = null //This will be filled in when we loop thru the categories\n if(inventoryTypeId != null) {\n this.types.map(function (aType) {\n aType['InventoryCategoryList'].map(function (aCategory) {\n if (aCategory['TypeIdId'] === inventoryTypeId) {\n context.categories.push(aCategory)\n //If the category that was just pushed into the list of catagories\n //is the chosen category then hold onto it so it can be used\n //to set the selectedInventoryCategory later in this function\n if(aCategory.CategoryId == chosenCategoryId)\n chosenCategory = aCategory\n }\n })\n })\n this.selectedInventoryCategory = chosenCategory\n if(chosenCategory == null)\n context.initializeInventoryForCategoryType(chosenCategoryId)\n }\n },\n //FG - FOOF - renamed the method below... SEE THE COMMENTS ABOVE THE\n // FUNCTION: initializeCategoriesForInventoryType\n // I MADE SIMILAR CHANGES TO THE METHOD BELOW\n initializeInventoryForCategoryType(categoryTypeId,chosenInventoryId=null) {\n let context = this\n context.cinventories = []\n let chosenInventory = null; //this will be filled in when we loop thru the inventory list\n if(categoryTypeId != null)\n this.categories.map(function (aCategory) {\n aCategory['InventoryList'].map(function (anInventory) {\n if (anInventory['InventoryCategoryId'] === categoryTypeId) {\n context.cinventories.push(anInventory)\n if(anInventory.InventoryId == chosenInventoryId)\n chosenInventory = anInventory\n }\n })\n })\n this.selectedInventoryInventory = chosenInventory //set the value in the input field associated with the el-select\n if(chosenInventory == null) //if nothing is chosen for inventory then force the makes select list to be empty\n this.initializeMakesForInventoryType(chosenInventoryId)\n },\n \n //FG - FOOF - renamed the method below... SEE THE COMMENTS ABOVE THE\n // FUNCTION: initializeCategoriesForInventoryType\n // I MADE SIMILAR CHANGES TO THE METHOD BELOW\n initializeMakesForInventoryType(inventoryTypeId,chosenMakeId=null) {\n //alert(\"init make inv type id: \" + inventoryTypeId + \" chosen make: \" + chosenMakeId)\n let context = this\n context.makes = []\n let chosenMake = null; //this will be filled in when we loop thru the makes list\n if(inventoryTypeId != null) {\n this.cinventories.map(function (item) {\n item['InventoryDetails'].map(function (item2) {\n context.makes.push(item2)\n if(item2.InventoryDetailsId == chosenMakeId)\n chosenMake = item2\n })\n })\n }\n this.selectedInventoryItem = chosenMake\n },\n\n Getmakes(id) {\n\n let context = this\n context.makes = []\n this.cinventories.map(function (item) {\n item['InventoryDetails'].map(function (item2) {\n //alert(JSON.stringify(item2))\n context.makes.push(item2)\n })\n })\n },\n\n\n\n\n\n checkNumber() {\n\n this.Quantity = this.Quantity.replace(/[^0-9]/g, \"\");\n\n },\n\n\n\n AddtoList() {\n\n if (this.selectedInventoryItem && this.Quantity && this.selectedInventoryInventory && this.selectedInventoryType && this.selectedInventoryCategory) {\n let mod = {\n\n 'InventoryDetailsId': this.selectedInventoryItem.InventoryDetailsId,\n 'Quantity': this.Quantity,\n 'Notes': this.Notes,\n 'InventoryId': this.selectedInventoryInventory,\n 'ItemName': this.selectedInventoryInventory.ItemName,\n 'CategoryId': this.selectedInventoryCategory,\n 'CategoryName': this.selectedInventoryCategory.CategoryName,\n 'TypeId': this.selectedInventoryType,\n 'TypeName': this.selectedInventoryType.TypeName,\n 'Brand': this.selectedInventoryItem.Brand,\n\n }\n\n var elexists = false\n var titem\n var citem\n var iitem\n var iiditem\n var titem1\n var citem1\n var iitem1\n var iiditem1\n if (mod.TypeId.TypeId) {\n titem = mod.TypeId.TypeId\n } else {\n titem = mod.TypeId\n }\n\n if (mod.CategoryId.CategoryId) {\n citem = mod.CategoryId.CategoryId\n } else {\n citem = mod.CategoryId\n }\n\n if (mod.InventoryId.InventoryId) {\n iitem = mod.InventoryId.InventoryId\n } else {\n iitem = mod.InventoryId\n }\n\n if (mod.InventoryDetailsId.InventoryDetailsId) {\n iiditem = mod.InventoryDetailsId.InventoryDetailsId\n } else {\n iiditem = mod.InventoryDetailsId\n }\n if (this.addMaintenance.MaintenanceInventoryList.length > 0) {\n\n this.addMaintenance.MaintenanceInventoryList.map(function (item) {\n if (item.TypeId.TypeId) {\n titem1 = mod.TypeId.TypeId\n } else {\n titem1 = item.TypeId\n }\n\n if (item.CategoryId.CategoryId) {\n citem1 = item.CategoryId.CategoryId\n } else {\n citem1 = item.CategoryId\n }\n\n if (item.InventoryId.InventoryId) {\n iitem1 = item.InventoryId.InventoryId\n } else {\n iitem1 = item.InventoryId\n }\n\n if (item.InventoryDetailsId.InventoryDetailsId) {\n iiditem1 = item.InventoryDetailsId.InventoryDetailsId\n } else {\n iiditem1 = item.InventoryDetailsId\n }\n\n if (iiditem1 == iiditem && iitem1 == iitem && citem1 == citem && titem1 == titem) {\n elexists = true\n\n }\n\n })\n\n }\n\n if (elexists == false) {\n this.addMaintenance.MaintenanceInventoryList.push(mod)\n\n } else {\n this.$notify({\n title: 'Error',\n message: 'Item already exists in inventory list',\n type: 'error'\n })\n }\n\n this.selectedInventoryItem = ''\n this.Quantity = ''\n this.Notes = ''\n this.selectedInventoryInventory = ''\n this.selectedInventoryCategory = ''\n this.selectedInventoryType = ''\n this.selectedInventoryItem = ''\n\n }\n },\n UpdateList() {\n let context = this\n if (this.selectedInventoryItem && this.Quantity && this.selectedInventoryInventory && this.selectedInventoryType && this.selectedInventoryCategory) {\n let mod = {\n\n 'InventoryDetailsId': this.selectedInventoryItem.InventoryDetailsId,\n 'Quantity': this.Quantity,\n 'Notes': this.Notes,\n 'InventoryId': this.selectedInventoryInventory,\n 'ItemName': this.selectedInventoryInventory.ItemName,\n 'CategoryId': this.selectedInventoryCategory,\n 'CategoryName': this.selectedInventoryCategory.CategoryName,\n 'TypeId': this.selectedInventoryType,\n 'TypeName': this.selectedInventoryType.TypeName,\n 'Brand': this.selectedInventoryItem.Brand,\n\n }\n\n var elexists = false\n if (this.addMaintenance.MaintenanceInventoryList.length > 0) {\n\n this.addMaintenance.MaintenanceInventoryList.map(function (item, index) {\n\n if (item.InventoryDetailsId == mod.InventoryDetailsId && item.InventoryId == mod.InventoryId && item.CategoryId == mod.CategoryId && item.TypeId == mod.TypeId) {\n if (context.eindex != index) {\n elexists = true\n }\n }\n\n })\n\n }\n\n if (elexists == false) {\n\n this.addMaintenance.MaintenanceInventoryList[this.eindex] = mod\n\n } else {\n this.$notify({\n title: 'Error',\n message: 'Item already exists in inventory list',\n type: 'error'\n })\n }\n\n this.selectedInventoryItem = ''\n this.Quantity = ''\n this.Notes = ''\n this.selectedInventoryInventory = ''\n this.selectedInventoryCategory = ''\n this.selectedInventoryType = ''\n this.selectedInventoryItem = ''\n\n this.eindex = 's'\n }\n },\n\n\n //FG - FOOF - 11-29-2018 - SOME COMMENTS FROM THE FOLKS THAT WROTE THIS AT\n // DIGICLARITY WOULD HAVE BEEN REALLY HELPFUL IN THE FUNCTION BELOW\n editsession(maintenanceLineItem, index) {\n let context = this\n this.eindex = index\n var lineItemTypeId // was - var titem\n var lineItemCategoryId //was - var citem\n var lineItemInventoryItemId //was - var iitem\n var lineItemMakeItemId //was - var iiditem\n \n /*********************************************************************\n **\n ** FG - FOOF - I'm not sure how it happens but sometimes objects are\n ** passed in and sometimes simple numeric ids.... Digiclarity had the\n ** if/else statements below to cover that.\n **\n **********************************************************************/\n if (maintenanceLineItem.TypeId.TypeId) {\n lineItemTypeId = maintenanceLineItem.TypeId.TypeId\n } else {\n lineItemTypeId = maintenanceLineItem.TypeId\n }\n \n if (maintenanceLineItem.CategoryId.CategoryId) {\n lineItemCategoryId = maintenanceLineItem.CategoryId.CategoryId\n } else {\n lineItemCategoryId = maintenanceLineItem.CategoryId\n }\n\n if (maintenanceLineItem.InventoryId.InventoryId) {\n lineItemInventoryItemId = maintenanceLineItem.InventoryId.InventoryId\n } else {\n lineItemInventoryItemId = maintenanceLineItem.InventoryId\n }\n\n if (maintenanceLineItem.InventoryDetailsId.InventoryDetailsId) {\n lineItemMakeItemId = maintenanceLineItem.InventoryDetailsId.InventoryDetailsId\n } else {\n lineItemMakeItemId = maintenanceLineItem.InventoryDetailsId\n }\n\n //alert(\"EDIT A LINE ITEM\\ntype: \" + lineItemTypeId + \"\\ncat: \" + lineItemCategoryId \n //+ \"\\ninv: \" + lineItemInventoryItemId + \"\\nmake: \" + lineItemMakeItemId)\n\n /************************************************************************************\n ** FG - added comment\n ** Loop thru the types and set the selected type to the one that is on the line item\n ** to be edited. \n ** I believe that when setting the context.selectedInventoryType an el-select @change\n ** event is triggered.\n ************************************************************************************/\n context.types.map(function (obj) {\n if (obj.TypeId == lineItemTypeId) {\n context.selectedInventoryType = obj\n }\n })\n \n context.initializeCategoriesForInventoryType(lineItemTypeId, lineItemCategoryId);\n context.initializeInventoryForCategoryType(lineItemCategoryId,lineItemInventoryItemId);\n context.initializeMakesForInventoryType(lineItemInventoryItemId,lineItemMakeItemId);\n/* ??????????????????? CAN I DO THIS DIFFERENTLY ??????????????????????\n setTimeout(function () {\n context.categories.map(function (obj) {\n\n if (obj.CategoryId == lineItemCategoryId) {\n context.selectedInventoryCategory = obj\n setTimeout(function () {\n context.cinventories.map(function (obj) {\n\n if (obj.InventoryId == inventoryItem) {\n context.selectedInventoryInventory = obj\n\n setTimeout(function () {\n context.makes.map(function (obj) {\n\n if (obj.InventoryDetailsId == makeItem) {\n context.selectedInventoryItem = obj\n }\n\n })\n }, 100)\n }\n\n })\n\n }, 100)\n }\n\n })\n\n }, 100)\n????????????????????????????????? ABOVE */\n this.Quantity = maintenanceLineItem.Quantity\n this.Notes = maintenanceLineItem.Notes\n },\n\n removeSession(index) {\n this.addMaintenance.MaintenanceInventoryList.splice(index, 1)\n\n this.eindex = \"s\"\n\n this.selectedInventoryItem = ''\n this.Quantity = ''\n this.Notes = ''\n this.selectedInventoryInventory = ''\n this.selectedInventoryCategory = ''\n this.selectedInventoryType = ''\n this.selectedInventoryItem = ''\n },\n PreRequisites(id) {\n let context = this\n loader.startLoader()\n service.GetPrerequisites(id).then(function (response) {\n\n if (response && response != null) {\n\n context.types = response['Inventories']\n // context.suppliers = response.supplier\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n GetAllUsers(locationId) {\n let context = this\n loader.startLoader()\n service.GetAllUsers(locationId).then(function (response) {\n\n if (response && response != null) {\n context.Users = response\n tooltip.startTooltip()\n } else {\n\n context.Users = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n \n\n\n GetMaintenance(locationId) {\n let context = this\n loader.startLoader()\n service.GetMaintenance(locationId).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security (7) Can the user at least view the data ?\n if(context.$hydrowareSecurityJS.isDataRestricted(response)) {\n context.mitems = []\n return;\n }\n //FG - FOOF - After Cert - First Release Security (7) - above\n if (response && response != null) {\n context.mitems = response\n } else {\n\n context.mitems = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n\n //FG - FOOF - After Cert - First Release (6) - rewrote delete code below to use new methods in hydrowareCommonJS.js\n //The delete function below deletes a row from the table\n del: function (data) {\n var ID = data.row.MaintenanceId\n let context = this\n var opts = {message: 'Are you sure you want to delete: ' + data.row.ProfileItemName +'?'}\n context.$hydrowareCommonJS.displayConfirmDeletePopup(context, opts, context.deleteMaintenanceRow.bind(null,ID))\n },\n deleteMaintenanceRow(ID) {\n var context=this;\n loader.startLoader()\n service.DeleteMaintenance(ID).then(function (response) {\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) {\n loader.stopLoader() \n return;\n }\n\n context.GetMaintenance(context.locationId)\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyDeleteSuccess(context);\n\n }, (error) => {\n loader.stopLoader()\n context.$hydrowareCommonJS.notifyError(context,{message: error.responseJSON.Message})\n })\n },\n\n cancelpopup: function () {\n $('#Addkudosmodel').modal('hide')\n },\n\n editcol: function (data) {\n\n var ID = data.row.MaintenanceId\n let context = this\n context.EditableColID = ID\n context.addMaintenance = data.row\n context.addMaintenance['MaintenanceId'] = ID\n context.addMaintenance['PlanDate'] = new Date(data.row['PlanDate'])\n context.isediting = true\n context.isAddingOrEditing=\"E\"\n },\n\n AddMaintenance(formName) {\n\n let context = this\n this.$refs[formName].validate((valid) => {\n if (valid) {\n let context1 = this\n loader.startLoader()\n\n context.addMaintenance['LocationId'] = context.locationId\n context.addMaintenance['PlanDate'] = context.$options.filters.fdate(context.addMaintenance['PlanDate'])\n\n service.AddMaintenance(context.addMaintenance).then(function (response) {\n\n loader.stopLoader()\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{}))\n return;\n\n context.$notify({\n title: 'Success',\n message: 'Maintenance entry Created',\n type: 'success'\n })\n context.GetMaintenance(context.locationId)\n context.isediting = false\n context.isaddding = false\n context.isAddingOrEditing=\"\"\n\n }, (error) => {\n context.addMaintenance['PlanDate'] = new Date(context.addMaintenance['PlanDate'])\n\n loader.stopLoader()\n\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n this.$notify({\n\n title: 'Error',\n\n message: 'MAINT - error while submit!!',\n\n type: 'error'\n\n })\n return false\n }\n })\n },\n\n UpdateMaintenance(formName) {\n\n\n let context = this\n this.$refs[formName].validate((valid) => {\n if (valid) {\n let context1 = this\n loader.startLoader()\n if (this.addMaintenance.MaintenanceInventoryList.length < 1 || !this.addMaintenance.MaintenanceInventoryList) {\n this.addMaintenance.MaintenanceInventoryList = [\"\"]\n }\n context.addMaintenance['LocationId'] = context.locationId\n context.addMaintenance['PlanDate'] = context.$options.filters.fdate(context.addMaintenance['PlanDate'])\n\n // context.addCompliance['Id'] =\n service.UpdateMaintenance(context.addMaintenance).then(function (response) {\n\n loader.stopLoader()\n\n //FG - FOOF - After Cert - First Release Security - added conditional statement below\n //ADDED AFTER SERVER SIDE SECURITY WAS IN PLACE - SERVER SIDE SECURITY CHECK EXAMPLE\n if(context.$hydrowareCommonJS.displayHydrowareRestrictedMessageIfApplicable(response,context,{})) { \n return;\n }\n\n context.$notify({\n title: 'Success',\n message: 'Maintenance details Updated',\n type: 'success'\n })\n context.GetMaintenance(context.locationId)\n context.isediting = false\n context.isaddding = false\n context.isAddingOrEditing=\"\"\n\n }, (error) => {\n context.addMaintenance['PlanDate'] = new Date(context.addMaintenance['PlanDate'])\n loader.stopLoader()\n\n context.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n } else {\n return false\n }\n })\n },\n\n resetForm(formName) {\n this.$refs[formName].resetFields()\n },\n },\n watch: {\n\n isediting: function (val) {\n this.$router.app.$emit('sidebar_hide', val)\n },\n isaddding: function (val) {\n\n this.$router.app.$emit('sidebar_hide', val)\n }\n\n },\n}\n\n\n\n// WEBPACK FOOTER //\n// ./src/pages/HealthSafety/maintenance.controller.js","import * as service from './healthsafety.service'\nexport default {\n data() {\n return {\n compliance_columns: ['TrainingDate', 'Title', 'LocationName', 'TrainingType', 'Category', 'OrganizerName', 'TrainingSessions', 'SessionComplete', 'Actions'],\n optionstable: {\n headings: {\n TrainingDate: 'Date',\n Title: 'Training Name',\n LocationName: 'Training Location',\n TrainingType: 'Type',\n Category: 'Category',\n OrganizerName: 'Organizer',\n TrainingSessions: 'View Training Sessions',\n SessionComplete: 'Session Complete',\n Actions: ''\n },\n labelPosition: 'top',\n\n /* isediting: false,\n EditableColID: '',\n role: '',*/\n // sortIcon: {base: 'glyphicon', up: 'glyphicon-chevron-up', down: 'glyphicon-chevron-down'},\n perPage: 5,\n perPageValues: [5, 10, 25, 50, 100],\n /* sortable: [\"ActionDate\",\"Description\", \"CommentedBy\", \"ActionTypeName\"],*/\n sortable: [],\n orderBy: {\n column: 'TrainingDate',\n ascending: false\n },\n texts: {\n filterPlaceholder: 'Search...',\n limit: 'rows per page:',\n noResults: 'No matching records',\n }\n },\n\n Training: {\n Title: '',\n TrainingTypeId: '',\n Category: 1,\n CreatedOn: '',\n OrganizerId: '',\n AreaZone: '',\n TrainingDate: '',\n ComplianceRequirementId: '',\n ComplianceDocumentId: '',\n ReferenceDocumentId: '',\n TrainingSessions: [],\n SupplyItems: [],\n Equipments: [],\n Notes: '',\n LocationId: ''\n },\n\n displayDate: '',\n cindex: '',\n\n rules: {\n\n Title: [\n\n {\n required: true,\n message: 'This field is required'\n },\n {\n min: 1,\n max: 50,\n message: 'Length should be 1 to 50'\n }\n ],\n OrganizerId: [\n\n {\n required: true,\n message: 'This field is required'\n }\n ],\n PlanDate: [{\n type: 'date',\n required: true,\n message: 'This field is required'\n }, ],\n AreaZone: [\n\n {\n required: true,\n message: 'This field is required'\n },\n {\n min: 1,\n max: 50,\n message: 'Length should be 1 to 50'\n }\n\n ],\n\n },\n value4: [],\n eventDetails: [],\n uindex: '',\n tempUser: [],\n trainings: [],\n equipments: [],\n ttypes: [],\n supplies: [],\n organizers: [],\n compliance: [],\n rdocs: [],\n locationId: '',\n sDetails: [],\n locationName: '',\n modalTitle: '',\n\n isediting: false,\n isaddding: false,\n sUsers: [],\n filterUser: 1,\n image_data: []\n }\n },\n mounted() {\n let context = this\n\n this.$router.app.$on('emittedlocation_obj', (data) => {\n\n context.locationId = data.LocationId ? data.LocationId : ''\n context.locationName = data.LocationName ? ' - ' + data.LocationName : ''\n if (context.locationId) {\n context.GetAllTrainings(context.locationId)\n context.GetAllOrganizers(context.locationId)\n }\n\n //context.GetEquipments(context.locationId)\n\n })\n context.GetTrainingTypes()\n context.GetSessionDocuments()\n $('#profile-tab-2').hide()\n this.image_data = []\n this.image_data = new FormData()\n\n },\n\n methods: {\n displaySessionUsers(id) {\n this.filterUser = 1\n this.GetSessionDetailsByTrainingId(id)\n $('#UsersModal').modal('show')\n },\n SelectSession(users, index) {\n this.cindex = index\n this.sUsers = users\n },\n addCompliancevit() {\n this.isaddding = true\n\n this.Training = {\n Title: '',\n TrainingTypeId: '',\n Category: 1,\n CreatedOn: '',\n OrganizerId: '',\n ComplianceDocumentId: '',\n TrainingDate: '',\n AreaZone: '',\n ComplianceRequirementId: '',\n ReferenceDocumentId: '',\n TrainingSessions: [],\n SupplyItems: [],\n Equipments: [],\n Notes: '',\n LocationId: this.locationId\n },\n this.displayDate = ''\n if (this.ttypes) {\n\n this.Training.TrainingTypeId = this.ttypes[0].Id\n this.GetEquipments(this.Training.TrainingTypeId)\n this.GetSupplyItems(this.Training.TrainingTypeId)\n this.GetMahcCodes()\n }\n this.Training.TrainingDate = new Date()\n },\n viewSessions(data) {\n\n $('#eventsModel1').modal('show')\n this.eventDetails = data\n },\n showCompliancevit() {\n this.isaddding = false\n this.isediting = false\n\n },\n\n addSession() {\n\n this.Training.TrainingSessions.push({\n Date: '',\n StartTime: '',\n EndTime: '',\n Topic: '',\n Presenter: '',\n Users: [],\n UserIds: [],\n Attachments: [],\n SessionReferenceDocuments: []\n\n })\n\n },\n setFilename: function (e, row) {\n\n let context = this\n\n function getExtension(filename) {\n var parts = filename.split('.')\n return parts[parts.length - 1]\n }\n\n for (var i = 0; i < e.target.files.length; i++) {\n\n var name = e.target.files[i].name\n var type = e.target.files[i].type\n var size = e.target.files[i].size\n\n if (type != 'image/jpeg' && type != 'image/jpg' && type != 'image/png' && getExtension(name) != 'docx' && getExtension(name) != 'doc' && getExtension(name) != 'txt' && getExtension(name) != 'pdf') {\n alert('Invalid file format')\n return\n }\n if (size == 0) {\n alert('File is Empty')\n return\n }\n\n if (size > 5000000) {\n alert('You have exceeded the maximum image size of 5 MB')\n return\n }\n\n var id = i\n\n this.image_data.append('Attachments[' + i + ']', e.target.files[i])\n\n }\n\n\n\n },\n userAppend(val) {\n\n\n // alert(JSON.stringify(this.value4))\n\n this.Training.TrainingSessions[this.uindex].UserIds = val\n\n },\n addUser(index, data) {\n\n this.uindex = index\n let context = this\n\n context.value4 = data\n\n $('#AttendeesModal').modal('show')\n },\n addSupply() {\n this.Training.SupplyItems.push({\n\n SupplyItemId: '',\n Quantity: ''\n\n })\n\n },\n\n addEquipment() {\n this.Training.Equipments.push({\n EquipmentId: '',\n Quantity: ''\n\n })\n },\n\n removeSession(index) {\n this.Training.TrainingSessions.splice(index, 1)\n },\n removeSupply(index) {\n this.Training.SupplyItems.splice(index, 1)\n },\n removeEquipment(index) {\n this.Training.Equipments.splice(index, 1)\n },\n GetAllOrganizers(id) {\n let context = this\n loader.startLoader()\n service.GetAllOrganizers(id).then(function (response) {\n\n if (response && response != null) {\n context.organizers = response\n\n } else {\n\n context.organizers = []\n }\n\n //context.$refs.dragtable.setPage(1)\n\n loader.stopLoader()\n }, (error) => {\n loader.stopLoader()\n this.$notify({\n title: 'Error',\n message: error.responseJSON.Message,\n type: 'error'\n })\n })\n },\n GetMahcCodes() {\n let context = this\n loader.startLoader()\n service.GetMahcCodes().then(function (response) {\n\n if (response && response != null) {\n // context.compliance = response\n $.each(response, function (i, item) {\n $('#compliance_drop').append($(' |