Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions static/js/redux/actions/modal_actions.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -145,3 +145,5 @@ export const setUserSettingsModalVisible = () => ({
export const setUserSettingsModalHidden = () => ({
type: ActionTypes.SET_SETTINGS_MODAL_HIDDEN,
});

export const toggleMockModal = () => ({ type: ActionTypes.TOGGLE_MOCK_MODAL});
3 changes: 3 additions & 0 deletions static/js/redux/constants/actionTypes.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -180,3 +180,6 @@ export const TRIGGER_TOS_MODAL = 'TRIGGER_TOS_MODAL';
export const TRIGGER_TOS_BANNER = 'TRIGGER_TOS_BANNER';
export const DISMISS_TOS_BANNER = 'DISMISS_TOS_BANNER';
export const CLOSE_TOS_MODAL = 'CLOSE_TOS_MODAL';

// MOCK MODAL
export const TOGGLE_MOCK_MODAL = 'TOGGLE_MOCK_MODAL';
13 changes: 13 additions & 0 deletions static/js/redux/reducers/mock_modal_reducer.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@

import * as ActionTypes from '../constants/actionTypes';

const mockModal = (state = { isVisible: false}, action) => {
switch(action.type) {
case ActionTypes.TOGGLE_MOCK_MODAL:
return { isVisible: !state.isVisible};
default:
return state;
}
};

export default mockModal;
2 changes: 2 additions & 0 deletions static/js/redux/reducers/root_reducer.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,7 @@ import customSlots from './custom_slots_reducer';
import signupModal from './signup_modal_reducer';
import peerModal from './peer_modal_reducer';
import preferenceModal from './preference_modal_reducer';
import mockModal from './mock_modal_reducer';
import friends from './friends_reducer';
import notificationToken from './notification_token_reducer';
import integrationModal from './integration_modal_reducer';
Expand Down Expand Up @@ -64,6 +65,7 @@ const rootReducer = combineReducers({
optionalCourses,
peerModal,
preferenceModal,
mockModal,
preferences,
registrar,
saveCalendarModal,
Expand Down
26 changes: 26 additions & 0 deletions static/js/redux/ui/calendar.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,8 @@ import CellContainer from './containers/cell_container';
import { DAYS } from '../constants/constants';
import { ShareLink } from './master_slot';
import * as SemesterlyPropTypes from '../constants/semesterlyPropTypes';
import preferenceModal from '../reducers/preference_modal_reducer';
import mockModal from '../reducers/mock_modal_reducer';

const Row = (props) => {
const timeText = props.displayTime ? <span>{props.displayTime}</span> : null;
Expand Down Expand Up @@ -308,6 +310,28 @@ class Calendar extends React.Component {
</div>
);

const mockButton = (
<div className="cal-btn-wrapper">
<button
onClick={this.props.toggleMockModal}
className="save-timetable"
data-for="mock-btn-tooltip"
data-tip
>
<img src="/static/img/star.png" style={{marginTop: '1px'}} />
</button>
<ReactTooltip
id="mock-btn-tooltip"
class="tooltip"
type="dark"
place="bottom"
effect="solid">
<span>Mock Button</span>
</ReactTooltip>
</div>
);
console.log(mockButton);


const pilotButton = (
<a href={'/pilot/'} className="pilot-link">
Expand Down Expand Up @@ -342,6 +366,7 @@ class Calendar extends React.Component {
{ pilot }
</div>
<div className="fc-right">
{ mockButton }
{ addSISButton }
{ addCustomEventButton }
{ shareButton }
Expand Down Expand Up @@ -452,6 +477,7 @@ Calendar.defaultProps = {

Calendar.propTypes = {
togglePreferenceModal: PropTypes.func.isRequired,
toggleMockModal: PropTypes.func.isRequired,
triggerSaveCalendarModal: PropTypes.func.isRequired,
isFetchingShareLink: PropTypes.bool.isRequired,
endHour: PropTypes.number.isRequired,
Expand Down
3 changes: 2 additions & 1 deletion static/js/redux/ui/containers/calendar_container.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@ import {
fetchShareTimetableLink,
fetchSISTimetableData,
} from '../../actions/calendar_actions';
import { togglePreferenceModal, triggerSaveCalendarModal } from '../../actions/modal_actions';
import { togglePreferenceModal, triggerSaveCalendarModal, toggleMockModal} from '../../actions/modal_actions';
import { getMaxEndHour } from '../../reducers/root_reducer';

const mapStateToProps = (state) => {
Expand All @@ -46,6 +46,7 @@ const CalendarContainer = connect(
saveTimetable,
fetchShareTimetableLink,
togglePreferenceModal,
toggleMockModal,
triggerSaveCalendarModal,
createICalFromTimetable,
handleCreateNewTimetable,
Expand Down
21 changes: 21 additions & 0 deletions static/js/redux/ui/containers/modals/mock_modal_container.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@

import {connect} from 'react-redux';
import MockModal from '../../modals/mock_modal';
import { toggleMockModal } from '../../../actions/modal_actions';
import { toggleConflicts } from '../../../actions/timetable_actions';

const mapStateToProps = state => ({
isVisible: state.mockModal.isVisible,
withConflicts: state.preferences.try_with_conflicts,
});

const MockModalContainer = connect(
mapStateToProps,
{
toggleMockModal,
toggleConflicts,
applyPreferences: toggleMockModal,
},
)(MockModal);

export default MockModalContainer;
48 changes: 48 additions & 0 deletions static/js/redux/ui/modals/mock_modal.jsx
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@

import PropTypes from 'prop-types';
import React from 'react';
import Modal from 'boron/FadeModal';

class MockModal extends React.Component {
componetDidUpdate() {
if (this.props.isVisible) {
this.modal.show();
}
}

render() {
const modalHeader =
(<div className="modal-content">
<div className="modal-header">
<h1>Timetable Preferences</h1>
</div>
</div>);
const modalStyle = {
width: '100%',
};
//const modalHeader = ();
return (
<Modal
ref={(c) => { this.modal = c; }}
className="pref-modal max-modal"
modalStyle={modalStyle}
onHide={this.props.toggleMockModal}
>
{modalHeader}

<div className="mock-modal__container">
<h4> Mock Modal!</h4>
</div>
</Modal>
);
}
}

MockModal.propTypes = {
toggleConflicts: PropTypes.func.isRequired,
withConflicts: PropTypes.bool.isRequired,
isVisible: PropTypes.bool.isRequired,
toggleMockModal: PropTypes.func.isRequired,
};

export default MockModal;
16 changes: 14 additions & 2 deletions static/js/redux/ui/modals/user_acquisition_modal.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ class UserAcquisitionModal extends React.Component {
</button>


{/* <button
{ <button
className="btn abnb-btn secondary eight-px-top" onClick={() => {
// this.props.createiCalfromTimetable();
}} disabled
Expand All @@ -127,7 +127,19 @@ class UserAcquisitionModal extends React.Component {
<i className="fa fa-envelope-o" />
</span>
<span>Email Coming Soon</span>
</button> */}
</button> }

<button
className="btn abnb-btn secondary" onClick={() => {
const link = document.createElement('a');
link.href = `semester.ly/press`;
document.body.appendChild(link);
link.click();
}}
>
<span> Jeremy's Mock Button</span>
</button>

</div>
</Modal>
);
Expand Down
5 changes: 4 additions & 1 deletion static/js/redux/ui/modals/user_settings_modal.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -161,7 +161,10 @@ class UserSettingsModal extends React.Component {
</div>)
; */
const preferences = !this.props.userInfo.FacebookSignedUp ? null : (
<div>
<div>
<div className="preference cf">
<h3>This is your favorite number: {this.props.userInfo.favorite_num}</h3>
</div>
<div className="preference cf">
<label className="switch switch-slide" htmlFor="social-courses-input">
<input
Expand Down
2 changes: 2 additions & 0 deletions static/js/redux/ui/semesterly.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import UserSettingsModalContainer from './containers/modals/user_settings_modal_
import ExplorationModalContainer from './containers/modals/exploration_modal_container';
import SignupModalContainer from './containers/modals/signup_modal_container';
import PreferenceModalContainer from './containers/modals/preference_modal_container';
import MockModalContainer from './containers/modals/mock_modal_container';
import TutModalContainer from './containers/modals/tut_modal_container';
import PeerModalContainer from './containers/modals/peer_modal_container';
import IntegrationModalContainer from './containers/modals/integration_modal_container';
Expand Down Expand Up @@ -169,6 +170,7 @@ class Semesterly extends React.Component {
<ExplorationModalContainer />
<SignupModalContainer />
<PreferenceModalContainer />
<MockModalContainer />
<IntegrationModalContainer />
<TutModalContainer />
<PeerModalContainer />
Expand Down
18 changes: 18 additions & 0 deletions student/migrations/0034_student_favorite_num.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# Generated by Django 2.2.18 on 2021-09-17 04:39

from django.db import migrations, models


class Migration(migrations.Migration):

dependencies = [
('student', '0033_auto_20210724_1528'),
]

operations = [
migrations.AddField(
model_name='student',
name='favorite_num',
field=models.IntegerField(blank=True, null=True),
),
]
1 change: 1 addition & 0 deletions student/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,7 @@ class year, major, friends, etc. An object is only created for the
first_name = models.CharField(max_length=255, default='', null=True)
last_name = models.CharField(max_length=255, default='', null=True)
disabilities = models.NullBooleanField(null=True, default=False)
favorite_num = models.IntegerField(blank=True, null=True)

def __str__(self):
return "{0}".format(self.jhed)
Expand Down
1 change: 1 addition & 0 deletions student/serializers.py
Original file line number Diff line number Diff line change
Expand Up @@ -65,4 +65,5 @@ class Meta:
'LoginToken',
'LoginHash',
'timeAcceptedTos',
'favorite_num'
)