Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
S
safetcut-app
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Registry
Registry
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
1
Merge Requests
1
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
atichat
safetcut-app
Commits
768f47dd
Commit
768f47dd
authored
Sep 23, 2019
by
HaOuiha
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix some bug and warning
parent
c52a6268
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
79 additions
and
84 deletions
+79
-84
components/MeterCard.js
+1
-0
package.json
+3
-3
reduxStore/actions/timersAction.js
+59
-61
screens/Private/SmartMeterScreen/McbLinkScreen.js
+13
-16
screens/Private/TimerScreen/TimerScreen.js
+0
-1
yarn.lock
+3
-3
No files found.
components/MeterCard.js
View file @
768f47dd
...
@@ -107,6 +107,7 @@ const styles = StyleSheet.create({
...
@@ -107,6 +107,7 @@ const styles = StyleSheet.create({
...
theme
.
rowContainer
,
...
theme
.
rowContainer
,
marginBottom
:
10
,
marginBottom
:
10
,
height
:
136
,
height
:
136
,
borderColor
:
color
.
white
,
borderRadius
:
8
,
borderRadius
:
8
,
shadowColor
:
'#000'
,
shadowColor
:
'#000'
,
shadowOffset
:
{
shadowOffset
:
{
...
...
package.json
View file @
768f47dd
...
@@ -27,7 +27,7 @@
...
@@ -27,7 +27,7 @@
"
react-native-chart-kit
"
:
"^3.2.1"
,
"
react-native-chart-kit
"
:
"^3.2.1"
,
"
react-native-date-picker
"
:
"^2.7.0"
,
"
react-native-date-picker
"
:
"^2.7.0"
,
"
react-native-elements
"
:
"^1.1.0"
,
"
react-native-elements
"
:
"^1.1.0"
,
"
react-native-gesture-handler
"
:
"^1.
3.0
"
,
"
react-native-gesture-handler
"
:
"^1.
4.1
"
,
"
react-native-linear-gradient
"
:
"^2.5.4"
,
"
react-native-linear-gradient
"
:
"^2.5.4"
,
"
react-native-modalbox
"
:
"^1.7.1"
,
"
react-native-modalbox
"
:
"^1.7.1"
,
"
react-native-permissions
"
:
"^1.2.0"
,
"
react-native-permissions
"
:
"^1.2.0"
,
...
@@ -36,7 +36,7 @@
...
@@ -36,7 +36,7 @@
"
react-native-reanimated
"
:
"^1.2.0"
,
"
react-native-reanimated
"
:
"^1.2.0"
,
"
react-native-screens
"
:
"^2.0.0-alpha.3"
,
"
react-native-screens
"
:
"^2.0.0-alpha.3"
,
"
react-native-slider
"
:
"^0.11.0"
,
"
react-native-slider
"
:
"^0.11.0"
,
"
react-native-svg
"
:
"^9.
7.1
"
,
"
react-native-svg
"
:
"^9.
9.4
"
,
"
react-native-svg-charts
"
:
"^5.3.0"
,
"
react-native-svg-charts
"
:
"^5.3.0"
,
"
react-native-swipe-list-view
"
:
"^2.0.0"
,
"
react-native-swipe-list-view
"
:
"^2.0.0"
,
"
react-native-swipeout
"
:
"^2.3.6"
,
"
react-native-swipeout
"
:
"^2.3.6"
,
...
@@ -59,7 +59,7 @@
...
@@ -59,7 +59,7 @@
"
babel-jest
"
:
"^24.8.0"
,
"
babel-jest
"
:
"^24.8.0"
,
"
eslint
"
:
"^6.0.1"
,
"
eslint
"
:
"^6.0.1"
,
"
jest
"
:
"^24.8.0"
,
"
jest
"
:
"^24.8.0"
,
"
jetifier
"
:
"^1.6.
3
"
,
"
jetifier
"
:
"^1.6.
4
"
,
"
metro-react-native-babel-preset
"
:
"^0.55.0"
,
"
metro-react-native-babel-preset
"
:
"^0.55.0"
,
"
react-test-renderer
"
:
"16.8.6"
"
react-test-renderer
"
:
"16.8.6"
},
},
...
...
reduxStore/actions/timersAction.js
View file @
768f47dd
...
@@ -128,8 +128,6 @@ export const getTimers = () => async (dispatch, getState) => {
...
@@ -128,8 +128,6 @@ export const getTimers = () => async (dispatch, getState) => {
mcbLinkId
:
mcbLink
.
id
,
mcbLinkId
:
mcbLink
.
id
,
subBreakerId
:
subBreaker
.
id
,
subBreakerId
:
subBreaker
.
id
,
isPowerOn
:
false
,
isPowerOn
:
false
,
// isPowerOn:
// shadow[`ML${mcbLink.id}`][`L${mcbLink.id}B${subBreaker.id}`] === 1 ? true : false,
})
})
)
)
);
);
...
@@ -415,66 +413,66 @@ export const deleteTimer = selectedData => async (dispatch, getState) => {
...
@@ -415,66 +413,66 @@ export const deleteTimer = selectedData => async (dispatch, getState) => {
}
}
};
};
export
const
writeTimersToShadow
=
()
=>
async
(
dispatch
,
getState
)
=>
{
//
export const writeTimersToShadow = () => async (dispatch, getState) => {
const
{
currentSelectedDeviceReducer
,
timersReducer
}
=
getState
();
//
const { currentSelectedDeviceReducer, timersReducer } = getState();
const
{
allTimers
}
=
timersReducer
;
//
const { allTimers } = timersReducer;
const
{
currentSelectedData
}
=
currentSelectedDeviceReducer
;
//
const { currentSelectedData } = currentSelectedDeviceReducer;
const
selectedDeviceId
=
currentSelectedData
.
deviceId
;
//
const selectedDeviceId = currentSelectedData.deviceId;
const
URL
=
`
${
baseURL
}
/shadow/
${
selectedDeviceId
}
`
;
//
const URL = `${baseURL}/shadow/${selectedDeviceId}`;
const
idToken
=
await
app
.
auth
().
currentUser
.
getIdToken
(
true
);
//
const idToken = await app.auth().currentUser.getIdToken(true);
const
groupTypeData
=
_
.
groupBy
(
allTimers
,
'type'
);
//
const groupTypeData = _.groupBy(allTimers, 'type');
const
tempSubBreakerTimersData
=
_
.
groupBy
(
//
const tempSubBreakerTimersData = _.groupBy(
groupTypeData
.
subBreaker
,
//
groupTypeData.subBreaker,
tempSubBreakerTimersData
=>
//
tempSubBreakerTimersData =>
'L'
+
tempSubBreakerTimersData
.
mcbLinkId
+
'B'
+
tempSubBreakerTimersData
.
subBreakerId
+
'T'
//
'L' + tempSubBreakerTimersData.mcbLinkId + 'B' + tempSubBreakerTimersData.subBreakerId + 'T'
);
//
);
const
tempMainBreakerTimersData
=
{
MAB1T
:
groupTypeData
.
main
};
//
const tempMainBreakerTimersData = { MAB1T: groupTypeData.main };
console
.
log
(
groupTypeData
);
//
console.log(groupTypeData);
console
.
log
(
'------------------------------'
);
//
console.log('------------------------------');
console
.
log
(
tempMainBreakerTimersData
);
//
console.log(tempMainBreakerTimersData);
console
.
log
(
tempSubBreakerTimersData
);
//
console.log(tempSubBreakerTimersData);
//convert Timer to shadow format
//
//convert Timer to shadow format
const
mainBreakerTimersData
=
tempMainBreakerTimersData
.
MAB1T
.
reduce
((
accumulator
,
timer
,
index
)
=>
{
//
const mainBreakerTimersData = tempMainBreakerTimersData.MAB1T.reduce((accumulator, timer, index) => {
const
isActive
=
timer
.
isActive
?
'1'
:
'0'
;
//
const isActive = timer.isActive ? '1' : '0';
const
isPowerOn
=
timer
.
isPowerOn
?
'1'
:
'0'
;
//
const isPowerOn = timer.isPowerOn ? '1' : '0';
const
repeatOn
=
()
=>
{
//
const repeatOn = () => {
let
binaryFormat
=
timer
.
repeatOn
//
let binaryFormat = timer.repeatOn
.
map
(
item
=>
(
item
.
isRepeat
?
'1'
:
'0'
))
//
.map(item => (item.isRepeat ? '1' : '0'))
.
toString
()
//
.toString()
.
replace
(
/
\,
/g
,
''
);
//
.replace(/\,/g, '');
const
decimalFormat
=
parseInt
(
Number
(
binaryFormat
),
2
);
//
const decimalFormat = parseInt(Number(binaryFormat), 2);
return
decimalFormat
;
//
return decimalFormat;
};
//
};
const
hour
=
moment
(
timer
.
timer
).
format
(
'HH'
);
//
const hour = moment(timer.timer).format('HH');
const
minute
=
moment
(
timer
.
timer
).
format
(
'mm'
);
//
const minute = moment(timer.timer).format('mm');
let
timerShadowFormat
=
{
[
`T
${
index
+
1
}
`
]:
`
${
isActive
}
,
${
isPowerOn
}
,
${
repeatOn
()}
,
${
hour
}
,
${
minute
}
`
};
//
let timerShadowFormat = { [`T${index + 1}`]: `${isActive},${isPowerOn},${repeatOn()},${hour},${minute}` };
return
{
...
accumulator
,
...
timerShadowFormat
};
//
return { ...accumulator, ...timerShadowFormat };
},
{});
//
}, {});
console
.
log
(
'mainBreakerTimersData'
,
mainBreakerTimersData
);
//
console.log('mainBreakerTimersData', mainBreakerTimersData);
const
data
=
{
data
:
{
L1B1T
:
{
T1
:
'1,1,127,8,0'
}
}
};
//
const data = { data: { L1B1T: { T1: '1,1,127,8,0' } } };
const
options
=
{
//
const options = {
method
:
'PUT'
,
//
method: 'PUT',
headers
:
{
Authorization
:
`Token
${
idToken
}
`
,
'content-Type'
:
'text/plain'
},
//
headers: { Authorization: `Token ${idToken}`, 'content-Type': 'text/plain' },
url
:
URL
,
//
url: URL,
data
:
JSON
.
stringify
(
data
).
replace
(
/
\"
/g
,
''
),
//
data: JSON.stringify(data).replace(/\"/g, ''),
};
//
};
try
{
//
try {
const
response
=
await
axios
(
options
);
//
const response = await axios(options);
console
.
log
(
response
);
//
console.log(response);
}
catch
(
error
)
{
//
} catch (error) {
console
.
log
(
error
);
//
console.log(error);
}
//
}
};
//
};
// export const deleteTimer2 = selectedData => async (dispatch, getState) => {
// export const deleteTimer2 = selectedData => async (dispatch, getState) => {
// const { currentSelectedDeviceReducer } = getState();
// const { currentSelectedDeviceReducer } = getState();
...
...
screens/Private/SmartMeterScreen/McbLinkScreen.js
View file @
768f47dd
import
React
from
'react'
;
import
React
from
'react'
;
import
{
Text
,
Tab
,
Tabs
,
ScrollableTab
,
View
,
Card
,
Icon
}
from
'native-base'
;
import
{
Text
,
Tab
,
Tabs
,
ScrollableTab
,
View
,
Card
,
Icon
}
from
'native-base'
;
import
{
connect
}
from
'react-redux'
;
import
{
connect
}
from
'react-redux'
;
import
{
StyleSheet
,
TextInput
,
Image
}
from
'react-native'
;
import
{
StyleSheet
,
TextInput
,
Image
,
TouchableOpacity
}
from
'react-native'
;
import
{
theme
,
color
}
from
'../../../constants/Styles'
;
import
{
theme
,
color
}
from
'../../../constants/Styles'
;
import
{
HeaderButtons
,
Item
}
from
'react-navigation-header-buttons'
;
import
{
HeaderButtons
,
Item
}
from
'react-navigation-header-buttons'
;
import
IoniconsHeaderButton
from
'../../../components/IoniconsHeaderButton'
;
import
IoniconsHeaderButton
from
'../../../components/IoniconsHeaderButton'
;
import
{
Switch
,
FlatList
,
ScrollView
,
TouchableOpacity
}
from
'react-native-gesture-handler'
;
import
{
Switch
,
FlatList
,
ScrollView
}
from
'react-native-gesture-handler'
;
import
{
width
,
height
}
from
'../../../constants/Layout'
;
import
{
width
,
height
}
from
'../../../constants/Layout'
;
import
{
import
{
getCurrentSelectedShadow
,
getCurrentSelectedShadow
,
...
@@ -25,11 +25,7 @@ class McbLinkScreen extends React.Component {
...
@@ -25,11 +25,7 @@ class McbLinkScreen extends React.Component {
title
:
navigation
.
getParam
(
'mcbLink'
).
name
,
title
:
navigation
.
getParam
(
'mcbLink'
).
name
,
headerLeft
:
(
headerLeft
:
(
<
HeaderButtons
HeaderButtonComponent
=
{
IoniconsHeaderButton
}
>
<
HeaderButtons
HeaderButtonComponent
=
{
IoniconsHeaderButton
}
>
<
Item
<
Item
title
=
"back"
iconName
=
"ios-arrow-back"
onPress
=
{()
=>
navigation
.
pop
()}
/
>
title
=
"back"
iconName
=
"ios-arrow-back"
onPress
=
{()
=>
navigation
.
navigate
(
'SmartMeterDetail'
)}
/
>
<
/HeaderButtons
>
<
/HeaderButtons
>
),
),
// remove line between header and tab bar
// remove line between header and tab bar
...
@@ -206,7 +202,10 @@ class McbLinkScreen extends React.Component {
...
@@ -206,7 +202,10 @@ class McbLinkScreen extends React.Component {
>
>
{
item
.
type
?
(
{
item
.
type
?
(
<
Image
<
Image
style
=
{
styles
.
electronicIcon
}
style
=
{[
styles
.
electronicIcon
,
{
tintColor
:
color
.
primary
,
resizeMode
:
'contain'
},
]}
source
=
{
getDeviceIcon
(
item
.
type
)}
source
=
{
getDeviceIcon
(
item
.
type
)}
/
>
/
>
)
:
(
)
:
(
...
@@ -229,7 +228,7 @@ class McbLinkScreen extends React.Component {
...
@@ -229,7 +228,7 @@ class McbLinkScreen extends React.Component {
}
}
}}
}}
ItemSeparatorComponent
=
{()
=>
<
View
style
=
{{
margin
:
5
}}
/>
}
ItemSeparatorComponent
=
{()
=>
<
View
style
=
{{
margin
:
5
}}
/>
}
keyExtractor
=
{(
{
item
,
index
}
)
=>
{
keyExtractor
=
{(
item
,
index
)
=>
{
`elec
${
index
}
`
;
`elec
${
index
}
`
;
}}
}}
key
=
{
`scrollPage
${
index
}
`
}
key
=
{
`scrollPage
${
index
}
`
}
...
@@ -316,6 +315,7 @@ class McbLinkScreen extends React.Component {
...
@@ -316,6 +315,7 @@ class McbLinkScreen extends React.Component {
if
(
item
.
type
===
'empty'
)
{
if
(
item
.
type
===
'empty'
)
{
return
<
Card
style
=
{
styles
.
electronicCard
}
transparent
/>
;
return
<
Card
style
=
{
styles
.
electronicCard
}
transparent
/>
;
}
else
{
}
else
{
const
dynamicColor
=
item
.
type
===
deviceType
?
color
.
white
:
color
.
primary
;
return
(
return
(
<
Card
<
Card
style
=
{[
style
=
{[
...
@@ -334,10 +334,8 @@ class McbLinkScreen extends React.Component {
...
@@ -334,10 +334,8 @@ class McbLinkScreen extends React.Component {
style
=
{[
style
=
{[
styles
.
electronicIcon
,
styles
.
electronicIcon
,
{
{
tintColor
:
tintColor
:
dynamicColor
,
item
.
type
===
deviceType
resizeMode
:
'contain'
,
?
color
.
white
:
color
.
primary
,
},
},
]}
]}
source
=
{
getDeviceIcon
(
item
.
type
)}
source
=
{
getDeviceIcon
(
item
.
type
)}
...
@@ -359,7 +357,7 @@ class McbLinkScreen extends React.Component {
...
@@ -359,7 +357,7 @@ class McbLinkScreen extends React.Component {
);
);
}
}
}}
}}
keyExtractor
=
{(
{
item
,
index
}
)
=>
`device
${
index
}
`
}
keyExtractor
=
{(
item
,
index
)
=>
`device
${
index
}
`
}
/
>
/
>
<
/View
>
<
/View
>
<
/ScrollView
>
<
/ScrollView
>
...
@@ -443,10 +441,9 @@ const styles = StyleSheet.create({
...
@@ -443,10 +441,9 @@ const styles = StyleSheet.create({
borderColor
:
'transparent'
,
borderColor
:
'transparent'
,
},
},
electronicIcon
:
{
electronicIcon
:
{
tintColor
:
color
.
primary
,
//
tintColor: color.primary,
width
:
30
,
width
:
30
,
height
:
30
,
height
:
30
,
resizeMode
:
'contain'
,
marginBottom
:
10
,
marginBottom
:
10
,
},
},
electronictext
:
{
electronictext
:
{
...
...
screens/Private/TimerScreen/TimerScreen.js
View file @
768f47dd
...
@@ -251,7 +251,6 @@ class TimerScreen extends PureComponent {
...
@@ -251,7 +251,6 @@ class TimerScreen extends PureComponent {
selectedSubBreaker
:
null
,
selectedSubBreaker
:
null
,
});
});
}
}
this
.
props
.
writeTimersToShadow
();
}
}
if
(
prevProps
.
existedMcbLinksData
!==
this
.
props
.
existedMcbLinksData
)
{
if
(
prevProps
.
existedMcbLinksData
!==
this
.
props
.
existedMcbLinksData
)
{
this
.
setPickerSelectData
();
this
.
setPickerSelectData
();
...
...
yarn.lock
View file @
768f47dd
...
@@ -4441,7 +4441,7 @@ jest@^24.8.0:
...
@@ -4441,7 +4441,7 @@ jest@^24.8.0:
import-local "^2.0.0"
import-local "^2.0.0"
jest-cli "^24.9.0"
jest-cli "^24.9.0"
jetifier@^1.6.2, jetifier@^1.6.
3
:
jetifier@^1.6.2, jetifier@^1.6.
4
:
version "1.6.4"
version "1.6.4"
resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-1.6.4.tgz#6159db8e275d97980d26162897a0648b6d4a3222"
resolved "https://registry.yarnpkg.com/jetifier/-/jetifier-1.6.4.tgz#6159db8e275d97980d26162897a0648b6d4a3222"
integrity sha512-+f/4OLeqY8RAmXnonI1ffeY1DR8kMNJPhv5WMFehchf7U71cjMQVKkOz1n6asz6kfVoAqKNWJz1A/18i18AcXA==
integrity sha512-+f/4OLeqY8RAmXnonI1ffeY1DR8kMNJPhv5WMFehchf7U71cjMQVKkOz1n6asz6kfVoAqKNWJz1A/18i18AcXA==
...
@@ -6244,7 +6244,7 @@ react-native-elements@^1.1.0:
...
@@ -6244,7 +6244,7 @@ react-native-elements@^1.1.0:
react-native-ratings "^6.3.0"
react-native-ratings "^6.3.0"
react-native-status-bar-height "^2.2.0"
react-native-status-bar-height "^2.2.0"
react-native-gesture-handler@^1.
3.0
:
react-native-gesture-handler@^1.
4.1
:
version "1.4.1"
version "1.4.1"
resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-1.4.1.tgz#c38d9e57637b95e221722a79f2bafac62e3aeb21"
resolved "https://registry.yarnpkg.com/react-native-gesture-handler/-/react-native-gesture-handler-1.4.1.tgz#c38d9e57637b95e221722a79f2bafac62e3aeb21"
integrity sha512-Ffcs+SbEbkGaal0CClYL+v7A9y4OA5G5lW01qrzjxaqASp5C8BfnWSKuqYKE00s6bLwE5L4xnlHkG0yIxAtbrQ==
integrity sha512-Ffcs+SbEbkGaal0CClYL+v7A9y4OA5G5lW01qrzjxaqASp5C8BfnWSKuqYKE00s6bLwE5L4xnlHkG0yIxAtbrQ==
...
@@ -6365,7 +6365,7 @@ react-native-svg-charts@^5.3.0:
...
@@ -6365,7 +6365,7 @@ react-native-svg-charts@^5.3.0:
d3-shape "^1.0.6"
d3-shape "^1.0.6"
prop-types "^15.6.0"
prop-types "^15.6.0"
react-native-svg@^9.
7.1
:
react-native-svg@^9.
9.4
:
version "9.9.4"
version "9.9.4"
resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-9.9.4.tgz#31070eeb68fb6e8dc0c0828c87687da3e0679102"
resolved "https://registry.yarnpkg.com/react-native-svg/-/react-native-svg-9.9.4.tgz#31070eeb68fb6e8dc0c0828c87687da3e0679102"
integrity sha512-tROcwGg69hEF+eUoYIIn8Aldq57ZZqq5gjxiILegK0EXc4XAoeWxOzfZiPQJbykY/FSYuT8IkKIsPF9ZGFlLqQ==
integrity sha512-tROcwGg69hEF+eUoYIIn8Aldq57ZZqq5gjxiILegK0EXc4XAoeWxOzfZiPQJbykY/FSYuT8IkKIsPF9ZGFlLqQ==
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment