Commit 75ca5165 authored by norhalimah's avatar norhalimah

.......

parent 3e9e069d
/* eslint-disable prettier/prettier */
const octavelist = [
{nameoctave : 'Octave 1', listoctave:[
{name: 'C1', url: require('../media/sound/white/w_c.mp3')},
{name: 'D1', url: require('../media/sound/white/w_d.mp3')},
{name: 'E1', url: require('../media/sound/white/w_e.mp3')},
{name: 'F1', url: require('../media/sound/white/w_f.mp3')},
{name: 'G1', url: require('../media/sound/white/w_g.mp3')},
{name: 'A1', url: require('../media/sound/white/w_a.mp3')},
{name: 'B1', url: require('../media/sound/white/w_b.mp3')},
{name: 'C#1', url: require('../media/sound/black/b_c.mp3')},
{name: 'D#1', url: require('../media/sound/black/b_d.mp3')},
{name: 'F#1', url: require('../media/sound/black/b_f.mp3')},
{name: 'G#1', url: require('../media/sound/black/b_g.mp3')},
{name: 'A#1', url: require('../media/sound/black/b_a.mp3')},
]},
{nameoctave : 'Octave 2', listoctave:[
{name: 'C2', url: require('../media/sound/white/w_cc.mp3')},
{name: 'D2', url: require('../media/sound/white/w_dd.mp3')},
{name: 'E2', url: require('../media/sound/white/w_ee.mp3')},
{name: 'F2', url: require('../media/sound/white/w_ff.mp3')},
{name: 'G2', url: require('../media/sound/white/w_gg.mp3')},
{name: 'A2', url: require('../media/sound/white/w_aa.mp3')},
{name: 'B2', url: require('../media/sound/white/w_bb.mp3')},
{name: 'C#2', url: require('../media/sound/black/b_cc.mp3')},
{name: 'D#2', url: require('../media/sound/black/b_dd.mp3')},
{name: 'F#2', url: require('../media/sound/black/b_ff.mp3')},
{name: 'G#2', url: require('../media/sound/black/b_gg.mp3')},
{name: 'A#2', url: require('../media/sound/black/b_aa.mp3')},
]},
{nameoctave : 'Octave 3', listoctave:[
{name: 'C3', url: require('../media/sound/white/w_ccc.mp3')},
{name: 'D3', url: require('../media/sound/white/w_ddd.mp3')},
{name: 'E3', url: require('../media/sound/white/w_eee.mp3')},
{name: 'F3', url: require('../media/sound/white/w_fff.mp3')},
{name: 'G3', url: require('../media/sound/white/w_ggg.mp3')},
{name: 'A3', url: require('../media/sound/white/w_aaa.mp3')},
{name: 'B3', url: require('../media/sound/white/w_bbb.mp3')},
{name: 'C#3', url: require('../media/sound/black/b_ccc.mp3')},
{name: 'D#3', url: require('../media/sound/black/b_ddd.mp3')},
{name: 'F#3', url: require('../media/sound/black/b_fff.mp3')},
{name: 'G#3', url: require('../media/sound/black/b_ggg.mp3')},
{name: 'A#3', url: require('../media/sound/black/b_aaa.mp3')},
]},
{nameoctave : 'Octave 4', listoctave:[
{name: 'C4', url: require('../media/sound/white/w_cccc.mp3')},
{name: 'D4', url: require('../media/sound/white/w_dddd.mp3')},
{name: 'E4', url: require('../media/sound/white/w_eeee.mp3')},
{name: 'F4', url: require('../media/sound/white/w_ffff.mp3')},
{name: 'G4', url: require('../media/sound/white/w_gggg.mp3')},
{name: 'A4', url: require('../media/sound/white/w_aaaa.mp3')},
{name: 'B4', url: require('../media/sound/white/w_bbbb.mp3')},
{name: 'C#4', url: require('../media/sound/black/b_cccc.mp3')},
{name: 'D#4', url: require('../media/sound/black/b_dddd.mp3')},
{name: 'F#4', url: require('../media/sound/black/b_ffff.mp3')},
{name: 'G#4', url: require('../media/sound/black/b_gggg.mp3')},
{name: 'A#4', url: require('../media/sound/black/b_aaaa.mp3')},
]},
{nameoctave : 'Octave 5', listoctave:[
{name: 'C5', url: require('../media/sound/white/w_ccccc.mp3')},
{name: 'D5', url: require('../media/sound/white/w_ddddd.mp3')},
{name: 'E5', url: require('../media/sound/white/w_eeeee.mp3')},
{name: 'F5', url: require('../media/sound/white/w_fffff.mp3')},
{name: 'G5', url: require('../media/sound/white/w_ggggg.mp3')},
{name: 'A5', url: require('../media/sound/white/w_aaaaa.mp3')},
{name: 'B5', url: require('../media/sound/white/w_bbbbb.mp3')},
{name: 'C#5', url: require('../media/sound/black/b_ccccc.mp3')},
{name: 'D#5', url: require('../media/sound/black/b_ddddd.mp3')},
{name: 'F#5', url: require('../media/sound/black/b_fffff.mp3')},
{name: 'G#5', url: require('../media/sound/black/b_ggggg.mp3')},
{name: 'A#5', url: require('../media/sound/black/b_aaaaa.mp3')},
]},
{nameoctave : 'Octave 6', listoctave:[
{name: 'C6', url: require('../media/sound/white/w_cccccc.mp3')},
{name: 'D6', url: require('../media/sound/white/w_dddddd.mp3')},
{name: 'E6', url: require('../media/sound/white/w_eeeeee.mp3')},
{name: 'F6', url: require('../media/sound/white/w_ffffff.mp3')},
{name: 'G6', url: require('../media/sound/white/w_gggggg.mp3')},
{name: 'A6', url: require('../media/sound/white/w_aaaaaa.mp3')},
{name: 'B6', url: require('../media/sound/white/w_bbbbbb.mp3')},
{name: 'C#6', url: require('../media/sound/black/b_cccccc.mp3')},
{name: 'D#6', url: require('../media/sound/black/b_dddddd.mp3')},
{name: 'F#6', url: require('../media/sound/black/b_ffffff.mp3')},
{name: 'G#6', url: require('../media/sound/black/b_gggggg.mp3')},
{name: 'A#6', url: require('../media/sound/black/b_aaaaaa.mp3')},
]},
{nameoctave : 'Octave 7', listoctave:[
{name: 'C7', url: require('../media/sound/white/w_ccccccc.mp3')},
{name: 'D7', url: require('../media/sound/white/w_ddddddd.mp3')},
{name: 'E7', url: require('../media/sound/white/w_eeeeeee.mp3')},
{name: 'F7', url: require('../media/sound/white/w_fffffff.mp3')},
{name: 'G7', url: require('../media/sound/white/w_ggggggg.mp3')},
{name: 'A7', url: require('../media/sound/white/w_aaaaaaa.mp3')},
{name: 'B7', url: require('../media/sound/white/w_bbbbbbb.mp3')},
{name: 'C#7', url: require('../media/sound/black/b_ccccccc.mp3')},
{name: 'D#7', url: require('../media/sound/black/b_ddddddd.mp3')},
{name: 'F#7', url: require('../media/sound/black/b_fffffff.mp3')},
{name: 'G#7', url: require('../media/sound/black/b_ggggggg.mp3')},
{name: 'A#7', url: require('../media/sound/black/b_aaaaaaa.mp3')},
]},
];
export default octavelist;
...@@ -22,6 +22,7 @@ import {Stopwatch} from 'react-native-stopwatch-timer'; ...@@ -22,6 +22,7 @@ import {Stopwatch} from 'react-native-stopwatch-timer';
import Orientation from 'react-native-orientation'; import Orientation from 'react-native-orientation';
import * as RNFS from 'react-native-fs'; import * as RNFS from 'react-native-fs';
import Listennotes from './dataListen'; import Listennotes from './dataListen';
import octavelist from './dataOctave';
//import OtherClass from './saveRecords'; //import OtherClass from './saveRecords';
import Sound from 'react-native-sound'; import Sound from 'react-native-sound';
import moment from 'moment'; import moment from 'moment';
...@@ -63,10 +64,10 @@ const wroSound = require('../media/sound/wrong.mp3'); ...@@ -63,10 +64,10 @@ const wroSound = require('../media/sound/wrong.mp3');
const keySound = Listennotes; const keySound = Listennotes;
var soundN = ''; var soundN = '';
//var indexS = 0; var indexS = 0;
var stime = 0; var stime = 0;
//var records = []; var imageN = '';
var indexN = 0;
class Listen extends React.Component { class Listen extends React.Component {
constructor(props) { constructor(props) {
...@@ -88,14 +89,16 @@ class Listen extends React.Component { ...@@ -88,14 +89,16 @@ class Listen extends React.Component {
showMusic : false, showMusic : false,
maxCount : 5, maxCount : 5,
records: [], records: [],
choose : octavelist,
soundName : '',
}; };
} }
toggleKeyword = (keyword) => { toggleKeyword = (keyword) => {
console.log(keyword); console.log('Press: ' + keyword);
//indexS = Listennotes.findIndex(item=> item.name === keyword); //indexS = Listennotes.findIndex(item=> item.name === keyword);
console.log(Listennotes[soundN].name); console.log(Listennotes[indexS].name);
if (keyword === Listennotes[soundN].name) { if (keyword === Listennotes[indexS].name) {
this.correctAlert(); this.correctAlert();
if ( (this.state.count + 1) > this.state.maxCount) { if ( (this.state.count + 1) > this.state.maxCount) {
this.setState({correct : this.state.correct + 1}); this.setState({correct : this.state.correct + 1});
...@@ -105,7 +108,7 @@ class Listen extends React.Component { ...@@ -105,7 +108,7 @@ class Listen extends React.Component {
} }
else { else {
this.setState({correct : this.state.correct + 1, count:this.state.count + 1, showC: true}); this.setState({correct : this.state.correct + 1, count:this.state.count + 1, showC: true});
this.randomSound(); this.displayData1();
} }
} else { } else {
this.wrongAlert(); this.wrongAlert();
...@@ -118,7 +121,7 @@ class Listen extends React.Component { ...@@ -118,7 +121,7 @@ class Listen extends React.Component {
else { else {
this.setState({showW: true}); this.setState({showW: true});
this.setState({wrong : this.state.wrong + 1, count:this.state.count + 1}); this.setState({wrong : this.state.wrong + 1, count:this.state.count + 1});
this.randomSound(); this.displayData1();
} }
} }
}; };
...@@ -176,11 +179,12 @@ class Listen extends React.Component { ...@@ -176,11 +179,12 @@ class Listen extends React.Component {
playButton = () => { playButton = () => {
console.log('play'); //console.log('play');
console.log(soundN); indexS = Listennotes.findIndex(item=> item.name === this.state.soundName);
console.log(Listennotes[soundN]); //console.log(indexS);
console.log('Play Sound:' + Listennotes[indexS].name);
this.setState({showMusic: true}); this.setState({showMusic: true});
var playSound = new Sound(keySound[soundN].url, (error) => { var playSound = new Sound(keySound[indexS].url, (error) => {
if (error) { if (error) {
console.log('failed to load the sound', error); console.log('failed to load the sound', error);
return; return;
...@@ -250,7 +254,8 @@ class Listen extends React.Component { ...@@ -250,7 +254,8 @@ class Listen extends React.Component {
//this.removeArray(); //this.removeArray();
BackHandler.addEventListener('hardwareBackPress', this.homeExit); BackHandler.addEventListener('hardwareBackPress', this.homeExit);
Orientation.lockToLandscape(); Orientation.lockToLandscape();
this.randomSound(); //this.randomSound();
this.displayData1();
this.reset(); this.reset();
} }
...@@ -262,64 +267,108 @@ class Listen extends React.Component { ...@@ -262,64 +267,108 @@ class Listen extends React.Component {
} }
';'; ';';
randomSound= async () => { randomSound(){
this.setState({records: []});
try {
const value = await AsyncStorage.getItem('@setlisten_key');
console.log(JSON.parse(value));
if (value !== null) {
// We have data!!
this.setState({
logbook: JSON.parse(value),
});
// console.log(this.state.logbook);
RNFS.readFile(path1, 'ascii')
.then((ccc) => {
console.log('has notes has counter');
// console.log(ccc); // console.log(ccc);
soundN = Math.floor(Math.random() * keySound.length); // soundN = Math.floor(Math.random() * keySound.length);
console.log(Listennotes[soundN]); // console.log(Listennotes[soundN]);
this.setState({
maxCount : ccc,
});
//indexS = Listennotes.findIndex(item=> item.name === this.state.name); //indexS = Listennotes.findIndex(item=> item.name === this.state.name);
// console.log(this.state.name); console.log(this.state.name);
}) // console.log(indexN);
.catch((err) => { console.log(this.state.records);
console.log(err.message, err.code); soundN = Math.floor(Math.random() * this.state.records.length);
console.log('has notes no counter'); // console.log(soundN);
soundN = Math.floor(Math.random() * keySound.length); this.setState({
console.log(Listennotes[soundN]); soundName : this.state.records[soundN].name,
this.setState({
maxCount : 10,
});
});
}
else {
RNFS.readFile(path1, 'ascii')
.then((res) => {
console.log('no notes has counter');
soundN = Math.floor(Math.random() * keySound.length);
console.log(Listennotes[soundN]);
this.setState({
maxCount : res,
});
//console.log(res);
})
.catch(() => {
// console.log(err.message, err.code);
console.log('no notes no counter');
soundN = Math.floor(Math.random() * keySound.length);
console.log(Listennotes[soundN]);
this.setState({
maxCount : 5,
}); });
}); console.log('Random Sound:' + this.state.soundName);
} }
} catch (error) {
// Error retrieving data
} /* displayData = async () => {
}; try {
const value = await AsyncStorage.getItem('@listen_key');
console.log(JSON.parse(value));
console.log(octave.map((octaven) => octaven.nameoctave));
console.log(octave.map((octaven) => octaven.listoctave.map((n) => n.name)));
} catch (error) {
// Error retrieving data
}
};
*/
displayData1 = async () => {
// this.setState({records: []});
try {
const value = await AsyncStorage.getItem('@listen_key');
/// console.log(JSON.parse(value));
if (value !== null) {
// We have data!!
this.setState({
logbook: JSON.parse(value),
});
// console.log(this.state.logbook);
RNFS.readFile(path1, 'ascii')
.then((ccc) => {
console.log('has notes has counter');
// console.log(ccc);
imageN = Math.floor(Math.random() * this.state.logbook.length);
this.setState({
name : this.state.logbook[imageN],
maxCount : ccc,
records : octavelist[imageN].listoctave,
});
indexN = octavelist.findIndex(item=> item.nameoctave === this.state.name);
this.setState({
records : octavelist[indexN].listoctave,
});
this.randomSound();
})
.catch((err) => {
console.log(err.message, err.code);
console.log('has notes no counter');
imageN = Math.floor(Math.random() * this.state.logbook.length);
this.setState({
name : this.state.logbook[imageN],
maxCount : 5,
records : octavelist[imageN].listoctave,
});
indexN = octavelist.findIndex(item=> item.nameoctave === this.state.name);
this.setState({
records : octavelist[indexN].listoctave,
});
this.randomSound();
});
}
else {
RNFS.readFile(path1, 'ascii')
.then((res) => {
console.log('no notes has counter');
imageN = Math.floor(Math.random() * octavelist.length);
indexN = imageN;
this.setState({
name : octavelist[indexN].nameoctave,
records : octavelist[indexN].listoctave,
maxCount : res,
});
this.randomSound();
})
.catch(() => {
// console.log(err.message, err.code);
console.log('no notes no counter');
imageN = Math.floor(Math.random() * octavelist.length);
indexN = imageN;
this.setState({
name : octavelist[indexN].nameoctave,
records : octavelist[indexN].listoctave,
maxCount : 5,
});
this.randomSound();
});
}
} catch (error) {
// Error retrieving data
}
};
render() { render() {
return ( return (
...@@ -340,7 +389,7 @@ class Listen extends React.Component { ...@@ -340,7 +389,7 @@ class Listen extends React.Component {
</View> </View>
</Modal> </Modal>
{/* Modal Quit the Scale*/} {/* Modal Quit the Scale*/}
<Modal transparent={true} visible={this.state.showQuit} animationType="slide"> <Modal transparent={true} visible={this.state.showQuit} animationType="slide">
<View style={styles.modalbackground}> <View style={styles.modalbackground}>
<View style={styles.viewmodalQ}> <View style={styles.viewmodalQ}>
...@@ -480,7 +529,7 @@ class Listen extends React.Component { ...@@ -480,7 +529,7 @@ class Listen extends React.Component {
? [styles.SbuttonB1, {marginLeft: config.deviceWidth * item.left}] ? [styles.SbuttonB1, {marginLeft: config.deviceWidth * item.left}]
: [styles.buttonB1, {marginLeft: config.deviceWidth * item.left}] : [styles.buttonB1, {marginLeft: config.deviceWidth * item.left}]
} }
onPress={() => this.toggleKeyword(item)} onPress={() => this.toggleKeyword(item.name)}
key={id}> key={id}>
<Text style={styles.textStyleB}>{item.name}</Text> <Text style={styles.textStyleB}>{item.name}</Text>
</TouchableHighlight> </TouchableHighlight>
......
...@@ -7,19 +7,29 @@ import { ...@@ -7,19 +7,29 @@ import {
ImageBackground, ImageBackground,
Text, Text,
View, View,
Image,
ScrollView,
BackHandler, BackHandler,
Pressable,
} from 'react-native'; } from 'react-native';
import styles from '../style/styleSettings'; import styles from '../style/styleSettings';
import Orientation from 'react-native-orientation'; import Orientation from 'react-native-orientation';
//import Notes from './data'; import Notes from './data';
import * as RNFS from 'react-native-fs'; import * as RNFS from 'react-native-fs';
import NumericInput from 'react-native-numeric-input'; import NumericInput from 'react-native-numeric-input';
import AsyncStorage from '@react-native-async-storage/async-storage'; import AsyncStorage from '@react-native-async-storage/async-storage';
import notesData from './dataNotes'; import notesData from './dataNotes';
const octave = [
'Octave 1','Octave 2','Octave 3','Octave 4','Octave 5','Octave 6','Octave 7',
];
const octavelist = [
'Octave 1','Octave 2','Octave 3','Octave 4','Octave 5','Octave 6','Octave 7',
];
var path1 = RNFS.DocumentDirectoryPath + '/counterlisten.txt'; var path1 = RNFS.DocumentDirectoryPath + '/counterlisten.txt';
var counter = 0; var counter = 0;
var notes = notesData; var notes = octavelist;
export default class SettingsListen extends React.Component { export default class SettingsListen extends React.Component {
constructor(props) { constructor(props) {
...@@ -54,19 +64,7 @@ export default class SettingsListen extends React.Component { ...@@ -54,19 +64,7 @@ export default class SettingsListen extends React.Component {
}; };
saveData = async () => { saveData = async () => {
AsyncStorage.setItem('@setisten_key', JSON.stringify(this.state.listN), (err)=> { AsyncStorage.setItem('@listen_key', JSON.stringify(this.state.listN), (err)=> {
if (err){
console.log('an error');
throw err;
}
console.log('success'); //console.log(JSON.stringify(this.state.listN));
}).catch((err)=> {
console.log('error is: ' + err);
});
};
saveData = async () => {
AsyncStorage.setItem('@notes_key', JSON.stringify(this.state.listN), (err)=> {
if (err){ if (err){
console.log('an error'); console.log('an error');
throw err; throw err;
...@@ -79,7 +77,7 @@ export default class SettingsListen extends React.Component { ...@@ -79,7 +77,7 @@ export default class SettingsListen extends React.Component {
_retrieveData = async () => { _retrieveData = async () => {
try { try {
const value = await AsyncStorage.getItem('@notes_key'); const value = await AsyncStorage.getItem('@listen_key');
if (value !== null) { if (value !== null) {
// We have data!! // We have data!!
console.log(value); console.log(value);
...@@ -172,9 +170,30 @@ export default class SettingsListen extends React.Component { ...@@ -172,9 +170,30 @@ export default class SettingsListen extends React.Component {
rightButtonBackgroundColor="black" rightButtonBackgroundColor="black"
leftButtonBackgroundColor="black"/> leftButtonBackgroundColor="black"/>
</View> </View>
<ScrollView style={styles.scroll}>
<View
style={styles.view2}>
{octave.map((item, id) => (
<View key={id}>
<Pressable
style={
notes.find((element) => element === item)
? styles.selectedKeywordStyle
: styles.buttonStyle
}
onPress={() => this.toggleKeyword(item)}
key={id}>
<Text style={styles.textname}>
{item}
</Text>
</Pressable>
</View>
))}
</View>
</ScrollView>
</SafeAreaView> </SafeAreaView>
</ImageBackground> </ImageBackground>
</View> </View>
); );
} }
} }
\ No newline at end of file
...@@ -68,18 +68,6 @@ export default class SettingsScale extends React.Component { ...@@ -68,18 +68,6 @@ export default class SettingsScale extends React.Component {
}); });
}; };
saveData = async () => {
AsyncStorage.setItem('@notes_key', JSON.stringify(this.state.listN), (err)=> {
if (err){
console.log('an error');
throw err;
}
console.log('success'); //console.log(JSON.stringify(this.state.listN));
}).catch((err)=> {
console.log('error is: ' + err);
});
};
_retrieveData = async () => { _retrieveData = async () => {
try { try {
const value = await AsyncStorage.getItem('@notes_key'); const value = await AsyncStorage.getItem('@notes_key');
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment