Commit 67f96207 by talequale

merge

parents 5249e7f9 293acf8e
let latest;
let latest, STORE_VERSION = 'v0.1';
const store = new Store(latest = {
commit: window.CommitID,
_VERSION_: STORE_VERSION,
'navigation': {
current: 'Login'
},
......@@ -16,23 +16,23 @@ const store = new Store(latest = {
try{
var data = JSON.parse( localStorage.getItem( 'store' ) );
if(data.commit !== store.get('commit')){
if(data._VERSION_ !== store.get('_VERSION_')){
console.warn('STORE:outdated, new state → localStorage');
console.warn('\tSTORE:currentData #'+ store.get('commit'), store._props);
console.warn('\tSTORE:savedData # '+ window.CommitID, data);
console.warn('\tSTORE:currentData #'+ store.get('_VERSION_'), store._props);
console.warn('\tSTORE:savedData #'+ STORE_VERSION, data);
console.warn('\tSTORE:hint → Run Store.restore() for restore saved state');
console.warn('\tStore:hint → Run Store.update() for load latest default state');
Store.restore = function() {
for( var k in data ){
if(k !== 'commit'){
if(k !== '_VERSION_'){
store.set( k, data[ k ] );
}
}
};
Store.update = function() {
for( var k in latest ){
if(k !== 'commit'){
if(k !== '_VERSION_'){
store.set( k, latest[ k ] );
}
}
......@@ -51,11 +51,11 @@ store.on('change', function() {
const createSavableStore = function(name) {
const store = new Store(latest = {
commit: window.CommitID
_VERSION_: STORE_VERSION
});
try{
var data = JSON.parse( localStorage.getItem( name ) );
if(data.commit === store.get('commit')){
if(data._VERSION_ === store.get('_VERSION_')){
for( var k in data ){
store.set( k, data[ k ] );
}
......
......@@ -20,19 +20,6 @@ const CardSlider = D.declare( 'view.cmp.CardSlider', (cfg) => {
update = function() {
updateSize();
updateVisibleDom();
/*D.removeChildren(wrap);
D.appendChild(wrap, items.map(function(item, n) {
return <div className="cards-list__item">
<Card
type={'product,info,other'.split( ',' )[ n % 3 ]}
disabled={n % 5 === 0}
seen={n % 4 === 0}
title={item.name}
image={item.image}
/>
</div>
}));*/
};
......@@ -44,17 +31,31 @@ const CardSlider = D.declare( 'view.cmp.CardSlider', (cfg) => {
}, 30));
let waitTimeout = false;
let tuning = false;
let leftestItem = 0;
let lastLeftestItem = 0;
let tuneScrollPosition = function() {
waitTimeout = false;
tuning = true;
let fromLeft = dom.scrollLeft;
let firstItem = Math.round(fromLeft/(cardWidth+padding));
let firstItem = Math.round(fromLeft/(cardWidth+padding)-(lastLeftestItem>leftestItem?0.4:-0.4));
let toLeft = Math.round(firstItem*(cardWidth+padding));
let deltaMove = (toLeft - fromLeft)/Math.ceil(200/(1000/60));
while(deltaMove>0 && deltaMove<1){
deltaMove *= 2;
}
if(Math.abs(fromLeft+deltaMove - toLeft) > Math.abs(fromLeft-toLeft)){
deltaMove = toLeft - fromLeft;
}
let tune = function() {
if(Math.abs(toLeft-dom.scrollLeft) > (cardWidth+padding)){
return tuning = false;
}
if(Math.sign(toLeft-dom.scrollLeft) !== Math.sign(deltaMove)){
return tuning = false;
}
if(Math.abs(dom.scrollLeft-toLeft) < Math.abs(deltaMove)){
dom.scrollLeft = toLeft;
tuning = false;
return tuning = false;
}else{
dom.scrollLeft += deltaMove;
requestAnimationFrame( tune );
......@@ -67,13 +68,16 @@ const CardSlider = D.declare( 'view.cmp.CardSlider', (cfg) => {
}
};
let waitUntilDoNotTouchScroll=function() {
let waitUntilDoNotTouchScroll = function() {
if(tuning)
return;
lastLeftestItem = leftestItem;
leftestItem = dom.scrollLeft/(cardWidth+padding);
if(waitTimeout)
clearTimeout(waitTimeout);
waitTimeout = setTimeout(tuneScrollPosition,200);
waitTimeout = setTimeout(tuneScrollPosition,80);
};
let dom;
let theDOM = <div class="card-slider">
......
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