summaryrefslogtreecommitdiff
path: root/src/array.js
diff options
context:
space:
mode:
Diffstat (limited to 'src/array.js')
-rw-r--r--src/array.js61
1 files changed, 0 insertions, 61 deletions
diff --git a/src/array.js b/src/array.js
deleted file mode 100644
index ae30012..0000000
--- a/src/array.js
+++ /dev/null
@@ -1,61 +0,0 @@
-// Extend the array class to expose update
-// functionality, plus provide some
-// useful helper methods
-export default function(graffiti) {
-
- return class GraffitiArray extends Array {
-
- get mine() {
- return this.filter(o=> o._by==graffiti.myID)
- }
-
- get notMine() {
- return this.filter(o=> o._by!=graffiti.myID)
- }
-
- get authors() {
- return [...new Set(this.map(o=> o._by))]
- }
-
- removeMine() {
- this.mine.map(o=> delete o._key)
- }
-
- #getProperty(obj, propertyPath) {
- // Split it up by periods
- propertyPath = propertyPath.match(/([^\.]+)/g)
- // Traverse down the path tree
- for (const property of propertyPath) {
- obj = obj[property]
- }
- return obj
- }
-
- sortBy(propertyPath) {
-
- const sortOrder = propertyPath[0] == '-'? -1 : 1
- if (sortOrder < 0) propertyPath = propertyPath.substring(1)
-
- return this.sort((a, b)=> {
- const propertyA = this.#getProperty(a, propertyPath)
- const propertyB = this.#getProperty(b, propertyPath)
- return sortOrder * (
- propertyA < propertyB? -1 :
- propertyA > propertyB? 1 : 0 )
- })
- }
-
- groupBy(propertyPath) {
- return this.reduce((chain, obj)=> {
- const property = this.#getProperty(obj, propertyPath)
- if (property in chain) {
- chain[property].push(obj)
- } else {
- chain[property] = new GraffitiArray(obj)
- }
- return chain
- }, {})
- }
-
- }
-}