From 3253fbfaf484678f6342b1938fad1ea0c6b00f26 Mon Sep 17 00:00:00 2001 From: Sercan Yemen Date: Mon, 29 Jan 2018 11:24:47 +0300 Subject: [PATCH 1/9] Updated readme with slack workspace invitation --- README.md | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/README.md b/README.md index 8c111339..07d2e78f 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,12 @@ Material Design Admin Template with Angular 5+ and Angular Material 2 +## The Community + +Share your ideas, discuss Fuse and help each other. + +[Click here](https://join.slack.com/t/fuse-theme/shared_invite/enQtMzA1NDE4NzYwMjcyLWQxODE4ODM1MWU4MWJjMDhlMGEwYzM4Mzg3N2E4YzVlZThhZjNlOTQ1Y2Q5OTBlNDNkMzJhZDIwMjgxOWQ3YWU) to join our Slack workspace. + ## Development server Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files. From 6ee6934e0df991a636b446c64039759714ae32ac Mon Sep 17 00:00:00 2001 From: Sercan Yemen Date: Tue, 30 Jan 2018 15:18:50 +0300 Subject: [PATCH 2/9] Fixed a small typo in multi-language component page --- .../components/multi-language/multi-language.component.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/main/content/components/multi-language/multi-language.component.html b/src/app/main/content/components/multi-language/multi-language.component.html index 9a29d1ee..1745347f 100644 --- a/src/app/main/content/components/multi-language/multi-language.component.html +++ b/src/app/main/content/components/multi-language/multi-language.component.html @@ -56,7 +56,7 @@ // i18n/tr.ts export const locale = { - lang: 'en', + lang: 'tr', data: { 'MAIL': { 'COMPOSE': 'YENÄ° E-POSTA' From 8431c19133c3c6fc57751b00f98602adc395f225 Mon Sep 17 00:00:00 2001 From: Sercan Yemen Date: Thu, 1 Feb 2018 15:28:40 +0300 Subject: [PATCH 3/9] Added Chart.js + Some improvements on Helper classes and Fuse Card --- package-lock.json | 51 +++++++++++++++++++++++- package.json | 2 + src/app/core/modules/shared.module.ts | 7 +++- src/app/core/scss/partials/_cards.scss | 5 +++ src/app/core/scss/partials/_helpers.scss | 27 +++++++++++++ 5 files changed, 88 insertions(+), 4 deletions(-) diff --git a/package-lock.json b/package-lock.json index c728d2c0..6d0b4db7 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1749,6 +1749,46 @@ "supports-color": "4.5.0" } }, + "chart.js": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-2.7.1.tgz", + "integrity": "sha512-pX1oQAY86MiuyZ2hY593Acbl4MLHKrBBhhmZ1YqSadzQbbsBE2rnd6WISoHjIsdf0WDeC0hbePYCz2ZxkV8L+g==", + "requires": { + "chartjs-color": "2.2.0", + "moment": "2.18.1" + }, + "dependencies": { + "moment": { + "version": "2.18.1", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.18.1.tgz", + "integrity": "sha1-w2GT3Tzhwu7SrbfIAtu8d6gbHA8=" + } + } + }, + "chartjs-color": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/chartjs-color/-/chartjs-color-2.2.0.tgz", + "integrity": "sha1-hKL7dVeH7YXDndbdjHsdiEKbrq4=", + "requires": { + "chartjs-color-string": "0.5.0", + "color-convert": "0.5.3" + }, + "dependencies": { + "color-convert": { + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-0.5.3.tgz", + "integrity": "sha1-vbbGnOZg+t/+CwAHzER+G59ygr0=" + } + } + }, + "chartjs-color-string": { + "version": "0.5.0", + "resolved": "https://registry.npmjs.org/chartjs-color-string/-/chartjs-color-string-0.5.0.tgz", + "integrity": "sha512-amWNvCOXlOUYxZVDSa0YOab5K/lmEhbFNKI55PWc4mlv28BDzA7zaoQTGxSBgJMHIW+hGX8YUrvw/FH4LyhwSQ==", + "requires": { + "color-name": "1.1.3" + } + }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", @@ -2049,8 +2089,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" }, "color-string": { "version": "0.3.0", @@ -8012,6 +8051,14 @@ "dev": true, "optional": true }, + "ng2-charts": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/ng2-charts/-/ng2-charts-1.6.0.tgz", + "integrity": "sha512-9w0WH69x5/nuqC1og2WaY39NbaBqTGIP1+5gZaH7/KPN6UEPonNg/pYnsIVklLj1DWPWXKa8+XXIJZ1jy5nLxg==", + "requires": { + "chart.js": "2.7.1" + } + }, "ngrx-store-freeze": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/ngrx-store-freeze/-/ngrx-store-freeze-0.2.0.tgz", diff --git a/package.json b/package.json index 0ddbcf4a..852ef5e2 100644 --- a/package.json +++ b/package.json @@ -43,12 +43,14 @@ "@types/prismjs": "1.9.0", "angular-calendar": "0.23.2", "angular-in-memory-web-api": "0.5.2", + "chart.js": "2.7.1", "classlist.js": "1.1.20150312", "core-js": "2.5.3", "d3": "4.12.2", "hammerjs": "2.0.8", "intl": "1.2.5", "moment": "2.20.1", + "ng2-charts": "1.6.0", "ngrx-store-freeze": "0.2.0", "ngx-color-picker": "5.3.0", "ngx-cookie-service": "1.0.10", diff --git a/src/app/core/modules/shared.module.ts b/src/app/core/modules/shared.module.ts index f0ab802f..36bbeb3d 100644 --- a/src/app/core/modules/shared.module.ts +++ b/src/app/core/modules/shared.module.ts @@ -22,6 +22,7 @@ import { FuseMaterialColorPickerComponent } from '../components/material-color-p import { FuseTranslationLoaderService } from '../services/translation-loader.service'; import { CookieService } from 'ngx-cookie-service'; import { TranslateModule } from '@ngx-translate/core'; +import { ChartsModule } from 'ng2-charts'; @NgModule({ declarations : [ @@ -43,7 +44,8 @@ import { TranslateModule } from '@ngx-translate/core'; ReactiveFormsModule, ColorPickerModule, NgxDnDModule, - NgxDatatableModule + NgxDatatableModule, + ChartsModule ], exports : [ FlexLayoutModule, @@ -62,7 +64,8 @@ import { TranslateModule } from '@ngx-translate/core'; NgxDatatableModule, FuseIfOnDomDirective, FuseMaterialColorPickerComponent, - TranslateModule + TranslateModule, + ChartsModule ], entryComponents: [ FuseConfirmDialogComponent diff --git a/src/app/core/scss/partials/_cards.scss b/src/app/core/scss/partials/_cards.scss index a7be8cc2..06ff9755 100644 --- a/src/app/core/scss/partials/_cards.scss +++ b/src/app/core/scss/partials/_cards.scss @@ -9,6 +9,11 @@ min-width: 0; } + &.auto-width { + min-width: 0; + max-width: none; + } + // Buttons .mat-button { min-width: 0 !important; diff --git a/src/app/core/scss/partials/_helpers.scss b/src/app/core/scss/partials/_helpers.scss index d4cea445..1ca0e9e2 100644 --- a/src/app/core/scss/partials/_helpers.scss +++ b/src/app/core/scss/partials/_helpers.scss @@ -215,4 +215,31 @@ $border-style: 1px solid rgba(0, 0, 0, 0.12); // ###################### .border-radius-100 { border-radius: 100%; +} + +.border-radius-2 { + border-radius: 2px; +} + +.border-radius-4 { + border-radius: 4px; +} + +.border-radius-8 { + border-radius: 8px; +} + +.border-radius-16 { + border-radius: 16px; +} + +// ###################### +// CURSOR HELPERS +// ###################### +.cursor-pointer { + cursor: pointer; +} + +.cursor-default { + cursor: default; } \ No newline at end of file From dfd430712d33d1ef5943082b6f751430215186ef Mon Sep 17 00:00:00 2001 From: Sercan Yemen Date: Thu, 1 Feb 2018 15:30:30 +0300 Subject: [PATCH 4/9] Fixed some naming inconsistencies in Project dashboard + Added fake db for Analytics Dashboard --- src/app/fuse-fake-db/dashboard-analytics.ts | 518 ++++++++++++++++++ ...ects-dashboard.ts => dashboard-project.ts} | 2 +- src/app/fuse-fake-db/fuse-fake-db.service.ts | 131 +++-- .../dashboards/project/project.component.html | 214 +++++--- .../dashboards/project/project.component.scss | 10 + .../dashboards/project/project.component.ts | 15 +- .../apps/dashboards/project/project.module.ts | 13 +- .../dashboards/project/project.service.ts | 62 +++ 8 files changed, 829 insertions(+), 136 deletions(-) create mode 100644 src/app/fuse-fake-db/dashboard-analytics.ts rename src/app/fuse-fake-db/{projects-dashboard.ts => dashboard-project.ts} (99%) create mode 100644 src/app/main/content/apps/dashboards/project/project.service.ts diff --git a/src/app/fuse-fake-db/dashboard-analytics.ts b/src/app/fuse-fake-db/dashboard-analytics.ts new file mode 100644 index 00000000..086e5d34 --- /dev/null +++ b/src/app/fuse-fake-db/dashboard-analytics.ts @@ -0,0 +1,518 @@ +export class AnalyticsDashboardDb +{ + public static widgets = { + /*widget2: { + overallGrowthPercentage: 17, + overallGrowthTrend : 'decrease', + averageDailyPercentage : 28, + averageDailyTrend : 'increase' + },*/ + widget1: { + chartType: 'line', + datasets : { + '2015': [ + { + label: 'Sales', + data : [1.9, 3, 3.4, 2.2, 2.9, 3.9, 2.5, 3.8, 4.1, 3.8, 3.2, 2.9], + fill : 'start' + + } + ], + '2016': [ + { + label: 'Sales', + data : [2.2, 2.9, 3.9, 2.5, 3.8, 3.2, 2.9, 1.9, 3, 3.4, 4.1, 3.8], + fill : 'start' + + } + ], + '2017': [ + { + label: 'Sales', + data : [3.9, 2.5, 3.8, 4.1, 1.9, 3, 3.8, 3.2, 2.9, 3.4, 2.2, 2.9], + fill : 'start' + + } + ] + + }, + labels : ['JAN', 'FEB', 'MAR', 'APR', 'MAY', 'JUN', 'JUL', 'AUG', 'SEP', 'OCT', 'NOV', 'DEC'], + colors : [ + { + borderColor : '#42a5f5', + backgroundColor : '#42a5f5', + pointBackgroundColor : '#1e88e5', + pointHoverBackgroundColor: '#1e88e5', + pointBorderColor : '#ffffff', + pointHoverBorderColor : '#ffffff' + } + ], + options : { + spanGaps : false, + legend : { + display: false + }, + maintainAspectRatio: false, + layout : { + padding: { + top : 32, + left : 32, + right: 32 + } + }, + elements : { + point: { + radius : 4, + borderWidth : 2, + hoverRadius : 4, + hoverBorderWidth: 2 + }, + line : { + tension: 0 + } + }, + scales : { + xAxes: [ + { + gridLines: { + display : false, + drawBorder : false, + tickMarkLength: 18 + }, + ticks : { + fontColor: '#ffffff' + } + } + ], + yAxes: [ + { + display: false, + ticks : { + min : 1.5, + max : 5, + stepSize: 0.5 + } + } + ] + }, + plugins : { + filler : { + propagate: false + }, + xLabelsOnTop: { + active: true + } + } + } + }, + widget2: { + conversion: { + value : 492, + ofTarget: 22 + }, + scheme : { + domain: ['#5c84f1'] + }, + data : [ + { + name : 'Monday', + value: 221 + }, + { + name : 'Tuesday', + value: 428 + }, + { + name : 'Wednesday', + value: 492 + }, + { + name : 'Thursday', + value: 471 + }, + { + name : 'Friday', + value: 413 + }, + { + name : 'Saturday', + value: 344 + }, + { + name : 'Sunday', + value: 294 + } + ] + }, + widget3: { + impressions: { + value : '87.4M', + ofTarget: 12.3 + }, + scheme : { + domain: ['#5c84f1'] + }, + data : [ + { + name : 'Impressions', + series: [ + { + name : 'Jan 1', + value: 670000 + }, + { + name : 'Jan 2', + value: 540000 + }, + { + name : 'Jan 3', + value: 820000 + }, + { + name : 'Jan 4', + value: 570000 + }, + { + name : 'Jan 5', + value: 720000 + }, + { + name : 'Jan 6', + value: 570000 + }, + { + name : 'Jan 7', + value: 870000 + }, + { + name : 'Jan 8', + value: 720000 + }, + { + name : 'Jan 9', + value: 890000 + }, + { + name : 'Jan 10', + value: 987000 + }, + { + name : 'Jan 11', + value: 1120000 + }, + { + name : 'Jan 12', + value: 1360000 + }, + { + name : 'Jan 13', + value: 1100000 + }, + { + name : 'Jan 14', + value: 1490000 + }, + { + name : 'Jan 15', + value: 980000 + } + ] + } + ] + }, + widget4: { + visits: { + value : 882, + ofTarget: -12 + }, + scheme: { + domain: ['#f44336'] + }, + data : [ + { + name : 'Monday', + value: 432 + }, + { + name : 'Tuesday', + value: 428 + }, + { + name : 'Wednesday', + value: 477 + }, + { + name : 'Thursday', + value: 471 + }, + { + name : 'Friday', + value: 456 + }, + { + name : 'Saturday', + value: 267 + }, + { + name : 'Sunday', + value: 231 + } + ] + }, + widget5: { + chartType: 'line', + datasets : { + 'yesterday': [ + { + label: 'Visitors', + data : [190, 300, 340, 220, 290, 390, 250, 380, 410, 380, 320, 290], + fill : 'start' + + }, + { + label: 'Page views', + data : [2200, 2900, 3900, 2500, 3800, 3200, 2900, 1900, 3000, 3400, 4100, 3800], + fill : 'start' + } + ], + 'today' : [ + { + label: 'Visitors', + data : [410, 380, 320, 290, 190, 390, 250, 380, 300, 340, 220, 290], + fill : 'start' + }, + { + label: 'Page Views', + data : [3000, 3400, 4100, 3800, 2200, 3200, 2900, 1900, 2900, 3900, 2500, 3800], + fill : 'start' + + } + ] + }, + labels : ['12am', '2am', '4am', '6am', '8am', '10am', '12pm', '2pm', '4pm', '6pm', '8pm', '10pm'], + colors : [ + { + borderColor : '#3949ab', + backgroundColor : '#3949ab', + pointBackgroundColor : '#3949ab', + pointHoverBackgroundColor: '#3949ab', + pointBorderColor : '#ffffff', + pointHoverBorderColor : '#ffffff' + }, + { + borderColor : 'rgba(30, 136, 229, 0.87)', + backgroundColor : 'rgba(30, 136, 229, 0.87)', + pointBackgroundColor : 'rgba(30, 136, 229, 0.87)', + pointHoverBackgroundColor: 'rgba(30, 136, 229, 0.87)', + pointBorderColor : '#ffffff', + pointHoverBorderColor : '#ffffff' + } + ], + options : { + spanGaps : false, + legend : { + display: false + }, + maintainAspectRatio: false, + tooltips : { + position : 'nearest', + mode : 'index', + intersect: false + }, + layout : { + padding: { + left : 24, + right: 32 + } + }, + elements : { + point: { + radius : 4, + borderWidth : 2, + hoverRadius : 4, + hoverBorderWidth: 2 + } + }, + scales : { + xAxes: [ + { + gridLines: { + display: false + }, + ticks : { + fontColor: 'rgba(0,0,0,0.54)' + } + } + ], + yAxes: [ + { + gridLines: { + tickMarkLength: 16 + }, + ticks : { + stepSize: 1000 + } + } + ] + }, + plugins : { + filler: { + propagate: false + } + } + } + }, + widget6: { + markers: [ + { + lat: 52, + lng: -73, + label: '120' + }, + { + lat: 37, + lng: -104, + label: '498' + }, + { + lat: 21, + lng: -7, + label: '443' + }, + { + lat: 55, + lng: 75, + label: '332' + }, + { + lat: 51, + lng: 7, + label: '50' + }, + { + lat: 31, + lng: 12, + label: '221' + }, + { + lat: 45, + lng: 44, + label: '455' + }, + { + lat: -26, + lng: 134, + label: '231' + }, + { + lat: -9, + lng: -60, + label: '67' + }, + { + lat: 33, + lng: 104, + label: '665' + } + ] + }, + widget7: { + scheme : { + domain: ['#4867d2', '#5c84f1', '#89a9f4'] + }, + devices: [ + { + name : 'Desktop', + value : 92.8, + change: -0.6 + }, + { + name : 'Mobile', + value : 6.1, + change: 0.7 + }, + { + name : 'Tablet', + value : 1.1, + change: 0.1 + } + ] + }, + widget8: { + scheme : { + domain: ['#5c84f1'] + }, + today : '12,540', + change : { + value : 321, + percentage: 2.05 + }, + data : [ + { + name : 'Sales', + series: [ + { + name : 'Jan 1', + value: 540 + }, + { + name : 'Jan 2', + value: 539 + }, + { + name : 'Jan 3', + value: 538 + }, + { + name : 'Jan 4', + value: 539 + }, + { + name : 'Jan 5', + value: 540 + }, + { + name : 'Jan 6', + value: 539 + }, + { + name : 'Jan 7', + value: 540 + } + ] + } + ], + dataMin: 538, + dataMax: 541 + }, + widget9: { + rows: [ + { + title : 'Holiday Travel', + clicks : 3621, + conversion: 90 + }, + { + title : 'Get Away Deals', + clicks : 703, + conversion: 7 + }, + { + title : 'Airfare', + clicks : 532, + conversion: 0 + }, + { + title : 'Vacation', + clicks : 201, + conversion: 8 + }, + { + title : 'Hotels', + clicks : 94, + conversion: 4 + } + ] + } + }; +} diff --git a/src/app/fuse-fake-db/projects-dashboard.ts b/src/app/fuse-fake-db/dashboard-project.ts similarity index 99% rename from src/app/fuse-fake-db/projects-dashboard.ts rename to src/app/fuse-fake-db/dashboard-project.ts index 1e520440..8ca46d0b 100644 --- a/src/app/fuse-fake-db/projects-dashboard.ts +++ b/src/app/fuse-fake-db/dashboard-project.ts @@ -1,4 +1,4 @@ -export class ProjectsDashboardDb +export class ProjectDashboardDb { public static projects = [ { diff --git a/src/app/fuse-fake-db/fuse-fake-db.service.ts b/src/app/fuse-fake-db/fuse-fake-db.service.ts index 41206e23..e54dd9bc 100644 --- a/src/app/fuse-fake-db/fuse-fake-db.service.ts +++ b/src/app/fuse-fake-db/fuse-fake-db.service.ts @@ -1,62 +1,97 @@ import { InMemoryDbService } from 'angular-in-memory-web-api'; -import { MailFakeDb } from './mail'; -import { ChatFakeDb } from './chat'; +import { ProjectDashboardDb } from './dashboard-project'; +import { AnalyticsDashboardDb } from './dashboard-analytics'; import { CalendarFakeDb } from './calendar'; -import { TodoFakeDb } from './todo'; -import { ProfileFakeDb } from './profile'; -import { ContactsFakeDb } from './contacts'; -import { InvoiceFakeDb } from './invoice'; -import { FileManagerFakeDb } from './file-manager'; -import { SearchFakeDb } from './search'; -import { QuickPanelFakeDb } from './quick-panel'; -import { IconsFakeDb } from './icons'; -import { ProjectsDashboardDb } from './projects-dashboard'; -import { ScrumboardFakeDb } from './scrumboard'; -import { FaqFakeDb } from './faq'; -import { KnowledgeBaseFakeDb } from './knowledge-base'; import { ECommerceFakeDb } from './e-commerce'; import { AcademyFakeDb } from './academy'; +import { MailFakeDb } from './mail'; +import { ChatFakeDb } from './chat'; +import { FileManagerFakeDb } from './file-manager'; +import { ContactsFakeDb } from './contacts'; +import { TodoFakeDb } from './todo'; +import { ScrumboardFakeDb } from './scrumboard'; +import { InvoiceFakeDb } from './invoice'; +import { ProfileFakeDb } from './profile'; +import { SearchFakeDb } from './search'; +import { FaqFakeDb } from './faq'; +import { KnowledgeBaseFakeDb } from './knowledge-base'; +import { IconsFakeDb } from './icons'; +import { QuickPanelFakeDb } from './quick-panel'; export class FuseFakeDbService implements InMemoryDbService { createDb() { return { - 'mail-mails' : MailFakeDb.mails, - 'mail-folders' : MailFakeDb.folders, - 'mail-filters' : MailFakeDb.filters, - 'mail-labels' : MailFakeDb.labels, - 'chat-contacts' : ChatFakeDb.contacts, - 'chat-chats' : ChatFakeDb.chats, - 'chat-user' : ChatFakeDb.user, - 'calendar' : CalendarFakeDb.data, - 'todo-todos' : TodoFakeDb.todos, - 'todo-filters' : TodoFakeDb.filters, - 'todo-tags' : TodoFakeDb.tags, - 'profile-timeline' : ProfileFakeDb.timeline, - 'profile-photos-videos' : ProfileFakeDb.photosVideos, - 'profile-about' : ProfileFakeDb.about, - 'contacts-contacts' : ContactsFakeDb.contacts, - 'contacts-user' : ContactsFakeDb.user, - 'invoice' : InvoiceFakeDb.invoice, - 'file-manager' : FileManagerFakeDb.files, - 'search-classic' : SearchFakeDb.classic, - 'search-table' : SearchFakeDb.table, - 'quick-panel-notes' : QuickPanelFakeDb.notes, - 'quick-panel-events' : QuickPanelFakeDb.events, - 'icons' : IconsFakeDb.icons, - 'projects-dashboard-projects': ProjectsDashboardDb.projects, - 'projects-dashboard-widgets' : ProjectsDashboardDb.widgets, - 'scrumboard-boards' : ScrumboardFakeDb.boards, - 'faq' : FaqFakeDb.data, - 'knowledge-base' : KnowledgeBaseFakeDb.data, - 'e-commerce-dashboard' : ECommerceFakeDb.dashboard, - 'e-commerce-products' : ECommerceFakeDb.products, - 'e-commerce-orders' : ECommerceFakeDb.orders, - 'academy-categories' : AcademyFakeDb.categories, - 'academy-courses' : AcademyFakeDb.courses, - 'academy-course' : AcademyFakeDb.course + // Dashboards + 'project-dashboard-projects' : ProjectDashboardDb.projects, + 'project-dashboard-widgets' : ProjectDashboardDb.widgets, + 'analytics-dashboard-widgets': AnalyticsDashboardDb.widgets, + + // Calendar + 'calendar': CalendarFakeDb.data, + + // E-Commerce + 'e-commerce-dashboard': ECommerceFakeDb.dashboard, + 'e-commerce-products' : ECommerceFakeDb.products, + 'e-commerce-orders' : ECommerceFakeDb.orders, + + // Academy + 'academy-categories': AcademyFakeDb.categories, + 'academy-courses' : AcademyFakeDb.courses, + 'academy-course' : AcademyFakeDb.course, + + // Mail + 'mail-mails' : MailFakeDb.mails, + 'mail-folders': MailFakeDb.folders, + 'mail-filters': MailFakeDb.filters, + 'mail-labels' : MailFakeDb.labels, + + // Chat + 'chat-contacts': ChatFakeDb.contacts, + 'chat-chats' : ChatFakeDb.chats, + 'chat-user' : ChatFakeDb.user, + + // File Manager + 'file-manager': FileManagerFakeDb.files, + + // Contacts + 'contacts-contacts': ContactsFakeDb.contacts, + 'contacts-user' : ContactsFakeDb.user, + + // Todo + 'todo-todos' : TodoFakeDb.todos, + 'todo-filters': TodoFakeDb.filters, + 'todo-tags' : TodoFakeDb.tags, + + // Scrumboard + 'scrumboard-boards': ScrumboardFakeDb.boards, + + // Invoice + 'invoice': InvoiceFakeDb.invoice, + + // Profile + 'profile-timeline' : ProfileFakeDb.timeline, + 'profile-photos-videos': ProfileFakeDb.photosVideos, + 'profile-about' : ProfileFakeDb.about, + + // Search + 'search-classic': SearchFakeDb.classic, + 'search-table' : SearchFakeDb.table, + + // FAQ + 'faq': FaqFakeDb.data, + + // Knowledge base + 'knowledge-base': KnowledgeBaseFakeDb.data, + + // Icons + 'icons': IconsFakeDb.icons, + + // Quick Panel + 'quick-panel-notes' : QuickPanelFakeDb.notes, + 'quick-panel-events': QuickPanelFakeDb.events }; } } diff --git a/src/app/main/content/apps/dashboards/project/project.component.html b/src/app/main/content/apps/dashboards/project/project.component.html index e4c879a9..a93f76fb 100644 --- a/src/app/main/content/apps/dashboards/project/project.component.html +++ b/src/app/main/content/apps/dashboards/project/project.component.html @@ -10,7 +10,9 @@
- Welcome back, John! + Welcome back, John! + @@ -41,16 +44,20 @@ -
+
- +
-
+
- @@ -67,12 +74,17 @@
{{widgets.widget1.data.count[widgets.widget1.currentRange]}}
-
{{widgets.widget1.data.label}}
+
{{widgets.widget1.data.label}} +
- {{widgets.widget1.data.extra.label}}: - {{widgets.widget1.data.extra.count[widgets.widget1.currentRange]}} + + {{widgets.widget1.data.extra.label}}: + + + {{widgets.widget1.data.extra.count[widgets.widget1.currentRange]}} +
@@ -94,14 +106,17 @@ - +
-
+
{{widgets.widget2.title}}
-
@@ -110,11 +125,14 @@
{{widgets.widget2.data.count}}
-
{{widgets.widget2.data.label}}
+
{{widgets.widget2.data.label}} +
- {{widgets.widget2.data.extra.label}}: + + {{widgets.widget2.data.extra.label}}: + {{widgets.widget2.data.extra.count}}
@@ -137,14 +155,17 @@ - +
-
+
{{widgets.widget3.title}}
-
@@ -153,11 +174,14 @@
{{widgets.widget3.data.count}}
-
{{widgets.widget3.data.label}}
+
{{widgets.widget3.data.label}} +
- {{widgets.widget3.data.extra.label}}: + + {{widgets.widget3.data.extra.label}}: + {{widgets.widget3.data.extra.count}}
@@ -180,26 +204,33 @@ - +
-
+
{{widgets.widget4.title}}
-
-
{{widgets.widget4.data.count}} +
+ {{widgets.widget4.data.count}} +
+
{{widgets.widget4.data.label}}
-
{{widgets.widget4.data.label}}
- {{widgets.widget4.data.extra.label}}: + + {{widgets.widget4.data.extra.label}}: + {{widgets.widget4.data.extra.count}}
@@ -221,18 +252,19 @@ - - +
-
+
-
{{widgets.widget5.title}}
+
{{widgets.widget5.title}}
-
+
-
-
+
+ +
-
+
+ *ngFor="let widget of widgets.widget5.supporting | keys" + class="mb-24">
{{widget.value.label}}
@@ -297,17 +332,19 @@ - - +
-
+
{{widgets.widget6.title}}
- + {{range.value}} @@ -330,14 +367,21 @@
-
-
- {{widgets.widget6.footerLeft.count[widget6.currentRange]}} +
+
+ + {{widgets.widget6.footerLeft.count[widget6.currentRange]}} + {{widgets.widget6.footerLeft.title}}
-
- {{widgets.widget6.footerRight.count[widget6.currentRange]}} +
+ + {{widgets.widget6.footerRight.count[widget6.currentRange]}} + {{widgets.widget6.footerRight.title}}
@@ -349,12 +393,14 @@ - +
-
+
{{widgets.widget7.title}}
- -
+
- +
-
+
{{widgets.widget8.title}}
@@ -431,11 +478,13 @@ - +
-
+
{{widgets.widget9.title}}
@@ -447,7 +496,7 @@
-
{{widgets.widget9.weeklySpent.title}}
@@ -474,7 +523,7 @@
-
{{widgets.widget9.totalSpent.title}}
@@ -501,7 +550,7 @@
-
{{widgets.widget9.remaining.title}}
@@ -528,7 +577,7 @@
-
+
{{widgets.widget9.totalBudget.title}}
$ @@ -543,7 +592,8 @@ - +
@@ -569,7 +619,8 @@ {{cell.value}} - {{cell.icon}} + {{cell.icon}} + @@ -590,17 +641,21 @@ -
+
- +
-
+
{{widgets.widget11.title}}
-
{{widgets.widget11.table.rows.length}} +
+ {{widgets.widget11.table.rows.length}} members
@@ -620,13 +675,15 @@ Name -

