Fix change email & reset password buttons. Fix sorting of lists. Fixed admin checkbox bug
This commit is contained in:
@@ -23,7 +23,7 @@
|
|||||||
<key>CFBundleSignature</key>
|
<key>CFBundleSignature</key>
|
||||||
<string>????</string>
|
<string>????</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
<string>20180514.0</string>
|
<string>20180514.1</string>
|
||||||
<key>LSRequiresIPhoneOS</key>
|
<key>LSRequiresIPhoneOS</key>
|
||||||
<true/>
|
<true/>
|
||||||
<key>NSAppTransportSecurity</key>
|
<key>NSAppTransportSecurity</key>
|
||||||
|
|||||||
6
mobile/package-lock.json
generated
6
mobile/package-lock.json
generated
@@ -5109,9 +5109,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"react-form-binder": {
|
"react-form-binder": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/react-form-binder/-/react-form-binder-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/react-form-binder/-/react-form-binder-2.0.1.tgz",
|
||||||
"integrity": "sha512-ihqbA3sp8eOOvjN2cSWOC7pfK+ukuRW5+dgpbrDJKnH/wgJ0LSMaJg2d/lX8bc0XO7+KxRJi7mBdizvCT1qhgQ==",
|
"integrity": "sha512-QOIO7dd6s+zvw6V3JdaWbuCKm6OwunOemuvR7ds98nnPoUXXZ3Fv4SLRGkt3GcI97a5PDlWvNAN/9qz571SHjA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"eventemitter3": "^2.0.3",
|
"eventemitter3": "^2.0.3",
|
||||||
"prop-types": "^15.5.10",
|
"prop-types": "^15.5.10",
|
||||||
|
|||||||
@@ -23,7 +23,7 @@
|
|||||||
"eventemitter3": "^3.1.0",
|
"eventemitter3": "^3.1.0",
|
||||||
"moment": "^2.22.1",
|
"moment": "^2.22.1",
|
||||||
"react": "^16.3.2",
|
"react": "^16.3.2",
|
||||||
"react-form-binder": "^2.0.0",
|
"react-form-binder": "^2.0.1",
|
||||||
"react-native": "^0.55.4",
|
"react-native": "^0.55.4",
|
||||||
"react-native-fs": "^2.9.12",
|
"react-native-fs": "^2.9.12",
|
||||||
"react-native-image-picker": "^0.26.7",
|
"react-native-image-picker": "^0.26.7",
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
export const versionInfo = {
|
export const versionInfo = {
|
||||||
version: '1.0.0',
|
version: '1.0.0',
|
||||||
fullVersion: '1.0.0-20180514.0',
|
fullVersion: '1.0.0-20180514.1',
|
||||||
title: 'Deighton AR System',
|
title: 'Deighton AR System',
|
||||||
copyright: '© 2018, Kingston Software Solutions.',
|
copyright: '© 2018, Kingston Software Solutions.',
|
||||||
supportEmail: 'support@kss.us.com',
|
supportEmail: 'support@kss.us.com',
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
export const versionInfo = {
|
export const versionInfo = {
|
||||||
version: '1.0.0',
|
version: '1.0.0',
|
||||||
fullVersion: '1.0.0-20180514.0',
|
fullVersion: '1.0.0-20180514.1',
|
||||||
title: 'Deighton AR System',
|
title: 'Deighton AR System',
|
||||||
copyright: '© 2018, Kingston Software Solutions.',
|
copyright: '© 2018, Kingston Software Solutions.',
|
||||||
supportEmail: 'support@kss.us.com',
|
supportEmail: 'support@kss.us.com',
|
||||||
|
|||||||
@@ -18,7 +18,7 @@
|
|||||||
minor: 0,
|
minor: 0,
|
||||||
patch: 0,
|
patch: 0,
|
||||||
build: 20180514,
|
build: 20180514,
|
||||||
revision: 0,
|
revision: 1,
|
||||||
sequence: 1,
|
sequence: 1,
|
||||||
tz: "America/Los_Angeles",
|
tz: "America/Los_Angeles",
|
||||||
title: "Deighton AR System",
|
title: "Deighton AR System",
|
||||||
|
|||||||
6
website/package-lock.json
generated
6
website/package-lock.json
generated
@@ -14167,9 +14167,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"react-form-binder": {
|
"react-form-binder": {
|
||||||
"version": "2.0.0",
|
"version": "2.0.1",
|
||||||
"resolved": "https://registry.npmjs.org/react-form-binder/-/react-form-binder-2.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/react-form-binder/-/react-form-binder-2.0.1.tgz",
|
||||||
"integrity": "sha512-ihqbA3sp8eOOvjN2cSWOC7pfK+ukuRW5+dgpbrDJKnH/wgJ0LSMaJg2d/lX8bc0XO7+KxRJi7mBdizvCT1qhgQ==",
|
"integrity": "sha512-QOIO7dd6s+zvw6V3JdaWbuCKm6OwunOemuvR7ds98nnPoUXXZ3Fv4SLRGkt3GcI97a5PDlWvNAN/9qz571SHjA==",
|
||||||
"requires": {
|
"requires": {
|
||||||
"eventemitter3": "^2.0.3",
|
"eventemitter3": "^2.0.3",
|
||||||
"prop-types": "^15.5.10",
|
"prop-types": "^15.5.10",
|
||||||
|
|||||||
@@ -12,7 +12,7 @@
|
|||||||
"radium": "^0.22.0",
|
"radium": "^0.22.0",
|
||||||
"react": "^16.2.0",
|
"react": "^16.2.0",
|
||||||
"react-dom": "^16.2.0",
|
"react-dom": "^16.2.0",
|
||||||
"react-form-binder": "^2.0.0",
|
"react-form-binder": "^2.0.1",
|
||||||
"react-router-dom": "^4.1.1",
|
"react-router-dom": "^4.1.1",
|
||||||
"regexp-pattern": "^1.0.4",
|
"regexp-pattern": "^1.0.4",
|
||||||
"socket.io-client": "^2.0.3"
|
"socket.io-client": "^2.0.3"
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ export class MasterDetail extends Component {
|
|||||||
updateItem: PropTypes.func.isRequired,
|
updateItem: PropTypes.func.isRequired,
|
||||||
createItem: PropTypes.func.isRequired,
|
createItem: PropTypes.func.isRequired,
|
||||||
deleteItem: PropTypes.func.isRequired,
|
deleteItem: PropTypes.func.isRequired,
|
||||||
sort: PropTypes.func.isRequired,
|
listSort: PropTypes.func.isRequired,
|
||||||
detailCallbacks: PropTypes.object,
|
detailCallbacks: PropTypes.object,
|
||||||
listData: PropTypes.func,
|
listData: PropTypes.func,
|
||||||
children: PropTypes.element,
|
children: PropTypes.element,
|
||||||
@@ -44,7 +44,7 @@ export class MasterDetail extends Component {
|
|||||||
this.props
|
this.props
|
||||||
.listItems()
|
.listItems()
|
||||||
.then((list) => {
|
.then((list) => {
|
||||||
this.setState({ items: list.items })
|
this.setState({ items: list.items.sort(this.props.listSort) })
|
||||||
|
|
||||||
const { history } = this.props
|
const { history } = this.props
|
||||||
const search = new URLSearchParams(history.location.search)
|
const search = new URLSearchParams(history.location.search)
|
||||||
@@ -68,10 +68,6 @@ export class MasterDetail extends Component {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
get selectedItem() {
|
|
||||||
return this.state.selectedItem
|
|
||||||
}
|
|
||||||
|
|
||||||
@autobind
|
@autobind
|
||||||
showWait(message) {
|
showWait(message) {
|
||||||
this.setState({
|
this.setState({
|
||||||
@@ -91,18 +87,22 @@ export class MasterDetail extends Component {
|
|||||||
@autobind
|
@autobind
|
||||||
showMessage(message, detail) {
|
showMessage(message, detail) {
|
||||||
this.setState({
|
this.setState({
|
||||||
icon: "thumb",
|
messageModal: {
|
||||||
message,
|
icon: "thumb",
|
||||||
detail,
|
message,
|
||||||
|
detail,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@autobind
|
@autobind
|
||||||
showErrorMessage(message, detail) {
|
showErrorMessage(message, detail) {
|
||||||
this.setState({
|
this.setState({
|
||||||
icon: "hand",
|
messageModal: {
|
||||||
message,
|
icon: "hand",
|
||||||
detail,
|
message,
|
||||||
|
detail,
|
||||||
|
},
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -116,6 +116,18 @@ export class MasterDetail extends Component {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@autobind
|
||||||
|
hideYesNo() {
|
||||||
|
this.setState({
|
||||||
|
yesNoModal: null,
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
@autobind
|
||||||
|
getSelectedItem() {
|
||||||
|
return this.state.selectedItem
|
||||||
|
}
|
||||||
|
|
||||||
@autobind
|
@autobind
|
||||||
removeUnfinishedNewItem() {
|
removeUnfinishedNewItem() {
|
||||||
let items = this.state.items
|
let items = this.state.items
|
||||||
@@ -178,7 +190,7 @@ export class MasterDetail extends Component {
|
|||||||
this.setState({
|
this.setState({
|
||||||
items: this.state.items
|
items: this.state.items
|
||||||
.map((item) => (!item._id ? createdItem : item))
|
.map((item) => (!item._id ? createdItem : item))
|
||||||
.sort(this.props.sort),
|
.sort(this.props.listSort),
|
||||||
modified: false,
|
modified: false,
|
||||||
selectedItem: createdItem,
|
selectedItem: createdItem,
|
||||||
})
|
})
|
||||||
@@ -231,9 +243,7 @@ export class MasterDetail extends Component {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setState({
|
this.hideYesNo()
|
||||||
yesNoModal: null,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@autobind
|
@autobind
|
||||||
@@ -247,9 +257,7 @@ export class MasterDetail extends Component {
|
|||||||
delete this.nextSelectedItem
|
delete this.nextSelectedItem
|
||||||
}
|
}
|
||||||
|
|
||||||
this.setState({
|
this.hideYesNo()
|
||||||
yesNoModal: null,
|
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@autobind
|
@autobind
|
||||||
@@ -312,7 +320,7 @@ export class MasterDetail extends Component {
|
|||||||
color: colorInfo.headerBorder,
|
color: colorInfo.headerBorder,
|
||||||
}}
|
}}
|
||||||
radius={sizeInfo.formBoxRadius}>
|
radius={sizeInfo.formBoxRadius}>
|
||||||
{this.state.selectedItem ? (
|
{selectedItem ? (
|
||||||
React.createElement(this.props.form, {
|
React.createElement(this.props.form, {
|
||||||
item: selectedItem,
|
item: selectedItem,
|
||||||
onSave: this.handleSave,
|
onSave: this.handleSave,
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ export class Teams extends Component {
|
|||||||
updateItem={api.updateTeam}
|
updateItem={api.updateTeam}
|
||||||
createItem={api.createTeam}
|
createItem={api.createTeam}
|
||||||
deleteItem={api.deleteTeam}
|
deleteItem={api.deleteTeam}
|
||||||
sort={(a, b) => a.name.localeCompare(b.name)}
|
listSort={(a, b) => a.name.localeCompare(b.name)}
|
||||||
listData={(team) => ({
|
listData={(team) => ({
|
||||||
icon: "team",
|
icon: "team",
|
||||||
text: team.name,
|
text: team.name,
|
||||||
|
|||||||
@@ -57,9 +57,9 @@ export class UserForm extends React.Component {
|
|||||||
isValid: true,
|
isValid: true,
|
||||||
},
|
},
|
||||||
administrator: {
|
administrator: {
|
||||||
isValid: (r, v) => true,
|
|
||||||
initValue: false,
|
|
||||||
isDisabled: (r) => api.loggedInUser._id === r._id, // Adding a new user
|
isDisabled: (r) => api.loggedInUser._id === r._id, // Adding a new user
|
||||||
|
isValid: true,
|
||||||
|
initValue: false,
|
||||||
alwaysGet: true,
|
alwaysGet: true,
|
||||||
},
|
},
|
||||||
remove: {
|
remove: {
|
||||||
@@ -274,7 +274,7 @@ export class UserForm extends React.Component {
|
|||||||
<BoundCheckbox
|
<BoundCheckbox
|
||||||
label={"Administrator"}
|
label={"Administrator"}
|
||||||
name="administrator"
|
name="administrator"
|
||||||
binder={this.state.binder}
|
binder={binder}
|
||||||
/>
|
/>
|
||||||
</Row.Item>
|
</Row.Item>
|
||||||
<Row.Item grow />
|
<Row.Item grow />
|
||||||
|
|||||||
@@ -21,20 +21,21 @@ export class Users extends Component {
|
|||||||
@autobind
|
@autobind
|
||||||
handleChangeEmail() {
|
handleChangeEmail() {
|
||||||
this.setState({
|
this.setState({
|
||||||
changeEmailModal: { oldEmail: this.state.selectedUser.email },
|
changeEmailModal: { oldEmail: this.masterDetail.getSelectedItem().email },
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@autobind
|
@autobind
|
||||||
handleSendPasswordReset() {
|
handleSendPasswordReset() {
|
||||||
|
const selectedItem = this.masterDetail.getSelectedItem()
|
||||||
this.setState({ waitModal: "Sending Password Reset Email..." })
|
this.setState({ waitModal: "Sending Password Reset Email..." })
|
||||||
api
|
api
|
||||||
.sendResetPassword(this.state.selectedUser.email)
|
.sendResetPassword(selectedItem.email)
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.masterDetail.hideWait()
|
this.masterDetail.hideWait()
|
||||||
this.masterDetail.showMessage(
|
this.masterDetail.showMessage(
|
||||||
`An email has been sent to '${
|
`An email has been sent to '${
|
||||||
this.masterDetail.selectedItem.email
|
selectedItem.email
|
||||||
}' with instructions on how to reset their password`
|
}' with instructions on how to reset their password`
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
@@ -49,14 +50,17 @@ export class Users extends Component {
|
|||||||
|
|
||||||
@autobind
|
@autobind
|
||||||
handleResendEmail() {
|
handleResendEmail() {
|
||||||
|
const selectedItem = this.masterDetail.getSelectedItem()
|
||||||
this.masterDetail.showWait("Resending Email...")
|
this.masterDetail.showWait("Resending Email...")
|
||||||
api
|
api
|
||||||
.sendConfirmEmail({ existingEmail: this.masterDetail.selectedItem.email })
|
.sendConfirmEmail({
|
||||||
|
existingEmail: selectedItem.email,
|
||||||
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
this.masterDetail.hideWait()
|
this.masterDetail.hideWait()
|
||||||
this.masterDetail.showMessage(
|
this.masterDetail.showMessage(
|
||||||
`An email has been sent to '${
|
`An email has been sent to '${
|
||||||
this.masterDetail.selectedItem.email
|
selectedItem.email
|
||||||
}' with further instructions.`
|
}' with further instructions.`
|
||||||
)
|
)
|
||||||
})
|
})
|
||||||
@@ -78,10 +82,13 @@ export class Users extends Component {
|
|||||||
this.setState({
|
this.setState({
|
||||||
waitModal: { message: "Requesting Email Change..." },
|
waitModal: { message: "Requesting Email Change..." },
|
||||||
})
|
})
|
||||||
if (this.state.selectedUser) {
|
|
||||||
|
const selectedItem = this.masterDetail.getSelectedItem()
|
||||||
|
|
||||||
|
if (selectedItem) {
|
||||||
api
|
api
|
||||||
.sendConfirmEmail({
|
.sendConfirmEmail({
|
||||||
existingEmail: this.state.selectedUser.email,
|
existingEmail: selectedItem.email,
|
||||||
newEmail,
|
newEmail,
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
@@ -116,7 +123,7 @@ export class Users extends Component {
|
|||||||
onResendEmail: this.handleResendEmail,
|
onResendEmail: this.handleResendEmail,
|
||||||
onResetPassword: this.handleSendPasswordReset,
|
onResetPassword: this.handleSendPasswordReset,
|
||||||
}}
|
}}
|
||||||
sort={(a, b) => 0}
|
listSort={(a, b) => a.lastName.localeCompare(b.lastName)}
|
||||||
listData={(user) => ({
|
listData={(user) => ({
|
||||||
icon: user.administrator ? "admin" : "profile",
|
icon: user.administrator ? "admin" : "profile",
|
||||||
text: user.firstName + " " + user.lastName,
|
text: user.firstName + " " + user.lastName,
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
export const versionInfo = {
|
export const versionInfo = {
|
||||||
version: '1.0.0',
|
version: '1.0.0',
|
||||||
fullVersion: '1.0.0-20180514.0',
|
fullVersion: '1.0.0-20180514.1',
|
||||||
title: 'Deighton AR System',
|
title: 'Deighton AR System',
|
||||||
copyright: '© 2018, Kingston Software Solutions.',
|
copyright: '© 2018, Kingston Software Solutions.',
|
||||||
supportEmail: 'support@kss.us.com',
|
supportEmail: 'support@kss.us.com',
|
||||||
|
|||||||
Reference in New Issue
Block a user