-
-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #7 from khajjit/master
Directive - pull request
- Loading branch information
Showing
23 changed files
with
3,200 additions
and
1,550 deletions.
There are no files selected for viewing
Large diffs are not rendered by default.
Oops, something went wrong.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
152 changes: 76 additions & 76 deletions
152
src/app/ui-scroll/data.ts → src/app/ui-scroll-directive/modules/data.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,76 +1,76 @@ | ||
class Data { | ||
|
||
static scrollerId; | ||
static source; | ||
|
||
static startIndex = 90; | ||
static bufferSize = 5; | ||
static padding = 0.5; // of viewport height | ||
|
||
static items = []; | ||
static bof = false; | ||
static eof = false; | ||
static position = 0; | ||
|
||
static lastIndex = null; | ||
|
||
static setSource(datasource: any) { | ||
if (!datasource || typeof datasource !== 'object' || typeof datasource.get !== 'function') { | ||
throw new Error('Invalid datasource!'); | ||
} | ||
self.source = datasource; | ||
} | ||
|
||
static setScrollerId() { | ||
// todo dhilt : need to calculate | ||
self.scrollerId = '0'; | ||
} | ||
|
||
static getItemId(index: number): string { | ||
return 'i-' + self.scrollerId + '-' + index.toString(); | ||
} | ||
|
||
static getFirstVisibleItemIndex() { | ||
for(let i = 0; i < self.items.length; i++) { | ||
if(!self.items[i].invisible) { | ||
return i; | ||
} | ||
} | ||
return -1; | ||
} | ||
|
||
static getFirstVisibleItem() { | ||
const index = self.getFirstVisibleItemIndex(); | ||
if(index >= 0) { | ||
return self.items[index]; | ||
} | ||
} | ||
|
||
static getLastVisibleItemIndex() { | ||
for(let i = self.items.length - 1; i >= 0; i--) { | ||
if(!self.items[i].invisible) { | ||
return i; | ||
} | ||
} | ||
return -1; | ||
} | ||
|
||
static getLastVisibleItem() { | ||
const index = self.getLastVisibleItemIndex(); | ||
if(index >= 0) { | ||
return self.items[index]; | ||
} | ||
} | ||
|
||
static initialize(context) { | ||
self.setSource(context.datasource); | ||
self.setScrollerId(); | ||
|
||
context.getItems = () => self.items; | ||
context.getItemId = self.getItemId.bind(context); | ||
} | ||
|
||
} | ||
|
||
const self = Data; | ||
export default Data | ||
class Data { | ||
|
||
static scrollerId; | ||
static source; | ||
|
||
static startIndex = 90; | ||
static bufferSize = 5; | ||
static padding = 0.5; // of viewport height | ||
|
||
static items = []; | ||
static bof = false; | ||
static eof = false; | ||
static position = 0; | ||
|
||
static lastIndex = null; | ||
|
||
static setSource(datasource: any) { | ||
if (!datasource || typeof datasource !== 'object' || typeof datasource.get !== 'function') { | ||
throw new Error('Invalid datasource!'); | ||
} | ||
self.source = datasource; | ||
} | ||
|
||
static setScrollerId() { | ||
// todo dhilt : need to calculate | ||
self.scrollerId = '0'; | ||
} | ||
|
||
static getItemId(index: number): string { | ||
return 'i-' + self.scrollerId + '-' + index.toString(); | ||
} | ||
|
||
static getFirstVisibleItemIndex() { | ||
for(let i = 0; i < self.items.length; i++) { | ||
if(!self.items[i].invisible) { | ||
return i; | ||
} | ||
} | ||
return -1; | ||
} | ||
|
||
static getFirstVisibleItem() { | ||
const index = self.getFirstVisibleItemIndex(); | ||
if(index >= 0) { | ||
return self.items[index]; | ||
} | ||
} | ||
|
||
static getLastVisibleItemIndex() { | ||
for(let i = self.items.length - 1; i >= 0; i--) { | ||
if(!self.items[i].invisible) { | ||
return i; | ||
} | ||
} | ||
return -1; | ||
} | ||
|
||
static getLastVisibleItem() { | ||
const index = self.getLastVisibleItemIndex(); | ||
if(index >= 0) { | ||
return self.items[index]; | ||
} | ||
} | ||
|
||
static initialize(context) { | ||
self.setSource(context.datasource); | ||
self.setScrollerId(); | ||
|
||
context.getItems = () => self.items; | ||
context.getItemId = self.getItemId.bind(context); | ||
} | ||
|
||
} | ||
|
||
const self = Data; | ||
export default Data |
50 changes: 25 additions & 25 deletions
50
src/app/ui-scroll/debouncedRound.ts → ...croll-directive/modules/debouncedRound.ts
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,26 +1,26 @@ | ||
let timer = null; | ||
let next = null; | ||
|
||
const runTimer = (delay) => { | ||
timer = setTimeout(() => { | ||
timer = null; | ||
if(next) { | ||
next(); | ||
next = null; | ||
runTimer(delay); | ||
} | ||
}, delay) | ||
}; | ||
|
||
const debouncedRound = (cb, delay) => { | ||
if(!timer) { | ||
cb(); | ||
} | ||
else { | ||
next = cb; | ||
clearTimeout(timer); | ||
} | ||
runTimer(delay); | ||
}; | ||
|
||
let timer = null; | ||
let next = null; | ||
|
||
const runTimer = (delay) => { | ||
timer = setTimeout(() => { | ||
timer = null; | ||
if(next) { | ||
next(); | ||
next = null; | ||
runTimer(delay); | ||
} | ||
}, delay) | ||
}; | ||
|
||
const debouncedRound = (cb, delay) => { | ||
if(!timer) { | ||
cb(); | ||
} | ||
else { | ||
next = cb; | ||
clearTimeout(timer); | ||
} | ||
runTimer(delay); | ||
}; | ||
|
||
export default debouncedRound |
Oops, something went wrong.