From 278a4921454d5df8a0c2b00acc6b7d4e3b42cd5d Mon Sep 17 00:00:00 2001 From: Chris Brame Date: Sun, 26 Jun 2022 16:35:17 -0400 Subject: [PATCH] fix(notices): missing create notice option --- src/client/actions/notices.js | 6 +- src/client/api/index.js | 6 + .../containers/Modals/CreateNoticeModal.jsx | 127 ++++++++++ src/client/containers/Modals/index.jsx | 2 + .../containers/Notice/NoticeContainer.jsx | 16 ++ src/client/reducers/noticesReducer.js | 11 +- src/client/sagas/notices/index.js | 20 +- src/controllers/api/v2/notices.js | 25 +- src/controllers/api/v2/routes.js | 1 + src/public/js/angularjs/controllers/groups.js | 231 ------------------ .../controllers/settingsElasticSearch.js | 184 -------------- src/public/js/pages/createNotice.js | 60 ++--- src/public/js/pages/groups.js | 110 --------- src/public/js/pages/singleTicket.js | 50 ---- src/sass/partials/ui.sass | 4 + 15 files changed, 242 insertions(+), 611 deletions(-) create mode 100644 src/client/containers/Modals/CreateNoticeModal.jsx delete mode 100644 src/public/js/angularjs/controllers/groups.js delete mode 100644 src/public/js/angularjs/controllers/settingsElasticSearch.js delete mode 100644 src/public/js/pages/groups.js delete mode 100644 src/public/js/pages/singleTicket.js diff --git a/src/client/actions/notices.js b/src/client/actions/notices.js index 3ffc54b7c..48aa9267c 100644 --- a/src/client/actions/notices.js +++ b/src/client/actions/notices.js @@ -2,7 +2,11 @@ import { createAction } from 'redux-actions' import { FETCH_NOTICES, CREATE_NOTICE, UPDATE_NOTICE, DELETE_NOTICE, UNLOAD_NOTICES } from 'actions/types' export const fetchNotices = createAction(FETCH_NOTICES.ACTION) -export const createNotice = createAction(CREATE_NOTICE.ACTION) +export const createNotice = createAction( + CREATE_NOTICE.ACTION, + payload => payload, + () => ({ thunk: true }) +) export const updateNotice = createAction(UPDATE_NOTICE.ACTION) export const unloadNotices = createAction( UNLOAD_NOTICES.ACTION, diff --git a/src/client/api/index.js b/src/client/api/index.js index 982ee157e..5af240f49 100644 --- a/src/client/api/index.js +++ b/src/client/api/index.js @@ -251,6 +251,12 @@ api.departments.delete = ({ _id }) => { } api.notices = {} +api.notices.create = payload => { + return axios.post('/api/v2/notices', payload).then(res => { + return res.data + }) +} + api.notices.get = () => { return axios.get('/api/v2/notices').then(res => { return res.data diff --git a/src/client/containers/Modals/CreateNoticeModal.jsx b/src/client/containers/Modals/CreateNoticeModal.jsx new file mode 100644 index 000000000..59e621f2b --- /dev/null +++ b/src/client/containers/Modals/CreateNoticeModal.jsx @@ -0,0 +1,127 @@ +import React from 'react' +import PropTypes from 'prop-types' +import { connect } from 'react-redux' +import { PopoverColorPicker } from 'components/PopoverColorPicker' +import Button from 'components/Button' +import BaseModal from 'containers/Modals/BaseModal' +import { observer } from 'mobx-react' +import { makeObservable, observable } from 'mobx' + +import { createNotice } from 'actions/notices' + +import helpers from 'lib/helpers' +import $ from 'jquery' + +@observer +class CreateNoticeModal extends React.Component { + constructor (props) { + super(props) + + makeObservable(this) + } + + @observable name = '' + @observable message = '' + @observable color = '' + @observable fontColor = '' + + componentDidMount () { + this.color = '#4CAF50' + this.fontColor = '#ffffff' + + helpers.UI.inputs() + helpers.UI.reRenderInputs() + helpers.formvalidator() + } + + componentDidUpdate (prevProps, prevState, snapshot) { + helpers.UI.reRenderInputs() + } + + onInputChange (target, e) { + this[target] = e.target.value + } + + onFormSubmit (e) { + e.preventDefault() + const $form = $(e.target) + if (!$form.isValid(null, null, false)) return false + + const payload = { + name: this.name, + message: this.message, + color: this.color, + fontColor: this.fontColor + } + + this.props.createNotice(payload).then(() => { + helpers.resizeAll() + }) + } + + render () { + return ( + +
+

Create Notice

+
+
this.onFormSubmit(e)}> +
+ + this.onInputChange('name', e)} + data-validation='length' + data-validation-length={'min2'} + data-validation-error-msg={'Please enter a notice name. (Must contain 2 characters)'} + /> +
+
+ +