Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
124 changes: 117 additions & 7 deletions app.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,49 @@

var app = angular.module('PlayerApp', ['ngRoute']);

app.config(function($routeProvider) {
app.factory('I18n', ['$q', '$http', function($q, $http) {
let locale = navigator.language

var lang = {}
try {
var xhr = new XMLHttpRequest();
xhr.open('GET', '/lang/' + locale + '.json', false)
xhr.send(null)
lang = JSON.parse(xhr.responseText)
} catch (e) {

}
if (!lang) {
return {}
}
var i18n = {
t: function (input) {
let translatedString = lang[input]
if (!translatedString) {
translatedString = input
}
let args = Array.from(arguments).slice(1)
for (let i = 0; i < args.length; i++) {
translatedString = translatedString.replace('%' + i, args[i])
}
return translatedString
}
}
return i18n
}])
app.filter('trustThisUrl', ["$sce", function ($sce) {
return function (val) {
return $sce.trustAsResourceUrl(val);
};
}]);
app.filter('locale', ['I18n', function(I18n) {
return function(input) {
return I18n.t(input, Array.from(arguments).slice(1))
};
}])

app.config(function($routeProvider, $locationProvider) {
$locationProvider.html5Mode(true)
$routeProvider.
when('/', {
templateUrl: 'partials/browse.html',
Expand All @@ -12,34 +54,99 @@
templateUrl: 'partials/playqueue.html',
controller: 'PlayQueueController'
}).
when('/users/:username', {
when('/users?/:username', {
templateUrl: 'partials/user.html',
controller: 'UserController'
}).
when('/users/:username/tracks', {
when('/users?/:username/tracks', {
templateUrl: 'partials/usertracks.html',
controller: 'UserTracksController'
}).
when('/users/:username/playlists/:playlist', {
when('/users?/:username/playlists/:playlist', {
templateUrl: 'partials/playlist.html',
controller: 'PlaylistController'
}).
when('/playlists?/:playlist', {
templateUrl: 'partials/playlist.html',
controller: 'PlaylistController'
}).
when('/artists/:artist', {
when('/shows?/:show', {
templateUrl: 'partials/show.html',
controller: 'ShowController'
}).
when('/artists?/:artist', {
templateUrl: 'partials/artist.html',
controller: 'ArtistController'
}).
when('/albums/:album', {
when('/authors?/:artist', {
templateUrl: 'partials/author.html',
controller: 'AuthorController'
}).
when('/audiobooks?/:album', {
templateUrl: 'partials/audiobook.html',
controller: 'AudiobookController'
}).
when('/albums?/:album', {
templateUrl: 'partials/album.html',
controller: 'AlbumController'
}).
when('/search', {
templateUrl: 'partials/searchresults.html',
controller: 'SearchResultsController'
}).
when('/apps?/:bundle', {
templateUrl: 'partials/app.html',
controller: 'HTMLAppController'
}).

when('/apps?/:bundle/:resource', {
templateUrl: 'partials/app.html',
controller: 'HTMLAppController'
}).
when('/apps?/:bundle/:resource/:identifier', {
templateUrl: 'partials/app.html',
controller: 'HTMLAppController'
}).
when('/category/:categoryid', {
templateUrl: 'partials/browsecategory.html',
controller: 'BrowseCategoryController'
}).
when('/genres?/:identifier', {
templateUrl: 'partials/genre.html',
controller: 'GenreController'
}).
when('/labels?/:identifier', {
templateUrl: 'partials/label.html',
controller: 'LabelController'
}).
when('/tracks?/:identifier', {
templateUrl: 'partials/track.html',
controller: 'TrackController'
}).
when('/publishers?/:identifier', {
templateUrl: 'partials/publisher.html',
controller: 'PublisherController'
}).
when('/years?/:identifier', {
templateUrl: 'partials/year.html',
controller: 'YearController'
}).
when('/country/:identifier', {
templateUrl: 'partials/country.html',
controller: 'CountryController'
}).
when('/episodes?/:identifier', {
templateUrl: 'partials/episode.html',
controller: 'EpisodeController'
}).
when('/hashtags?/:hashtag', {
templateUrl: 'partials/hashtag.html',
controller: 'HashtagController'
}).
when('/charts?/:identifier', {
templateUrl: 'partials/chart.html',
controller: 'ChartController'
}).
otherwise({
redirectTo: '/'
});
Expand All @@ -49,7 +156,6 @@
console.log('in AppController');

console.log(location);

function checkUser(redirectToLogin) {
API.getMe().then(function(userInfo) {
Auth.setUsername(userInfo.id);
Expand All @@ -65,6 +171,8 @@
});
}



window.addEventListener("message", function(event) {
console.log('got postmessage', event);
var hash = JSON.parse(event.data);
Expand Down Expand Up @@ -97,6 +205,8 @@
}
};



$scope.focusInput = false;
$scope.menuOptions = function(playlist) {

Expand Down
96 changes: 96 additions & 0 deletions bower_components/array-diff/array-diff.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
// Originally from https://www.npmjs.com/package/array-diff

// var _ = require('underscore')


var indexMap = function(list) {
var map = {}
list.forEach(function(each, i) {
map[each] = map[each] || []
map[each].push(i)
})
return map
}

var longestCommonSubstring = function(seq1, seq2) {
var result = {startString1:0, startString2:0, length:0}
var indexMapBefore = indexMap(seq1)
var previousOverlap = []
seq2.forEach(function(eachAfter, indexAfter) {
var overlapLength
var overlap = []
var indexesBefore = indexMapBefore[eachAfter] || []
indexesBefore.forEach(function(indexBefore) {
overlapLength = ((indexBefore && previousOverlap[indexBefore-1]) || 0) + 1;
if (overlapLength > result.length) {
result.length = overlapLength;
result.startString1 = indexBefore - overlapLength + 1;
result.startString2 = indexAfter - overlapLength + 1;
}
overlap[indexBefore] = overlapLength
})
previousOverlap = overlap
})
return result
}


var diff = function(before, after) {
var commonSeq = longestCommonSubstring(before, after)
var startBefore = commonSeq.startString1
var startAfter = commonSeq.startString2
if (commonSeq.length == 0) {
var result = before.map(function(each) { return ['-', each]})
return result.concat(after.map(function(each) { return ['+', each]}))
}
var beforeLeft = before.slice(0, startBefore)
var afterLeft = after.slice(0, startAfter)
var equal = after.slice(startAfter, startAfter + commonSeq.length)
.map(function(each) {return ['=', each]})
var beforeRight = before.slice(startBefore + commonSeq.length)
var afterRight = after.slice(startAfter + commonSeq.length)
return _.union(diff(beforeLeft, afterLeft), equal, diff(beforeRight, afterRight))
}

var orderedSetDiff = function(before, after) {
var diffRes = diff(before, after)
var result = []
diffRes.forEach(function(each) {
switch(each[0]) {
case '=':
result.push(each)
break
case '-':
result.push((after.indexOf(each[1]) > -1) ? ['x', each[1]] : ['-', each[1]])
break
case '+':
result.push((before.indexOf(each[1]) > -1) ? ['p', each[1]] : ['+', each[1]])
}
})
return result
}

var compress = function(diff) {
var result = []
var modifier
var section = []
diff.forEach(function(each) {
if(modifier && (each[0] == modifier)) {
section.push(each[1])
} else {
if(modifier) result.push([modifier, section])
section = [each[1]]
modifier = each[0]
}
})
if(modifier) result.push([modifier, section])
return result
}

function arrayDiff (opts) {
opts = opts || {}
return function(before, after) {
var result = opts.unique ? orderedSetDiff(before, after) : diff(before, after)
return opts.compress ? compress(result) : result
}
}
Loading