Skip to content

Commit 8f1ae84

Browse files
committed
storage working again
1 parent 3d50648 commit 8f1ae84

30 files changed

+262
-2529
lines changed

PrefModel.js

Lines changed: 81 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -16,31 +16,47 @@ var PrefModel = {
1616
aPrefs :
1717
{
1818
intScheme : INTSCHEME_A,
19+
riq_LoFret : 0,
20+
riq_HiFret :19,
21+
riq_StrDepth : 5,
22+
riq_FretDepth : 5,
1923
rrq_LoFret: 0,
2024
rrq_HiFret: 19,
2125
rrq_LoStr: 1,
2226
rrq_HiStr: 6,
2327
rrq_Notegroups : [],
2428
},
29+
usingUserPrefs:false
30+
,
31+
is_chrome :false
32+
,
2533
init : function(aNotegroups, maxFret, maxString){
26-
this.aPrefs.rrq_HiFret = maxFret;
27-
this.aPrefs.rrq_HiStr = maxString;
34+
this.aPrefs.rrq_HiFret = this.aPrefs.riq_HiFret = maxFret;
35+
this.aPrefs.rrq_HiStr = this.aPrefs.riq_HiStr = maxString;
36+
// local chrome will not save cookies
37+
this.is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
38+
this.aPrefs.rrq_Notegroups = [];
2839
for(ng in aNotegroups){
2940
// Note: only pushing scales not arps or anything else
3041
this.aPrefs.rrq_Notegroups.push([dictScales[ng].ngtype+'_'+dictScales[ng].varname, true]);
3142
}
43+
3244
}
3345
,
34-
usingUserPrefs:false
35-
,
46+
3647
writePrefCookie : function(){
3748
// put form values in mPref.aPrefs and save to cookie, or local storage if chrome
3849

50+
mPref.aPrefs.riq_LoFret = $('#spRIQ_LoFret').spinner( "value" );
51+
mPref.aPrefs.riq_HiFret = $('#spRIQ_HiFret').spinner( "value" );
52+
mPref.aPrefs.riq_StrDepth = $('#spRIQ_StrDepth').spinner( "value" );
53+
mPref.aPrefs.riq_FretDepth = $('#spRIQ_FretDepth').spinner( "value" );
54+
3955
// random root
40-
mPref.aPrefs.rrq_LoFret = $('#spRR_LoFret').spinner().spinner( "value" );
41-
mPref.aPrefs.rrq_HiFret = $('#spRR_HiFret').spinner().spinner( "value" );
42-
mPref.aPrefs.rrq_LoStr = $('#spRR_LoStr').spinner().spinner( "value" );
43-
mPref.aPrefs.rrq_HiStr = $('#spRR_HiStr').spinner().spinner( "value" );
56+
mPref.aPrefs.rrq_LoFret = $('#spRR_LoFret').spinner( "value" );
57+
mPref.aPrefs.rrq_HiFret = $('#spRR_HiFret').spinner( "value" );
58+
mPref.aPrefs.rrq_LoStr = $('#spRR_LoStr').spinner( "value" );
59+
mPref.aPrefs.rrq_HiStr = $('#spRR_HiStr').spinner( "value" );
4460
// go through Notegroup inputs in the preferences popup and align with aPrefs.rrq_Notegroups
4561
// 0 is name and 1 is true or false (checked or unchecked)
4662
for (var ng in mPref.aPrefs.rrq_Notegroups){
@@ -50,26 +66,66 @@ var PrefModel = {
5066
mPref.aPrefs.rrq_Notegroups[ng][1] = false;
5167
}
5268
}
53-
54-
55-
// local chrome will not save cookies
56-
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
5769
//set cookies
58-
if(is_chrome)$.localStorage('fs_userPrefs', this.aPrefs);
59-
else $.cookies.set('fs_userPrefs', this.aPrefs);
70+
if(this.is_chrome){
71+
var data = this.aPrefs;
72+
$.localStorage('fs_userPrefs', data);
73+
}
74+
else {
75+
$.cookie('fs_userPrefs', this.aPrefs);
76+
}
77+
78+
var testStorage;
79+
// test cookie
80+
if(this.is_chrome){
81+
testStorage = $.localStorage('fs_userPrefs');
82+
}else{
83+
testStorage = $.cookie('fs_userPrefs')
84+
}
85+
//fs_userPrefs =(this.is_chrome)?$.localStorage('fs_userPrefs'):$.cookie('fs_userPrefs');
86+
alert('wrote: '+testStorage);
6087
}
6188
,
6289
retrieveUserPrefs : function(){
63-
var is_chrome = navigator.userAgent.toLowerCase().indexOf('chrome') > -1;
6490

65-
//get cookies
66-
var fs_userPrefs=(is_chrome)?$.localStorage('fs_userPrefs'):$.cookies.get('fs_userPrefs');
67-
if(fs_userPrefs!=null){
91+
// cookie test-- Chrome does not save cookie if there is no webserver
92+
// $.cookie('test_cookie', 'test', { expires: 1 });
93+
// cookietest = $.cookie('test_cookie'); // => "the_value"
94+
// $.removeCookie('test_cookie');
95+
96+
//get cookies-- Chrome does not save cookie if there is no webserver; must use storage
97+
var fs_userPrefs = null;
98+
//fs_userPrefs =(is_chrome)?$.localStorage('fs_userPrefs'):$.cookies.get('fs_userPrefs');
99+
100+
if (this.is_chrome){
101+
fs_userPrefs = $.localStorage('fs_userPrefs');
102+
}else{
103+
fs_userPrefs = $.cookie('fs_userPrefs');
104+
}
105+
if(fs_userPrefs!=null ){
106+
var storageGood = false;
107+
try {
108+
if(fs_userPrefs.rrq_Notegroups.length >1){
109+
storageGood = true}
110+
}
111+
catch (e) {
112+
// statements to handle any exceptions
113+
storageGood = false;
114+
}
115+
if(storageGood){
68116
this.aPrefs = fs_userPrefs;
69117
this.usingUserPrefs = true;
118+
}
70119
}
71120
//alert( fs_userPrefs +' '+fs_userPrefs.rrq_LoFret+' '+fs_userPrefs.rrq_HiFret);
72121

122+
},
123+
removePrefCookie : function(){
124+
if(this.is_chrome){
125+
$.localStorage('fs_userPrefs', null)
126+
} else {
127+
$.removeCookie('fs_userPrefs');
128+
}
73129
}
74130
,
75131
notegroupInPrefs : function(ngKey){
@@ -82,6 +138,13 @@ var PrefModel = {
82138
}
83139
return rBool;
84140
}
141+
,
142+
checkAllNotegroups : function(){
143+
for (var ng in mPref.aPrefs.rrq_Notegroups){
144+
mPref.aPrefs.rrq_Notegroups[ng][1] = true;
145+
}
146+
147+
}
85148

86149

87150
}

boxfrets.js

Lines changed: 115 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -695,7 +695,7 @@ var ctl_newRandRoot = function(){
695695
}
696696

697697
// check boxes according to Pref model
698-
var ctl_updateRRQprefView = function(){
698+
var ctl_updateRRQnotegroupsToPrefModel = function(){
699699
for (var ng in mPref.aPrefs.rrq_Notegroups){
700700
//0: scale name, 1: t/f checked in prefs
701701
if(mPref.aPrefs.rrq_Notegroups[ng][1]){
@@ -707,6 +707,21 @@ var ctl_updateRRQprefView = function(){
707707
}
708708
};
709709

710+
var ctl_setPrefFormToPrefModel = function(){
711+
712+
$( "#spRIQ_LoFret" ).spinner("value",mPref.aPrefs.riq_LoFret);
713+
$( "#spRIQ_HiFret" ).spinner("value",mPref.aPrefs.riq_HiFret);
714+
$( "#spRIQ_StrDepth" ).spinner("value",mPref.aPrefs.riq_StrDepth);
715+
$( "#spRIQ_FretDepth" ).spinner("value",mPref.aPrefs.riq_FretDepth);
716+
717+
$( "#spRR_LoFret" ).spinner("value",mPref.aPrefs.rrq_LoFret);
718+
$( "#spRR_HiFret" ).spinner("value",mPref.aPrefs.rrq_HiFret);
719+
$( "#spRR_LoStr" ).spinner("value",mPref.aPrefs.rrq_LoStr);
720+
$( "#spRR_HiStr" ).spinner("value",mPref.aPrefs.rrq_HiStr);
721+
ctl_updateRRQnotegroupsToPrefModel();
722+
723+
724+
}
710725
//when dialog is closed, update the Pref model with data in popup form controls
711726
var ctl_updatePrefs = function(){
712727
//RandomRootQuiz
@@ -715,6 +730,17 @@ var ctl_updatePrefs = function(){
715730
mPref.writePrefCookie();
716731

717732
};
733+
// returns preferences to defaults and rewrites cookie
734+
var ctl_resetDefaultPrefs = function(){
735+
mPref.removePrefCookie();
736+
var testRemoveCookie = fs_userPrefs =(this.is_chrome)?$.localStorage('fs_userPrefs'):$.cookie('fs_userPrefs');
737+
mPref.init(dictScales, GUITAR_STRINGS[0].length, GUITAR_STRINGS.length);
738+
mPref.checkAllNotegroups();
739+
ctl_setPrefFormToPrefModel();
740+
//ctl_updateRRQprefView();
741+
mPref.writePrefCookie();
742+
743+
}
718744

719745
// more utilities
720746
//
@@ -975,10 +1001,34 @@ var populateNotegroupsRandRootTab = function(){
9751001
ng = dictScales[mPref.aPrefs.rrq_Notegroups[ng][0]]; // 0 is name, 1 is t/f for checked box
9761002
html += '<input type="checkbox" id="prefRRQ_'+ng.ngtype+'_'+ng.varname+'" name="'+ng.ngtype+'_'+ng.varname+'" value="'+ng.ngtype+'_'+ng.varname+'"> '+ng.name+'<br>';
9771003
}
978-
html+='<span class="RR_scaleOptionsCol">';
1004+
//html+='<span class="RR_scaleOptionsCol">';
1005+
html+='</span>';
9791006
$("#RR_scaleOptionsDiv").append(html);
1007+
// attach function that makes sure at least one ng selection is checked.
1008+
for (var ng in mPref.aPrefs.rrq_Notegroups){
1009+
$('#prefRRQ_'+mPref.aPrefs.rrq_Notegroups[ng][0]).click(function(){
1010+
oneRRQalwaysChecked(this);
1011+
});
1012+
// if($('#prefRRQ_'+mPref.aPrefs.rrq_Notegroups[ng][0]).is(':checked')){
1013+
// mPref.aPrefs.rrq_Notegroups[ng][1] = true;
1014+
// } else{
1015+
// mPref.aPrefs.rrq_Notegroups[ng][1] = false;
1016+
// }
1017+
}
9801018
};
9811019

1020+
var oneRRQalwaysChecked = function(lastClicked){
1021+
var checkedNGs =0;
1022+
for (var ng in mPref.aPrefs.rrq_Notegroups){
1023+
if($('#prefRRQ_'+mPref.aPrefs.rrq_Notegroups[ng][0]).is(':checked')){
1024+
checkedNGs++;
1025+
}
1026+
}
1027+
if (checkedNGs == 0){
1028+
$(lastClicked).prop('checked', true);
1029+
}
1030+
}
1031+
9821032

9831033
// Unabridged divs are the notegroup div objects in the left hand div under the fretboard
9841034
// with all the tabs for each key. These are all the scales and arpeggios, unabridged.
@@ -1087,40 +1137,89 @@ jQuery(document).ready(function() {
10871137
// make tabs in popup
10881138
$("#prefTabs").tabs();
10891139

1090-
// set up RandomRoot quiz prefs
1140+
// set up Random Interval quiz prefs
1141+
var spRI_LoFret = $( "#spRIQ_LoFret" ).spinner({
1142+
min: mPref.aPrefs.riq_LoFret,
1143+
max: mPref.aPrefs.riq_HiFret,
1144+
value: mPref.aPrefs.riq_LoFret,
1145+
change: function( event, ui ) {
1146+
if(this.value > $("#spRIQ_HiFret").spinner( "value" )){
1147+
$("#spRIQ_HiFret").spinner( "value", this.value );
1148+
}
1149+
},
1150+
});
1151+
var spRI_HiFret = $( "#spRIQ_HiFret" ).spinner({
1152+
min: mPref.aPrefs.riq_LoFret,
1153+
max: mPref.aPrefs.riq_HiFret,
1154+
value: mPref.aPrefs.riq_HiFret,
1155+
change: function( event, ui ) {
1156+
if(this.value < $("#spRIQ_LoFret").spinner( "value" )){
1157+
$("#spRIQ_LoFret").spinner( "value", this.value );
1158+
}
1159+
},
1160+
});
1161+
1162+
var spRI_StrDepth = $( "#spRIQ_StrDepth" ).spinner({
1163+
min: mPref.aPrefs.riq_LoStr,
1164+
max: mPref.aPrefs.riq_HiStr - 1,
1165+
value: mPref.aPrefs.riq_StrDepth
1166+
});
1167+
var spRI_FretDepth = $( "#spRIQ_FretDepth" ).spinner({
1168+
min: 1,
1169+
max: mPref.aPrefs.riq_HiFret - 1,
1170+
value: mPref.aPrefs.riq_FretDepth
1171+
});
1172+
// set up Random Root quiz prefs
10911173
var spRR_LoFret = $( "#spRR_LoFret" ).spinner({
10921174
min: mPref.aPrefs.rrq_LoFret,
10931175
max: mPref.aPrefs.rrq_HiFret,
1094-
value: mPref.aPrefs.rrq_LoFret
1176+
value: mPref.aPrefs.rrq_LoFret,
1177+
change: function( event, ui ) {
1178+
if(this.value > $("#spRR_HiFret").spinner( "value" )){
1179+
$("#spRR_HiFret").spinner( "value", this.value );
1180+
}
1181+
},
10951182
});
10961183
var spRR_HiFret = $("#spRR_HiFret").spinner({
10971184
min: mPref.aPrefs.rrq_LoFret,
10981185
max: mPref.aPrefs.rrq_HiFret,
1099-
value: mPref.aPrefs.rrq_HiFret
1186+
value: mPref.aPrefs.rrq_HiFret,
1187+
change: function( event, ui ) {
1188+
if(this.value < $("#spRR_LoFret").spinner( "value" )){
1189+
$("#spRR_LoFret").spinner( "value", this.value );
1190+
}
1191+
},
11001192
});
11011193
var spRR_LoStr = $("#spRR_LoStr").spinner({
11021194
min: mPref.aPrefs.rrq_LoStr,
11031195
max: mPref.aPrefs.rrq_HiStr,
1104-
value: mPref.aPrefs.rrq_LoStr
1196+
value: mPref.aPrefs.rrq_LoStr,
1197+
change: function( event, ui ) {
1198+
if(this.value > $("#spRR_HiStr").spinner( "value" )){
1199+
$("#spRR_HiStr").spinner( "value", this.value );
1200+
}
1201+
},
11051202
});
11061203
var spRR_HiStr = $("#spRR_HiStr").spinner({
11071204
min: mPref.aPrefs.rrq_LoStr,
11081205
max: mPref.aPrefs.rrq_HiStr,
11091206
value: mPref.aPrefs.rrq_HiStr,
1207+
change: function( event, ui ) {
1208+
if(this.value < $("#spRR_LoStr").spinner( "value" )){
1209+
$("#spRR_LoStr").spinner( "value", this.value );
1210+
}
1211+
},
11101212
});
11111213

11121214
// set up prefs per user cookie or default
11131215
mPref.retrieveUserPrefs();
11141216

1115-
spRR_LoFret.spinner("value",mPref.aPrefs.rrq_LoFret);
1116-
spRR_HiFret.spinner("value",mPref.aPrefs.rrq_HiFret);
1117-
spRR_LoStr.spinner("value",mPref.aPrefs.rrq_LoStr);
1118-
spRR_HiStr.spinner("value",mPref.aPrefs.rrq_HiStr);
11191217

11201218
// dynamically insert notegroup checkboxes
11211219
populateNotegroupsRandRootTab();
11221220
// check boxes according to Pref model
1123-
ctl_updateRRQprefView();
1221+
ctl_setPrefFormToPrefModel();
1222+
//ctl_updateRRQprefView();
11241223

11251224

11261225
// get any url parameters and adjust model(s) appropriately
@@ -1367,6 +1466,7 @@ jQuery(document).ready(function() {
13671466

13681467
});
13691468

1469+
13701470
// Bind set root button -- when on, next fret note clicked will be new Key in Fretboard Model, then button reverts to off
13711471
//
13721472
$('#setRoot').click(function(){
@@ -1435,6 +1535,10 @@ jQuery(document).ready(function() {
14351535
loadFromUrl();
14361536
});
14371537

1538+
// reset defaults in preferences/general
1539+
$('#btnResetDefaults').click(function(){
1540+
ctl_resetDefaultPrefs();
1541+
});
14381542

14391543

14401544

0 commit comments

Comments
 (0)