{{contact.name}} {{contact.lastName}}

+

{{contact.name}} + {{contact.lastName}}

- Position + Position +

{{contact.position}} @@ -636,7 +693,8 @@ - Office + Office +

{{contact.office}} @@ -644,10 +702,10 @@ - - Email + Email +

{{contact.phone}} @@ -665,7 +724,8 @@ - + @@ -688,7 +748,8 @@ - +

@@ -768,7 +829,8 @@
- {{widgets.weatherWidget.locations[widgets.weatherWidget.currentLocation].temp[widgets.weatherWidget.tempUnit]}} @@ -789,12 +851,16 @@
- {{widgets.weatherWidget.locations[widgets.weatherWidget.currentLocation].windDirection}} + + {{widgets.weatherWidget.locations[widgets.weatherWidget.currentLocation].windDirection}} +
- {{widgets.weatherWidget.locations[widgets.weatherWidget.currentLocation].rainProbability}} + + {{widgets.weatherWidget.locations[widgets.weatherWidget.currentLocation].rainProbability}} +
@@ -806,7 +872,9 @@ {{day.temp[widgets.weatherWidget.tempUnit]}} ° - {{widgets.weatherWidget.tempUnit}} + + {{widgets.weatherWidget.tempUnit}} +
diff --git a/src/app/main/content/apps/dashboards/project/project.component.scss b/src/app/main/content/apps/dashboards/project/project.component.scss index 75e7b0a1..62b6e31e 100644 --- a/src/app/main/content/apps/dashboards/project/project.component.scss +++ b/src/app/main/content/apps/dashboards/project/project.component.scss @@ -56,5 +56,15 @@ min-width: 250px !important; max-width: 250px !important; } + + .widget { + + &.widget5 { + + .gridline-path.gridline-path-horizontal { + display: none; + } + } + } } } diff --git a/src/app/main/content/apps/dashboards/project/project.component.ts b/src/app/main/content/apps/dashboards/project/project.component.ts index 9c2b6c72..3f839db3 100644 --- a/src/app/main/content/apps/dashboards/project/project.component.ts +++ b/src/app/main/content/apps/dashboards/project/project.component.ts @@ -1,19 +1,20 @@ import { Component, OnDestroy, OnInit, ViewEncapsulation } from '@angular/core'; -import { ProjectsDashboardService } from './projects.service'; import * as shape from 'd3-shape'; import { BehaviorSubject } from 'rxjs/BehaviorSubject'; import { Observable } from 'rxjs/Observable'; import { DataSource } from '@angular/cdk/collections'; + +import { ProjectDashboardService } from './project.service'; import { fuseAnimations } from '../../../../../core/animations'; @Component({ - selector : 'fuse-project', + selector : 'fuse-project-dashboard', templateUrl : './project.component.html', styleUrls : ['./project.component.scss'], encapsulation: ViewEncapsulation.None, animations : fuseAnimations }) -export class FuseProjectComponent implements OnInit, OnDestroy +export class FuseProjectDashboardComponent implements OnInit, OnDestroy { projects: any[]; selectedProject: any; @@ -28,13 +29,11 @@ export class FuseProjectComponent implements OnInit, OnDestroy dateNow = Date.now(); - constructor(private projectsDashboardService: ProjectsDashboardService) + constructor(private projectDashboardService: ProjectDashboardService) { - this.projects = this.projectsDashboardService.projects; - + this.projects = this.projectDashboardService.projects; this.selectedProject = this.projects[0]; - - this.widgets = this.projectsDashboardService.widgets; + this.widgets = this.projectDashboardService.widgets; /** * Widget 5 diff --git a/src/app/main/content/apps/dashboards/project/project.module.ts b/src/app/main/content/apps/dashboards/project/project.module.ts index 95816a25..f2d40046 100644 --- a/src/app/main/content/apps/dashboards/project/project.module.ts +++ b/src/app/main/content/apps/dashboards/project/project.module.ts @@ -1,17 +1,18 @@ import { NgModule } from '@angular/core'; import { RouterModule, Routes } from '@angular/router'; -import { FuseProjectComponent } from './project.component'; import { SharedModule } from '../../../../../core/modules/shared.module'; -import { ProjectsDashboardService } from './projects.service'; + +import { FuseProjectDashboardComponent } from './project.component'; +import { ProjectDashboardService } from './project.service'; import { FuseWidgetModule } from '../../../../../core/components/widget/widget.module'; import { NgxChartsModule } from '@swimlane/ngx-charts'; const routes: Routes = [ { path : '**', - component: FuseProjectComponent, + component: FuseProjectDashboardComponent, resolve : { - data: ProjectsDashboardService + data: ProjectDashboardService } } ]; @@ -24,10 +25,10 @@ const routes: Routes = [ NgxChartsModule ], declarations: [ - FuseProjectComponent + FuseProjectDashboardComponent ], providers : [ - ProjectsDashboardService + ProjectDashboardService ] }) export class FuseProjectDashboardModule diff --git a/src/app/main/content/apps/dashboards/project/project.service.ts b/src/app/main/content/apps/dashboards/project/project.service.ts new file mode 100644 index 00000000..3489f3b3 --- /dev/null +++ b/src/app/main/content/apps/dashboards/project/project.service.ts @@ -0,0 +1,62 @@ +import { Injectable } from '@angular/core'; +import { ActivatedRouteSnapshot, Resolve, RouterStateSnapshot } from '@angular/router'; +import { Observable } from 'rxjs/Observable'; +import { HttpClient } from '@angular/common/http'; + +@Injectable() +export class ProjectDashboardService implements Resolve +{ + projects: any[]; + widgets: any[]; + + constructor( + private http: HttpClient + ) + { + } + + /** + * Resolve + * @param {ActivatedRouteSnapshot} route + * @param {RouterStateSnapshot} state + * @returns {Observable | Promise | any} + */ + resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | any + { + + return new Promise((resolve, reject) => { + + Promise.all([ + this.getProjects(), + this.getWidgets() + ]).then( + () => { + resolve(); + }, + reject + ); + }); + } + + getProjects(): Promise + { + return new Promise((resolve, reject) => { + this.http.get('api/project-dashboard-projects') + .subscribe((response: any) => { + this.projects = response; + resolve(response); + }, reject); + }); + } + + getWidgets(): Promise + { + return new Promise((resolve, reject) => { + this.http.get('api/project-dashboard-widgets') + .subscribe((response: any) => { + this.widgets = response; + resolve(response); + }, reject); + }); + } +} From 8f5e947c2830266b5a44567eb2ce78947ea8e572 Mon Sep 17 00:00:00 2001 From: Sercan Yemen Date: Thu, 1 Feb 2018 15:30:44 +0300 Subject: [PATCH 5/9] Added a new dashboard (Analytics) --- src/app/main/content/apps/apps.module.ts | 4 + .../analytics/analytics.component.html | 489 ++++++++++++++++++ .../analytics/analytics.component.scss | 64 +++ .../analytics/analytics.component.ts | 91 ++++ .../dashboards/analytics/analytics.module.ts | 41 ++ .../analytics.service.ts} | 18 +- src/app/navigation/navigation.model.ts | 6 + 7 files changed, 697 insertions(+), 16 deletions(-) create mode 100644 src/app/main/content/apps/dashboards/analytics/analytics.component.html create mode 100644 src/app/main/content/apps/dashboards/analytics/analytics.component.scss create mode 100644 src/app/main/content/apps/dashboards/analytics/analytics.component.ts create mode 100644 src/app/main/content/apps/dashboards/analytics/analytics.module.ts rename src/app/main/content/apps/dashboards/{project/projects.service.ts => analytics/analytics.service.ts} (69%) diff --git a/src/app/main/content/apps/apps.module.ts b/src/app/main/content/apps/apps.module.ts index 56d93e17..64434a06 100644 --- a/src/app/main/content/apps/apps.module.ts +++ b/src/app/main/content/apps/apps.module.ts @@ -8,6 +8,10 @@ const routes = [ path : 'dashboards/project', loadChildren: './dashboards/project/project.module#FuseProjectDashboardModule' }, + { + path : 'dashboards/analytics', + loadChildren: './dashboards/analytics/analytics.module#FuseAnalyticsDashboardModule' + }, { path : 'mail', loadChildren: './mail/mail.module#FuseMailModule' diff --git a/src/app/main/content/apps/dashboards/analytics/analytics.component.html b/src/app/main/content/apps/dashboards/analytics/analytics.component.html new file mode 100644 index 00000000..803fdcd2 --- /dev/null +++ b/src/app/main/content/apps/dashboards/analytics/analytics.component.html @@ -0,0 +1,489 @@ +
+ + + +
+ +
+
+ Visitors + Unique visitors by month +
+
+
+ 2015 +
+
+ 2016 +
+
+ 2017 +
+
+
+ +
+ + +
+ +
+ +
+ +
+ +
+ How are your active users trending over time? +
+ +
+ + +
+ +
+ +
+
Conversion
+
+ {{widgets.widget2.conversion.value}} +
+
+ +
+ + {{widgets.widget2.conversion.ofTarget}}% + + + {{widgets.widget2.conversion.ofTarget}}% + + of target +
+ +
+ + +
+ +
+ +
+ + + +
+ +
+ +
+
Impressions
+
+ {{widgets.widget3.impressions.value}} +
+
+ +
+ + {{widgets.widget3.impressions.ofTarget}}% + + + {{widgets.widget3.impressions.ofTarget}}% + + of target +
+ +
+ + +
+ +
+ +
+ + + +
+ +
+ +
+
Visits
+
+ {{widgets.widget4.visits.value}} +
+
+ +
+ + {{widgets.widget4.visits.ofTarget}}% + + + {{widgets.widget4.visits.ofTarget}}% + + of target +
+ +
+ + +
+ +
+ +
+ + +
+ + +
+ How many pages your users visit? +
+ +
+ +
+
+ Visitors & Page views +
+
+
+ Yesterday +
+
+ Today +
+
+
+ +
+ + +
+ +
+ + + +
+ Where are your users? +
+ +
+ + + + + {{marker.label}} + + + + +
+ + + +
+ +
+ +
+ + +
+ What are your top devices? +
+ +
+ +
+
Sessions by device
+
+ +
+ + +
+ +
+ +
+ +
{{device.name}}
+
{{device.value}}%
+ +
+ + arrow_downward + + + + arrow_upward + + +
+ {{device.change}}% +
+
+ +
+ +
+ +
+ +
+ + + Today + Yesterday + Last 7 days + Last 28 days + Last 90 days + + + + +
+ +
+ + + +
+ How are your sales? +
+ +
+ +
+ +
+
+
Sales
+
Lifetime sum of your sales
+
+ +
+ + + + + + + +
+
+ +
+
{{widgets.widget8.today}}
+
+ trending_up + trending_down +
{{widgets.widget8.change.value}} + ({{widgets.widget8.change.percentage}}%) +
+
+
+ +
+ + + +
+ + +
+
+ + +
+ + +
+
+ + +
+ + +
+
+
+ +
+ + + +
+ What are your top campaigns? +
+ +
+ +
+
Top campaigns
+ +
+ + + + + + + +
+
+ + + + + + + + + + + + + + + + +
ClicksConv
{{row.title}}{{row.clicks}}{{row.conversion}}
+ +
+ +
+ +
+ +
+ + +
+ +
+ +
+ + +
diff --git a/src/app/main/content/apps/dashboards/analytics/analytics.component.scss b/src/app/main/content/apps/dashboards/analytics/analytics.component.scss new file mode 100644 index 00000000..b468e72c --- /dev/null +++ b/src/app/main/content/apps/dashboards/analytics/analytics.component.scss @@ -0,0 +1,64 @@ +#dashboard-analytics { + + /*#widget1 { + + .line-series { + + .line { + stroke-width: 2px; + } + } + + .gridline-path { + + &.gridline-path-horizontal { + stroke: rgba(255, 255, 255, 0.12); + } + + &.gridline-path-vertical { + stroke-width: 0; + } + } + + .tick { + + text { + fill: rgba(255, 255, 255, 0.37) + } + } + + .tooltip-anchor { + fill: rgba(255, 255, 255, 0.54); + } + }*/ + + .main-widget { + display: flex; + flex-direction: column; + } + + .content { + display: flex; + flex: 1 0 auto; + padding: 32px; + + .left { + display: flex; + flex-direction: column; + flex: 1 0 auto; + + .widget { + flex: 1 0 auto; + } + } + + .right { + display: flex; + flex: 0 0 auto; + width: 320px; + min-width: 320px; + max-width: 320px; + } + } + +} diff --git a/src/app/main/content/apps/dashboards/analytics/analytics.component.ts b/src/app/main/content/apps/dashboards/analytics/analytics.component.ts new file mode 100644 index 00000000..f4bb947b --- /dev/null +++ b/src/app/main/content/apps/dashboards/analytics/analytics.component.ts @@ -0,0 +1,91 @@ +import { Component, ViewEncapsulation } from '@angular/core'; + +import { AnalyticsDashboardService } from './analytics.service'; +import { fuseAnimations } from '../../../../../core/animations'; + +@Component({ + selector : 'fuse-analytics-dashboard', + templateUrl : './analytics.component.html', + styleUrls : ['./analytics.component.scss'], + encapsulation: ViewEncapsulation.None, + animations : fuseAnimations +}) +export class FuseAnalyticsDashboardComponent +{ + widgets: any; + widget1SelectedYear = '2016'; + widget5SelectedDay = 'today'; + + constructor( + private analyticsDashboardService: AnalyticsDashboardService + ) + { + // Get the widgets from the service + this.widgets = this.analyticsDashboardService.widgets; + + // Register the custom chart.js plugin + this.registerCustomChartJSPlugin(); + } + + /** + * Register a custom plugin + */ + registerCustomChartJSPlugin() + { + (window).Chart.plugins.register({ + afterDatasetsDraw: function (chart, easing) { + // Only activate the plugin if it's made available + // in the options + if ( + !chart.options.plugins.xLabelsOnTop || + (chart.options.plugins.xLabelsOnTop && chart.options.plugins.xLabelsOnTop.active === false) + ) + { + return; + } + + // To only draw at the end of animation, check for easing === 1 + const ctx = chart.ctx; + + chart.data.datasets.forEach(function (dataset, i) { + const meta = chart.getDatasetMeta(i); + if ( !meta.hidden ) + { + meta.data.forEach(function (element, index) { + + // Draw the text in black, with the specified font + ctx.fillStyle = 'rgba(255, 255, 255, 0.7)'; + const fontSize = 13; + const fontStyle = 'normal'; + const fontFamily = 'Roboto, Helvetica Neue, Arial'; + ctx.font = (window).Chart.helpers.fontString(fontSize, fontStyle, fontFamily); + + // Just naively convert to string for now + const dataString = dataset.data[index].toString() + 'k'; + + // Make sure alignment settings are correct + ctx.textAlign = 'center'; + ctx.textBaseline = 'middle'; + const padding = 15; + const startY = 24; + const position = element.tooltipPosition(); + ctx.fillText(dataString, position.x, startY); + + ctx.save(); + + ctx.beginPath(); + ctx.setLineDash([5, 3]); + ctx.moveTo(position.x, startY + padding); + ctx.lineTo(position.x, position.y - padding); + ctx.strokeStyle = 'rgba(255,255,255,0.12)'; + ctx.stroke(); + + ctx.restore(); + }); + } + }); + } + }); + } +} + diff --git a/src/app/main/content/apps/dashboards/analytics/analytics.module.ts b/src/app/main/content/apps/dashboards/analytics/analytics.module.ts new file mode 100644 index 00000000..7466e8b0 --- /dev/null +++ b/src/app/main/content/apps/dashboards/analytics/analytics.module.ts @@ -0,0 +1,41 @@ +import { NgModule } from '@angular/core'; +import { RouterModule, Routes } from '@angular/router'; +import { SharedModule } from '../../../../../core/modules/shared.module'; +import { NgxChartsModule } from '@swimlane/ngx-charts'; +import { AgmCoreModule } from '@agm/core'; + +import { FuseAnalyticsDashboardComponent } from './analytics.component'; +import { AnalyticsDashboardService } from './analytics.service'; +import { FuseWidgetModule } from '../../../../../core/components/widget/widget.module'; + +const routes: Routes = [ + { + path : '**', + component: FuseAnalyticsDashboardComponent, + resolve : { + data: AnalyticsDashboardService + } + } +]; + +@NgModule({ + imports : [ + SharedModule, + RouterModule.forChild(routes), + FuseWidgetModule, + NgxChartsModule, + AgmCoreModule.forRoot({ + apiKey: 'AIzaSyD81ecsCj4yYpcXSLFcYU97PvRsE_X8Bx8' + }) + ], + declarations: [ + FuseAnalyticsDashboardComponent + ], + providers : [ + AnalyticsDashboardService + ] +}) +export class FuseAnalyticsDashboardModule +{ +} + diff --git a/src/app/main/content/apps/dashboards/project/projects.service.ts b/src/app/main/content/apps/dashboards/analytics/analytics.service.ts similarity index 69% rename from src/app/main/content/apps/dashboards/project/projects.service.ts rename to src/app/main/content/apps/dashboards/analytics/analytics.service.ts index f9d9d219..ef95bd6c 100644 --- a/src/app/main/content/apps/dashboards/project/projects.service.ts +++ b/src/app/main/content/apps/dashboards/analytics/analytics.service.ts @@ -4,9 +4,8 @@ import { Observable } from 'rxjs/Observable'; import { HttpClient } from '@angular/common/http'; @Injectable() -export class ProjectsDashboardService implements Resolve +export class AnalyticsDashboardService implements Resolve { - projects: any[]; widgets: any[]; constructor( @@ -23,11 +22,9 @@ export class ProjectsDashboardService implements Resolve */ resolve(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable | Promise | any { - return new Promise((resolve, reject) => { Promise.all([ - this.getProjects(), this.getWidgets() ]).then( () => { @@ -38,21 +35,10 @@ export class ProjectsDashboardService implements Resolve }); } - getProjects(): Promise - { - return new Promise((resolve, reject) => { - this.http.get('api/projects-dashboard-projects') - .subscribe((response: any) => { - this.projects = response; - resolve(response); - }, reject); - }); - } - getWidgets(): Promise { return new Promise((resolve, reject) => { - this.http.get('api/projects-dashboard-widgets') + this.http.get('api/analytics-dashboard-widgets') .subscribe((response: any) => { this.widgets = response; resolve(response); diff --git a/src/app/navigation/navigation.model.ts b/src/app/navigation/navigation.model.ts index da8e126d..28499e8d 100644 --- a/src/app/navigation/navigation.model.ts +++ b/src/app/navigation/navigation.model.ts @@ -26,6 +26,12 @@ export class FuseNavigationModel implements FuseNavigationModelInterface 'title': 'Project', 'type' : 'item', 'url' : '/apps/dashboards/project' + }, + { + 'id' : 'analytics', + 'title': 'Analytics', + 'type' : 'item', + 'url' : '/apps/dashboards/analytics' } ] }, From b0101a1f8cbfd8cf5663b1bf85ec465a8e3b6c4c Mon Sep 17 00:00:00 2001 From: Sercan Yemen Date: Mon, 5 Feb 2018 11:28:24 +0300 Subject: [PATCH 6/9] Fix the wrong api url --- .../main/content/apps/e-commerce/dashboard/dashboard.service.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/app/main/content/apps/e-commerce/dashboard/dashboard.service.ts b/src/app/main/content/apps/e-commerce/dashboard/dashboard.service.ts index 654da549..8ef2f754 100644 --- a/src/app/main/content/apps/e-commerce/dashboard/dashboard.service.ts +++ b/src/app/main/content/apps/e-commerce/dashboard/dashboard.service.ts @@ -41,7 +41,7 @@ export class EcommerceDashboardService implements Resolve getProjects(): Promise { return new Promise((resolve, reject) => { - this.http.get('api/projects-dashboard-projects') + this.http.get('api/project-dashboard-projects') .subscribe((response: any) => { this.projects = response; resolve(response); From f246fab1f4f190f954ad7ec25c2708777a05183d Mon Sep 17 00:00:00 2001 From: Sercan Yemen Date: Mon, 5 Feb 2018 11:29:30 +0300 Subject: [PATCH 7/9] Make sure the splash screen element exists before adding an event to it --- .../core/services/splash-screen.service.ts | 27 ++++++++++++------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/src/app/core/services/splash-screen.service.ts b/src/app/core/services/splash-screen.service.ts index 4ac990c4..fe85cde8 100644 --- a/src/app/core/services/splash-screen.service.ts +++ b/src/app/core/services/splash-screen.service.ts @@ -15,18 +15,27 @@ export class FuseSplashScreenService private router: Router ) { + // Get the splash screen element this.splashScreenEl = this.document.body.querySelector('#fuse-splash-screen'); - const hideOnLoad = this.router.events.subscribe((event) => { - if ( event instanceof NavigationEnd ) - { - setTimeout(() => { - this.hide(); - hideOnLoad.unsubscribe(); - }, 0); + // If the splash screen element exists... + if ( this.splashScreenEl ) + { + // Hide it on the first NavigationEnd event + const hideOnLoad = this.router.events.subscribe((event) => { + if ( event instanceof NavigationEnd ) + { + setTimeout(() => { + this.hide(); + + // Unsubscribe from this event so it + // won't get triggered again + hideOnLoad.unsubscribe(); + }, 0); + } } - } - ); + ); + } } show() From 99696cabf72d64936345c18363bfa73f37ffdcd5 Mon Sep 17 00:00:00 2001 From: Sercan Yemen Date: Mon, 5 Feb 2018 15:08:18 +0300 Subject: [PATCH 8/9] Finished up the Analytics Dashboard + Updated the Angular Material version along with couple other libraries + Increased the version number of the Fuse --- package-lock.json | 454 +++++++------- package.json | 55 +- src/app/app.module.ts | 2 +- src/app/fuse-fake-db/dashboard-analytics.ts | 408 ++++++++----- .../analytics/analytics.component.html | 571 +++++++++--------- .../analytics/analytics.component.scss | 55 +- src/app/navigation/navigation.model.ts | 12 +- 7 files changed, 808 insertions(+), 749 deletions(-) diff --git a/package-lock.json b/package-lock.json index 6d0b4db7..be40b44c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,6 +1,6 @@ { "name": "fuse2", - "version": "1.3.5", + "version": "1.3.6", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -9,76 +9,34 @@ "resolved": "https://registry.npmjs.org/@agm/core/-/core-1.0.0-beta.2.tgz", "integrity": "sha512-3bdfvkWDmJszpj/F6Fzgv7sks0cs/cUEQPfs37tcJFz3jc62SsXy4TGb/WJT8FpH2nSGE6DonP8lXuFxB0lblQ==" }, - "@angular-devkit/build-optimizer": { - "version": "0.0.41", - "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.0.41.tgz", - "integrity": "sha512-TYolYpR3cb3rZGMqHBc1Q4r6SwhvuTF9sDt3gARy9Tli5R3BwY8bRA3evHQhhM0cb4AbBaJVgQYdJm5FURNn6g==", - "dev": true, - "requires": { - "loader-utils": "1.1.0", - "source-map": "0.5.7", - "typescript": "2.6.2", - "webpack-sources": "1.1.0" - }, - "dependencies": { - "typescript": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", - "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", - "dev": true - } - } - }, - "@angular-devkit/core": { - "version": "0.0.28", - "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.0.28.tgz", - "integrity": "sha512-rfGRVdpx080zZq9NGZ3RNG+cmoq/ZPaCzpM4dAbosEM46ficUkwr/JKjhjZUUoSyb9ItrT1lp9C33GfE/YpSVQ==", - "dev": true, - "requires": { - "ajv": "5.5.2", - "chokidar": "1.7.0", - "rxjs": "5.5.6", - "source-map": "0.5.7" - } - }, - "@angular-devkit/schematics": { - "version": "0.0.51", - "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.0.51.tgz", - "integrity": "sha512-KGYiJpPgLqPvXeJzaHw/9JHAt8dL3EzyeYOAZ/gMKnPDA+7WypAta2n9ZuPVchY3G9p1XcqB5STJLvk7HQw3Cw==", - "dev": true, - "requires": { - "@ngtools/json-schema": "1.1.0", - "rxjs": "5.5.6" - } - }, "@angular/animations": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-5.2.1.tgz", - "integrity": "sha512-f8viyt1xDC2NC2ap0lczw+AiL3S1WVSDOmNp3UKwA66gm+Hs9AdDX0PjpxgMR9KQY8c4P7mztNax55jj2Sbe1Q==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@angular/animations/-/animations-5.2.3.tgz", + "integrity": "sha512-K9rOsRGwt7Zmp/rNdvBmgBKqvEdgCyZF0kvwxrmZfq1Zj0GAkfTAKPL007493O6XFd+icfu/+kmYeqXBGB4gKA==", "requires": { "tslib": "1.9.0" } }, "@angular/cdk": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-5.1.0.tgz", - "integrity": "sha512-xDCVx65SvxoGDMpQhaQvfP7bZhQDuX65Uk+JntPlLTiwFr7v82a+71RnzOCzNKyaNXGoIgUGcrLZpozlyqNgFg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@angular/cdk/-/cdk-5.1.1.tgz", + "integrity": "sha512-V8kQmwf1PhtxiiE0cS1x9SW7/VFrJ7LcL9RqxUOMmJMl8kVR43dQBEeuVOOYJlGo9LAR5ctfemlJHwd9+PoHew==", "requires": { "tslib": "1.9.0" } }, "@angular/cli": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-1.6.5.tgz", - "integrity": "sha512-YyGdq7rM1xduSdxviKfbd9NsYloEIeK3T+WEftsHSlViKuNQh8jIUoMzTGypjCmTieE2Gtg5BnukaxuUo1G+bQ==", + "version": "1.6.7", + "resolved": "https://registry.npmjs.org/@angular/cli/-/cli-1.6.7.tgz", + "integrity": "sha512-TprSjnQrEdrTsCAB5K/lCLuXZUH/y+l/BAR0aZLpubpZP8Ldgmq7q56trxL5wNSs3o6A8Vh43ZKNYOuKtnzlXQ==", "dev": true, "requires": { - "@angular-devkit/build-optimizer": "0.0.41", - "@angular-devkit/core": "0.0.28", - "@angular-devkit/schematics": "0.0.51", + "@angular-devkit/build-optimizer": "0.0.42", + "@angular-devkit/core": "0.0.29", + "@angular-devkit/schematics": "0.0.52", "@ngtools/json-schema": "1.1.0", - "@ngtools/webpack": "1.9.5", - "@schematics/angular": "0.1.16", + "@ngtools/webpack": "1.9.7", + "@schematics/angular": "0.1.17", "autoprefixer": "7.2.5", "chalk": "2.2.2", "circular-dependency-plugin": "4.4.0", @@ -118,7 +76,6 @@ "sass-loader": "6.0.6", "semver": "5.5.0", "silent-error": "1.1.0", - "source-map-loader": "0.2.3", "source-map-support": "0.4.18", "style-loader": "0.13.2", "stylus": "0.54.5", @@ -131,28 +88,95 @@ "webpack-merge": "4.1.1", "webpack-sources": "1.1.0", "webpack-subresource-integrity": "1.0.3" + }, + "dependencies": { + "@angular-devkit/build-optimizer": { + "version": "0.0.42", + "resolved": "https://registry.npmjs.org/@angular-devkit/build-optimizer/-/build-optimizer-0.0.42.tgz", + "integrity": "sha512-BAYCVZ10ro6mgZQDZiNiVbX8ppygw4q7z/stpwG8WjMswgMRIcxsxYoC1VFuWcUPAf4UyfTIav6e8UZWA5+xnQ==", + "dev": true, + "requires": { + "loader-utils": "1.1.0", + "source-map": "0.5.7", + "typescript": "2.6.2", + "webpack-sources": "1.1.0" + } + }, + "@angular-devkit/core": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@angular-devkit/core/-/core-0.0.29.tgz", + "integrity": "sha512-jtUBA0pIrkdXcVqDmDrGlniqwM7NFOKdo7vWFDmCVLBbC9rZHeYW5Xv/+4HyBhGLJ4wxsAkUjsHKWGJINPPpiw==", + "dev": true, + "requires": { + "ajv": "5.5.2", + "chokidar": "1.7.0", + "rxjs": "5.5.6", + "source-map": "0.5.7" + } + }, + "@angular-devkit/schematics": { + "version": "0.0.52", + "resolved": "https://registry.npmjs.org/@angular-devkit/schematics/-/schematics-0.0.52.tgz", + "integrity": "sha512-NtG8VB5aWtg0cw1Y7EJinJMuAnXsNdkQkkVe/i7CO6TPLyFQSFQCN1YojCr43l8jTWTRebRslrBawPCMOxsOgw==", + "dev": true, + "requires": { + "@ngtools/json-schema": "1.1.0", + "rxjs": "5.5.6" + } + }, + "@ngtools/webpack": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-1.9.7.tgz", + "integrity": "sha512-D5QuaT9wENeM2j9g2qvW9Ls1tGqRz26Lp+jxwb2ZGFep7Ik1fFOX3ROLfgkxNlxZGVmbxJjsfrYUCyGlzj8gWg==", + "dev": true, + "requires": { + "chalk": "2.2.2", + "enhanced-resolve": "3.4.1", + "loader-utils": "1.1.0", + "magic-string": "0.22.4", + "semver": "5.5.0", + "source-map": "0.5.7", + "tree-kill": "1.2.0", + "webpack-sources": "1.1.0" + } + }, + "@schematics/angular": { + "version": "0.1.17", + "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.1.17.tgz", + "integrity": "sha512-PHE5gk/ogPY/aN94dbbtauHMCq+/7w4Kdcl7tGmSS8mPKEI0wa6XJi//Wq/tHi55lb2fP58oEZU6n6w/wQascw==", + "dev": true, + "requires": { + "typescript": "2.6.2" + } + }, + "typescript": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", + "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", + "dev": true + } } }, "@angular/common": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@angular/common/-/common-5.2.1.tgz", - "integrity": "sha512-O7FA4Qpcu6GYMzlsNTHtUsAl6W0SXepP7qEMx83fC1Xje2GEtulp/99Pg6bvpFKiZYdCjJDhjbUZhIO5x0UncQ==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@angular/common/-/common-5.2.3.tgz", + "integrity": "sha512-RwQ/IjmpDdMecTz/wwQlKpHgF4Crr8kyqV9FJ+c+cHR8Riqlu2DOXSU7LIfDdGoo6Mpixdxd1rtHYfs7l9YBSA==", "requires": { "tslib": "1.9.0" } }, "@angular/compiler": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-5.2.1.tgz", - "integrity": "sha512-c/HDfbDr8yDUCoVCbGHgoae3YCoWG3EuM/l7jfHflE8sbdppiFVxCRd3VkygkwfPGpUZbZaW2x/OK4Z1dQa34g==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@angular/compiler/-/compiler-5.2.3.tgz", + "integrity": "sha512-OynSzUdEHwajQMoV2JuYq5IdiR2dlTCTAHhTLzrym85wOihvTvovEQwVhYYHyKERu85JIoaF1sXA42KIjMGfkw==", "requires": { "tslib": "1.9.0" } }, "@angular/compiler-cli": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-5.2.1.tgz", - "integrity": "sha512-9Yud6euknHKPQhh/noho0/xNgYeCyly0Ugkgh0306/RNLW5ngcWE876wdUweU13LJgWQ9+SHqFI5rJbsseqkZw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@angular/compiler-cli/-/compiler-cli-5.2.3.tgz", + "integrity": "sha512-uoCxeyQSd8R/cwEbd0FIUXjnbPq0HXEsyu3WSu9Ek2jt52HL+x/gZQdFCRtjW/mvQNOqxrgrTtEkhJ398+VkXg==", "dev": true, "requires": { "chokidar": "1.7.0", @@ -170,9 +194,9 @@ } }, "@angular/core": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@angular/core/-/core-5.2.1.tgz", - "integrity": "sha512-2kyXVl+OK/LRUisSfILkRyWiD2BGXysQkN2dwxfwYZwDciH7o8wGSlDDZw0lXIBt0Ly0stYiorIIJGVs5TffaA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@angular/core/-/core-5.2.3.tgz", + "integrity": "sha512-tL9O8KA6KGjnlxqjuTytpC2OeKbxe/yHev0kmwo5CK0lDZU4UFetcItAzUXU1dyRuILTcBkbnFt9+nr1SZs/cQ==", "requires": { "tslib": "1.9.0" } @@ -186,63 +210,63 @@ } }, "@angular/forms": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-5.2.1.tgz", - "integrity": "sha512-DeTpReZcK93FBxTdXqtmuzuW5blMu4fWe7JtmDXWD9UhTw7DwRbPO+7yFRbbfSDd3UzfGfqYBqOlSOdPh9dLbg==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@angular/forms/-/forms-5.2.3.tgz", + "integrity": "sha512-PsMGbj/Slvsxxyl61QSSSFDCGHN1XK6kNxVQTVmAlVhP1LlaYqBOIgQy4K9CYWUeHqU/YCdhVaFb5quzZLtPYA==", "requires": { "tslib": "1.9.0" } }, "@angular/http": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@angular/http/-/http-5.2.1.tgz", - "integrity": "sha512-wMX7rnZcanYT2uVeqr1V9k9lduxZprVjvgetUlj6IuO7kbr22SAJN7phuubI0uAd7MUb7uDXBG8cJ00Q/NH6zw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@angular/http/-/http-5.2.3.tgz", + "integrity": "sha512-3kAj7YYws8J2zRu46fEXk6lYrgSK9s5YA6O4REZkLox/suK0wb6TsDIIhoMzScGctSzZESVyuWsvYMrDYCflPA==", "requires": { "tslib": "1.9.0" } }, "@angular/language-service": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-5.2.1.tgz", - "integrity": "sha512-NsPDxsIRwltuvd6GzwPyY9yfU1+kUrRv211zL+CLeDlLA5om0ifbTYTjogbhExG62aW+EVP/UkS37zHU2CFgNA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@angular/language-service/-/language-service-5.2.3.tgz", + "integrity": "sha512-yBi8i2rUdq6WgYn2J+82QxqhKsl2ldH7/8Lk4ZQDbKgTBx5LmYLpNGg3TJGnZEUGtKhu8Rd1E3SBmc4qqrGXsQ==", "dev": true }, "@angular/material": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@angular/material/-/material-5.1.0.tgz", - "integrity": "sha512-F+dM2xGbyWK3f+j5ZiWMOCBK1Jnv4RAlFRwezJVnzcWaAjwhO2YBHUQGZcnwsVJpwf5Vrihix8N+sWiPvVw+jw==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@angular/material/-/material-5.1.1.tgz", + "integrity": "sha512-RC3xkbX35daNq4w+XBmm+Vgi16TJvLbSkw5xkdxCqLSysFx9ymwDOjUbLeHt2nJtvYWvnSjuVukdSAeaBknTFg==", "requires": { "tslib": "1.9.0" } }, "@angular/material-moment-adapter": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-5.1.0.tgz", - "integrity": "sha512-PVFU6fCYacMTqBM3M6s1E+9R2a0F5k83hzBgvlBIoqFJ31WGZ9LUvxYQ9gYe50UghkO3UT4Mdl6CJneWnkOVzA==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/@angular/material-moment-adapter/-/material-moment-adapter-5.1.1.tgz", + "integrity": "sha512-1wpISrZOHmcC2o0tmOHX2Lt726WFUZxQs0iYe3x2yHVuxoV2W8gy0unfPkSyaZQ9v68o9xQ3DQEhSByPhr0tZg==", "requires": { "tslib": "1.9.0" } }, "@angular/platform-browser": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-5.2.1.tgz", - "integrity": "sha512-+cE7FM6/WIMZWpxf+LxYhfTPBbxSvLNZv5+RnGcOeg4nEG3x0Ny1dr14r5HyudvKfu/A+xTlVCNY7RjZ6HsWVw==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser/-/platform-browser-5.2.3.tgz", + "integrity": "sha512-60LgA4KK3BufBR7vwwcn3zTYuLlfDG3jFip7bvdgsDpURrUB0j6/pL5cbGElww4jnnxZ72uJzJRzSiGEofjc3g==", "requires": { "tslib": "1.9.0" } }, "@angular/platform-browser-dynamic": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.2.1.tgz", - "integrity": "sha512-S73suoYfGIj7eQlOBXvj3BO8mW8TUUZEUZ/nvFgB/jsb6PtYk1ByIVIWjcV5yttd4TXf7ZhaEYZPm1vBjIN0pA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@angular/platform-browser-dynamic/-/platform-browser-dynamic-5.2.3.tgz", + "integrity": "sha512-PheS+KJQJiyvQg1lr+eX0/1b/rjLnDjgI1qvzwikrvGYymb2JdZ+rjllHBs1iotzQ+tG+hRnlktvgdFN134x/g==", "requires": { "tslib": "1.9.0" } }, "@angular/router": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/@angular/router/-/router-5.2.1.tgz", - "integrity": "sha512-NS8ttrfpjETfIt8Wn4oCP5KQ55UKuj6g3iG/yduoDMWel19KOINUYqz5ujL1gHha4A4Tgs1tBZKQKr0LmapTdA==", + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/@angular/router/-/router-5.2.3.tgz", + "integrity": "sha512-XVEpwNZta76FYas1gZSSGvkQoiGgQjvXfab6CwOh958d4c0C+9pJsykqsv6X/n8TSTShQt7wjs/vp/copXeuoA==", "requires": { "tslib": "1.9.0" } @@ -279,44 +303,11 @@ "integrity": "sha1-w6DFRNYjkqzCgTpCyKDcb1j4aSI=", "dev": true }, - "@ngtools/webpack": { - "version": "1.9.5", - "resolved": "https://registry.npmjs.org/@ngtools/webpack/-/webpack-1.9.5.tgz", - "integrity": "sha512-scio7dKdorM6wgFz8ELm0MDl2To9ax6a36rfmD+h6hcgSn+7dKZmSr3qUnQE1ymydyzlBwS+4IODpWqHPS9cwQ==", - "dev": true, - "requires": { - "chalk": "2.2.2", - "enhanced-resolve": "3.4.1", - "loader-utils": "1.1.0", - "magic-string": "0.22.4", - "semver": "5.5.0", - "source-map": "0.5.7", - "tree-kill": "1.2.0", - "webpack-sources": "1.1.0" - } - }, "@ngx-translate/core": { "version": "9.1.1", "resolved": "https://registry.npmjs.org/@ngx-translate/core/-/core-9.1.1.tgz", "integrity": "sha1-rhA5KINrip4Gn9Li52+iGYzH5ig=" }, - "@schematics/angular": { - "version": "0.1.16", - "resolved": "https://registry.npmjs.org/@schematics/angular/-/angular-0.1.16.tgz", - "integrity": "sha512-SLzs5TmDLEO2/oU83uDw/x9jgBQTktNlO202kbawcqDKLekqgcZXnsl7UhoNdeCFOU9BE9dw07wWwuIzAhj9gQ==", - "dev": true, - "requires": { - "typescript": "2.6.2" - }, - "dependencies": { - "typescript": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", - "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", - "dev": true - } - } - }, "@swimlane/ngx-charts": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/@swimlane/ngx-charts/-/ngx-charts-7.0.1.tgz", @@ -341,17 +332,23 @@ "integrity": "sha512-TMDN26Q4J+Sh+OPqAx8BK5Q/3hAAmcTAUQ9wvC9nboSOAmYUaHGz8t21yGdeUtRtunIfMpjTnwLa+X2Pfoq42w==" }, "@swimlane/ngx-dnd": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@swimlane/ngx-dnd/-/ngx-dnd-3.1.0.tgz", - "integrity": "sha512-Ph7fpK+H8OkS7TyFjNGRn+sLwrmvJbnx9hieiTlKtEgB9kGU39qkZx6eGBdzs5MOsLRd8OP8DnVhiuf4XSm7cA==", + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@swimlane/ngx-dnd/-/ngx-dnd-3.1.2.tgz", + "integrity": "sha512-jwZxW+s8sI8fk2HfgiuzhLhju2JPiDrqjJHHD2lQlLPikfPdjPasXYdiZSKp/2WDsEuj3a9fkGjpN4s2gPayuQ==", "requires": { + "@types/dragula": "2.1.32", "dragula": "3.7.2" } }, + "@types/dragula": { + "version": "2.1.32", + "resolved": "https://registry.npmjs.org/@types/dragula/-/dragula-2.1.32.tgz", + "integrity": "sha512-67nXH/pjZPTrbQ+Sr/Wy/luKVJPOOy7ErML58TgoO4A0vokIvvSt3+x1FHwp6Q455Kj03xGjCyHkhaelAdQMWA==" + }, "@types/jasmine": { - "version": "2.8.5", - "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.5.tgz", - "integrity": "sha512-mkrHFZTgOXkZhau36K628iKFkjbp11t/bHCkY4Mefu4R6McMg2FD9P3naBv/0Ygyn4sz8baColJp2gdmSekgiw==", + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.6.tgz", + "integrity": "sha512-clg9raJTY0EOo5pVZKX3ZlMjlYzVU73L71q5OV1jhE2Uezb7oF94jh4CvwrW6wInquQAdhOxJz5VDF2TLUGmmA==", "dev": true }, "@types/jasminewd2": { @@ -360,7 +357,7 @@ "integrity": "sha512-hYDVmQZT5VA2kigd4H4bv7vl/OhlympwREUemqBdOqtrYTo5Ytm12a5W5/nGgGYdanGVxj0x/VhZ7J3hOg/YKg==", "dev": true, "requires": { - "@types/jasmine": "2.8.5" + "@types/jasmine": "2.8.6" } }, "@types/node": { @@ -569,15 +566,22 @@ } }, "angular-calendar": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/angular-calendar/-/angular-calendar-0.23.2.tgz", - "integrity": "sha512-Ai6dDg0UfW1h0PcioIwgBwvKNcUwrA5e91P3lDDhVdIPe6E1SAcCAYT+zgxjMnCKFkhA5CozSxCwAJJgumBGIw==", + "version": "0.23.3", + "resolved": "https://registry.npmjs.org/angular-calendar/-/angular-calendar-0.23.3.tgz", + "integrity": "sha512-MMUb4e6XmFJVv2FPqAdLlQWDtoklVxQ0wxeaZstwaUXXpzQ3sHFMMBhHADZcYcRkGDQsgoK39+sONeJB7RPvvg==", "requires": { "angular-draggable-droppable": "2.0.0", "angular-resizable-element": "2.0.0", - "calendar-utils": "0.1.0", + "calendar-utils": "0.1.1", "date-fns": "1.29.0", "positioning": "1.3.1" + }, + "dependencies": { + "calendar-utils": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/calendar-utils/-/calendar-utils-0.1.1.tgz", + "integrity": "sha512-75JPgUK7l7OTg4ZptJMuuIoQzLndc4tcGhBCFtEONr0AMlD7zFVZthOC6Sf29K8r81A1+BJ/tDIFlElgY4XFFw==" + } } }, "angular-draggable-droppable": { @@ -586,9 +590,9 @@ "integrity": "sha512-/b8LIGamjOKnDI2uG1jRUErTIHeQ3w2WqHn4cbeiUTy+6eNHjkQI32DNhvxl0nVxr2gF5QluECNB4uWjMMyzQg==" }, "angular-in-memory-web-api": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/angular-in-memory-web-api/-/angular-in-memory-web-api-0.5.2.tgz", - "integrity": "sha1-/y6mZqv9BN19FslT7JcuExigmCQ=" + "version": "0.5.3", + "resolved": "https://registry.npmjs.org/angular-in-memory-web-api/-/angular-in-memory-web-api-0.5.3.tgz", + "integrity": "sha512-1QPwwXG8R/2s7EbHh13HDiJYsk4sdBHNxHJHZHJ/Kxb4T9OG+bb1kGcXzY9UrJkEVxOtUW0ozvL4p/HmeIEszg==" }, "angular-resizable-element": { "version": "2.0.0", @@ -1123,6 +1127,17 @@ "callsite": "1.0.0" } }, + "bfj-node4": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/bfj-node4/-/bfj-node4-5.2.0.tgz", + "integrity": "sha512-shYA6rXr1mlAzJT8R96TscvicMyV9GJTMDFRii9HlgxLXT7HD3aDfsEHkQzIHYghh4jLI3+oouXDHqI+pnR3zA==", + "dev": true, + "requires": { + "bluebird": "3.5.1", + "check-types": "7.3.0", + "tryer": "1.0.0" + } + }, "big.js": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/big.js/-/big.js-3.2.0.tgz", @@ -1641,11 +1656,6 @@ "integrity": "sha1-0JxLUoAKpMB44t2BqGmqyQ0uVOc=", "dev": true }, - "calendar-utils": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/calendar-utils/-/calendar-utils-0.1.0.tgz", - "integrity": "sha512-vWAp4m2I2PV9nrizBoACsXQ2GJiQVlc9EDOEPpzG6vRrTkQ4NCttUhglnQioMMXF8NYM+kJyjZGF1mRk/SSESQ==" - }, "callsite": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/callsite/-/callsite-1.0.0.tgz", @@ -1789,6 +1799,12 @@ "color-name": "1.1.3" } }, + "check-types": { + "version": "7.3.0", + "resolved": "https://registry.npmjs.org/check-types/-/check-types-7.3.0.tgz", + "integrity": "sha1-Ro9XGkQ1wkJI9f0MsOjYfDw0Hn0=", + "dev": true + }, "chokidar": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-1.7.0.tgz", @@ -2828,9 +2844,9 @@ } }, "d3": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/d3/-/d3-4.12.2.tgz", - "integrity": "sha512-aKAlpgTmpuGeEpezB+GvPpX1x+gCMs/PHpuse6sCpkgw4Un3ZeqUobIc87eIy9adcl+wxPAnEyKyO5oulH3MOw==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-4.13.0.tgz", + "integrity": "sha512-l8c4+0SldjVKLaE2WG++EQlqD7mh/dmQjvi2L2lKPadAVC+TbJC4ci7Uk9bRi+To0+ansgsS0iWfPjD7DBy+FQ==", "requires": { "d3-array": "1.2.1", "d3-axis": "1.0.8", @@ -2843,7 +2859,7 @@ "d3-dsv": "1.0.8", "d3-ease": "1.0.3", "d3-force": "1.1.0", - "d3-format": "1.2.1", + "d3-format": "1.2.2", "d3-geo": "1.9.1", "d3-hierarchy": "1.1.5", "d3-interpolate": "1.1.6", @@ -2854,7 +2870,7 @@ "d3-random": "1.1.0", "d3-request": "1.0.6", "d3-scale": "1.0.7", - "d3-selection": "1.2.0", + "d3-selection": "1.3.0", "d3-shape": "1.2.0", "d3-time": "1.0.8", "d3-time-format": "2.1.1", @@ -2864,10 +2880,10 @@ "d3-zoom": "1.7.1" }, "dependencies": { - "d3-format": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.2.1.tgz", - "integrity": "sha512-U4zRVLDXW61bmqoo+OJ/V687e1T5nVd3TAKAJKgtpZ/P1JsMgyod0y9br+mlQOryTAACdiXI3wCjuERHFNp91w==" + "d3-selection": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-1.3.0.tgz", + "integrity": "sha512-qgpUOg9tl5CirdqESUAu0t9MU/t3O9klYfGfyKsXEmhyxyzLpzpeh08gaxBUTQw1uXIOkr/30Ut2YRjSSxlmHA==" } } }, @@ -5505,15 +5521,6 @@ "integrity": "sha1-Dovf5NHduIVNZOBOp8AOKgJuVlg=", "dev": true }, - "gzip-size": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-3.0.0.tgz", - "integrity": "sha1-VGGI6b3DN/Zzdy+BZgRks4nc5SA=", - "dev": true, - "requires": { - "duplexer": "0.1.1" - } - }, "hammerjs": { "version": "2.0.8", "resolved": "https://registry.npmjs.org/hammerjs/-/hammerjs-2.0.8.tgz", @@ -7031,19 +7038,10 @@ "which": "1.3.0" } }, - "karma-cli": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/karma-cli/-/karma-cli-1.0.1.tgz", - "integrity": "sha1-rmw8WKMTodALRRZMRVubhs4X+WA=", - "dev": true, - "requires": { - "resolve": "1.5.0" - } - }, "karma-coverage-istanbul-reporter": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.3.3.tgz", - "integrity": "sha512-MFkB6bh11J8nKygUdqyHb9sMz17XoBRYR4tiNxnSpi/UtDk0wk8eRGa0jRSJaILgCl4xyq1TL6Jidww1OWly/Q==", + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/karma-coverage-istanbul-reporter/-/karma-coverage-istanbul-reporter-1.4.1.tgz", + "integrity": "sha512-5og0toMjgLvsL9+TzGH4Rk1D0nr7pMIRJBg29xP4mHMKy/1KUJ12UzoqI6mBNCRFa4nDvZS2MRrN7p+RkZNWxQ==", "dev": true, "requires": { "istanbul-api": "1.2.1", @@ -8060,17 +8058,17 @@ } }, "ngrx-store-freeze": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/ngrx-store-freeze/-/ngrx-store-freeze-0.2.0.tgz", - "integrity": "sha1-dMIxlHu+GTivci9qcmJNxpeI058=", + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/ngrx-store-freeze/-/ngrx-store-freeze-0.2.1.tgz", + "integrity": "sha512-nQZJoyR03OqGR0dWWqIJgzkMj+99xnFgIY35Z5UXVhLEIfvk4HjuQ/iIeQU1dLHmZ8NnUDRFcrEthCSvE4eAWQ==", "requires": { "deep-freeze-strict": "1.1.1" } }, "ngx-color-picker": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/ngx-color-picker/-/ngx-color-picker-5.3.0.tgz", - "integrity": "sha512-9pSkVg5UhXiqyclERCSRHqQiPMHl6fHnmZQwQ2tSNfeGSKX2Ykt55cLbQWo6++XgJORTUyI6z+k7fD1KGPZAmA==" + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/ngx-color-picker/-/ngx-color-picker-5.3.1.tgz", + "integrity": "sha512-03rrkv718RbeuHfEpr6PHnRy8xI2ncg0i3fW6jBPfNoHZQLDXh+7bY7xcdDKc9m52OtsPkvhriEwXbuY4EeckQ==" }, "ngx-cookie-service": { "version": "1.0.10", @@ -10976,9 +10974,9 @@ } }, "prismjs": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.10.0.tgz", - "integrity": "sha1-d+UYfCrmsyU/zDEwKc8l/lN3hyE=", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/prismjs/-/prismjs-1.11.0.tgz", + "integrity": "sha1-KXrvM+t5Qhv9sZJzpQkspRWXDSk=", "requires": { "clipboard": "1.7.1" } @@ -12446,37 +12444,6 @@ "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", "dev": true }, - "source-map-loader": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-0.2.3.tgz", - "integrity": "sha512-MYbFX9DYxmTQFfy2v8FC1XZwpwHKYxg3SK8Wb7VPBKuhDjz8gi9re2819MsG4p49HDyiOSUKlmZ+nQBArW5CGw==", - "dev": true, - "requires": { - "async": "2.6.0", - "loader-utils": "0.2.17", - "source-map": "0.6.1" - }, - "dependencies": { - "loader-utils": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-0.2.17.tgz", - "integrity": "sha1-+G5jdNQyBabmxg6RlvF8Apm/s0g=", - "dev": true, - "requires": { - "big.js": "3.2.0", - "emojis-list": "2.1.0", - "json5": "0.5.1", - "object-assign": "4.1.1" - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - } - } - }, "source-map-resolve": { "version": "0.5.1", "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.1.tgz", @@ -13274,6 +13241,12 @@ } } }, + "tryer": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/tryer/-/tryer-1.0.0.tgz", + "integrity": "sha1-Antp+oIyJeVRys4+8DsR9qs3wdc=", + "dev": true + }, "ts-node": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-4.1.0.tgz", @@ -13468,9 +13441,9 @@ "dev": true }, "typescript": { - "version": "2.5.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.5.3.tgz", - "integrity": "sha512-ptLSQs2S4QuS6/OD1eAKG+S5G8QQtrU5RT32JULdZQtM1L3WTi34Wsu48Yndzi8xsObRAB9RPt/KhA9wlpEF6w==", + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-2.6.2.tgz", + "integrity": "sha1-PFtv1/beCRQmkCfwPAlGdY92c6Q=", "dev": true }, "uglify-js": { @@ -14327,48 +14300,45 @@ } }, "webpack-bundle-analyzer": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.9.2.tgz", - "integrity": "sha1-Y+2G63HMTNqG9o5oWoRTC6ASZEk=", + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/webpack-bundle-analyzer/-/webpack-bundle-analyzer-2.10.0.tgz", + "integrity": "sha512-eA/9F/ZLFlVXfCLYqefHFbelJ3JcvyeFdmpAG6Vu3iJNcisj3KWNPqu00lCqK9caeaesipVrGb9alUSi2lEvAg==", "dev": true, "requires": { "acorn": "5.3.0", - "chalk": "1.1.3", + "bfj-node4": "5.2.0", + "chalk": "2.3.0", "commander": "2.13.0", "ejs": "2.5.7", "express": "4.16.2", "filesize": "3.5.11", - "gzip-size": "3.0.0", + "gzip-size": "4.1.0", "lodash": "4.17.4", "mkdirp": "0.5.1", "opener": "1.4.3", "ws": "4.0.0" }, "dependencies": { - "ansi-styles": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-2.2.1.tgz", - "integrity": "sha1-tDLdM1i2NM914eRmQ2gkBTPB3b4=", - "dev": true - }, "chalk": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-1.1.3.tgz", - "integrity": "sha1-qBFcVeSnAv5NFQq9OHKCKn4J/Jg=", + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.3.0.tgz", + "integrity": "sha512-Az5zJR2CBujap2rqXGaJKaPHyJ0IrUimvYNX+ncCy8PJP4ltOGTrHUIo097ZaL2zMeKYpiCdqDvS6zdrTFok3Q==", "dev": true, "requires": { - "ansi-styles": "2.2.1", + "ansi-styles": "3.2.0", "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "supports-color": "4.5.0" } }, - "supports-color": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-2.0.0.tgz", - "integrity": "sha1-U10EXOa2Nj+kARcIRimZXp3zJMc=", - "dev": true + "gzip-size": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/gzip-size/-/gzip-size-4.1.0.tgz", + "integrity": "sha1-iuCWJX6r59acRb4rZ8RIEk/7UXw=", + "dev": true, + "requires": { + "duplexer": "0.1.1", + "pify": "3.0.0" + } }, "ws": { "version": "4.0.0", diff --git a/package.json b/package.json index 852ef5e2..4f872368 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fuse2", - "version": "1.3.5", + "version": "1.3.6", "license": "https://themeforest.net/licenses/terms/regular", "scripts": { "ng": "ng", @@ -19,19 +19,19 @@ "private": true, "dependencies": { "@agm/core": "1.0.0-beta.2", - "@angular/animations": "5.2.1", - "@angular/cdk": "5.1.0", - "@angular/common": "5.2.1", - "@angular/compiler": "5.2.1", - "@angular/core": "5.2.1", + "@angular/animations": "5.2.3", + "@angular/cdk": "5.1.1", + "@angular/common": "5.2.3", + "@angular/compiler": "5.2.3", + "@angular/core": "5.2.3", "@angular/flex-layout": "2.0.0-beta.12", - "@angular/forms": "5.2.1", - "@angular/http": "5.2.1", - "@angular/material": "5.1.0", - "@angular/material-moment-adapter": "5.1.0", - "@angular/platform-browser": "5.2.1", - "@angular/platform-browser-dynamic": "5.2.1", - "@angular/router": "5.2.1", + "@angular/forms": "5.2.3", + "@angular/http": "5.2.3", + "@angular/material": "5.1.1", + "@angular/material-moment-adapter": "5.1.1", + "@angular/platform-browser": "5.2.3", + "@angular/platform-browser-dynamic": "5.2.3", + "@angular/router": "5.2.3", "@ngrx/effects": "5.0.0", "@ngrx/router-store": "5.0.0", "@ngrx/store": "5.0.0", @@ -39,33 +39,33 @@ "@ngx-translate/core": "9.1.1", "@swimlane/ngx-charts": "7.0.1", "@swimlane/ngx-datatable": "11.1.7", - "@swimlane/ngx-dnd": "3.1.0", + "@swimlane/ngx-dnd": "3.1.2", "@types/prismjs": "1.9.0", - "angular-calendar": "0.23.2", - "angular-in-memory-web-api": "0.5.2", + "angular-calendar": "0.23.3", + "angular-in-memory-web-api": "0.5.3", "chart.js": "2.7.1", "classlist.js": "1.1.20150312", "core-js": "2.5.3", - "d3": "4.12.2", + "d3": "4.13.0", "hammerjs": "2.0.8", "intl": "1.2.5", "moment": "2.20.1", "ng2-charts": "1.6.0", - "ngrx-store-freeze": "0.2.0", - "ngx-color-picker": "5.3.0", + "ngrx-store-freeze": "0.2.1", + "ngx-color-picker": "5.3.1", "ngx-cookie-service": "1.0.10", "perfect-scrollbar": "1.3.0", - "prismjs": "1.10.0", + "prismjs": "1.11.0", "rxjs": "5.5.6", "web-animations-js": "2.3.1", "zone.js": "0.8.20" }, "devDependencies": { - "@angular/cli": "1.6.5", - "@angular/compiler-cli": "5.2.1", - "@angular/language-service": "5.2.1", + "@angular/cli": "1.6.7", + "@angular/compiler-cli": "5.2.3", + "@angular/language-service": "5.2.3", "@angularclass/hmr": "2.1.3", - "@types/jasmine": "2.8.5", + "@types/jasmine": "2.8.6", "@types/jasminewd2": "2.0.3", "@types/node": "6.0.96", "codelyzer": "4.1.0", @@ -73,14 +73,13 @@ "jasmine-spec-reporter": "4.2.1", "karma": "2.0.0", "karma-chrome-launcher": "2.2.0", - "karma-cli": "1.0.1", - "karma-coverage-istanbul-reporter": "1.3.3", + "karma-coverage-istanbul-reporter": "1.4.1", "karma-jasmine": "1.1.1", "karma-jasmine-html-reporter": "0.2.2", "protractor": "5.1.2", "ts-node": "4.1.0", "tslint": "5.9.1", - "typescript": "2.5.3", - "webpack-bundle-analyzer": "2.9.2" + "typescript": "2.6.2", + "webpack-bundle-analyzer": "2.10.0" } } diff --git a/src/app/app.module.ts b/src/app/app.module.ts index 2087f484..1fe9cb41 100644 --- a/src/app/app.module.ts +++ b/src/app/app.module.ts @@ -42,7 +42,7 @@ const appRoutes: Routes = [ }, { path : '**', - redirectTo: 'apps/dashboards/project' + redirectTo: 'apps/dashboards/analytics' } ]; diff --git a/src/app/fuse-fake-db/dashboard-analytics.ts b/src/app/fuse-fake-db/dashboard-analytics.ts index 086e5d34..77123a28 100644 --- a/src/app/fuse-fake-db/dashboard-analytics.ts +++ b/src/app/fuse-fake-db/dashboard-analytics.ts @@ -1,12 +1,6 @@ export class AnalyticsDashboardDb { public static widgets = { - /*widget2: { - overallGrowthPercentage: 17, - overallGrowthTrend : 'decrease', - averageDailyPercentage : 28, - averageDailyTrend : 'increase' - },*/ widget1: { chartType: 'line', datasets : { @@ -108,156 +102,166 @@ export class AnalyticsDashboardDb widget2: { conversion: { value : 492, - ofTarget: 22 + ofTarget: 13 }, - scheme : { - domain: ['#5c84f1'] - }, - data : [ + chartType : 'bar', + datasets : [ { - name : 'Monday', - value: 221 - }, - { - name : 'Tuesday', - value: 428 - }, - { - name : 'Wednesday', - value: 492 - }, - { - name : 'Thursday', - value: 471 - }, - { - name : 'Friday', - value: 413 - }, - { - name : 'Saturday', - value: 344 - }, - { - name : 'Sunday', - value: 294 + label: 'Conversion', + data : [221, 428, 492, 471, 413, 344, 294] } - ] - }, - widget3: { - impressions: { - value : '87.4M', - ofTarget: 12.3 - }, - scheme : { - domain: ['#5c84f1'] - }, - data : [ + ], + labels : ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'], + colors : [ { - name : 'Impressions', - series: [ + borderColor : '#42a5f5', + backgroundColor: '#42a5f5' + } + ], + options : { + spanGaps : false, + legend : { + display: false + }, + maintainAspectRatio: false, + layout : { + padding: { + top : 24, + left : 16, + right : 16, + bottom: 16 + } + }, + scales : { + xAxes: [ { - name : 'Jan 1', - value: 670000 - }, + display: false + } + ], + yAxes: [ { - name : 'Jan 2', - value: 540000 - }, - { - name : 'Jan 3', - value: 820000 - }, - { - name : 'Jan 4', - value: 570000 - }, - { - name : 'Jan 5', - value: 720000 - }, - { - name : 'Jan 6', - value: 570000 - }, - { - name : 'Jan 7', - value: 870000 - }, - { - name : 'Jan 8', - value: 720000 - }, - { - name : 'Jan 9', - value: 890000 - }, - { - name : 'Jan 10', - value: 987000 - }, - { - name : 'Jan 11', - value: 1120000 - }, - { - name : 'Jan 12', - value: 1360000 - }, - { - name : 'Jan 13', - value: 1100000 - }, - { - name : 'Jan 14', - value: 1490000 - }, - { - name : 'Jan 15', - value: 980000 + display: false, + ticks : { + min: 100, + max: 500 + } } ] } - ] + } + }, + widget3: { + impressions: { + value : '87k', + ofTarget: 12 + }, + chartType : 'line', + datasets : [ + { + label: 'Impression', + data : [67000, 54000, 82000, 57000, 72000, 57000, 87000, 72000, 89000, 98700, 112000, 136000, 110000, 149000, 98000], + fill : false + } + ], + labels : ['Jan 1', 'Jan 2', 'Jan 3', 'Jan 4', 'Jan 5', 'Jan 6', 'Jan 7', 'Jan 8', 'Jan 9', 'Jan 10', 'Jan 11', 'Jan 12', 'Jan 13', 'Jan 14', 'Jan 15'], + colors : [ + { + borderColor: '#5c84f1' + } + ], + options : { + spanGaps : false, + legend : { + display: false + }, + maintainAspectRatio: false, + elements : { + point: { + radius : 2, + borderWidth : 1, + hoverRadius : 2, + hoverBorderWidth: 1 + }, + line : { + tension: 0 + } + }, + layout : { + padding: { + top : 24, + left : 16, + right : 16, + bottom: 16 + } + }, + scales : { + xAxes: [ + { + display: false + } + ], + yAxes: [ + { + display: false, + ticks : { + // min: 100, + // max: 500 + } + } + ] + } + } }, widget4: { - visits: { + visits : { value : 882, - ofTarget: -12 + ofTarget: -9 }, - scheme: { - domain: ['#f44336'] - }, - data : [ + chartType: 'bar', + datasets : [ { - name : 'Monday', - value: 432 - }, - { - name : 'Tuesday', - value: 428 - }, - { - name : 'Wednesday', - value: 477 - }, - { - name : 'Thursday', - value: 471 - }, - { - name : 'Friday', - value: 456 - }, - { - name : 'Saturday', - value: 267 - }, - { - name : 'Sunday', - value: 231 + label: 'Visits', + data : [432, 428, 327, 363, 456, 267, 231] } - ] + ], + labels : ['Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday', 'Sunday'], + colors : [ + { + borderColor : '#f44336', + backgroundColor: '#f44336' + } + ], + options : { + spanGaps : false, + legend : { + display: false + }, + maintainAspectRatio: false, + layout : { + padding: { + top : 24, + left : 16, + right : 16, + bottom: 16 + } + }, + scales : { + xAxes: [ + { + display: false + } + ], + yAxes: [ + { + display: false, + ticks : { + min: 150, + max: 500 + } + } + ] + } + } }, widget5: { chartType: 'line', @@ -349,7 +353,7 @@ export class AnalyticsDashboardDb gridLines: { tickMarkLength: 16 }, - ticks : { + ticks : { stepSize: 1000 } } @@ -365,55 +369,135 @@ export class AnalyticsDashboardDb widget6: { markers: [ { - lat: 52, - lng: -73, + lat : 52, + lng : -73, label: '120' }, { - lat: 37, - lng: -104, + lat : 37, + lng : -104, label: '498' }, { - lat: 21, - lng: -7, + lat : 21, + lng : -7, label: '443' }, { - lat: 55, - lng: 75, + lat : 55, + lng : 75, label: '332' }, { - lat: 51, - lng: 7, + lat : 51, + lng : 7, label: '50' }, { - lat: 31, - lng: 12, + lat : 31, + lng : 12, label: '221' }, { - lat: 45, - lng: 44, + lat : 45, + lng : 44, label: '455' }, { - lat: -26, - lng: 134, + lat : -26, + lng : 134, label: '231' }, { - lat: -9, - lng: -60, + lat : -9, + lng : -60, label: '67' }, { - lat: 33, - lng: 104, + lat : 33, + lng : 104, label: '665' } + ], + styles : [ + { + 'featureType': 'administrative', + 'elementType': 'labels.text.fill', + 'stylers' : [ + { + 'color': '#444444' + } + ] + }, + { + 'featureType': 'landscape', + 'elementType': 'all', + 'stylers' : [ + { + 'color': '#f2f2f2' + } + ] + }, + { + 'featureType': 'poi', + 'elementType': 'all', + 'stylers' : [ + { + 'visibility': 'off' + } + ] + }, + { + 'featureType': 'road', + 'elementType': 'all', + 'stylers' : [ + { + 'saturation': -100 + }, + { + 'lightness': 45 + } + ] + }, + { + 'featureType': 'road.highway', + 'elementType': 'all', + 'stylers' : [ + { + 'visibility': 'simplified' + } + ] + }, + { + 'featureType': 'road.arterial', + 'elementType': 'labels.icon', + 'stylers' : [ + { + 'visibility': 'off' + } + ] + }, + { + 'featureType': 'transit', + 'elementType': 'all', + 'stylers' : [ + { + 'visibility': 'off' + } + ] + }, + { + 'featureType': 'water', + 'elementType': 'all', + 'stylers' : [ + { + 'color': '#039be5' + }, + { + 'visibility': 'on' + } + ] + } ] }, widget7: { diff --git a/src/app/main/content/apps/dashboards/analytics/analytics.component.html b/src/app/main/content/apps/dashboards/analytics/analytics.component.html index 803fdcd2..9c8f35f2 100644 --- a/src/app/main/content/apps/dashboards/analytics/analytics.component.html +++ b/src/app/main/content/apps/dashboards/analytics/analytics.component.html @@ -1,32 +1,5 @@
- -
-
+
-
+
-
+
-
-
Conversion
-
- {{widgets.widget2.conversion.value}} +
+ +
+
Conversion
+
+ {{widgets.widget2.conversion.value}} +
+ +
+
+ trending_up + {{widgets.widget2.conversion.ofTarget}}% +
+
+ trending_down + {{widgets.widget2.conversion.ofTarget}}% +
+
of target
+
+
-
- - {{widgets.widget2.conversion.ofTarget}}% - - - {{widgets.widget2.conversion.ofTarget}}% - - of target -
- -
- - +
+ +
@@ -111,32 +96,43 @@ -
+
-
+
-
-
Impressions
-
- {{widgets.widget3.impressions.value}} +
+ +
+
Impressions
+
+ {{widgets.widget3.impressions.value}} +
+ +
+
+ trending_up + {{widgets.widget3.impressions.ofTarget}}% +
+
+ trending_down + {{widgets.widget3.impressions.ofTarget}}% +
+
of target
+
+
-
- - {{widgets.widget3.impressions.ofTarget}}% - - - {{widgets.widget3.impressions.ofTarget}}% - - of target -
- -
- - +
+ +
@@ -145,32 +141,43 @@ -
+
-
-
Visits
-
- {{widgets.widget4.visits.value}} +
+ +
+
Visits
+
+ {{widgets.widget4.visits.value}} +
+ +
+
+ trending_up + {{widgets.widget4.visits.ofTarget}}% +
+
+ trending_down + {{widgets.widget4.visits.ofTarget}}% +
+
of target
+
+
-
- - {{widgets.widget4.visits.ofTarget}}% - - - {{widgets.widget4.visits.ofTarget}}% - - of target -
- -
- - +
+ +
@@ -181,11 +188,11 @@
-
+
How many pages your users visit?
-
+
@@ -220,22 +227,22 @@ -
+
Where are your users?
-
+
+ + [scrollwheel]="false" + [styles]="widgets.widget6.styles"> +
-
-
+
-
- What are your top devices? -
+
-
- -
-
Sessions by device
+
+ What are your top devices?
-
- - -
+
-
+
+
Sessions by device
+
-
+
+ + +
-
{{device.name}}
-
{{device.value}}%
+
-
- - arrow_downward - +
- - arrow_upward - +
{{device.name}}
+
{{device.value}}%
-
- {{device.change}}% +
+ + arrow_downward + + + + arrow_upward + + +
+ {{device.change}}% +
+
-
+
-
+
+ + + Today + Yesterday + Last 7 days + Last 28 days + Last 90 days + + -
- - - Today - Yesterday - Last 7 days - Last 28 days - Last 90 days - - + +
-
-
- How are your sales? -
+
-
+
+ How are your sales? +
-
+
-
-
-
Sales
-
Lifetime sum of your sales
+
+ +
+
+
Sales
+
Lifetime sum of your sales
+
+ +
+ + + + + + + +
+
+
{{widgets.widget8.today}}
+
+ trending_up + trending_down +
{{widgets.widget8.change.value}} + ({{widgets.widget8.change.percentage}}%) +
+
+
+ +
+ + + +
+ + +
+
+ + +
+ + +
+
+ + +
+ + +
+
+
+ +
+ +
+ + + + +
+ +
+ What are your top campaigns? +
+ +
+ +
+
Top campaigns
+
- - - - -
-
-
{{widgets.widget8.today}}
-
- trending_up - trending_down -
{{widgets.widget8.change.value}} - ({{widgets.widget8.change.percentage}}%) -
-
+ + + + + + + + + + + + + + + +
ClicksConv
{{row.title}}{{row.clicks}}{{row.conversion}}
+ +
+ +
+
- - -
- - -
-
- - -
- - -
-
- - -
- - -
-
-
- -
- - - -
- What are your top campaigns? -
- -
- -
-
Top campaigns
- -
- - - - - - - -
-
- - - - - - - - - - - - - - - - -
ClicksConv
{{row.title}}{{row.clicks}}{{row.conversion}}
- -
- -
- -
-
@@ -485,5 +507,4 @@
-
diff --git a/src/app/main/content/apps/dashboards/analytics/analytics.component.scss b/src/app/main/content/apps/dashboards/analytics/analytics.component.scss index b468e72c..60e4858d 100644 --- a/src/app/main/content/apps/dashboards/analytics/analytics.component.scss +++ b/src/app/main/content/apps/dashboards/analytics/analytics.component.scss @@ -1,37 +1,7 @@ +@import "src/app/core/scss/fuse"; + #dashboard-analytics { - /*#widget1 { - - .line-series { - - .line { - stroke-width: 2px; - } - } - - .gridline-path { - - &.gridline-path-horizontal { - stroke: rgba(255, 255, 255, 0.12); - } - - &.gridline-path-vertical { - stroke-width: 0; - } - } - - .tick { - - text { - fill: rgba(255, 255, 255, 0.37) - } - } - - .tooltip-anchor { - fill: rgba(255, 255, 255, 0.54); - } - }*/ - .main-widget { display: flex; flex-direction: column; @@ -39,16 +9,23 @@ .content { display: flex; - flex: 1 0 auto; + flex: 1 1 auto; padding: 32px; + min-width: 0; + + @include media-breakpoint-down('md') { + flex-direction: column; + } .left { display: flex; flex-direction: column; - flex: 1 0 auto; + flex: 1 1 auto; + min-width: 0; .widget { - flex: 1 0 auto; + flex: 1 1 auto; + min-width: 0; } } @@ -58,6 +35,14 @@ width: 320px; min-width: 320px; max-width: 320px; + + @include media-breakpoint-down('md') { + flex: 1 0 100%; + margin-top: 32px; + width: 100%; + min-width: 0; + max-width: none; + } } } diff --git a/src/app/navigation/navigation.model.ts b/src/app/navigation/navigation.model.ts index 28499e8d..0ab3b6a4 100644 --- a/src/app/navigation/navigation.model.ts +++ b/src/app/navigation/navigation.model.ts @@ -21,18 +21,18 @@ export class FuseNavigationModel implements FuseNavigationModelInterface 'type' : 'collapse', 'icon' : 'dashboard', 'children' : [ + { + 'id' : 'analytics', + 'title': 'Analytics', + 'type' : 'item', + 'url' : '/apps/dashboards/analytics' + }, { 'id' : 'project', 'title': 'Project', 'type' : 'item', 'url' : '/apps/dashboards/project' }, - { - 'id' : 'analytics', - 'title': 'Analytics', - 'type' : 'item', - 'url' : '/apps/dashboards/analytics' - } ] }, { From 43b85ca3b6d57e747fcc8261b5c98e34003392a7 Mon Sep 17 00:00:00 2001 From: Sercan Yemen Date: Mon, 5 Feb 2018 17:04:22 +0300 Subject: [PATCH 9/9] Reverted the ngx-dnd back to 3.1.0 + Added missing debounceTime imports to prevent errors --- package-lock.json | 12 +++--------- package.json | 2 +- .../apps/chat/sidenavs/left/user/user.component.ts | 1 + .../main/content/apps/contacts/contacts.component.ts | 1 + .../apps/todo/todo-details/todo-details.component.ts | 1 + src/app/main/content/apps/todo/todo.component.ts | 1 + src/app/main/content/pages/faq/faq.component.ts | 1 + 7 files changed, 9 insertions(+), 10 deletions(-) diff --git a/package-lock.json b/package-lock.json index be40b44c..dc5c6681 100644 --- a/package-lock.json +++ b/package-lock.json @@ -332,19 +332,13 @@ "integrity": "sha512-TMDN26Q4J+Sh+OPqAx8BK5Q/3hAAmcTAUQ9wvC9nboSOAmYUaHGz8t21yGdeUtRtunIfMpjTnwLa+X2Pfoq42w==" }, "@swimlane/ngx-dnd": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@swimlane/ngx-dnd/-/ngx-dnd-3.1.2.tgz", - "integrity": "sha512-jwZxW+s8sI8fk2HfgiuzhLhju2JPiDrqjJHHD2lQlLPikfPdjPasXYdiZSKp/2WDsEuj3a9fkGjpN4s2gPayuQ==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@swimlane/ngx-dnd/-/ngx-dnd-3.1.0.tgz", + "integrity": "sha512-Ph7fpK+H8OkS7TyFjNGRn+sLwrmvJbnx9hieiTlKtEgB9kGU39qkZx6eGBdzs5MOsLRd8OP8DnVhiuf4XSm7cA==", "requires": { - "@types/dragula": "2.1.32", "dragula": "3.7.2" } }, - "@types/dragula": { - "version": "2.1.32", - "resolved": "https://registry.npmjs.org/@types/dragula/-/dragula-2.1.32.tgz", - "integrity": "sha512-67nXH/pjZPTrbQ+Sr/Wy/luKVJPOOy7ErML58TgoO4A0vokIvvSt3+x1FHwp6Q455Kj03xGjCyHkhaelAdQMWA==" - }, "@types/jasmine": { "version": "2.8.6", "resolved": "https://registry.npmjs.org/@types/jasmine/-/jasmine-2.8.6.tgz", diff --git a/package.json b/package.json index 4f872368..28fc82ee 100644 --- a/package.json +++ b/package.json @@ -39,7 +39,7 @@ "@ngx-translate/core": "9.1.1", "@swimlane/ngx-charts": "7.0.1", "@swimlane/ngx-datatable": "11.1.7", - "@swimlane/ngx-dnd": "3.1.2", + "@swimlane/ngx-dnd": "3.1.0", "@types/prismjs": "1.9.0", "angular-calendar": "0.23.3", "angular-in-memory-web-api": "0.5.3", diff --git a/src/app/main/content/apps/chat/sidenavs/left/user/user.component.ts b/src/app/main/content/apps/chat/sidenavs/left/user/user.component.ts index d0db48fd..2ef84ffb 100644 --- a/src/app/main/content/apps/chat/sidenavs/left/user/user.component.ts +++ b/src/app/main/content/apps/chat/sidenavs/left/user/user.component.ts @@ -1,6 +1,7 @@ import { Component, OnDestroy, OnInit } from '@angular/core'; import { ChatService } from '../../../chat.service'; import { FormControl, FormGroup } from '@angular/forms'; +import 'rxjs/add/operator/debounceTime'; import 'rxjs/add/operator/distinctUntilChanged'; @Component({ diff --git a/src/app/main/content/apps/contacts/contacts.component.ts b/src/app/main/content/apps/contacts/contacts.component.ts index 67761196..9cf13b58 100644 --- a/src/app/main/content/apps/contacts/contacts.component.ts +++ b/src/app/main/content/apps/contacts/contacts.component.ts @@ -4,6 +4,7 @@ import { fuseAnimations } from '../../../../core/animations'; import { FormControl, FormGroup } from '@angular/forms'; import { FuseContactsContactFormDialogComponent } from './contact-form/contact-form.component'; import { MatDialog } from '@angular/material'; +import 'rxjs/add/operator/debounceTime'; import 'rxjs/add/operator/distinctUntilChanged'; import { Subscription } from 'rxjs/Subscription'; diff --git a/src/app/main/content/apps/todo/todo-details/todo-details.component.ts b/src/app/main/content/apps/todo/todo-details/todo-details.component.ts index 27c2ef83..9369dc3f 100644 --- a/src/app/main/content/apps/todo/todo-details/todo-details.component.ts +++ b/src/app/main/content/apps/todo/todo-details/todo-details.component.ts @@ -5,6 +5,7 @@ import { Subscription } from 'rxjs/Subscription'; import { FormBuilder, FormGroup } from '@angular/forms'; import { FuseUtils } from '../../../../../core/fuseUtils'; import { fuseAnimations } from '../../../../../core/animations'; +import 'rxjs/add/operator/debounceTime'; import 'rxjs/add/operator/distinctUntilChanged'; @Component({ diff --git a/src/app/main/content/apps/todo/todo.component.ts b/src/app/main/content/apps/todo/todo.component.ts index c9946d0f..ba7bc4a2 100644 --- a/src/app/main/content/apps/todo/todo.component.ts +++ b/src/app/main/content/apps/todo/todo.component.ts @@ -4,6 +4,7 @@ import { TodoService } from './todo.service'; import { FormControl } from '@angular/forms'; import { Todo } from './todo.model'; import { fuseAnimations } from '../../../../core/animations'; +import 'rxjs/add/operator/debounceTime'; import 'rxjs/add/operator/distinctUntilChanged'; @Component({ diff --git a/src/app/main/content/pages/faq/faq.component.ts b/src/app/main/content/pages/faq/faq.component.ts index faf506de..54670fb2 100644 --- a/src/app/main/content/pages/faq/faq.component.ts +++ b/src/app/main/content/pages/faq/faq.component.ts @@ -3,6 +3,7 @@ import { FormControl } from '@angular/forms'; import { Subscription } from 'rxjs/Subscription'; import { FaqService } from './faq.service'; import { FuseUtils } from '../../../../core/fuseUtils'; +import 'rxjs/add/operator/debounceTime'; import 'rxjs/add/operator/distinctUntilChanged'; @Component({