More MusicStore.Spa changes RE wwwroot, Client source & grunt:
- Got rid of the Client folder - wwwroot is now checked in and is source of truth for static files - Moved TypeScript & Angular templates to ~/ng-apps - Updated grunt config for above changes
This commit is contained in:
parent
acac2802db
commit
24904bb884
|
|
@ -34,6 +34,6 @@ bower_components
|
|||
node_modules
|
||||
*.sln.ide
|
||||
*/*.Spa/public/*
|
||||
*/*.Spa/wwwroot/*
|
||||
*/*.Spa/wwwroot/lib
|
||||
*.ng.ts
|
||||
*.sln.ide
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
/// <reference path="../../bower_components/dt-angular/angular.d.ts" />
|
||||
/// <reference path="../../bower_components/dt-angular/angular-route.d.ts" />
|
||||
/// <reference path="../../bower_components/dt-angular-ui-bootstrap/angular-ui-bootstrap.d.ts" />
|
||||
|
||||
declare module ng {
|
||||
export interface ILogProvider {
|
||||
debugEnabled(enabled: boolean);
|
||||
}
|
||||
}
|
||||
|
|
@ -5,7 +5,7 @@ namespace MusicStore.Controllers
|
|||
{
|
||||
public class TemplateController : Controller
|
||||
{
|
||||
private static readonly string _templateBasePath = "/Client/ng-apps/";
|
||||
private static readonly string _templateBasePath = "/ng-apps/";
|
||||
|
||||
// GET: Template
|
||||
[Route("ng-apps/{*path}")]
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
"private": true,
|
||||
"dependencies": {
|
||||
"bootstrap": "~3.1.0",
|
||||
"jquery.validation": "~1.13.0",
|
||||
"jquery-validation": "~1.13.0",
|
||||
"jquery": "~2.1.0",
|
||||
"modernizr": "~2.7.1",
|
||||
"respond": "~1.4.2",
|
||||
|
|
@ -13,18 +13,18 @@
|
|||
"angular-bootstrap": "~0.10.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"dt-angular": "~1.2.15",
|
||||
"dt-angular": "~1.2.16",
|
||||
"dt-angular-ui-bootstrap": "*",
|
||||
"dt-jquery": "~2.0.0"
|
||||
},
|
||||
"exportsOverride": {
|
||||
"bootstrap": {
|
||||
"js": "dist/**/*.js",
|
||||
"css": "dist/**/*.css",
|
||||
"fonts": "**/*.{eot,svg,ttf,woff}"
|
||||
"js": "dist/js/*.*",
|
||||
"css": "dist/css/*.*",
|
||||
"fonts": "dist/fonts/*.*"
|
||||
},
|
||||
"jquery": {
|
||||
"": "dist/*.{js,map}"
|
||||
"/jquery/": {
|
||||
"": "dist/*.*"
|
||||
},
|
||||
"/angular/": {
|
||||
"": "*.{js,map}"
|
||||
|
|
@ -33,7 +33,7 @@
|
|||
"": "modernizr.js"
|
||||
},
|
||||
"respond": {
|
||||
"": "dest/*.{js,map}"
|
||||
"": "dest/*.*"
|
||||
},
|
||||
"dt-*": { }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,5 +1,5 @@
|
|||
{
|
||||
"options": { "force": true },
|
||||
"assets": [ "wwwroot/*", "!wwwroot/bin", "!wwwroot/lib" ],
|
||||
"tsng": [ "client/**/*.ng.ts" ]
|
||||
"assets": [ "wwwroot/ng-apps" ],
|
||||
"tsng": [ "ng-apps/**/*.ng.ts" ]
|
||||
}
|
||||
|
|
@ -1,19 +1,13 @@
|
|||
{
|
||||
"fix": {
|
||||
"_": "This is to work around an issue with the dt-angular bower package https://github.com/dt-bower/dt-angular/issues/4",
|
||||
"files": {
|
||||
"bower_components/jquery/jquery.d.ts": [ "bower_components/dt-jquery/jquery.d.ts" ]
|
||||
}
|
||||
},
|
||||
"assets": {
|
||||
"files": [
|
||||
{
|
||||
"expand": true,
|
||||
"cwd": "Client/",
|
||||
"cwd": "ng-apps/",
|
||||
"src": [
|
||||
"<%= staticFilePattern %>"
|
||||
],
|
||||
"dest": "wwwroot/",
|
||||
"dest": "wwwroot/ng-apps",
|
||||
"options": { "force": true }
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -4,7 +4,7 @@
|
|||
"cleancss": false
|
||||
},
|
||||
"files": {
|
||||
"wwwroot/css/site.css": "Client/**/*.less"
|
||||
"wwwroot/css/site.css": "wwwroot/**/*.less"
|
||||
}
|
||||
},
|
||||
"release": {
|
||||
|
|
@ -12,7 +12,7 @@
|
|||
"cleancss": true
|
||||
},
|
||||
"files": {
|
||||
"wwwroot/css/site.css": "Client/**/*.less"
|
||||
"wwwroot/css/site.css": "wwwroot/**/*.less"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -53,6 +53,6 @@
|
|||
}
|
||||
},
|
||||
"files": {
|
||||
"src": [ "Client/**/*.ts", "!**/*.ng.ts" ]
|
||||
"src": [ "ng-apps/**/*.ts", "!**/*.ng.ts" ]
|
||||
}
|
||||
}
|
||||
|
|
@ -5,12 +5,12 @@
|
|||
"dev": {
|
||||
"files": [
|
||||
{
|
||||
"src": [ "Client/ng-apps/components/**/*.ts", "Client/ng-apps/MusicStore.Store/**/*.ts", "!**/*.ng.ts" ],
|
||||
"dest": "Client/ng-apps"
|
||||
"src": [ "ng-apps/components/**/*.ts", "ng-apps/MusicStore.Store/**/*.ts", "!**/*.ng.ts" ],
|
||||
"dest": "ng-apps"
|
||||
},
|
||||
{
|
||||
"src": ["Client/ng-apps/components/**/*.ts", "Client/ng-apps/MusicStore.Admin/**/*.ts", "!**/*.ng.ts"],
|
||||
"dest": "Client/ng-apps"
|
||||
"src": ["ng-apps/components/**/*.ts", "ng-apps/MusicStore.Admin/**/*.ts", "!**/*.ng.ts"],
|
||||
"dest": "ng-apps"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
|
|
|||
|
|
@ -7,11 +7,11 @@
|
|||
"dev": {
|
||||
"files": [
|
||||
{
|
||||
"src": ["Client/ng-apps/components/**/*.ng.ts", "Client/ng-apps/MusicStore.Store/**/*.ng.ts"],
|
||||
"src": ["ng-apps/components/**/*.ng.ts", "ng-apps/MusicStore.Store/**/*.ng.ts"],
|
||||
"dest": "wwwroot/js/MusicStore.Store.js"
|
||||
},
|
||||
{
|
||||
"src": ["Client/ng-apps/components/**/*.ng.ts", "Client/ng-apps/MusicStore.Admin/**/*.ng.ts"],
|
||||
"src": ["ng-apps/components/**/*.ng.ts", "ng-apps/MusicStore.Admin/**/*.ng.ts"],
|
||||
"dest": "wwwroot/js/MusicStore.Admin.js"
|
||||
}
|
||||
]
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
{
|
||||
"typescript": {
|
||||
"files": ["Client/**/*.ts", "!**/*.ng.ts"],
|
||||
"files": ["ng-apps/**/*.ts", "!**/*.ng.ts"],
|
||||
"tasks": ["ts"]
|
||||
},
|
||||
"dev": {
|
||||
"files": ["bower_components/<%= staticFilePattern %>", "Client/<%= staticFilePattern %>"],
|
||||
"tasks": ["dev"]
|
||||
"bower": {
|
||||
"files": ["bower_components/**/*.*"],
|
||||
"tasks": ["bower:install"]
|
||||
}
|
||||
}
|
||||
|
|
@ -0,0 +1,9 @@
|
|||
/// <reference path="../bower_components/dt-angular/angular.d.ts" />
|
||||
/// <reference path="../bower_components/dt-angular/angular-route.d.ts" />
|
||||
/// <reference path="../bower_components/dt-angular-ui-bootstrap/angular-ui-bootstrap.d.ts" />
|
||||
|
||||
declare module ng {
|
||||
export interface ILogProvider {
|
||||
debugEnabled(enabled: boolean);
|
||||
}
|
||||
}
|
||||
|
|
@ -25,6 +25,10 @@
|
|||
"Kestrel": "Microsoft.AspNet.Hosting --server Kestrel --server.urls http://localhost:5104",
|
||||
"run": "run server.urls=http://localhost:5103"
|
||||
},
|
||||
"scripts": {
|
||||
"postrestore": [ "npm install" ],
|
||||
"prepare": [ "grunt bower:install" ]
|
||||
},
|
||||
"frameworks": {
|
||||
"aspnet50": { },
|
||||
"aspnetcore50": { }
|
||||
|
|
|
|||
|
|
@ -0,0 +1,88 @@
|
|||
@import '../../bower_components/bootstrap/less/bootstrap.less';
|
||||
|
||||
@font-face {
|
||||
font-family: 'Glyphicons Halflings';
|
||||
src: url('../lib/bootstrap/fonts/glyphicons-halflings-regular.eot');
|
||||
src: url('../lib/bootstrap/fonts/glyphicons-halflings-regular.eot?#iefix') format('embedded-opentype'), url('../lib/bootstrap/fonts/glyphicons-halflings-regular.woff') format('woff'), url('../lib/bootstrap/fonts/glyphicons-halflings-regular.ttf') format('truetype'), url('../lib/bootstrap/fonts/glyphicons-halflings-regular.svg#glyphicons_halflingsregular') format('svg');
|
||||
}
|
||||
|
||||
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
.nav, .pagination, .carousel, .panel-title a {
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
body {
|
||||
padding-top: 50px;
|
||||
padding-bottom: 20px;
|
||||
}
|
||||
|
||||
/* Set padding to keep content from hitting the edges */
|
||||
.body-content {
|
||||
padding-left: 15px;
|
||||
padding-right: 15px;
|
||||
}
|
||||
|
||||
/* Set width on the form input elements since they're 100% wide by default */
|
||||
input,
|
||||
select,
|
||||
textarea {
|
||||
/*max-width: 280px;*/
|
||||
}
|
||||
|
||||
/* styles for validation helpers */
|
||||
.field-validation-error {
|
||||
color: #b94a48;
|
||||
}
|
||||
|
||||
.field-validation-valid {
|
||||
display: none;
|
||||
}
|
||||
|
||||
input.input-validation-error {
|
||||
border: 1px solid #b94a48;
|
||||
}
|
||||
|
||||
input[type="checkbox"].input-validation-error {
|
||||
border: 0 none;
|
||||
}
|
||||
|
||||
.validation-summary-errors {
|
||||
color: #b94a48;
|
||||
}
|
||||
|
||||
.validation-summary-valid {
|
||||
display: none;
|
||||
}
|
||||
|
||||
|
||||
/* Music Store additions */
|
||||
|
||||
ul#album-list li {
|
||||
height: 160px;
|
||||
}
|
||||
|
||||
ul#album-list li img:hover {
|
||||
box-shadow: 1px 1px 7px #777;
|
||||
}
|
||||
|
||||
ul#album-list li img {
|
||||
max-width: 100px;
|
||||
max-height: 100px;
|
||||
box-shadow: 1px 1px 5px #999;
|
||||
border: none;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
ul#album-list li a, ul#album-details li a {
|
||||
text-decoration:none;
|
||||
}
|
||||
|
||||
ul#album-list li a:hover {
|
||||
background: none;
|
||||
-webkit-text-shadow: 1px 1px 2px #bbb;
|
||||
text-shadow: 1px 1px 2px #bbb;
|
||||
color: #363430;
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 31 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 248 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 2.9 KiB |
|
|
@ -0,0 +1,303 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="77.981812"
|
||||
height="38"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.2 r9819"
|
||||
sodipodi:docname="logo.svg"
|
||||
inkscape:export-filename="C:\Users\Jon\SkyDrive\Projects\Git\MvcMusicStore\MvcMusicStore\Content\Images\logo.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="11.313708"
|
||||
inkscape:cx="68.62794"
|
||||
inkscape:cy="21.563703"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1137"
|
||||
inkscape:window-x="-8"
|
||||
inkscape:window-y="-8"
|
||||
inkscape:window-maximized="1">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid4175"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-381.25,-434.47363)">
|
||||
<g
|
||||
id="g3138"
|
||||
transform="matrix(0.99433276,0,0,0.99433276,2.6879598,-28.875086)">
|
||||
<g
|
||||
transform="matrix(0.95191143,0,0,0.94999997,-13.610187,70.866904)"
|
||||
id="g4123">
|
||||
<g
|
||||
id="g4004"
|
||||
transform="translate(6.4397225,-81.443549)">
|
||||
<path
|
||||
transform="matrix(1.037037,0,0,1.0566038,33.991419,-29.473365)"
|
||||
d="m 439.46429,517.54077 c 0,7.84047 -6.47589,14.19643 -14.46429,14.19643 -7.9884,0 -14.46429,-6.35596 -14.46429,-14.19643 0,-7.84047 6.47589,-14.19643 14.46429,-14.19643 7.9884,0 14.46429,6.35596 14.46429,14.19643 z"
|
||||
sodipodi:ry="14.196428"
|
||||
sodipodi:rx="14.464286"
|
||||
sodipodi:cy="517.54077"
|
||||
sodipodi:cx="425"
|
||||
id="path3007-1"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none"
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
transform="matrix(0.16151528,0,0,0.16456275,406.08815,432.19425)"
|
||||
d="m 439.46429,517.54077 c 0,7.84047 -6.47589,14.19643 -14.46429,14.19643 -7.9884,0 -14.46429,-6.35596 -14.46429,-14.19643 0,-7.84047 6.47589,-14.19643 14.46429,-14.19643 7.9884,0 14.46429,6.35596 14.46429,14.19643 z"
|
||||
sodipodi:ry="14.196428"
|
||||
sodipodi:rx="14.464286"
|
||||
sodipodi:cy="517.54077"
|
||||
sodipodi:cx="425"
|
||||
id="path3007-0-4"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
sodipodi:type="arc" />
|
||||
</g>
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:1.31862605;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path3889-1"
|
||||
sodipodi:cx="473.83929"
|
||||
sodipodi:cy="447.98718"
|
||||
sodipodi:rx="10.982142"
|
||||
sodipodi:ry="10.982142"
|
||||
d="m 484.82144,447.98718 c 0,6.06527 -4.91688,10.98215 -10.98215,10.98215 -6.06527,0 -10.98214,-4.91688 -10.98214,-10.98215 0,-6.06527 4.91687,-10.98214 10.98214,-10.98214 6.06527,0 10.98215,4.91687 10.98215,10.98214 z"
|
||||
transform="matrix(0.5308556,0,0,0.5308556,229.63162,198.10213)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.61952281;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path3889-4-1"
|
||||
sodipodi:cx="473.83929"
|
||||
sodipodi:cy="447.98718"
|
||||
sodipodi:rx="10.982142"
|
||||
sodipodi:ry="10.982142"
|
||||
d="m 484.82144,447.98718 c 0,6.06527 -4.91688,10.98215 -10.98215,10.98215 -6.06527,0 -10.98214,-4.91688 -10.98214,-10.98215 0,-6.06527 4.91687,-10.98214 10.98214,-10.98214 6.06527,0 10.98215,4.91687 10.98215,10.98214 z"
|
||||
transform="matrix(1.1299019,0,0,1.1299019,-54.220053,-70.262937)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.8002516;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path3889-5-5"
|
||||
sodipodi:cx="473.83929"
|
||||
sodipodi:cy="447.98718"
|
||||
sodipodi:rx="10.982142"
|
||||
sodipodi:ry="10.982142"
|
||||
d="m 484.82144,447.98718 c 0,6.06527 -4.91688,10.98215 -10.98215,10.98215 -6.06527,0 -10.98214,-4.91688 -10.98214,-10.98215 0,-6.06527 4.91687,-10.98214 10.98214,-10.98214 6.06527,0 10.98215,4.91687 10.98215,10.98214 z"
|
||||
transform="matrix(0.83035093,0,0,0.83035093,87.718968,63.932058)" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.87783366px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 481.53079,442.83849 -0.0153,6.77692 c 9.55428,-0.16929 14.45853,-10.06218 12.50577,-19.31642 l -8.12484,3.61854 c 0.006,4.27743 -1.21305,6.01267 -4.23942,6.33245 z"
|
||||
id="path3916-5-2-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:transform-center-x="6.427012"
|
||||
inkscape:transform-center-y="17.713434" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.87783366px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 480.46352,428.30022 0.0153,-6.77692 c -9.55428,0.16929 -14.45853,10.06218 -12.50577,19.31642 l 8.12484,-3.61854 c -0.006,-4.27743 1.21305,-6.01267 4.23942,-6.33245 z"
|
||||
id="path3916-5-2-7-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:transform-center-x="-6.4270161"
|
||||
inkscape:transform-center-y="-17.713434" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.95191143,0,0,0.94999997,-63.034658,70.866904)"
|
||||
id="g4123-1">
|
||||
<g
|
||||
id="g4004-4"
|
||||
transform="translate(6.4397225,-81.443549)">
|
||||
<path
|
||||
transform="matrix(1.037037,0,0,1.0566038,33.991419,-29.473365)"
|
||||
d="m 439.46429,517.54077 c 0,7.84047 -6.47589,14.19643 -14.46429,14.19643 -7.9884,0 -14.46429,-6.35596 -14.46429,-14.19643 0,-7.84047 6.47589,-14.19643 14.46429,-14.19643 7.9884,0 14.46429,6.35596 14.46429,14.19643 z"
|
||||
sodipodi:ry="14.196428"
|
||||
sodipodi:rx="14.464286"
|
||||
sodipodi:cy="517.54077"
|
||||
sodipodi:cx="425"
|
||||
id="path3007-1-2"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none"
|
||||
sodipodi:type="arc" />
|
||||
<path
|
||||
transform="matrix(0.16151528,0,0,0.16456275,406.08815,432.19425)"
|
||||
d="m 439.46429,517.54077 c 0,7.84047 -6.47589,14.19643 -14.46429,14.19643 -7.9884,0 -14.46429,-6.35596 -14.46429,-14.19643 0,-7.84047 6.47589,-14.19643 14.46429,-14.19643 7.9884,0 14.46429,6.35596 14.46429,14.19643 z"
|
||||
sodipodi:ry="14.196428"
|
||||
sodipodi:rx="14.464286"
|
||||
sodipodi:cy="517.54077"
|
||||
sodipodi:cx="425"
|
||||
id="path3007-0-4-3"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
sodipodi:type="arc" />
|
||||
</g>
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:1.31862605;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path3889-1-2"
|
||||
sodipodi:cx="473.83929"
|
||||
sodipodi:cy="447.98718"
|
||||
sodipodi:rx="10.982142"
|
||||
sodipodi:ry="10.982142"
|
||||
d="m 484.82144,447.98718 c 0,6.06527 -4.91688,10.98215 -10.98215,10.98215 -6.06527,0 -10.98214,-4.91688 -10.98214,-10.98215 0,-6.06527 4.91687,-10.98214 10.98214,-10.98214 6.06527,0 10.98215,4.91687 10.98215,10.98214 z"
|
||||
transform="matrix(0.5308556,0,0,0.5308556,229.63162,198.10213)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.61952281;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path3889-4-1-2"
|
||||
sodipodi:cx="473.83929"
|
||||
sodipodi:cy="447.98718"
|
||||
sodipodi:rx="10.982142"
|
||||
sodipodi:ry="10.982142"
|
||||
d="m 484.82144,447.98718 c 0,6.06527 -4.91688,10.98215 -10.98215,10.98215 -6.06527,0 -10.98214,-4.91688 -10.98214,-10.98215 0,-6.06527 4.91687,-10.98214 10.98214,-10.98214 6.06527,0 10.98215,4.91687 10.98215,10.98214 z"
|
||||
transform="matrix(1.1299019,0,0,1.1299019,-54.220053,-70.262937)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.8002516;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path3889-5-5-1"
|
||||
sodipodi:cx="473.83929"
|
||||
sodipodi:cy="447.98718"
|
||||
sodipodi:rx="10.982142"
|
||||
sodipodi:ry="10.982142"
|
||||
d="m 484.82144,447.98718 c 0,6.06527 -4.91688,10.98215 -10.98215,10.98215 -6.06527,0 -10.98214,-4.91688 -10.98214,-10.98215 0,-6.06527 4.91687,-10.98214 10.98214,-10.98214 6.06527,0 10.98215,4.91687 10.98215,10.98214 z"
|
||||
transform="matrix(0.83035093,0,0,0.83035093,87.718968,63.932058)" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.87783366px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 481.53079,442.83849 -0.0153,6.77692 c 9.55428,-0.16929 14.45853,-10.06218 12.50577,-19.31642 l -8.12484,3.61854 c 0.006,4.27743 -1.21305,6.01267 -4.23942,6.33245 z"
|
||||
id="path3916-5-2-7-68"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:transform-center-x="6.427012"
|
||||
inkscape:transform-center-y="17.713434" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.87783366px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 480.46352,428.30022 0.0153,-6.77692 c -9.55428,0.16929 -14.45853,10.06218 -12.50577,19.31642 l 8.12484,-3.61854 c -0.006,-4.27743 1.21305,-6.01267 4.23942,-6.33245 z"
|
||||
id="path3916-5-2-7-6-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccc"
|
||||
inkscape:transform-center-x="-6.4270161"
|
||||
inkscape:transform-center-y="-17.713434" />
|
||||
</g>
|
||||
<g
|
||||
transform="matrix(0.95191143,0,0,0.94999997,5.2301333,72.549709)"
|
||||
id="g4113">
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#000000;fill-opacity:1;stroke:none"
|
||||
id="path3007-7-8"
|
||||
sodipodi:cx="425"
|
||||
sodipodi:cy="517.54077"
|
||||
sodipodi:rx="14.464286"
|
||||
sodipodi:ry="14.196428"
|
||||
d="m 439.46429,517.54077 c 0,7.84047 -6.47589,14.19643 -14.46429,14.19643 -7.9884,0 -14.46429,-6.35596 -14.46429,-14.19643 0,-7.84047 6.47589,-14.19643 14.46429,-14.19643 7.9884,0 14.46429,6.35596 14.46429,14.19643 z"
|
||||
transform="matrix(1.382716,0,0,1.4088051,-152.12422,-294.96682)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#000000;fill-opacity:1;stroke:#ffffff;stroke-width:1.23868203;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path3007-4-8"
|
||||
sodipodi:cx="425"
|
||||
sodipodi:cy="517.54077"
|
||||
sodipodi:rx="14.464286"
|
||||
sodipodi:ry="14.196428"
|
||||
d="m 439.46429,517.54077 c 0,7.84047 -6.47589,14.19643 -14.46429,14.19643 -7.9884,0 -14.46429,-6.35596 -14.46429,-14.19643 0,-7.84047 6.47589,-14.19643 14.46429,-14.19643 7.9884,0 14.46429,6.35596 14.46429,14.19643 z"
|
||||
transform="matrix(0.57659584,0,0,0.58747505,190.47685,130.10497)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:#ffffff;fill-opacity:1;stroke:none"
|
||||
id="path3007-0-2"
|
||||
sodipodi:cx="425"
|
||||
sodipodi:cy="517.54077"
|
||||
sodipodi:rx="14.464286"
|
||||
sodipodi:ry="14.196428"
|
||||
d="m 439.46429,517.54077 c 0,7.84047 -6.47589,14.19643 -14.46429,14.19643 -7.9884,0 -14.46429,-6.35596 -14.46429,-14.19643 0,-7.84047 6.47589,-14.19643 14.46429,-14.19643 7.9884,0 14.46429,6.35596 14.46429,14.19643 z"
|
||||
transform="matrix(0.27721059,0,0,0.282441,317.71558,287.97253)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.66094333;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path3889"
|
||||
sodipodi:cx="473.83929"
|
||||
sodipodi:cy="447.98718"
|
||||
sodipodi:rx="10.982142"
|
||||
sodipodi:ry="10.982142"
|
||||
d="m 484.82144,447.98718 c 0,6.06527 -4.91688,10.98215 -10.98215,10.98215 -6.06527,0 -10.98214,-4.91688 -10.98214,-10.98215 0,-6.06527 4.91687,-10.98214 10.98214,-10.98214 6.06527,0 10.98215,4.91687 10.98215,10.98214 z"
|
||||
transform="matrix(1.0590923,0,0,1.0590923,-66.309468,-40.31252)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.44283628;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path3889-4"
|
||||
sodipodi:cx="473.83929"
|
||||
sodipodi:cy="447.98718"
|
||||
sodipodi:rx="10.982142"
|
||||
sodipodi:ry="10.982142"
|
||||
d="m 484.82144,447.98718 c 0,6.06527 -4.91688,10.98215 -10.98215,10.98215 -6.06527,0 -10.98214,-4.91688 -10.98214,-10.98215 0,-6.06527 4.91687,-10.98214 10.98214,-10.98214 6.06527,0 10.98215,4.91687 10.98215,10.98214 z"
|
||||
transform="matrix(1.5807196,0,0,1.5807196,-313.47698,-273.99486)" />
|
||||
<path
|
||||
sodipodi:type="arc"
|
||||
style="fill:none;stroke:#ffffff;stroke-width:0.53326446;stroke-linecap:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="path3889-5"
|
||||
sodipodi:cx="473.83929"
|
||||
sodipodi:cy="447.98718"
|
||||
sodipodi:rx="10.982142"
|
||||
sodipodi:ry="10.982142"
|
||||
d="m 484.82144,447.98718 c 0,6.06527 -4.91688,10.98215 -10.98215,10.98215 -6.06527,0 -10.98214,-4.91688 -10.98214,-10.98215 0,-6.06527 4.91687,-10.98214 10.98214,-10.98214 6.06527,0 10.98215,4.91687 10.98215,10.98214 z"
|
||||
transform="matrix(1.3126696,0,0,1.3126696,-186.46436,-153.9119)" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.14413512px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 436.31917,443.49132 -0.10217,8.33905 c 12.45268,-0.22064 18.92699,-12.29179 16.38184,-24.35342 l -7.29812,4.63399 c 1.81826,5.98647 -4.04967,10.71674 -8.98155,11.38038 z"
|
||||
id="path3916-5"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:transform-center-x="8.3767009"
|
||||
inkscape:transform-center-y="23.087015" />
|
||||
<path
|
||||
style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.14413512px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 434.01553,424.88159 0.48098,-8.21278 c -12.45268,0.22064 -18.92699,12.29179 -16.38184,24.35342 l 8.05573,-3.62383 c -1.81826,-5.98647 2.91325,-11.85317 7.84513,-12.51681 z"
|
||||
id="path3916-5-7"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="ccccc"
|
||||
inkscape:transform-center-x="-8.3766982"
|
||||
inkscape:transform-center-y="-23.087015" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 16 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 1.2 KiB |
|
|
@ -0,0 +1,112 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="100"
|
||||
height="100"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.2 r9819"
|
||||
sodipodi:docname="New document 1">
|
||||
<defs
|
||||
id="defs4" />
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="5.6"
|
||||
inkscape:cx="56.013691"
|
||||
inkscape:cy="69.593676"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="false"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1003"
|
||||
inkscape:window-x="-9"
|
||||
inkscape:window-y="-9"
|
||||
inkscape:window-maximized="1" />
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title></dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-277.5,-381.16879)">
|
||||
<g
|
||||
id="g3797"
|
||||
inkscape:export-filename="C:\Users\Jon\SkyDrive\Projects\Git\MvcMusicStore\MvcMusicStore\Content\Images\placeholder.png"
|
||||
inkscape:export-xdpi="90"
|
||||
inkscape:export-ydpi="90">
|
||||
<rect
|
||||
y="381.16879"
|
||||
x="277.5"
|
||||
height="100"
|
||||
width="100"
|
||||
id="rect3017"
|
||||
style="fill:#ffffff;fill-opacity:1" />
|
||||
<g
|
||||
transform="translate(2.0535545,-3.2469826)"
|
||||
id="g3787">
|
||||
<rect
|
||||
style="fill:#edecb3;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.15819502px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
id="rect2998"
|
||||
width="78.591805"
|
||||
height="78.591805"
|
||||
x="286.15054"
|
||||
y="395.11987" />
|
||||
<g
|
||||
style="font-size:10.29434204px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#90905a;fill-opacity:1;stroke:none;font-family:Segoe UI;-inkscape-font-specification:Segoe UI"
|
||||
id="text3000">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 290.05246,405.88284 0,-0.99526 c 0.11393,0.10054 0.25048,0.19101 0.40966,0.27144 0.15917,0.0804 0.32672,0.14828 0.50265,0.20357 0.17593,0.0553 0.35269,0.098 0.5303,0.12818 0.1776,0.0302 0.3418,0.0452 0.4926,0.0452 0.51941,0 0.90729,-0.0963 1.16364,-0.28903 0.25635,-0.19268 0.38453,-0.46998 0.38453,-0.83189 0,-0.19436 -0.0427,-0.36358 -0.12817,-0.50768 -0.0855,-0.14409 -0.20358,-0.27562 -0.35437,-0.39458 -0.1508,-0.11896 -0.32925,-0.2329 -0.53533,-0.34181 -0.20609,-0.1089 -0.4281,-0.22367 -0.66602,-0.34431 -0.25132,-0.12734 -0.4859,-0.25635 -0.70371,-0.38705 -0.21782,-0.13068 -0.40715,-0.27478 -0.568,-0.43228 -0.16085,-0.15749 -0.28735,-0.33593 -0.3795,-0.53533 -0.0922,-0.19938 -0.13823,-0.43311 -0.13823,-0.7012 0,-0.32839 0.072,-0.61407 0.21614,-0.85702 0.14409,-0.24294 0.33342,-0.44317 0.568,-0.60067 0.23457,-0.15749 0.50181,-0.27478 0.80173,-0.35186 0.29991,-0.0771 0.60569,-0.1156 0.91734,-0.11561 0.71042,1e-5 1.22815,0.0855 1.5532,0.25635 l 0,0.95002 c -0.42558,-0.29488 -0.9718,-0.44233 -1.63865,-0.44234 -0.18431,10e-6 -0.36861,0.0193 -0.55292,0.0578 -0.18431,0.0385 -0.34851,0.10137 -0.4926,0.18849 -0.14409,0.0871 -0.26138,0.1994 -0.35186,0.33678 -0.0905,0.1374 -0.13571,0.30495 -0.13571,0.50266 0,0.18431 0.0343,0.34348 0.10304,0.47752 0.0687,0.13404 0.17006,0.25635 0.30411,0.36693 0.13404,0.11059 0.2974,0.21782 0.49008,0.3217 0.19269,0.10389 0.41469,0.21782 0.66602,0.34181 0.25803,0.12734 0.50265,0.26138 0.73387,0.40212 0.23122,0.14074 0.43396,0.29657 0.60821,0.46747 0.17425,0.1709 0.31248,0.36023 0.41469,0.56799 0.10221,0.20777 0.15331,0.44569 0.15331,0.71377 0,0.35521 -0.0695,0.65597 -0.2086,0.90226 -0.13907,0.24631 -0.32673,0.44653 -0.56297,0.60068 -0.23625,0.15414 -0.50852,0.26556 -0.81681,0.33426 -0.3083,0.0687 -0.63335,0.10304 -0.97515,0.10304 -0.11394,0 -0.25468,-0.009 -0.42223,-0.0276 -0.16755,-0.0184 -0.33845,-0.0452 -0.5127,-0.0804 -0.17426,-0.0352 -0.3393,-0.0788 -0.49512,-0.13069 -0.15582,-0.0519 -0.28065,-0.10974 -0.37447,-0.17341 z"
|
||||
id="path3005" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 299.43197,406.17438 -0.82435,0 0,-0.80425 -0.0201,0 c -0.35856,0.61659 -0.88635,0.92488 -1.58336,0.92488 -0.51271,0 -0.91399,-0.13571 -1.20385,-0.40715 -0.28987,-0.27143 -0.4348,-0.63166 -0.4348,-1.0807 0,-0.96174 0.56632,-1.52136 1.69897,-1.67886 l 1.54315,-0.21614 c -10e-6,-0.87462 -0.35354,-1.31192 -1.0606,-1.31193 -0.61994,10e-6 -1.17956,0.21112 -1.67886,0.63334 l 0,-0.84445 c 0.506,-0.3217 1.08908,-0.48255 1.74923,-0.48255 1.20971,0 1.81457,0.64005 1.81458,1.92014 z m -0.82435,-2.60375 -1.24156,0.1709 c -0.38202,0.0536 -0.6702,0.14829 -0.86456,0.284 -0.19436,0.13572 -0.29154,0.37616 -0.29154,0.72131 0,0.25133 0.0896,0.45658 0.26892,0.61575 0.17928,0.15918 0.41804,0.23876 0.71628,0.23876 0.40882,0 0.74644,-0.14325 1.01285,-0.42977 0.2664,-0.28651 0.3996,-0.64926 0.39961,-1.08824 z"
|
||||
id="path3007" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 308.3038,406.17438 -0.82435,0 0,-2.9556 c -10e-6,-0.56968 -0.088,-0.98185 -0.26389,-1.23653 -0.17594,-0.25468 -0.47167,-0.38201 -0.88719,-0.38202 -0.35186,10e-6 -0.65094,0.16085 -0.89723,0.48255 -0.24631,0.3217 -0.36946,0.70707 -0.36945,1.1561 l 0,2.9355 -0.82436,0 0,-3.05614 c 0,-1.012 -0.39039,-1.518 -1.17118,-1.51801 -0.36191,10e-6 -0.66015,0.15164 -0.89472,0.4549 -0.23457,0.30327 -0.35186,0.69786 -0.35186,1.18375 l 0,2.9355 -0.82435,0 0,-5.14717 0.82435,0 0,0.81429 0.0201,0 c 0.36526,-0.62328 0.89807,-0.93493 1.59844,-0.93493 0.35185,0 0.65847,0.098 0.91985,0.29405 0.26138,0.19604 0.44066,0.45323 0.53784,0.77157 0.38201,-0.71041 0.95169,-1.06562 1.70902,-1.06562 1.13264,0 1.69896,0.69869 1.69897,2.09606 z"
|
||||
id="path3009" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 310.70648,405.43045 -0.0201,0 0,3.11143 -0.82435,0 0,-7.51467 0.82435,0 0,0.90477 0.0201,0 c 0.40548,-0.6836 0.99861,-1.02541 1.7794,-1.02541 0.6635,0 1.18123,0.23039 1.5532,0.69115 0.37195,0.46077 0.55794,1.07819 0.55794,1.85228 0,0.86121 -0.20944,1.55068 -0.62831,2.06841 -0.41889,0.51774 -0.99191,0.7766 -1.71908,0.7766 -0.66686,0 -1.18124,-0.28818 -1.54315,-0.86456 z m -0.0201,-2.07596 0,0.7188 c 0,0.42558 0.13823,0.78665 0.41469,1.08321 0.27645,0.29657 0.62747,0.44485 1.05306,0.44485 0.4993,0 0.89053,-0.191 1.17369,-0.57302 0.28316,-0.38202 0.42474,-0.91315 0.42474,-1.59341 0,-0.57303 -0.13237,-1.02206 -0.39709,-1.34711 -0.26474,-0.32505 -0.6233,-0.48757 -1.07568,-0.48758 -0.4792,10e-6 -0.86457,0.16672 -1.1561,0.50014 -0.29154,0.33343 -0.43731,0.75147 -0.43731,1.25412 z"
|
||||
id="path3011" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 316.73833,406.17438 -0.82436,0 0,-7.62023 0.82436,0 z"
|
||||
id="path3013" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
d="m 322.54397,403.80688 -3.63418,0 c 0.0134,0.57303 0.16755,1.01536 0.46244,1.327 0.29489,0.31165 0.70036,0.46747 1.21642,0.46747 0.57972,0 1.11254,-0.191 1.59844,-0.57302 l 0,0.77408 c -0.45239,0.3284 -1.05055,0.4926 -1.79448,0.4926 -0.72717,0 -1.29852,-0.23373 -1.71404,-0.7012 -0.41553,-0.46746 -0.62329,-1.1251 -0.62329,-1.97291 0,-0.80089 0.22703,-1.4535 0.68109,-1.95784 0.45406,-0.50432 1.01787,-0.75649 1.69143,-0.75649 0.67355,0 1.19464,0.21782 1.56325,0.65345 0.36861,0.43564 0.55292,1.0405 0.55292,1.81458 z m -0.84446,-0.69869 c -0.003,-0.47584 -0.11812,-0.84613 -0.34431,-1.11086 -0.2262,-0.26473 -0.54036,-0.39709 -0.94248,-0.3971 -0.38872,10e-6 -0.7188,0.13907 -0.99023,0.4172 -0.27143,0.27814 -0.43898,0.64173 -0.50265,1.09076 z"
|
||||
id="path3015" />
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 8.4 KiB |
File diff suppressed because it is too large
Load Diff
|
|
@ -0,0 +1,820 @@
|
|||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (AlbumApi) {
|
||||
angular.module("MusicStore.AlbumApi", []);
|
||||
})(MusicStore.AlbumApi || (MusicStore.AlbumApi = {}));
|
||||
var AlbumApi = MusicStore.AlbumApi;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (AlbumApi) {
|
||||
var AlbumApiService = (function () {
|
||||
function AlbumApiService($cacheFactory, $q, $http, urlResolver) {
|
||||
this._inlineData = $cacheFactory.get("inlineData");
|
||||
this._q = $q;
|
||||
this._http = $http;
|
||||
this._urlResolver = urlResolver;
|
||||
}
|
||||
AlbumApiService.prototype.getAlbums = function (page, pageSize, sortBy) {
|
||||
var url = this._urlResolver.resolveUrl("~/api/albums"), query = {}, querySeparator = "?", inlineData;
|
||||
|
||||
if (page) {
|
||||
query.page = page;
|
||||
}
|
||||
|
||||
if (pageSize) {
|
||||
query.pageSize = pageSize;
|
||||
}
|
||||
|
||||
if (sortBy) {
|
||||
query.sortBy = sortBy;
|
||||
}
|
||||
|
||||
for (var key in query) {
|
||||
if (query.hasOwnProperty(key)) {
|
||||
url += querySeparator + key + "=" + encodeURIComponent(query[key]);
|
||||
if (querySeparator === "?") {
|
||||
querySeparator = "&";
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
inlineData = this._inlineData ? this._inlineData.get(url) : null;
|
||||
|
||||
if (inlineData) {
|
||||
return this._q.when(inlineData);
|
||||
} else {
|
||||
return this._http.get(url).then(function (result) {
|
||||
return result.data;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
AlbumApiService.prototype.getAlbumDetails = function (albumId) {
|
||||
var url = this._urlResolver.resolveUrl("~/api/albums/" + albumId);
|
||||
return this._http.get(url).then(function (result) {
|
||||
return result.data;
|
||||
});
|
||||
};
|
||||
|
||||
AlbumApiService.prototype.getMostPopularAlbums = function (count) {
|
||||
var url = this._urlResolver.resolveUrl("~/api/albums/mostPopular"), inlineData = this._inlineData ? this._inlineData.get(url) : null;
|
||||
|
||||
if (inlineData) {
|
||||
return this._q.when(inlineData);
|
||||
} else {
|
||||
if (count && count > 0) {
|
||||
url += "?count=" + count;
|
||||
}
|
||||
|
||||
return this._http.get(url).then(function (result) {
|
||||
return result.data;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
AlbumApiService.prototype.createAlbum = function (album, config) {
|
||||
var url = this._urlResolver.resolveUrl("api/albums");
|
||||
return this._http.post(url, album, config || { timeout: 10000 });
|
||||
};
|
||||
|
||||
AlbumApiService.prototype.updateAlbum = function (album, config) {
|
||||
var url = this._urlResolver.resolveUrl("api/albums/" + album.AlbumId + "/update");
|
||||
return this._http.put(url, album, config || { timeout: 10000 });
|
||||
};
|
||||
|
||||
AlbumApiService.prototype.deleteAlbum = function (albumId, config) {
|
||||
var url = this._urlResolver.resolveUrl("api/albums/" + albumId);
|
||||
return this._http.delete(url, config || { timeout: 10000 });
|
||||
};
|
||||
return AlbumApiService;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.AlbumApi").service("MusicStore.AlbumApi.IAlbumApiService", [
|
||||
"$cacheFactory",
|
||||
"$q",
|
||||
"$http",
|
||||
"MusicStore.UrlResolver.IUrlResolverService",
|
||||
AlbumApiService
|
||||
]);
|
||||
})(MusicStore.AlbumApi || (MusicStore.AlbumApi = {}));
|
||||
var AlbumApi = MusicStore.AlbumApi;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (ArtistApi) {
|
||||
angular.module("MusicStore.ArtistApi", []);
|
||||
})(MusicStore.ArtistApi || (MusicStore.ArtistApi = {}));
|
||||
var ArtistApi = MusicStore.ArtistApi;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (ArtistApi) {
|
||||
var ArtistsApiService = (function () {
|
||||
function ArtistsApiService($cacheFactory, $q, $http, urlResolver) {
|
||||
this._inlineData = $cacheFactory.get("inlineData");
|
||||
this._q = $q;
|
||||
this._http = $http;
|
||||
this._urlResolver = urlResolver;
|
||||
}
|
||||
ArtistsApiService.prototype.getArtistsLookup = function () {
|
||||
var url = this._urlResolver.resolveUrl("~/api/artists/lookup"), inlineData = this._inlineData ? this._inlineData.get(url) : null;
|
||||
|
||||
if (inlineData) {
|
||||
return this._q.when(inlineData);
|
||||
} else {
|
||||
return this._http.get(url).then(function (result) {
|
||||
return result.data;
|
||||
});
|
||||
}
|
||||
};
|
||||
return ArtistsApiService;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.ArtistApi").service("MusicStore.ArtistApi.IArtistApiService", [
|
||||
"$cacheFactory",
|
||||
"$q",
|
||||
"$http",
|
||||
"MusicStore.UrlResolver.IUrlResolverService",
|
||||
ArtistsApiService
|
||||
]);
|
||||
})(MusicStore.ArtistApi || (MusicStore.ArtistApi = {}));
|
||||
var ArtistApi = MusicStore.ArtistApi;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (GenreApi) {
|
||||
angular.module("MusicStore.GenreApi", []);
|
||||
})(MusicStore.GenreApi || (MusicStore.GenreApi = {}));
|
||||
var GenreApi = MusicStore.GenreApi;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (GenreApi) {
|
||||
var GenreApiService = (function () {
|
||||
function GenreApiService($cacheFactory, $q, $http, urlResolver) {
|
||||
this._inlineData = $cacheFactory.get("inlineData");
|
||||
this._q = $q;
|
||||
this._http = $http;
|
||||
this._urlResolver = urlResolver;
|
||||
}
|
||||
GenreApiService.prototype.getGenresLookup = function () {
|
||||
var url = this._urlResolver.resolveUrl("~/api/genres/lookup"), inlineData = this._inlineData ? this._inlineData.get(url) : null;
|
||||
|
||||
if (inlineData) {
|
||||
return this._q.when(inlineData);
|
||||
} else {
|
||||
return this._http.get(url).then(function (result) {
|
||||
return result.data;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
GenreApiService.prototype.getGenresMenu = function () {
|
||||
var url = this._urlResolver.resolveUrl("~/api/genres/menu"), inlineData = this._inlineData ? this._inlineData.get(url) : null;
|
||||
|
||||
if (inlineData) {
|
||||
return this._q.when(inlineData);
|
||||
} else {
|
||||
return this._http.get(url).then(function (result) {
|
||||
return result.data;
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
GenreApiService.prototype.getGenresList = function () {
|
||||
var url = this._urlResolver.resolveUrl("~/api/genres");
|
||||
return this._http.get(url);
|
||||
};
|
||||
|
||||
GenreApiService.prototype.getGenreAlbums = function (genreId) {
|
||||
var url = this._urlResolver.resolveUrl("~/api/genres/" + genreId + "/albums");
|
||||
return this._http.get(url);
|
||||
};
|
||||
return GenreApiService;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.GenreApi").service("MusicStore.GenreApi.IGenreApiService", [
|
||||
"$cacheFactory",
|
||||
"$q",
|
||||
"$http",
|
||||
"MusicStore.UrlResolver.IUrlResolverService",
|
||||
GenreApiService
|
||||
]);
|
||||
})(MusicStore.GenreApi || (MusicStore.GenreApi = {}));
|
||||
var GenreApi = MusicStore.GenreApi;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (GenreMenu) {
|
||||
angular.module("MusicStore.GenreMenu", []);
|
||||
})(MusicStore.GenreMenu || (MusicStore.GenreMenu = {}));
|
||||
var GenreMenu = MusicStore.GenreMenu;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (GenreMenu) {
|
||||
var GenreMenuController = (function () {
|
||||
function GenreMenuController(genreApi, urlResolver) {
|
||||
var viewModel = this;
|
||||
|
||||
genreApi.getGenresMenu().then(function (genres) {
|
||||
viewModel.genres = genres;
|
||||
});
|
||||
|
||||
viewModel.urlBase = urlResolver.base;
|
||||
}
|
||||
return GenreMenuController;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.GenreMenu").controller("MusicStore.GenreMenu.GenreMenuController", [
|
||||
"MusicStore.GenreApi.IGenreApiService",
|
||||
"MusicStore.UrlResolver.IUrlResolverService",
|
||||
GenreMenuController
|
||||
]);
|
||||
})(MusicStore.GenreMenu || (MusicStore.GenreMenu = {}));
|
||||
var GenreMenu = MusicStore.GenreMenu;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (GenreMenu) {
|
||||
var GenreMenuDirective = (function () {
|
||||
function GenreMenuDirective(urlResolver) {
|
||||
this.replace = true;
|
||||
this.restrict = "A";
|
||||
for (var m in this) {
|
||||
if (this[m].bind) {
|
||||
this[m] = this[m].bind(this);
|
||||
}
|
||||
}
|
||||
this.templateUrl = urlResolver.resolveUrl("~/ng-apps/components/GenreMenu/GenreMenu.html");
|
||||
}
|
||||
return GenreMenuDirective;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.GenreMenu").directive("appGenreMenu", [
|
||||
"MusicStore.UrlResolver.IUrlResolverService",
|
||||
function (a) {
|
||||
return new GenreMenuDirective(a);
|
||||
}
|
||||
]);
|
||||
})(MusicStore.GenreMenu || (MusicStore.GenreMenu = {}));
|
||||
var GenreMenu = MusicStore.GenreMenu;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (InlineData) {
|
||||
angular.module("MusicStore.InlineData", []);
|
||||
})(MusicStore.InlineData || (MusicStore.InlineData = {}));
|
||||
var InlineData = MusicStore.InlineData;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (InlineData) {
|
||||
var InlineDataDirective = (function () {
|
||||
function InlineDataDirective($cacheFactory, $log) {
|
||||
this.restrict = "A";
|
||||
for (var m in this) {
|
||||
if (this[m].bind) {
|
||||
this[m] = this[m].bind(this);
|
||||
}
|
||||
}
|
||||
this._cache = $cacheFactory.get("inlineData") || $cacheFactory("inlineData");
|
||||
this._log = $log;
|
||||
}
|
||||
InlineDataDirective.prototype.link = function (scope, element, attrs) {
|
||||
var data = attrs.type === "application/json" ? angular.fromJson(element.text()) : element.text();
|
||||
|
||||
this._log.info("appInlineData: Inline data element found for " + attrs.for);
|
||||
|
||||
this._cache.put(attrs.for, data);
|
||||
};
|
||||
return InlineDataDirective;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.InlineData").directive("appInlineData", [
|
||||
"$cacheFactory",
|
||||
"$log",
|
||||
function (a, b) {
|
||||
return new InlineDataDirective(a, b);
|
||||
}
|
||||
]);
|
||||
})(MusicStore.InlineData || (MusicStore.InlineData = {}));
|
||||
var InlineData = MusicStore.InlineData;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (LoginLink) {
|
||||
angular.module("MusicStore.LoginLink", []);
|
||||
})(MusicStore.LoginLink || (MusicStore.LoginLink = {}));
|
||||
var LoginLink = MusicStore.LoginLink;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (LoginLink) {
|
||||
var LoginLinkDirective = (function () {
|
||||
function LoginLinkDirective(urlResolver, $window) {
|
||||
this.restrict = "A";
|
||||
for (var m in this) {
|
||||
if (this[m].bind) {
|
||||
this[m] = this[m].bind(this);
|
||||
}
|
||||
}
|
||||
this._window = $window;
|
||||
}
|
||||
LoginLinkDirective.prototype.link = function (scope, element, attrs) {
|
||||
var _this = this;
|
||||
if (!element.is("a[href]")) {
|
||||
return;
|
||||
}
|
||||
|
||||
var loginUrl = attrs.href;
|
||||
|
||||
element.click(function (event) {
|
||||
var currentUrl = _this._window.location.pathname + _this._window.location.search + _this._window.location.hash, newUrl = loginUrl + "?returnUrl=" + encodeURIComponent(currentUrl);
|
||||
|
||||
element.prop("href", newUrl);
|
||||
});
|
||||
};
|
||||
return LoginLinkDirective;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.LoginLink").directive("appLoginLink", [
|
||||
"MusicStore.UrlResolver.IUrlResolverService",
|
||||
"$window",
|
||||
function (a, b) {
|
||||
return new LoginLinkDirective(a, b);
|
||||
}
|
||||
]);
|
||||
})(MusicStore.LoginLink || (MusicStore.LoginLink = {}));
|
||||
var LoginLink = MusicStore.LoginLink;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (Models) {
|
||||
var AlertType = (function () {
|
||||
function AlertType(value) {
|
||||
this.value = value;
|
||||
}
|
||||
AlertType.prototype.toString = function () {
|
||||
return this.value;
|
||||
};
|
||||
|
||||
AlertType.success = new AlertType("success");
|
||||
AlertType.info = new AlertType("info");
|
||||
AlertType.warning = new AlertType("warning");
|
||||
AlertType.danger = new AlertType("danger");
|
||||
return AlertType;
|
||||
})();
|
||||
Models.AlertType = AlertType;
|
||||
})(MusicStore.Models || (MusicStore.Models = {}));
|
||||
var Models = MusicStore.Models;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (PreventSubmit) {
|
||||
angular.module("MusicStore.PreventSubmit", []);
|
||||
})(MusicStore.PreventSubmit || (MusicStore.PreventSubmit = {}));
|
||||
var PreventSubmit = MusicStore.PreventSubmit;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (PreventSubmit) {
|
||||
var PreventSubmitDirective = (function () {
|
||||
function PreventSubmitDirective() {
|
||||
this.restrict = "A";
|
||||
for (var m in this) {
|
||||
if (this[m].bind) {
|
||||
this[m] = this[m].bind(this);
|
||||
}
|
||||
}
|
||||
}
|
||||
PreventSubmitDirective.prototype.link = function (scope, element, attrs) {
|
||||
element.submit(function (e) {
|
||||
if (scope.$eval(attrs.appPreventSubmit)) {
|
||||
e.preventDefault();
|
||||
return false;
|
||||
}
|
||||
});
|
||||
};
|
||||
return PreventSubmitDirective;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.PreventSubmit").directive("appPreventSubmit", [
|
||||
function () {
|
||||
return new PreventSubmitDirective();
|
||||
}
|
||||
]);
|
||||
})(MusicStore.PreventSubmit || (MusicStore.PreventSubmit = {}));
|
||||
var PreventSubmit = MusicStore.PreventSubmit;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (TitleCase) {
|
||||
angular.module("MusicStore.TitleCase", []);
|
||||
})(MusicStore.TitleCase || (MusicStore.TitleCase = {}));
|
||||
var TitleCase = MusicStore.TitleCase;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (TitleCase) {
|
||||
function titleCase(input) {
|
||||
var out = "", lastChar = "";
|
||||
|
||||
for (var i = 0; i < input.length; i++) {
|
||||
out = out + (lastChar === " " || lastChar === "" ? input.charAt(i).toUpperCase() : input.charAt(i));
|
||||
|
||||
lastChar = input.charAt(i);
|
||||
}
|
||||
|
||||
return out;
|
||||
}
|
||||
|
||||
angular.module("MusicStore.TitleCase").filter("titlecase", function () {
|
||||
return titleCase;
|
||||
});
|
||||
})(MusicStore.TitleCase || (MusicStore.TitleCase = {}));
|
||||
var TitleCase = MusicStore.TitleCase;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (Truncate) {
|
||||
angular.module("MusicStore.Truncate", []);
|
||||
})(MusicStore.Truncate || (MusicStore.Truncate = {}));
|
||||
var Truncate = MusicStore.Truncate;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (Truncate) {
|
||||
function truncate(input, length) {
|
||||
if (!input) {
|
||||
return input;
|
||||
}
|
||||
|
||||
if (input.length <= length) {
|
||||
return input;
|
||||
} else {
|
||||
return input.substr(0, length).trim() + "…";
|
||||
}
|
||||
}
|
||||
|
||||
angular.module("MusicStore.Truncate").filter("truncate", function () {
|
||||
return truncate;
|
||||
});
|
||||
})(MusicStore.Truncate || (MusicStore.Truncate = {}));
|
||||
var Truncate = MusicStore.Truncate;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (UrlResolver) {
|
||||
angular.module("MusicStore.UrlResolver", []);
|
||||
})(MusicStore.UrlResolver || (MusicStore.UrlResolver = {}));
|
||||
var UrlResolver = MusicStore.UrlResolver;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (UrlResolver) {
|
||||
var UrlResolverService = (function () {
|
||||
function UrlResolverService($rootElement) {
|
||||
this._base = $rootElement.attr("data-url-base");
|
||||
|
||||
if (this._base === "" || this._base.substr(this._base.length - 1) !== "/") {
|
||||
this._base = this._base + "/";
|
||||
}
|
||||
}
|
||||
Object.defineProperty(UrlResolverService.prototype, "base", {
|
||||
get: function () {
|
||||
return this._base;
|
||||
},
|
||||
enumerable: true,
|
||||
configurable: true
|
||||
});
|
||||
|
||||
UrlResolverService.prototype.resolveUrl = function (relativeUrl) {
|
||||
var firstChar = relativeUrl.substr(0, 1);
|
||||
|
||||
if (firstChar === "~") {
|
||||
relativeUrl = relativeUrl.substr(1);
|
||||
}
|
||||
|
||||
firstChar = relativeUrl.substr(0, 1);
|
||||
|
||||
if (firstChar === "/") {
|
||||
relativeUrl = relativeUrl.substr(1);
|
||||
}
|
||||
|
||||
return this._base + relativeUrl;
|
||||
};
|
||||
return UrlResolverService;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.UrlResolver").service("MusicStore.UrlResolver.IUrlResolverService", [
|
||||
"$rootElement",
|
||||
UrlResolverService
|
||||
]);
|
||||
})(MusicStore.UrlResolver || (MusicStore.UrlResolver = {}));
|
||||
var UrlResolver = MusicStore.UrlResolver;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (UserDetails) {
|
||||
angular.module("MusicStore.UserDetails", []);
|
||||
})(MusicStore.UserDetails || (MusicStore.UserDetails = {}));
|
||||
var UserDetails = MusicStore.UserDetails;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (UserDetails) {
|
||||
var UserDetailsService = (function () {
|
||||
function UserDetailsService($document) {
|
||||
this._document = $document;
|
||||
}
|
||||
UserDetailsService.prototype.getUserDetails = function (elementId) {
|
||||
if (typeof elementId === "undefined") { elementId = "userDetails"; }
|
||||
if (!this._userDetails) {
|
||||
var el = this._document.find("#" + elementId + "[type='application/json']");
|
||||
|
||||
if (el.length) {
|
||||
this._userDetails = angular.fromJson(el.text());
|
||||
} else {
|
||||
this._userDetails = {
|
||||
isAuthenticated: false,
|
||||
userId: null,
|
||||
userName: null,
|
||||
roles: []
|
||||
};
|
||||
}
|
||||
}
|
||||
return this._userDetails;
|
||||
};
|
||||
return UserDetailsService;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.UserDetails").service("MusicStore.UserDetails.IUserDetailsService", [
|
||||
"$document",
|
||||
UserDetailsService
|
||||
]);
|
||||
})(MusicStore.UserDetails || (MusicStore.UserDetails = {}));
|
||||
var UserDetails = MusicStore.UserDetails;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (ViewAlert) {
|
||||
angular.module("MusicStore.ViewAlert", []);
|
||||
})(MusicStore.ViewAlert || (MusicStore.ViewAlert = {}));
|
||||
var ViewAlert = MusicStore.ViewAlert;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (ViewAlert) {
|
||||
var ViewAlertService = (function () {
|
||||
function ViewAlertService() {
|
||||
}
|
||||
return ViewAlertService;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.ViewAlert").service("MusicStore.ViewAlert.IViewAlertService", [
|
||||
ViewAlertService
|
||||
]);
|
||||
})(MusicStore.ViewAlert || (MusicStore.ViewAlert = {}));
|
||||
var ViewAlert = MusicStore.ViewAlert;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (Visited) {
|
||||
angular.module("MusicStore.Visited", []);
|
||||
})(MusicStore.Visited || (MusicStore.Visited = {}));
|
||||
var Visited = MusicStore.Visited;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (Visited) {
|
||||
var VisitedDirective = (function () {
|
||||
function VisitedDirective($window) {
|
||||
this.restrict = "E";
|
||||
this.require = "?ngModel";
|
||||
for (var m in this) {
|
||||
if (this[m].bind) {
|
||||
this[m] = this[m].bind(this);
|
||||
}
|
||||
}
|
||||
this._window = $window;
|
||||
}
|
||||
VisitedDirective.prototype.link = function (scope, element, attrs, ctrl) {
|
||||
if (!ctrl) {
|
||||
return;
|
||||
}
|
||||
|
||||
element.on("focus", function (event) {
|
||||
element.addClass("has-focus");
|
||||
scope.$apply(function () {
|
||||
return ctrl.focus = true;
|
||||
});
|
||||
});
|
||||
|
||||
element.on("blur", function (event) {
|
||||
element.removeClass("has-focus");
|
||||
element.addClass("has-visited");
|
||||
scope.$apply(function () {
|
||||
ctrl.focus = false;
|
||||
ctrl.visited = true;
|
||||
});
|
||||
});
|
||||
|
||||
element.closest("form").on("submit", function () {
|
||||
element.addClass("has-visited");
|
||||
|
||||
scope.$apply(function () {
|
||||
ctrl.focus = false;
|
||||
ctrl.visited = true;
|
||||
});
|
||||
});
|
||||
};
|
||||
return VisitedDirective;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.Visited").directive("input", [
|
||||
"$window",
|
||||
function (a) {
|
||||
return new VisitedDirective(a);
|
||||
}
|
||||
]).directive("select", [
|
||||
"$window",
|
||||
function (a) {
|
||||
return new VisitedDirective(a);
|
||||
}
|
||||
]);
|
||||
})(MusicStore.Visited || (MusicStore.Visited = {}));
|
||||
var Visited = MusicStore.Visited;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (Store) {
|
||||
(function (Catalog) {
|
||||
angular.module("MusicStore.Store.Catalog", []);
|
||||
})(Store.Catalog || (Store.Catalog = {}));
|
||||
var Catalog = Store.Catalog;
|
||||
})(MusicStore.Store || (MusicStore.Store = {}));
|
||||
var Store = MusicStore.Store;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (Store) {
|
||||
(function (Catalog) {
|
||||
var AlbumDetailsController = (function () {
|
||||
function AlbumDetailsController($routeParams, albumApi) {
|
||||
var viewModel = this, albumId = $routeParams.albumId;
|
||||
|
||||
albumApi.getAlbumDetails(albumId).then(function (album) {
|
||||
viewModel.album = album;
|
||||
});
|
||||
}
|
||||
return AlbumDetailsController;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.Store.Catalog").controller("MusicStore.Store.Catalog.AlbumDetailsController", [
|
||||
"$routeParams",
|
||||
"MusicStore.AlbumApi.IAlbumApiService",
|
||||
AlbumDetailsController
|
||||
]);
|
||||
})(Store.Catalog || (Store.Catalog = {}));
|
||||
var Catalog = Store.Catalog;
|
||||
})(MusicStore.Store || (MusicStore.Store = {}));
|
||||
var Store = MusicStore.Store;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (Store) {
|
||||
(function (Catalog) {
|
||||
var GenreDetailsController = (function () {
|
||||
function GenreDetailsController($routeParams, genreApi) {
|
||||
var viewModel = this;
|
||||
|
||||
genreApi.getGenreAlbums($routeParams.genreId).success(function (result) {
|
||||
viewModel.albums = result;
|
||||
});
|
||||
}
|
||||
return GenreDetailsController;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.Store.Catalog").controller("MusicStore.Store.Catalog.GenreDetailsController", [
|
||||
"$routeParams",
|
||||
"MusicStore.GenreApi.IGenreApiService",
|
||||
GenreDetailsController
|
||||
]);
|
||||
})(Store.Catalog || (Store.Catalog = {}));
|
||||
var Catalog = Store.Catalog;
|
||||
})(MusicStore.Store || (MusicStore.Store = {}));
|
||||
var Store = MusicStore.Store;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (Store) {
|
||||
(function (Catalog) {
|
||||
var GenreListController = (function () {
|
||||
function GenreListController(genreApi) {
|
||||
var viewModel = this;
|
||||
|
||||
genreApi.getGenresList().success(function (genres) {
|
||||
viewModel.genres = genres;
|
||||
});
|
||||
}
|
||||
return GenreListController;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.Store.Catalog").controller("MusicStore.Store.Catalog.GenreListController", [
|
||||
"MusicStore.GenreApi.IGenreApiService",
|
||||
GenreListController
|
||||
]);
|
||||
})(Store.Catalog || (Store.Catalog = {}));
|
||||
var Catalog = Store.Catalog;
|
||||
})(MusicStore.Store || (MusicStore.Store = {}));
|
||||
var Store = MusicStore.Store;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (Store) {
|
||||
(function (Home) {
|
||||
angular.module("MusicStore.Store.Home", []);
|
||||
})(Store.Home || (Store.Home = {}));
|
||||
var Home = Store.Home;
|
||||
})(MusicStore.Store || (MusicStore.Store = {}));
|
||||
var Store = MusicStore.Store;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (Store) {
|
||||
(function (Home) {
|
||||
var HomeController = (function () {
|
||||
function HomeController(albumApi) {
|
||||
var viewModel = this;
|
||||
|
||||
albumApi.getMostPopularAlbums().then(function (albums) {
|
||||
viewModel.albums = albums;
|
||||
});
|
||||
}
|
||||
return HomeController;
|
||||
})();
|
||||
|
||||
angular.module("MusicStore.Store.Home").controller("MusicStore.Store.Home.HomeController", [
|
||||
"MusicStore.AlbumApi.IAlbumApiService",
|
||||
HomeController
|
||||
]);
|
||||
})(Store.Home || (Store.Home = {}));
|
||||
var Home = Store.Home;
|
||||
})(MusicStore.Store || (MusicStore.Store = {}));
|
||||
var Store = MusicStore.Store;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
var MusicStore;
|
||||
(function (MusicStore) {
|
||||
(function (Store) {
|
||||
angular.module("MusicStore.Store", [
|
||||
"ngRoute",
|
||||
"MusicStore.InlineData",
|
||||
"MusicStore.PreventSubmit",
|
||||
"MusicStore.GenreMenu",
|
||||
"MusicStore.UrlResolver",
|
||||
"MusicStore.UserDetails",
|
||||
"MusicStore.LoginLink",
|
||||
"MusicStore.GenreApi",
|
||||
"MusicStore.AlbumApi",
|
||||
"MusicStore.Visited",
|
||||
"MusicStore.Store.Home",
|
||||
"MusicStore.Store.Catalog"
|
||||
]).config([
|
||||
"$routeProvider",
|
||||
"$logProvider",
|
||||
configuration
|
||||
]).run([
|
||||
"$log",
|
||||
"MusicStore.UserDetails.IUserDetailsService",
|
||||
run
|
||||
]);
|
||||
|
||||
var dependencies = [
|
||||
"ngRoute",
|
||||
MusicStore.InlineData,
|
||||
MusicStore.PreventSubmit,
|
||||
MusicStore.GenreMenu,
|
||||
MusicStore.UrlResolver,
|
||||
MusicStore.UserDetails,
|
||||
MusicStore.LoginLink,
|
||||
MusicStore.GenreApi,
|
||||
MusicStore.AlbumApi,
|
||||
MusicStore.Visited,
|
||||
MusicStore.Store.Home,
|
||||
MusicStore.Store.Catalog
|
||||
];
|
||||
|
||||
function configuration($routeProvider, $logProvider) {
|
||||
$logProvider.debugEnabled(true);
|
||||
|
||||
$routeProvider.when("/", { templateUrl: "ng-apps/MusicStore.Store/Home/Home.html" }).when("/albums/genres", { templateUrl: "ng-apps/MusicStore.Store/Catalog/GenreList.html" }).when("/albums/genres/:genreId", { templateUrl: "ng-apps/MusicStore.Store/Catalog/GenreDetails.html" }).when("/albums/:albumId", { templateUrl: "ng-apps/MusicStore.Store/Catalog/AlbumDetails.html" }).otherwise({ redirectTo: "/" });
|
||||
}
|
||||
|
||||
function run($log, userDetails) {
|
||||
$log.log(userDetails.getUserDetails());
|
||||
}
|
||||
})(MusicStore.Store || (MusicStore.Store = {}));
|
||||
var Store = MusicStore.Store;
|
||||
})(MusicStore || (MusicStore = {}));
|
||||
|
|
@ -0,0 +1,26 @@
|
|||
<div ng-controller="MusicStore.Store.Catalog.AlbumDetailsController as viewModel">
|
||||
<h2>{{ viewModel.album.Title }}</h2>
|
||||
|
||||
<p>
|
||||
<img ng-alt="{{ viewModel.album.Title }}" ng-src="{{ viewModel.album.AlbumArtUrl}}" />
|
||||
</p>
|
||||
|
||||
<div id="album-details">
|
||||
<p>
|
||||
<em>Genre:</em>
|
||||
{{ viewModel.album.Genre.Name }}
|
||||
</p>
|
||||
<p>
|
||||
<em>Artist:</em>
|
||||
{{ viewModel.album.Artist.Name }}
|
||||
</p>
|
||||
<p>
|
||||
<em>Price:</em>
|
||||
{{ viewModel.album.Price | currency }}
|
||||
</p>
|
||||
<p class="button">
|
||||
<!-- TODO: Shopping cart functionality -->
|
||||
Add to cart
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<div ng-controller="MusicStore.Store.Catalog.GenreDetailsController as viewModel" class="genre">
|
||||
<h3><em>{{ viewModel.genre.Name }}</em> Albums</h3>
|
||||
|
||||
<ul id="album-list" class="list-unstyled">
|
||||
<li ng-repeat="album in viewModel.albums" class="col-lg-2 col-md-2 col-sm-2 col-xs-4 container">
|
||||
<a ng-href="#/albums/{{ album.AlbumId }}">
|
||||
<img ng-show="album.AlbumArtUrl" ng-alt="{{ album.Title }}" ng-src="{{ album.AlbumArtUrl }}" />
|
||||
<h5 class="control-label">{{ album.Title }}</h5>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<div ng-controller="MusicStore.Store.Catalog.GenreListController as viewModel">
|
||||
<h3>Browse Genres</h3>
|
||||
|
||||
<p>
|
||||
Select from {{ viewModel.genres.length }} genres:
|
||||
</p>
|
||||
<ul class="list-group">
|
||||
<li ng-repeat="genre in viewModel.genres" class="list-group-item">
|
||||
<a ng-href="#/albums/genres/{{ genre.GenreId }}">{{ genre.Name }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<div class="jumbotron">
|
||||
<h1>MVC Music Store</h1>
|
||||
<img src="Images/home-showcase.png" />
|
||||
</div>
|
||||
|
||||
<div ng-controller="MusicStore.Store.Home.HomeController as viewModel">
|
||||
<ul class="row list-unstyled" id="album-list">
|
||||
<li ng-repeat="album in viewModel.albums" class="col-lg-2 col-md-2 col-sm-2 col-xs-4 container">
|
||||
<a ng-href="#/albums/{{ album.AlbumId }}">
|
||||
<img ng-alt="{{ album.Title }}" ng-src="{{ album.AlbumArtUrl }}" />
|
||||
<h4>{{ album.Title }}</h4>
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
|
@ -0,0 +1,12 @@
|
|||
<li class="dropdown" ng-controller="MusicStore.GenreMenu.GenreMenuController as viewModel">
|
||||
<a class="dropdown-toggle" data-toggle="dropdown">Store <b class="caret"></b></a>
|
||||
<ul class="dropdown-menu">
|
||||
<li ng-repeat="genre in viewModel.genres">
|
||||
<a ng-href="{{ viewModel.urlBase }}#/albums/genres/{{ genre.GenreId }}" title="{{ genre.Description }}">{{ genre.Name }}</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li>
|
||||
<a href="{{ viewModel.urlBase }}#/albums/genres">More…</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
Loading…
Reference in New Issue