Init project

This commit is contained in:
alirezakarari
2021-01-09 20:53:13 +03:30
commit 8d06c89a89
1005 changed files with 105625 additions and 0 deletions
+107
View File
@@ -0,0 +1,107 @@
import mock from '@/fake-db/mock.js'
// Contact
const data = {
events: [
{
id: 1,
title: 'My Event',
startDate: new Date(new Date() - 1000 * 60 * 60 * 24 * 3),
endDate: new Date(new Date() - 1000 * 60 * 60 * 24 * 2),
url: '',
classes: 'event-success',
label: 'business'
}
],
labels: [
{
text: 'Business',
value : 'business',
color: 'success'
},
{
text: 'Work',
value: 'work',
color: 'warning'
},
{
text: 'Personal',
value: 'personal',
color: 'danger'
}
]
}
// GET : Calendar Events
mock.onGet('/api/apps/calendar/events').reply(() => {
return [200, data.events]
})
// POST : Add new events
mock.onPost('/api/apps/calendar/events/').reply((request) => {
// Get event from post data
const event = JSON.parse(request.data).event
const length = data.events.length
let lastIndex = 0
if (length) {
lastIndex = data.events[length - 1].id
}
event.id = lastIndex + 1
data.events.push(event)
return [201, {id: event.id}]
})
// GET: Fetch Calendar Labels
mock.onGet('api/apps/calendar/labels').reply(() => {
return [200, data.labels]
})
// POST: Update Event
mock.onPost(/\/api\/apps\/calendar\/event\/\d+/).reply((request) => {
const e = JSON.parse(request.data).event
e.startDate = new Date(e.startDate)
e.endDate = new Date(e.endDate)
const eventId = request.url.substring(request.url.lastIndexOf('/') + 1)
const event = data.events.find((event) => event.id == eventId)
Object.assign(event, e)
return [200, event]
})
// DELETE: Remove Event
mock.onDelete(/\/api\/apps\/calendar\/event\/\d+/).reply((request) => {
const eventId = request.url.substring(request.url.lastIndexOf('/') + 1)
const eventIndex = data.events.findIndex((event) => event.id == eventId)
data.events.splice(eventIndex, 1)
return [200]
})
// POST: Update Dragged Event
mock.onPost(/\/api\/apps\/calendar\/event\/dragged\/\d+/).reply((request) => {
const eventId = request.url.substring(request.url.lastIndexOf('/') + 1)
const event = data.events.find((event) => event.id == eventId)
const payload = JSON.parse(request.data).payload
const draggedDateStart = new Date(payload.date)
const eventStartDate = new Date(event.startDate).getTime()
const eventEndDate = new Date(event.endDate).getTime()
const diff = draggedDateStart - eventStartDate
const newEndDate = new Date(eventEndDate + diff)
event.startDate = draggedDateStart
event.endDate = newEndDate
return [200, event]
})
+288
View File
@@ -0,0 +1,288 @@
import mock from '@/fake-db/mock.js'
// Contact
const data = {
contacts: [
{
uid: 1,
displayName: 'Felecia Rower',
about: 'Cake pie jelly jelly beans. Marzipan lemon drops halvah cake. Pudding cookie lemon drops icing',
photoURL: require('@/assets/images/portrait/small/avatar-s-1.jpg'),
status: 'offline'
},
{
uid: 2,
displayName: 'Adalberto Granzin',
about: 'Toffee caramels jelly-o tart gummi bears cake I love ice cream lollipop. Sweet liquorice croissant candy danish dessert icing. Cake macaroon gingerbread toffee sweet.',
photoURL: require('@/assets/images/portrait/small/avatar-s-2.jpg'),
status: 'do not disturb'
},
{
uid: 3,
displayName: 'Joaquina Weisenborn',
about: 'Soufflé soufflé caramels sweet roll. Jelly lollipop sesame snaps bear claw jelly beans sugar plum sugar plum.',
photoURL: require('@/assets/images/portrait/small/avatar-s-3.jpg'),
status: 'do not disturb'
},
{
uid: 4,
displayName: 'Verla Morgano',
about: 'Chupa chups candy canes chocolate bar marshmallow liquorice muffin. Lemon drops oat cake tart liquorice tart cookie. Jelly-o cookie tootsie roll halvah.',
photoURL: require('@/assets/images/portrait/small/avatar-s-4.jpg'),
status: 'online'
},
{
uid: 5,
displayName: 'Margot Henschke',
about: 'Cake pie jelly jelly beans. Marzipan lemon drops halvah cake. Pudding cookie lemon drops icing',
photoURL: require('@/assets/images/portrait/small/avatar-s-5.jpg'),
status: 'do not disturb'
},
{
uid: 6,
displayName: 'Sal Piggee',
about: 'Toffee caramels jelly-o tart gummi bears cake I love ice cream lollipop. Sweet liquorice croissant candy danish dessert icing. Cake macaroon gingerbread toffee sweet.',
photoURL: require('@/assets/images/portrait/small/avatar-s-6.jpg'),
status: 'online'
},
{
uid: 7,
displayName: 'Miguel Guelff',
about: 'Biscuit powder oat cake donut brownie ice cream I love soufflé. I love tootsie roll I love powder tootsie roll.',
photoURL: require('@/assets/images/portrait/small/avatar-s-7.jpg'),
status: 'online'
},
{
uid: 8,
displayName: 'Mauro Elenbaas',
about: 'Bear claw ice cream lollipop gingerbread carrot cake. Brownie gummi bears chocolate muffin croissant jelly I love marzipan wafer.',
photoURL: require('@/assets/images/portrait/small/avatar-s-8.jpg'),
status: 'away'
},
{
uid: 9,
displayName: 'Bridgett Omohundro',
about: 'Gummies gummi bears I love candy icing apple pie I love marzipan bear claw. I love tart biscuit I love candy canes pudding chupa chups liquorice croissant.',
photoURL: require('@/assets/images/portrait/small/avatar-s-9.jpg'),
status: 'offline'
},
{
uid: 10,
displayName: 'Zenia Jacobs',
about: 'Cake pie jelly jelly beans. Marzipan lemon drops halvah cake. Pudding cookie lemon drops icing',
photoURL: require('@/assets/images/portrait/small/avatar-s-10.jpg'),
status: 'away'
}
],
chats: {
1: {
isPinned: true,
msg: [
{
textContent: 'How can we help? We\'re here for you!',
time: 'Mon Dec 10 2018 07:45:00 GMT+0000 (GMT)',
isSent: true,
isSeen: true
},
{
textContent: 'Hey John, I am looking for the best admin template. Could you please help me to find it out?',
time: 'Mon Dec 10 2018 07:45:23 GMT+0000 (GMT)',
isSent: false,
isSeen: true
},
{
textContent: 'It should be Bootstrap 4 compatible.',
time: 'Mon Dec 10 2018 07:45:55 GMT+0000 (GMT)',
isSent: false,
isSeen: true
},
{
textContent: 'Absolutely!',
time: 'Mon Dec 10 2018 07:46:00 GMT+0000 (GMT)',
isSent: true,
isSeen: true
},
{
textContent: 'Modern admin is the responsive bootstrap 4 admin template.!',
time: 'Mon Dec 10 2018 07:46:05 GMT+0000 (GMT)',
isSent: true,
isSeen: true
},
{
textContent: 'Looks clean and fresh UI.',
time: 'Mon Dec 10 2018 07:46:23 GMT+0000 (GMT)',
isSent: false,
isSeen: true
},
{
textContent: 'It\'s perfect for my next project.',
time: 'Mon Dec 10 2018 07:46:33 GMT+0000 (GMT)',
isSent: false,
isSeen: true
},
{
textContent: 'How can I purchase it?',
time: 'Mon Dec 10 2018 07:46:43 GMT+0000 (GMT)',
isSent: false,
isSeen: true
},
{
textContent: 'Thanks, from ThemeForest.',
time: 'Mon Dec 10 2018 07:46:53 GMT+0000 (GMT)',
isSent: true,
isSeen: true
},
{
textContent: 'I will purchase it for sure. 👍',
time: 'Mon Dec 10 2018 07:47:00 GMT+0000 (GMT)',
isSent: false,
isSeen: false
}
]
},
2: {
isPinned: false,
msg: [
{
textContent: 'Hi',
time: 'Mon Dec 10 2018 07:45:00 GMT+0000 (GMT)',
isSent: true,
isSeen: true
},
{
textContent: 'Hello. How can I help You?',
time: 'Mon Dec 11 2018 07:45:15 GMT+0000 (GMT)',
isSent: false,
isSeen: true
},
{
textContent: 'Can I get details of my last transaction I made last month?',
time: 'Mon Dec 11 2018 07:46:10 GMT+0000 (GMT)',
isSent: true,
isSeen: true
},
{
textContent: 'We need to check if we can provide you such information.',
time: 'Mon Dec 11 2018 07:45:15 GMT+0000 (GMT)',
isSent: false,
isSeen: true
},
{
textContent: 'I will inform you as I get update on this.',
time: 'Mon Dec 11 2018 07:46:15 GMT+0000 (GMT)',
isSent: false,
isSeen: true
},
{
textContent: 'If it takes long you can mail me at my mail address.',
time: 'Mon Dec 11 2018 07:46:20 GMT+0000 (GMT)',
isSent: true,
isSeen: false
}
]
}
}
}
// Functions
const chatDataOfUser = (id) => {
return data.chats[Object.keys(data.chats).find(key => key == id)]
}
// GET : Contacts List
mock.onGet('/api/apps/chat/contacts').reply((request) => {
// Filter contact based on search query
const filteredContacts = data.contacts.filter((contact) => {
return contact.displayName.toLowerCase().includes(request.params.q.toLowerCase())
})
return [200, filteredContacts]
})
// GET : Get All Contacts
mock.onGet('/api/apps/chat/contacts').reply(() => {
return [200, data.contacts]
})
// GET : Get All Chats
mock.onGet('/api/apps/chat/chats').reply(() => {
return [200, data.chats]
})
// GET : Chats List
mock.onGet('/api/apps/chat/chat-contacts').reply((request) => {
const chatContactsArray = data.contacts.filter((contact) => {
if (data.chats[contact.uid]) return data.chats[contact.uid] && contact.displayName.toLowerCase().includes(request.params.q.toLowerCase())
})
return [200, chatContactsArray]
})
// POST : Mark all msgs as seen
mock.onPost('/api/apps/chat/mark-all-seen/').reply((request) => {
const contactId = JSON.parse(request.data).contactId
// Get chat data
const chatLog = chatDataOfUser(contactId)
// console.log(chatLog);
chatDataOfUser(1) == chatLog
// Loop over all msg & mark them as seen
chatLog.msg.forEach((msg) => {
msg.isSeen = true
})
// Set unsen Msg flag to 0
chatLog.unseenMsg = 0
// console.log(data.chats[0] == chatDataOfUser(contactId));
return [200]
})
mock.onPost('/api/apps/chat/set-pinned/').reply((request) => {
const {contactId, value} = JSON.parse(request.data)
const index = Object.keys(data.chats).find(key => key == contactId)
data.chats[index].isPinned = value
return [200, data.chats[index]]
})
mock.onPost('/api/apps/chat/msg').reply((request) => {
const payload = JSON.parse(request.data).payload
// Get chat data
payload.chatData = chatDataOfUser(payload.id)
if (payload.chatData) {
// If there's already chat. Push msg to existing chat
data.chats[Object.keys(data.chats).find(key => key == payload.id)].msg.push(payload.msg)
} else {
// Create New chat and add msg
data.chats[payload.id] = {isPinned: payload.isPinned,
msg: [payload.msg]}
}
return [200]
})
mock.onPost('/api/apps/chat/mark-all-seen').reply((request) => {
const uid = JSON.parse(request.data).id
// Get chat data
const chatLog = chatDataOfUser(uid)
chatLog.msg.forEach((msg) => {
msg.isSeen = true
})
return [200]
})
+691
View File
@@ -0,0 +1,691 @@
import mock from '@/fake-db/mock.js'
// Contact
const data = {
emails: [
{
id: 1,
sender: 'tommys@mail.com',
sender_name: 'سید علی حنایی',
to: ['johndoe@mail.com'],
// require('@/assets/images/portrait/small/avatar-s-1.jpg')
img: require('@/assets/images/portrait/small/avatar-s-1.jpg'),
subject: 'گواهی سپرده کالایی سکه',
cc: [],
bcc: [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
attachments: ['log.txt', 'sheet.xls'],
isStarred: false,
labels: ['private'],
time: 'Mon Dec 10 2018 07:46:00 GMT+0000 (GMT)',
replies: [],
mailFolder: 'inbox',
unread: false
},
{
id: 2,
sender: 'tressag@mail.com',
sender_name: 'محمد حسین عزیزان',
to: ['johndoe@mail.com'],
img: require('@/assets/images/portrait/small/avatar-s-2.jpg'),
subject: ' نه تنها حجم و ارزش معاملات و عرضه و تقاضا ثبت',
cc: ['vrushankbrahmshatriya@mail.com'],
bcc: ['menka@mail.com'],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
attachments: ['report.docx'],
isStarred: true,
labels: ['company', 'private'],
time: 'Mon Dec 10 2018 07:55:00 GMT+0000 (GMT)',
replies: [],
mailFolder: 'inbox',
unread: true
},
{
id: 3,
sender: 'hettiem@mail.com',
sender_name: 'مهدی بنی لوحی',
to: ['johndoe@mail.com', 'hello@pixinvent.net'],
img: require('@/assets/images/portrait/small/avatar-s-3.jpg'),
subject: ' نکته مهم دیگر این است که وقتی بر پایه ',
cc: [],
bcc: [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
attachments: [],
isStarred: false,
labels: ['company'],
time: 'Mon Dec 10 2018 08:35:00 GMT+0000 (GMT)',
replies: [
{
id: 4,
sender: 'johndoe@mail.com',
sender_name: 'محمد امین غلامی',
to: ['hettiem@mail.com'],
img: require('@/assets/images/portrait/small/avatar-s-11.jpg'),
subject: '',
cc: [],
bcc: [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
attachments: [],
isStarred: false,
labels: [],
time: 'Mon Dec 10 2018 10:56:00 GMT+0000 (GMT)',
replies: [],
mailFolder: '',
unread: false
},
{
id: 5,
sender: 'hettiem@mail.com',
sender_name: 'احمد رضا مقتدایی',
to: ['johndoe@mail.com'],
img: require('@/assets/images/portrait/small/avatar-s-3.jpg'),
subject: '',
cc: [],
bcc: [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
attachments: ['data.docx'],
isStarred: false,
labels: [],
time: 'Mon Dec 10 2018 11:25:00 GMT+0000 (GMT)',
replies: [],
mailFolder: '',
unread: false
}
],
mailFolder: 'spam',
unread: false
},
{
id: 10,
sender: 'louettae@mail.com',
sender_name: 'حبیب فکاری',
to: ['johndoe@mail.com'],
img: require('@/assets/images/portrait/small/avatar-s-4.jpg'),
subject: 'این عضو هیات مدیره بانک',
cc: [],
bcc: [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
attachments: ['report.docx'],
isStarred: false,
labels: ['important'],
time: 'Mon Dec 11 2018 10:55:00 GMT+0000 (GMT)',
replies: [],
mailFolder: 'inbox',
unread: false
},
{
'id': 11,
'sender': 'bposvner0@zdnet.com',
'sender_name': 'علی فریدی زاده',
'to': ['johndoe@dot.gov'],
'img': require('@/assets/images/portrait/small/avatar-s-11.jpg'),
'subject': ' در سبد سرمایه گذاری افراد را پیدا می کند',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['OrciMaurisLacinia.avi'],
'isStarred': true,
'labels': ['private'],
'time': 'Tue Dec 12 2018 11:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'spam',
'unread': true
},
{
'id': 12,
'sender': 'rgilder1@illinois.edu',
'sender_name': 'علیرضا کراری',
'to': ['johndoe@google.co.uk'],
'img': require('@/assets/images/portrait/small/avatar-s-6.jpg'),
'subject': ' نحوه نگهداری آن ندارد و برای خرید نیز نیازی',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['QuisOdio.txt'],
'isStarred': false,
'labels': ['personal'],
'time': 'Thu Dec 13 2018 08:25:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'trash',
'unread': true
},
{
'id': 13,
'sender': 'swilby2@yandex.ru',
'sender_name': 'مهدی ترابی',
'to': ['johndoe@altervista.org'],
'img': require('@/assets/images/portrait/small/avatar-s-1.jpg'),
'subject': 'قیمت سکه در بازار سنتی گفت',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['NecMolestieSed.tiff'],
'isStarred': false,
'labels': ['company'],
'time': 'Fri Dec 14 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'draft',
'unread': false
},
{
'id': 14,
'sender': 'wmannering3@mozilla.org',
'sender_name': 'سعید اسماعیلی',
'to': ['johndoe@sciencedaily.com'],
'img': require('@/assets/images/portrait/small/avatar-s-13.jpg'),
'subject': ' سپرده کالایی افزایش یابد تا شاهد ',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['Nulla.gif'],
'isStarred': false,
'labels': ['private'],
'time': 'Tue Dec 15 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'inbox',
'unread': false
},
{
'id': 15,
'sender': 'hfrostdyke4@scientificamerican.com',
'sender_name': 'علیرضا لندی ',
'to': ['johndoe@weibo.com'],
'img': require('@/assets/images/portrait/small/avatar-s-13.jpg'),
'subject': ' تحویل داده و پس از تایید اصالت ',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['SapienQuisLibero.tiff'],
'isStarred': true,
'labels': ['personal'],
'time': 'Tue Jan 01 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'trash',
'unread': false
},
{
'id': 16,
'sender': 'pjentzsch5@tamu.edu',
'sender_name': 'مجید طاهری',
'to': ['johndoe@skype.com'],
'img': require('@/assets/images/portrait/small/avatar-s-18.jpg'),
'subject': 'دیگر این است که وقتی بر پایه',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['UtNulla.avi'],
'isStarred': true,
'labels': ['important'],
'time': 'Tue Jan 03 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'draft',
'unread': false
},
{
'id': 17,
'sender': 'lminghetti6@yale.edu',
'sender_name': 'محمد اشجع',
'to': ['johndoe@fda.gov'],
'img': require('@/assets/images/portrait/small/avatar-s-4.jpg'),
'subject': 'صنعت مدیریت دارایی در کشور ',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['ElementumLigula.mp3'],
'isStarred': true,
'labels': ['company'],
'time': 'Tue Jan 03 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'trash',
'unread': false
},
{
'id': 18,
'sender': 'efinessy7@sbwire.com',
'sender_name': 'محمد رضا پناهی',
'to': ['johndoe@odnoklassniki.ru'],
'img': require('@/assets/images/portrait/small/avatar-s-2.jpg'),
'subject': ' حال انجام امور نهایی و تکمیل الحاقیه قرارداد',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['Hac.xls'],
'isStarred': true,
'labels': ['personal'],
'time': 'Tue Jan 04 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'sent',
'unread': false
},
{
'id': 19,
'sender': 'tmckeurton8@163.com',
'sender_name': 'ابراهیم اسپوتین',
'to': ['johndoe@nifty.com'],
'img': require('@/assets/images/portrait/small/avatar-s-14.jpg'),
'subject': 'عضو هیات مدیره بانک آینده',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['SedAnteVivamus.avi'],
'isStarred': true,
'labels': ['important'],
'time': 'Tue Jan 05 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'draft',
'unread': true
},
{
'id': 20,
'sender': 'ebegg9@wikia.com',
'sender_name': 'شهاب موسوی',
'to': ['johndoe@51.la'],
'img': require('@/assets/images/portrait/small/avatar-s-19.jpg'),
'subject': 'اهل دنیای موجود طراحی',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['Eget.jpeg'],
'isStarred': false,
'labels': ['company'],
'time': 'Tue Jan 06 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'inbox',
'unread': false
},
{
'id': 21,
'sender': 'mspata@sina.com.cn',
'sender_name': 'امیر قربانی',
'to': ['johndoe@oracle.com'],
'img': require('@/assets/images/portrait/small/avatar-s-9.jpg'),
'subject': 'سکه و نحوه نگهداری آن ندارد',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['Felis.xls'],
'isStarred': false,
'labels': ['company'],
'time': 'Tue Jan 07 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'inbox',
'unread': true
},
{
'id': 22,
'sender': 'cprandob@rambler.ru',
'sender_name': 'مرضیه محسنی',
'to': ['johndoe@vistaprint.com'],
'img': require('@/assets/images/portrait/small/avatar-s-2.jpg'),
'subject': 'شاهد بازگشایی نماد معاملاتی',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['HabitasJanlateaDictumst.avi'],
'isStarred': false,
'labels': ['company'],
'time': 'Tue Jan 08 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'sent',
'unread': false
},
{
'id': 23,
'sender': 'nbartlesc@merriam-webster.com',
'sender_name': 'احمد رضا شایسته',
'to': ['johndoe@si.edu'],
'img': require('@/assets/images/portrait/small/avatar-s-9.jpg'),
'subject': ' می توانند در این بازار محصولی',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['UltricesPosuere.mpeg'],
'isStarred': false,
'labels': ['personal'],
'time': 'Tue Jan 09 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'spam',
'unread': false
},
{
'id': 24,
'sender': 'rgennd@dedecms.com',
'sender_name': 'علی منتظر',
'to': ['johndoe@about.com'],
'img': require('@/assets/images/portrait/small/avatar-s-6.jpg'),
'subject': ' افزایش شفافیت در معاملات سکه',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['Id.tiff'],
'isStarred': true,
'labels': ['personal'],
'time': 'Tue Jan 10 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'spam',
'unread': false
},
{
'id': 25,
'sender': 'eramelote@webeden.co.uk',
'sender_name': 'محمد بروجردی',
'to': ['johndoe@tinypic.com'],
'img': require('@/assets/images/portrait/small/avatar-s-6.jpg'),
'subject': 'طراحی اساسا مورد استفاده',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['Augue.mp3'],
'isStarred': true,
'labels': ['personal'],
'time': 'Tue Jan 11 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'spam',
'unread': true
},
{
'id': 26,
'sender': 'pcuzenf@mediafire.com',
'sender_name': 'کاظم فیاض',
'to': ['johndoe@google.es'],
'img': require('@/assets/images/portrait/small/avatar-s-9.jpg'),
'subject': ' ثبت می شود و به مرور با ',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['Leo.avi'],
'isStarred': false,
'labels': ['private'],
'time': 'Tue Jan 12 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'spam',
'unread': true
},
{
'id': 27,
'sender': 'abaldersong@utexas.edu',
'sender_name': 'محمد رضایی',
'to': ['johndoe@ow.ly'],
'img': require('@/assets/images/portrait/small/avatar-s-18.jpg'),
'subject': 'تسویه حساب سفارش #856620',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['Interdum.doc'],
'isStarred': true,
'labels': ['company'],
'time': 'Tue Jan 13 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'inbox',
'unread': true
},
{
'id': 28,
'sender': 'dmallallh@ask.com',
'sender_name': 'کاظم فیاض',
'to': ['johndoe@furl.net'],
'img': require('@/assets/images/portrait/small/avatar-s-4.jpg'),
'subject': ' سبد سرمایه گذاری',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['AdipiscingElit.ppt'],
'isStarred': true,
'labels': ['company'],
'time': 'Tue Jan 14 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'draft',
'unread': true
},
{
'id': 29,
'sender': 'nmacgaughyi@aol.com',
'sender_name': 'مرتضی لندی',
'to': ['johndoe@cnet.com'],
'img': require('@/assets/images/portrait/small/avatar-s-18.jpg'),
'subject': ' خاصی از بابت تایید اصالت سکه ',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['AnteIpsumPrimis.ppt'],
'isStarred': false,
'labels': ['private'],
'time': 'Tue Jan 16 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'trash',
'unread': false
},
{
'id': 30,
'sender': 'douldcottj@yellowpages.com',
'sender_name': 'علی منتظر',
'to': ['johndoe@github.io'],
'img': require('@/assets/images/portrait/small/avatar-s-19.jpg'),
'subject': 'ر حال انجام امور نهایی و تکمیل الحاقیه ',
'cc': [],
'bcc': [],
'message': '<p>لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ، و با استفاده از طراحان گرافیک است، چاپگرها و متون بلکه روزنامه و مجله در ستون و سطرآنچنان که لازم است، و برای شرایط فعلی تکنولوژی مورد نیاز، و کاربردهای متنوع با هدف بهبود ابزارهای کاربردی می باشد، کتابهای زیادی در شصت و سه درصد گذشته حال و آینده، شناخت فراوان جامعه و متخصصان را می طلبد، تا با نرم افزارها شناخت بیشتری را برای طراحان رایانه ای علی الخصوص طراحان خلاقی، و فرهنگ پیشرو در زبان فارسی ایجاد کرد، در این صورت می توان امید داشت که تمام و دشواری موجود در ارائه راهکارها، و شرایط سخت تایپ به پایان رسد و زمان مورد نیاز شامل حروفچینی دستاوردهای اصلی، و جوابگوی سوالات پیوسته اهل دنیای موجود طراحی اساسا مورد استفاده قرار گیرد.</p>',
'attachments': ['EratFermentum.mpeg'],
'isStarred': true,
'labels': ['personal'],
'time': 'Tue Jan 17 2018 10:55:00 GMT+0000 (GMT)',
'replies': [],
'mailFolder': 'trash',
'unread': false
}
],
emailTags: [
{
text: 'شخصی',
value : 'personal',
color:'success'
},
{
text: 'سفارشات',
value: 'company',
color:'primary'
},
{
text: 'فوری',
value: 'important',
color:'warning'
},
{
text: 'مالی',
value: 'private',
color:'danger'
}
]
}
// GET : Emails
mock.onGet('api/apps/email/mails').reply((request) => {
const filter = request.params.filter
const filteredEmails = data.emails.filter((email) => {
if (filter == 'inbox') return email.mailFolder === 'inbox'
if (filter === 'sent') return email.mailFolder === 'sent'
if (filter === 'draft') return email.mailFolder === 'draft'
if (filter === 'starred') return email.isStarred && email.mailFolder !== 'trash'
if (filter === 'trash') return email.mailFolder === 'trash'
if (filter === 'spam') return email.mailFolder === 'spam'
else return email.mailFolder != 'trash' && email.labels.includes(filter)
}).reverse()
return [200, JSON.parse(JSON.stringify(filteredEmails))]
})
// GET : Emails
mock.onGet('api/apps/email/tags').reply(() => {
return [200, data.emailTags]
})
// GET : Unread Mails
mock.onGet('/api/apps/email/meta').reply(() => {
const countUnreadMailFolders = ['inbox', 'spam']
const meta = {
unreadMails: {
folder: {},
label: {}
},
draftMails: []
}
data.emails.forEach((mail) => {
// Count unread mails
if (mail.unread) {
// Add mail id
if (countUnreadMailFolders.includes(mail.mailFolder)) {
meta.unreadMails.folder[mail.mailFolder] ? meta.unreadMails.folder[mail.mailFolder].push(mail.id) : meta.unreadMails.folder[mail.mailFolder] = [mail.id]
}
// Add mail id
mail.labels.forEach((label) => {
meta.unreadMails.label[label] ? meta.unreadMails.label[label].push(mail.id) : meta.unreadMails.label[label] = [mail.id]
})
}
// Get draft mail count
if (mail.mailFolder === 'draft') meta.draftMails.push(mail.id)
})
return [200, meta]
})
// POST : Move Mails to another folder
mock.onPost('/api/apps/email/move-mails').reply((request) => {
const mailsToMove = JSON.parse(request.data).emailIds
data.emails.forEach((mail) => {
if (mailsToMove.includes(mail.id)) mail.mailFolder = JSON.parse(request.data).mailFolder
})
return [200]
})
// POST : Update Mails Labels
mock.onPost('/api/apps/email/update-labels').reply((request) => {
const label = JSON.parse(request.data).label
const mailsToUpdate = JSON.parse(request.data).emailIds
mailsToUpdate.forEach((mailId) => {
const mailIndex = data.emails.findIndex((mail) => mail.id == mailId)
const labelIndex = data.emails[mailIndex].labels.indexOf(label)
if (labelIndex == -1) {
data.emails[mailIndex].labels.push(label)
} else {
data.emails[mailIndex].labels.splice(labelIndex, 1)
}
})
return [200]
})
// POST : Set Mails Labels for single mail
mock.onPost('/api/apps/email/set-labels').reply((request) => {
const mailId = JSON.parse(request.data).mailId
data.emails.find((mail) => mail.id === mailId).labels = JSON.parse(request.data).labels
return [200]
})
// POST : Mark as Unread
mock.onPost('/api/apps/email/mark-unread').reply((request) => {
const mailsToUpdate = JSON.parse(request.data).emailIds
mailsToUpdate.forEach((mailId) => {
const mailIndex = data.emails.findIndex((mail) => mail.id == mailId)
data.emails[mailIndex].unread = JSON.parse(request.data).unreadFlag
})
return [200]
})
// POST : Set starred
mock.onPost('/api/apps/email/set-starred').reply((request) => {
const mailId = JSON.parse(request.data).mailId
data.emails.find((mail) => mail.id === mailId).isStarred = JSON.parse(request.data).value
return [200]
})
// GET: Fetch Calendar Labels
// mock.onGet("api/apps/calendar/labels").reply(() => {
// return [200, data.labels]
// })
// POST: Update Event
// mock.onPost(/\/api\/apps\/calendar\/event\/\d+/).reply((request) => {
// const eventId = request.url.substring(request.url.lastIndexOf("/")+1)
// let event = data.events.find((event) => event.id == eventId)
// Object.assign(event, JSON.parse(request.data).event)
// return [200, event]
// })
// DELETE: Remove Event
// mock.onDelete(/\/api\/apps\/calendar\/event\/\d+/).reply((request) => {
// const eventId = request.url.substring(request.url.lastIndexOf("/")+1)
// const eventIndex = data.events.findIndex((event) => event.id == eventId)
// data.events.splice(eventIndex, 1)
// return [200]
// })
// POST: Update Dragged Event
// mock.onPost(/\/api\/apps\/calendar\/event\/dragged\/\d+/).reply((request) => {
// const eventId = request.url.substring(request.url.lastIndexOf("/")+1)
// let event = data.events.find((event) => event.id == eventId)
// const payload = JSON.parse(request.data).payload
// const draggedDateStart = new Date(payload.date)
// const eventStartDate = new Date(event.startDate).getTime()
// const eventEndDate = new Date(event.endDate).getTime()
// const diff = draggedDateStart - eventStartDate
// const newEndDate = new Date(eventEndDate + diff)
// event.startDate = draggedDateStart
// event.endDate = newEndDate
// return [200, event]
// })
+4
View File
@@ -0,0 +1,4 @@
import './chat/index.js'
import './calendar/index.js'
import './todo/index.js'
import './email/index.js'
+198
View File
@@ -0,0 +1,198 @@
import mock from '@/fake-db/mock.js'
// Contact
const data = {
tasks: [
{
'id': 10,
'title': 'Refactor Code',
'desc': 'Pie liquorice wafer cotton candy danish. Icing topping jelly-o halvah pastry lollipop.',
'isImportant': true,
'isStarred': false,
'tags': ['doc', 'backend'],
'isCompleted': false,
'isTrashed': false
},
{
'id': 11,
'title': 'Submit Report',
'desc': 'Donut tart toffee cake cookie gingerbread. Sesame snaps brownie sugar plum candy canes muffin cotton candy.',
'isImportant': false,
'isStarred': true,
'tags': ['frontend', 'doc'],
'isCompleted': false,
'isTrashed': false
},
{
'id': 15,
'title': 'Send PPT 🎁',
'desc': 'Dragée gummi bears tiramisu brownie cookie. Jelly beans pudding marzipan fruitcake muffin. Wafer gummi bears lollipop pudding lollipop biscuit.',
'isImportant': true,
'isStarred': true,
'tags': ['backend', 'doc'],
'isCompleted': false,
'isTrashed': false
},
{
'id': 18,
'title': 'Skype Tommy',
'desc': 'Tart oat cake sesame snaps lollipop croissant cake biscuit.',
'isImportant': false,
'isStarred': false,
'tags': ['bug'],
'isCompleted': true,
'isTrashed': false
},
{
'id': 20,
'title': 'Pick up Natasha 😁',
'desc': 'Sweet roll toffee dragée cotton candy jelly beans halvah gingerbread jelly-o. Ice cream bear claw sugar plum powder.',
'isImportant': true,
'isStarred': true,
'tags': [],
'isCompleted': false,
'isTrashed': false
},
{
'id': 23,
'title': 'Meet Jane ❤️',
'desc': 'Toffee sugar plum oat cake tiramisu tart bonbon gingerbread cheesecake cake. ',
'isImportant': true,
'isStarred': true,
'tags': ['frontend', 'backend', 'doc'],
'isCompleted': false,
'isTrashed': false
},
{
'id': 25,
'title': 'Promot Products',
'desc': 'Gummi bears bear claw cake tiramisu gummies tiramisu apple pie chocolate jujubes. ',
'isImportant': true,
'isStarred': false,
'tags': [],
'isCompleted': false,
'isTrashed': true
},
{
'id': 28,
'title': 'Fix Project',
'desc': 'Cookie fruitcake macaroon muffin apple pie chocolate bar toffee oat cake. Icing chocolate danish.',
'isImportant': false,
'isStarred': false,
'tags': ['backend'],
'isCompleted': false,
'isTrashed': true
},
{
'id': 29,
'title': 'Remove redundant files',
'desc': 'Brownie jelly beans tootsie roll brownie marshmallow. Sesame snaps halvah marzipan chocolate cake. Icing bear claw pie apple pie.',
'isImportant': false,
'isStarred': false,
'tags': [],
'isCompleted': true,
'isTrashed': true
},
{
'id': 33,
'title': 'Fix Responsiveness 💻',
'desc': 'Jelly topping toffee bear claw. Sesame snaps lollipop macaroon croissant cheesecake pastry cupcake.',
'isImportant': true,
'isStarred': false,
'tags': ['frontend'],
'isCompleted': false,
'isTrashed': false
}
],
taskTags: [
{
id: 5,
text: 'Frontend',
value : 'frontend',
color: 'primary'
},
{
id: 7,
text: 'Backend',
value: 'backend',
color: 'warning'
},
{
id: 8,
text: 'Doc',
value: 'doc',
color: 'success'
},
{
id: 11,
text: 'Bug',
value: 'bug',
color: 'danger'
}
]
}
// POST : Add new Tasks
mock.onPost('/api/apps/todo/tasks/').reply((request) => {
// Get task from post data
const task = JSON.parse(request.data).task
const length = data.tasks.length
let lastIndex = 0
if (length) {
lastIndex = data.tasks[length - 1].id
}
task.id = lastIndex + 1
data.tasks.push(task)
return [201, {id: task.id}]
})
// GET: Fetch Todos
mock.onGet('api/apps/todo/tasks').reply((request) => {
const filter = request.params.filter
const filteredTasks = data.tasks.filter((task) => {
// If filter == all
if (filter === 'all') return !task.isTrashed
// If filter == starred
if (filter === 'starred') return !task.isTrashed && task.isStarred
// If filter == important
if (filter === 'important') return !task.isTrashed && task.isImportant
// If filter == completed
if (filter === 'completed') return !task.isTrashed && task.isCompleted
// If filter == trashed
if (filter === 'trashed') return task.isTrashed
else return task.tags.includes(filter)
})
return [200, JSON.parse(JSON.stringify(filteredTasks)).reverse()]
})
// GET: Fetch tags
mock.onGet('api/apps/todo/tags').reply(() => {
return [200, JSON.parse(JSON.stringify(data.taskTags))]
})
// POST: Update Task
mock.onPost(/\/api\/apps\/todo\/task\/\d+/).reply((request) => {
const taskId = request.url.substring(request.url.lastIndexOf('/') + 1)
const task = data.tasks.find((task) => task.id == taskId)
// task.title = JSON.parse(request.data).task.title
Object.assign(task, JSON.parse(request.data).task)
return [200, task]
})
+279
View File
@@ -0,0 +1,279 @@
import mock from '@/fake-db/mock.js'
const data = {
subscribers_gained: {
analyticsData: [
{
device: 'فعال',
icon: 'UserIcon',
color: 'primary',
sessionsPercentage: 58.6,
comparedResultPercentage: -2
},
{
device: 'نیمه فعال',
icon: 'UserMinusIcon',
color: 'warning',
sessionsPercentage: 34.9,
comparedResultPercentage: 8
},
{
device: 'غیر فعال',
icon: 'UserXIcon',
color: 'danger',
sessionsPercentage: 6.5,
comparedResultPercentage: -5
}
],
series: [58.6, 34.9, 6.5]
},
productsOrders: {
analyticsData: [
{
'orderType': 'تمام شده',
'counts': 23043,
'color': 'primary'
},
{
'orderType': 'در حال پردازش',
'counts': 14658,
'color': 'warning'
},
{
'orderType': 'لغو شده ',
'counts': 4758,
'color': 'danger'
}
],
series: [70, 52, 26]
},
customers: {
analyticsData: [
{
'customerType': 'New',
'counts': 890,
'color': 'primary'
},
{
'customerType': 'Returning',
'counts': 258,
'color': 'warning'
},
{
'customerType': 'Referrals ',
'counts': 149,
'color': 'danger'
}
],
series: [690, 258, 149]
},
salesRadar: {
series: [
{
name: 'Visits',
data: [90, 50, 86, 40, 100, 20]
},
{
name: 'Sales',
data: [70, 75, 70, 76, 20, 85]
}
]
},
supportTracker: {
analyticsData: {
openTickets: 163,
meta: {
'New Tickets': 29,
'Open Tickets': 63,
'Response Time': '1d'
}
},
series: [83]
},
revenueComparisonLine: {
analyticsData: {
thisMonth: 86589,
lastMonth: 73683
},
series: [
{
name: 'ماه جاری',
data: [45000, 47000, 44800, 47500, 45500, 48000, 46500, 48600]
},
{
name: 'ماه گذشته',
data: [46000, 48000, 45500, 46600, 44500, 46500, 45000, 47000]
}
]
},
goalOverviewRadialBar: {
analyticsData: {
completed: 786617,
inProgress: 13561
},
series: [83]
},
salesBarSession: {
series: [
{
name: 'Sessions',
data: [75, 125, 225, 175, 125, 75, 25]
}
],
analyticsData: {
session: 2700,
comparison : {
str: 'Last 7 Days',
result: +5.2
}
}
},
todoToday: {
date: 'Sat, 16 Feb',
numCompletedTasks: 2,
totalTasks: 10,
tasksToday: [
{
id: 3,
task: 'Refactor button component',
date: '16 Feb 2019'
},
{
id: 70,
task: 'Submit report to admin',
date: '16 Feb 2019'
},
{
id: 8,
task: 'Prepare presentation',
date: '16 Feb 2019'
},
{
id: 1,
task: 'Calculate monthly income',
date: '16 Feb 2019'
}
]
},
salesLine: {
series: [
{
name: 'Sales',
data: [140, 180, 150, 205, 160, 295, 125, 255, 205, 305, 240, 295]
}
]
},
funding: {
currBalance: 22597,
depostis: 20065,
comparison: {
resultPerc: 5.2,
pastData: 956
},
meta: {
earned: {
val: 56156,
progress: 50
},
duration: {
val: '2 Year',
progress: 50
}
}
},
browserAnalytics: [
{
id: 1,
name: 'Google Chrome',
ratio: 73,
time: 'Mon Dec 10 2018 07:46:05 GMT+0000 (GMT)',
comparedResult: '800'
},
{
id: 3,
name: 'Opera',
ratio: 8,
time: 'Mon Dec 10 2018 07:46:05 GMT+0000 (GMT)',
comparedResult: '-200'
},
{
id: 2,
name: 'Firefox',
ratio: 19,
time: 'Mon Dec 10 2018 07:46:05 GMT+0000 (GMT)',
comparedResult: '100'
},
{
id: 4,
name: 'Internet Explorer',
ratio: 27,
time: 'Mon Dec 10 2018 07:46:05 GMT+0000 (GMT)',
comparedResult: '-450'
}
],
clientRetention: {
series: [
{
name: 'تومان',
data: [175, 125, 225, 175, 160, 189, 206, 134, 159, 216, 148, 123]
},
{
name: 'گرم',
data: [144, 155, 141, 167, 122, 143, 158, 107, 126, 131, 140, 137]
}
]
}
}
mock.onGet('/api/card/card-analytics/session-by-device').reply(() => {
return [200, data.subscribers_gained]
})
mock.onGet('/api/card/card-analytics/products-orders').reply(() => {
return [200, data.productsOrders]
})
mock.onGet('/api/card/card-analytics/customers').reply(() => {
return [200, data.customers]
})
mock.onGet('/api/card/card-analytics/sales/radar').reply(() => {
return [200, data.salesRadar]
})
mock.onGet('/api/card/card-analytics/support-tracker').reply(() => {
return [200, data.supportTracker]
})
mock.onGet('/api/card/card-analytics/revenue-comparison').reply(() => {
return [200, data.revenueComparisonLine]
})
mock.onGet('/api/card/card-analytics/goal-overview').reply(() => {
return [200, data.goalOverviewRadialBar]
})
mock.onGet('/api/card/card-analytics/sales/bar').reply(() => {
return [200, data.salesBarSession]
})
mock.onGet('/api/card/card-analytics/todo/today').reply(() => {
return [200, data.todoToday]
})
mock.onGet('/api/card/card-analytics/sales/line').reply(() => {
return [200, data.salesLine]
})
mock.onGet('/api/card/card-analytics/funding').reply(() => {
return [200, data.funding]
})
mock.onGet('/api/card/card-analytics/browser-analytics').reply(() => {
return [200, data.browserAnalytics]
})
mock.onGet('/api/card/card-analytics/client-retention').reply(() => {
return [200, data.clientRetention]
})
+188
View File
@@ -0,0 +1,188 @@
import mock from '@/fake-db/mock.js'
const data = {
pixinvent_product_1: {
img: require('@/assets/images/pages/content-img-1.jpg'),
title: 'Vuexy Admin',
subtitle: 'By Pixinvent Creative Studio',
subtitle_2: 'Elite Author'
},
pixinvent_product_sales_1: {
img: require('@/assets/images/pages/content-img-2.jpg'),
title: 'Vuexy Admin',
subtitle: 'By Pixinvent Creative Studio',
footer_text_left_value: '$ 4785.78',
footer_text_left_label: 'Income',
footer_text_right_value: '12 June 2019',
footer_text_right_label: 'Release Date'
},
pixinvent_product_goal_1: {
img: require('@/assets/images/pages/content-img-3.jpg'),
title: 'Vuexy Admin',
progress_done_per: 75,
current_progress: '$ 5975',
progress_goal: '$ 8000',
btn_left_text: 'Add More',
btn_right_text: 'Remove'
},
user_detail_89: {
userImg: require('@/assets/images/portrait/small/avatar-s-12.jpg'),
name: 'Zoila Legore',
profession: 'Backend Dev',
btn_1_text: 'Follow',
btn_2_text: 'Message',
footer_text_1_icon: 'StarIcon',
footer_text_1: '4.9',
footer_text_2_icon: 'BriefcaseIcon',
footer_text_2: '37 Projects'
},
user_detail_58: {
userImg: require('@/assets/images/portrait/small/avatar-s-12.jpg'),
name: 'Wilhelmina Jamal',
profession: 'Frontend Dev',
user_meta_1_title: 568,
user_meta_1_label: 'Uploads',
user_meta_2_title: '78.6K',
user_meta_2_label: 'Followers',
user_meta_3_title: 112,
user_meta_3_label: 'Following',
btn_text: 'Follow'
},
user_detail_16: {
userImg: require('@/assets/images/portrait/small/avatar-s-1.jpg'),
name: 'Jonell Binion',
profession: 'Designer',
progress_done_per: 72,
current_progress: '720 Points',
progress_goal: '1000',
btn_left_text: 'Follow',
btn_right_text: 'Message'
},
place_detail_18: {
overlay_img: require('@/assets/images/pages/card-image-6.jpg'),
title: 'Beautiful Overlay',
text: 'Cake sesame snaps cupcake gingerbread danish I love gingerbread. Apple pie pie jujubes chupa chups muffin halvah lollipop.'
},
place_weather_76: {
overlay_img: require('@/assets/images/pages/card-image-5.jpg'),
place_name: 'New York',
weather: 'Snowy',
weather_icon: 'CloudSnowIcon',
temperature: -6,
meta: [
{
label: 'Precipitation',
value: '48%'
},
{
label: 'Humidity',
value: '60%'
},
{
label: 'Wind',
value: '4823 km/h'
}
]
},
chatLog: [
{
senderImg: require('@/assets/images/portrait/small/avatar-s-2.jpg'),
msg: 'Cake sesame snaps cupcake gingerbread',
isSent: false
},
{
senderImg: require('@/assets/images/portrait/small/avatar-s-5.jpg'),
msg: 'Apple pie pie jujubes chupa chups muffin',
isSent: true
},
{
senderImg: require('@/assets/images/portrait/small/avatar-s-2.jpg'),
msg: 'Chocolate cake',
isSent: false
},
{
senderImg: require('@/assets/images/portrait/small/avatar-s-5.jpg'),
msg: 'Donut sweet pie oat cake dragée fruitcake',
isSent: true
},
{
senderImg: require('@/assets/images/portrait/small/avatar-s-2.jpg'),
msg: 'Liquorice chocolate bar jelly beans icing',
isSent: false
},
{
senderImg: require('@/assets/images/portrait/small/avatar-s-5.jpg'),
msg: 'Pudding candy',
isSent: true
}
],
item_reviews_12: {
title: 'Vuexy Admin',
subtitle: 'by Pixinvent Creative Studio',
img: require('@/assets/images/pages/content-img-4.jpg'),
meta: {
likes: 368,
comments: 341,
dislikes: 53
}
},
player_options: {
height: '460',
fluid: true,
autoplay: false,
muted: true,
language: 'en',
playbackRates: [0.7, 1.0, 1.5, 2.0],
sources: [
{
type: 'video/mp4',
src: 'http://vjs.zencdn.net/v/oceans.mp4'
}
],
poster: 'https://goo.gl/xcCsDd'
}
}
mock.onGet('/api/users/pixinvent/product/1').reply(() => {
return [200, data.pixinvent_product_1]
})
mock.onGet('/api/users/pixinvent/product/sales/1').reply(() => {
return [200, data.pixinvent_product_sales_1]
})
mock.onGet('/api/users/pixinvent/product/goals/1').reply(() => {
return [200, data.pixinvent_product_goal_1]
})
mock.onGet('/api/users/89').reply(() => {
return [200, data.user_detail_89]
})
mock.onGet('/api/users/58').reply(() => {
return [200, data.user_detail_58]
})
mock.onGet('/api/users/16').reply(() => {
return [200, data.user_detail_16]
})
mock.onGet('/api/place/18').reply(() => {
return [200, data.place_detail_18]
})
mock.onGet('/api/place/76/weather').reply(() => {
return [200, data.place_weather_76]
})
mock.onGet('/api/item/12/review').reply(() => {
return [200, data.item_reviews_12]
})
mock.onGet('/api/chat/demo-1/log').reply(() => {
return [200, data.chatLog]
})
mock.onGet('/api/card/card-basic/player-option').reply(() => {
return [200, data.player_options]
})
+101
View File
@@ -0,0 +1,101 @@
import mock from '@/fake-db/mock.js'
const data = {
subscribers_gained: {
series: [
{
name: 'فرد',
data: [28, 40, 36, 52, 38, 60, 55]
}
],
analyticsData: {
subscribers: 92600
}
},
revenueGenerated: {
series: [
{
name: 'هزار',
data: [350, 275, 400, 300, 350, 300, 450]
}
],
analyticsData: {
revenue: 97500
}
},
quarterlySales: {
series: [
{
name: 'گرم',
data: [10, 15, 7, 12, 3, 16]
}
],
analyticsData: {
sales: '3600 گرم'
}
},
ordersRecevied: {
series: [
{
name: 'سفارش',
data: [10, 15, 8, 15, 7, 12, 8]
}
],
analyticsData: {
orders: 97500
}
},
siteTraffic: {
series: [
{
name: 'Traffic Rate',
data: [150, 200, 125, 225, 200, 250]
}
]
},
activeUsers: {
series: [
{
name: 'Active Users',
data: [750, 1000, 900, 1250, 1000, 1200, 1100]
}
]
},
newsletter: {
series: [
{
name: 'Newsletter',
data: [365, 390, 365, 400, 375, 400]
}
]
}
}
mock.onGet('/api/card/card-statistics/subscribers').reply(() => {
return [200, data.subscribers_gained]
})
mock.onGet('/api/card/card-statistics/revenue').reply(() => {
return [200, data.revenueGenerated]
})
mock.onGet('/api/card/card-statistics/sales').reply(() => {
return [200, data.quarterlySales]
})
mock.onGet('/api/card/card-statistics/orders').reply(() => {
return [200, data.ordersRecevied]
})
mock.onGet('/api/card/card-statistics/site-traffic').reply(() => {
return [200, data.siteTraffic]
})
mock.onGet('/api/card/card-statistics/active-users').reply(() => {
return [200, data.activeUsers]
})
mock.onGet('/api/card/card-statistics/newsletter').reply(() => {
return [200, data.newsletter]
})
+3
View File
@@ -0,0 +1,3 @@
import './card-basic.js'
import './card-statistics.js'
import './card-analytics.js'
+950
View File
@@ -0,0 +1,950 @@
import mock from '@/fake-db/mock.js'
const data = {
products: [
{
'id': 1,
'category': 'computers',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/01.png',
'name': 'Apple Watch series 4 GPS',
'order_status': 'on_hold',
'popularity': 97,
'price': 69.99
},
{
'id': 2,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/02.png',
'name': 'Beats HeadPhones',
'order_status': 'delivered',
'popularity': 83,
'price': 69.99
},
{
'id': 3,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/06.png',
'name': 'Altec Lansing - Bluetooth Speaker',
'order_status': 'canceled',
'popularity': 57,
'price': 199.99
},
{
'id': 4,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Altec Lansing - Bluetooth Speaker',
'order_status': 'delivered',
'popularity': 65,
'price': 199.99
},
{
'id': 5,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/06.png',
'name': 'Altec Lansing - Portable Bluetooth Speaker',
'order_status': 'canceled',
'popularity': 87,
'price': 199.99
},
{
'id': 6,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Altec Lansing - Bluetooth Speaker',
'order_status': 'canceled',
'popularity': 55,
'price': 39.99
},
{
'id': 7,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/02.png',
'name': 'Altec Lansing - Mini H2O Bluetooth Speaker',
'order_status': 'on_hold',
'popularity': 99,
'price': 39.99
},
{
'id': 8,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Altec Lansing - Bluetooth Speaker',
'order_status': 'canceled',
'popularity': 91,
'price': 39.99
},
{
'id': 9,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/05.png',
'name': 'Altec Lansing - Mini H2O Bluetooth Speaker',
'order_status': 'delivered',
'popularity': 52,
'price': 39.99
},
{
'id': 10,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/01.png',
'name': 'Altec Lansing - Mini H2O Bluetooth Speaker',
'order_status': 'canceled',
'popularity': 64,
'price': 39.99
},
{
'id': 11,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/05.png',
'name': 'Altec Lansing - Bluetooth Speaker',
'order_status': 'canceled',
'popularity': 93,
'price': 99.99
},
{
'id': 12,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/01.png',
'name': 'Altec Lansing - Bluetooth Speaker',
'order_status': 'pending',
'popularity': 75,
'price': 99.99
},
{
'id': 13,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/01.png',
'name': 'Altec Lansing - Bluetooth Speaker',
'order_status': 'delivered',
'popularity': 88,
'price': 99.99
},
{
'id': 14,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Altec Lansing - Bluetooth Speaker',
'order_status': 'delivered',
'popularity': 86,
'price': 99.99
},
{
'id': 15,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/05.png',
'name': 'Aluratek - Bluetooth Audio Receiver',
'order_status': 'on_hold',
'popularity': 62,
'price': 29.99
},
{
'id': 16,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/04.png',
'name': 'Aluratek - Bluetooth Audio Transmitter',
'order_status': 'canceled',
'popularity': 51,
'price': 29.99
},
{
'id': 17,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/07.png',
'name': 'Aluratek - iStream Bluetooth Audio Receiver',
'order_status': 'pending',
'popularity': 51,
'price': 29.99
},
{
'id': 18,
'category': 'computers',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/07.png',
'name': 'Antec - Nano Diamond Thermal Compound',
'order_status': 'on_hold',
'popularity': 65,
'price': 14.99
},
{
'id': 19,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/05.png',
'name': 'Antec - SmartBean Bluetooth Adapter',
'order_status': 'on_hold',
'popularity': 63,
'price': 39.99
},
{
'id': 20,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Basis - Peak Fitness and Sleep Tracker',
'order_status': 'on_hold',
'popularity': 72,
'price': 199.99
},
{
'id': 21,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Basis - Peak Fitness and Sleep Tracker',
'order_status': 'canceled',
'popularity': 77,
'price': 199.99
},
{
'id': 22,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/04.png',
'name': 'Beats by Dr. Dre - 3\' USB-to-Micro USB Cable',
'order_status': 'delivered',
'popularity': 65,
'price': 19.99
},
{
'id': 23,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/02.png',
'name': 'Beats by Dr. Dre - Bike Mount for Pill Speakers',
'order_status': 'delivered',
'popularity': 60,
'price': 49.99
},
{
'id': 24,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/06.png',
'name': 'Beats by Dr. Dre - Support Stand for Speakers',
'order_status': 'on_hold',
'popularity': 59,
'price': 49.99
},
{
'id': 25,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/08.png',
'name': 'Beats by Dr. Dre - Support Stand for Pill Speakers',
'order_status': 'on_hold',
'popularity': 87,
'price': 49.99
},
{
'id': 26,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/08.png',
'name': 'Beats by Dr. Dre - Support Stand for Pill Speakers',
'order_status': 'delivered',
'popularity': 95,
'price': 49.99
},
{
'id': 27,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/07.png',
'name': 'Beats by Dr. Dre - Support Stand for Speakers',
'order_status': 'canceled',
'popularity': 98,
'price': 49.99
},
{
'id': 28,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/04.png',
'name': 'Beats by Dr. Dre - Support Stand',
'order_status': 'delivered',
'popularity': 75,
'price': 49.99
},
{
'id': 29,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/06.png',
'name': 'Beats by Dr. Dre - Pill 2.0 Bluetooth Speaker',
'order_status': 'pending',
'popularity': 81,
'price': 199.99
},
{
'id': 30,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/07.png',
'name': 'Beats by Dr. Dre - Pill 2.0 Bluetooth Speaker',
'order_status': 'canceled',
'popularity': 91,
'price': 199.99
},
{
'id': 31,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/04.png',
'name': 'Beats by Dr. Dre - Bluetooth Speaker',
'order_status': 'canceled',
'popularity': 79,
'price': 199.99
},
{
'id': 32,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Beats by Dr. Dre - Portable Speaker + Headphones',
'order_status': 'on_hold',
'popularity': 95,
'price': 699.99
},
{
'id': 33,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/03.png',
'name': 'Beats by Dr. Dre - Pill 2.0 Portable Stereo Speaker',
'order_status': 'on_hold',
'popularity': 90,
'price': 199.99
},
{
'id': 34,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/05.png',
'name': 'Bose® - SoundLink® III Cover',
'order_status': 'delivered',
'popularity': 81,
'price': 34.99
},
{
'id': 35,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/08.png',
'name': 'Bose® - Bose® SoundLink® III Cover',
'order_status': 'delivered',
'popularity': 81,
'price': 34.99
},
{
'id': 36,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/05.png',
'name': 'Bose® - SoundLink® III Cover',
'order_status': 'on_hold',
'popularity': 69,
'price': 34.99
},
{
'id': 37,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Bose® - SoundLink® Mini Soft Cover',
'order_status': 'canceled',
'popularity': 95,
'price': 24.99
},
{
'id': 38,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/01.png',
'name': 'Bose® - SoundLink® Color Bluetooth Speaker',
'order_status': 'on_hold',
'popularity': 100,
'price': 129.99
},
{
'id': 39,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/01.png',
'name': 'Bose® - SoundLink® Color Bluetooth Speaker',
'order_status': 'pending',
'popularity': 89,
'price': 129.99
},
{
'id': 40,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/08.png',
'name': 'Bose® - SoundLink® Color Bluetooth Speaker',
'order_status': 'pending',
'popularity': 75,
'price': 129.99
},
{
'id': 41,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/06.png',
'name': 'Bose® - SoundLink® Color Bluetooth Speaker',
'order_status': 'pending',
'popularity': 54,
'price': 129.99
},
{
'id': 42,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/04.png',
'name': 'Bose® - SoundLink® Color Bluetooth Speaker',
'order_status': 'delivered',
'popularity': 98,
'price': 129.99
},
{
'id': 43,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Bose® - SoundLink® Color Carry Case',
'order_status': 'pending',
'popularity': 95,
'price': 24.99
},
{
'id': 44,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/06.png',
'name': 'Bose® - SoundLink® III Cover',
'order_status': 'on_hold',
'popularity': 76,
'price': 34.99
},
{
'id': 45,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/05.png',
'name': 'Bose® - SoundLink® III Cover',
'order_status': 'canceled',
'popularity': 98,
'price': 34.99
},
{
'id': 46,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/05.png',
'name': 'Bose® - SoundLink® III Cover',
'order_status': 'pending',
'popularity': 70,
'price': 34.99
},
{
'id': 47,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/08.png',
'name': 'Bose® - Mini Bluetooth Speaker II',
'order_status': 'pending',
'popularity': 62,
'price': 199.99
},
{
'id': 48,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/02.png',
'name': 'Bose® - Bluetooth Speaker II',
'order_status': 'canceled',
'popularity': 63,
'price': 199.99
},
{
'id': 49,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/05.png',
'name': 'Bose® - SoundLink® Mini Bluetooth Speaker Soft Cover',
'order_status': 'on_hold',
'popularity': 90,
'price': 24.99
},
{
'id': 50,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/04.png',
'name': 'Bose® - Bluetooth Speaker Soft Cover',
'order_status': 'canceled',
'popularity': 98,
'price': 24.99
},
{
'id': 51,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Bose® - Bluetooth Speaker Soft Cover',
'order_status': 'on_hold',
'popularity': 55,
'price': 24.99
},
{
'id': 52,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Bose® - Bluetooth Speaker',
'order_status': 'pending',
'popularity': 53,
'price': 24.99
},
{
'id': 53,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Bose® - SoundLink® Mini Bluetooth Speaker Soft Cover',
'order_status': 'pending',
'popularity': 82,
'price': 24.99
},
{
'id': 54,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/08.png',
'name': 'Bose® - Bluetooth Speaker Travel Bag',
'order_status': 'on_hold',
'popularity': 78,
'price': 44.99
},
{
'id': 55,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/08.png',
'name': 'Bose® - SoundLink® Mini Soft Cover',
'order_status': 'canceled',
'popularity': 81,
'price': 24.99
},
{
'id': 56,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/07.png',
'name': 'Bose® - SoundLink® Mini Soft Cover',
'order_status': 'pending',
'popularity': 94,
'price': 24.99
},
{
'id': 57,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Bose® - Bluetooth Speaker III',
'order_status': 'pending',
'popularity': 97,
'price': 299.99
},
{
'id': 58,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/04.png',
'name': 'Bose® - SoundLink® Soft Cover',
'order_status': 'delivered',
'popularity': 89,
'price': 24.99
},
{
'id': 59,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/02.png',
'name': 'Bose® - Bluetooth Music Adapter',
'order_status': 'on_hold',
'popularity': 53,
'price': 99.99
},
{
'id': 60,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/04.png',
'name': 'Bowers & Wilkins - Bluetooth Speaker',
'order_status': 'canceled',
'popularity': 79,
'price': 349.98
},
{
'id': 61,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'BRAVEN - Balance Portable Bluetooth Speaker',
'order_status': 'on_hold',
'popularity': 82,
'price': 129.99
},
{
'id': 62,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/01.png',
'name': 'BRAVEN - Balance Portable Bluetooth Speaker',
'order_status': 'pending',
'popularity': 80,
'price': 129.99
},
{
'id': 63,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/06.png',
'name': 'BRAVEN - Outdoor Speaker',
'order_status': 'pending',
'popularity': 86,
'price': 199.99
},
{
'id': 64,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/03.png',
'name': 'BRAVEN - BRV-X Outdoor Speaker',
'order_status': 'pending',
'popularity': 61,
'price': 199.99
},
{
'id': 65,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'BRAVEN - Portable Bluetooth Speaker',
'order_status': 'on_hold',
'popularity': 85,
'price': 299.99
},
{
'id': 66,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/02.png',
'name': 'BRAVEN - Portable Bluetooth Speaker',
'order_status': 'on_hold',
'popularity': 81,
'price': 99.99
},
{
'id': 67,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/01.png',
'name': 'BRAVEN - Wireless Bluetooth Speaker',
'order_status': 'on_hold',
'popularity': 50,
'price': 99.99
},
{
'id': 68,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/02.png',
'name': 'BRAVEN - Wireless Bluetooth Speaker',
'order_status': 'delivered',
'popularity': 93,
'price': 99.99
},
{
'id': 69,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/03.png',
'name': 'BRAVEN - Wireless Bluetooth Speaker',
'order_status': 'pending',
'popularity': 51,
'price': 99.99
},
{
'id': 70,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/05.png',
'name': 'Craig - Tower Speaker',
'order_status': 'pending',
'popularity': 77,
'price': 69.99
},
{
'id': 71,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/04.png',
'name': 'Craig - Portable Wireless Speaker',
'order_status': 'canceled',
'popularity': 89,
'price': 29.99
},
{
'id': 72,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Definitive Technology - Wireless Speaker',
'order_status': 'pending',
'popularity': 81,
'price': 399.98
},
{
'id': 73,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/03.png',
'name': 'Definitive Technology - Wireless Speaker',
'order_status': 'pending',
'popularity': 76,
'price': 699.98
},
{
'id': 74,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/08.png',
'name': 'Denon - Wireless Speaker',
'order_status': 'pending',
'popularity': 88,
'price': 399.98
},
{
'id': 75,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Denon - HEOS 7 Wireless Speaker',
'order_status': 'canceled',
'popularity': 100,
'price': 599.98
},
{
'id': 76,
'category': 'audio',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/02.png',
'name': 'ECOXGEAR - Waterproof Bluetooth Speaker',
'order_status': 'canceled',
'popularity': 52,
'price': 129.99
},
{
'id': 77,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/03.png',
'name': 'Fitbit - Charge HR Activity Tracker + Heart Rate (Large)',
'order_status': 'pending',
'popularity': 66,
'price': 149.99
},
{
'id': 78,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/01.png',
'name': 'Fitbit - Charge HR Activity Tracker + Heart Rate (Large)',
'order_status': 'delivered',
'popularity': 66,
'price': 149.99
},
{
'id': 79,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Fitbit - Activity Tracker + Heart Rate (Large)',
'order_status': 'canceled',
'popularity': 96,
'price': 149.99
},
{
'id': 80,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/01.png',
'name': 'Fitbit - Charge HR Activity Tracker + Heart Rate (Small)',
'order_status': 'on_hold',
'popularity': 92,
'price': 149.99
},
{
'id': 81,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Fitbit - Charge HR Activity Tracker + Heart Rate (Small)',
'order_status': 'delivered',
'popularity': 82,
'price': 149.99
},
{
'id': 82,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/01.png',
'name': 'Fitbit - Activity Tracker + Heart Rate (Small)',
'order_status': 'pending',
'popularity': 100,
'price': 149.99
},
{
'id': 83,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/01.png',
'name': 'Fitbit - Activity Tracker + Sleep Wristband',
'order_status': 'pending',
'popularity': 100,
'price': 149.99
},
{
'id': 84,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/02.png',
'name': 'Fitbit - Activity Tracker (Large)',
'order_status': 'pending',
'popularity': 52,
'price': 129.99
},
{
'id': 85,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/05.png',
'name': 'Fitbit - Charge Wireless Activity Tracker (Large)',
'order_status': 'on_hold',
'popularity': 51,
'price': 129.99
},
{
'id': 86,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/04.png',
'name': 'Fitbit - Charge Wireless Activity Tracker (Large)',
'order_status': 'pending',
'popularity': 80,
'price': 129.99
},
{
'id': 87,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/02.png',
'name': 'Fitbit - Charge Wireless Activity Tracker (Small)',
'order_status': 'on_hold',
'popularity': 99,
'price': 129.99
},
{
'id': 88,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/07.png',
'name': 'Fitbit - Activity Tracker (Small)',
'order_status': 'on_hold',
'popularity': 75,
'price': 129.99
},
{
'id': 89,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/07.png',
'name': 'Fitbit - Charge Wireless Activity Tracker (Small)',
'order_status': 'pending',
'popularity': 80,
'price': 129.99
},
{
'id': 90,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/07.png',
'name': 'Fitbit - Charging Cable for Activity Trackers',
'order_status': 'delivered',
'popularity': 50,
'price': 19.99
},
{
'id': 91,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Fitbit - Clip for Activity and Sleep Trackers',
'order_status': 'delivered',
'popularity': 57,
'price': 14.99
},
{
'id': 92,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/05.png',
'name': 'Fitbit - Clip for Wireless Activity and Sleep Trackers',
'order_status': 'on_hold',
'popularity': 80,
'price': 14.99
},
{
'id': 93,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/03.png',
'name': 'Fitbit - Clip for Zip Wireless Activity Trackers',
'order_status': 'canceled',
'popularity': 78,
'price': 14.99
},
{
'id': 94,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/05.png',
'name': 'Fitbit - Flex 1" USB Charging Cable',
'order_status': 'on_hold',
'popularity': 81,
'price': 14.99
},
{
'id': 95,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/03.png',
'name': 'Fitbit - Flex 1" USB Charging Cable',
'order_status': 'canceled',
'popularity': 51,
'price': 14.99
},
{
'id': 96,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/03.png',
'name': 'Fitbit - Flex Clasp for Activity Trackers',
'order_status': 'canceled',
'popularity': 56,
'price': 4.99
},
{
'id': 97,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/07.png',
'name': 'Fitbit - Sleep Wristband',
'order_status': 'on_hold',
'popularity': 95,
'price': 99.99
},
{
'id': 98,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Fitbit - Sleep Tracker Wristband',
'order_status': 'delivered',
'popularity': 85,
'price': 99.99
},
{
'id': 99,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/09.png',
'name': 'Fitbit - Flex Wireless Activity',
'order_status': 'pending',
'popularity': 50,
'price': 99.99
},
{
'id': 100,
'category': 'fitness',
'img': 'https://pixinvent.com/demo/vuexy-vuejs-admin-dashboard-template/products/06.png',
'name': 'Fitbit - Activity Tracker',
'order_status': 'delivered',
'popularity': 72,
'price': 99.99
}
]
}
mock.onGet('/api/data-list/products').reply(() => {
return [200, JSON.parse(JSON.stringify(data.products)).reverse()]
})
// POST : Add new Item
mock.onPost('/api/data-list/products/').reply((request) => {
// Get event from post data
const item = JSON.parse(request.data).item
const length = data.products.length
let lastIndex = 0
if (length) {
lastIndex = data.products[length - 1].id
}
item.id = lastIndex + 1
data.products.push(item)
return [201, {id: item.id}]
})
// Update Product
mock.onPost(/\/api\/data-list\/products\/\d+/).reply((request) => {
const itemId = request.url.substring(request.url.lastIndexOf('/') + 1)
const item = data.products.find((item) => item.id == itemId)
Object.assign(item, JSON.parse(request.data).item)
return [200, item]
})
// DELETE: Remove Item
mock.onDelete(/\/api\/data-list\/products\/\d+/).reply((request) => {
const itemId = request.url.substring(request.url.lastIndexOf('/') + 1)
const itemIndex = data.products.findIndex((p) => p.id == itemId)
data.products.splice(itemIndex, 1)
return [200]
})
+123
View File
@@ -0,0 +1,123 @@
import mock from '@/fake-db/mock.js'
const data = {
dispatchedOrders: [
{
orderNo: 879985,
status: 'تحویل داده شده',
statusColor: 'success',
operator: 'علی منتظر',
operatorImg: require('@/assets/images/portrait/small/avatar-s-2.jpg'),
usersLiked: [
{
name: 'Vennie Mostowy',
img: require('@/assets/images/portrait/small/avatar-s-5.jpg')
},
{
name: 'Elicia Rieske',
img: require('@/assets/images/portrait/small/avatar-s-7.jpg')
},
{
name: 'Julee Rossignol',
img: require('@/assets/images/portrait/small/avatar-s-10.jpg')
},
{
name: 'Darcey Nooner',
img: require('@/assets/images/portrait/small/avatar-s-8.jpg')
}
],
location: 'علی ارزانی',
distance: '250000',
distPercent: 80,
startDate: '1399-01-29 10:25',
estDelDate: '28/07/2018'
},
{
orderNo: 156897,
status: 'در حال پردازش',
statusColor: 'warning',
operator: 'احمد رضا شایسته',
operatorImg: require('@/assets/images/portrait/small/avatar-s-4.jpg'),
usersLiked: [
{
name: 'Trina Lynes',
img: require('@/assets/images/portrait/small/avatar-s-1.jpg')
},
{
name: 'Lilian Nenez',
img: require('@/assets/images/portrait/small/avatar-s-2.jpg')
},
{
name: 'Alberto Glotzbach',
img: require('@/assets/images/portrait/small/avatar-s-3.jpg')
}
],
location: 'علی ارزانی',
distance: '250000',
distPercent: 60,
startDate: '1399-01-29 10:25',
estDelDate: '28/07/2018'
},
{
orderNo: 568975,
status: 'تحویل داده شده',
statusColor: 'success',
operator: 'محمد عباسی',
operatorImg: require('@/assets/images/portrait/small/avatar-s-1.jpg'),
usersLiked: [
{
name: 'Lai Lewandowski',
img: require('@/assets/images/portrait/small/avatar-s-6.jpg')
},
{
name: 'Elicia Rieske',
img: require('@/assets/images/portrait/small/avatar-s-7.jpg')
},
{
name: 'Darcey Nooner',
img: require('@/assets/images/portrait/small/avatar-s-8.jpg')
},
{
name: 'Julee Rossignol',
img: require('@/assets/images/portrait/small/avatar-s-10.jpg')
},
{
name: 'Jeffrey Gerondale',
img: require('@/assets/images/portrait/small/avatar-s-9.jpg')
}
],
location: 'محمد رضا شعبانی',
distance: '300000',
distPercent: 70,
startDate: '1399-01-29 10:25',
estDelDate: '28/07/2018'
},
{
orderNo: 245689,
status: 'لغو شده',
statusColor: 'danger',
operator: 'علی منتظر',
operatorImg: require('@/assets/images/portrait/small/avatar-s-6.jpg'),
usersLiked: [
{
name: 'Vennie Mostowy',
img: require('@/assets/images/portrait/small/avatar-s-5.jpg')
},
{
name: 'Elicia Rieske',
img: require('@/assets/images/portrait/small/avatar-s-7.jpg')
}
],
location: 'محمد رضا شعبانی',
distance: '300000',
distPercent: 95,
startDate: '1399-01-29 10:25',
estDelDate: '28/07/2018'
}
]
}
mock.onGet('/api/table/dispatched-orders').reply(() => {
return [200, data.dispatchedOrders]
})
+706
View File
@@ -0,0 +1,706 @@
import mock from '@/fake-db/mock.js'
const data = {
users: [
{
'id': 268,
'username': 'adoptionism744',
'avatar': require('@/assets/images/portrait/small/avatar-s-3.jpg'),
'email': 'angelo@sashington.com',
'name': 'علی',
'fname': 'منتظر',
'dob': '28 January 1998',
'gender': 'male',
'country': 'Bolivia',
'role': 'admin',
'status': 'active',
'is_verified': true,
'department': 'sales',
'company': 'WinDon Technologies Pvt Ltd',
'mobile': '+65958951757',
'website': 'https://rowboat.com/insititious/Angelo',
'languages_known': ['English', 'Arabic'],
'contact_options': ['email', 'message', 'phone'],
'location': {
'add_line_1': 'A-65, Belvedere Streets',
'add_line_2': '',
'post_code': '1868',
'city': 'New York',
'state': 'New York',
'country': 'United States'
},
'social_links': {
'twitter': 'https://twitter.com/adoptionism744',
'facebook': 'https://www.facebook.com/adoptionism664',
'instagram': 'https://www.instagram.com/adopt-ionism744/',
'github': 'https://github.com/madop818',
'codepen': 'https://codepen.io/adoptism243',
'slack': '@adoptionism744'
},
'permissions': {
'users': {
'read': true,
'write': false,
'create': false,
'delete': false
},
'posts': {
'read': true,
'write': true,
'create': true,
'delete': true
},
'comments': {
'read': true,
'write': false,
'create': true,
'delete': false
}
}
},
{
'id': 269,
'username': 'demodulation463',
'avatar': require('@/assets/images/portrait/small/avatar-s-2.jpg'),
'email': 'rubi@ortwein.com',
'name': 'Rubi Ortwein',
'country': 'Syria',
'role': 'user',
'status': 'blocked',
'is_verified': false,
'department': 'development'
},
{
'id': 270,
'username': 'undivorced341',
'avatar': require('@/assets/images/portrait/small/avatar-s-3.jpg'),
'email': 'donnette@charania.com',
'name': 'Donnette Charania',
'country': 'Iraq',
'role': 'staff',
'status': 'deactivated',
'is_verified': true,
'department': 'sales'
},
{
'id': 271,
'username': 'bumbo426',
'avatar': require('@/assets/images/portrait/small/avatar-s-12.jpg'),
'email': 'ardith@duffett.com',
'name': 'Ardith Duffett',
'country': 'Estonia',
'role': 'user',
'status': 'active',
'is_verified': false,
'department': 'sales'
},
{
'id': 272,
'username': 'ectodactylism214',
'avatar': require('@/assets/images/portrait/small/avatar-s-16.jpg'),
'email': 'antone@berman.com',
'name': 'Antone Berman',
'country': 'India',
'role': 'user',
'status': 'blocked',
'is_verified': true,
'department': 'sales'
},
{
'id': 273,
'username': 'panathenaic825',
'avatar': require('@/assets/images/portrait/small/avatar-s-18.jpg'),
'email': 'maryann@gour.com',
'name': 'Maryann Gour',
'country': 'Solomon Islands',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 274,
'username': 'reptilious612',
'avatar': require('@/assets/images/portrait/small/avatar-s-7.jpg'),
'email': 'holli@vanduyne.com',
'name': 'Holli Vanduyne',
'country': 'Lebanon',
'role': 'staff',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 275,
'username': 'candid910',
'avatar': require('@/assets/images/portrait/small/avatar-s-26.jpg'),
'email': 'juanita@sartoris.com',
'name': 'Juanita Sartoris',
'country': 'Papua New Guinea',
'role': 'staff',
'status': 'active',
'is_verified': true,
'department': 'management'
},
{
'id': 276,
'username': 'ferrotungsten928',
'avatar': require('@/assets/images/portrait/small/avatar-s-20.jpg'),
'email': 'lia@morga.com',
'name': 'Lia Morga',
'country': 'Malaysia',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'development'
},
{
'id': 277,
'username': 'fibered345',
'avatar': require('@/assets/images/portrait/small/avatar-s-14.jpg'),
'email': 'theo@quatrevingt.com',
'name': 'Theo Quatrevingt',
'country': 'Nepal',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 278,
'username': 'nonenclosure246',
'avatar': require('@/assets/images/portrait/small/avatar-s-10.jpg'),
'email': 'lynwood@flud.com',
'name': 'Lynwood Flud',
'country': 'Russia',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 279,
'username': 'uncandied531',
'avatar': require('@/assets/images/portrait/small/avatar-s-13.jpg'),
'email': 'kaitlin@kahola.com',
'name': 'Kaitlin Kahola',
'country': 'Latvia',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 280,
'username': 'errancy403',
'avatar': require('@/assets/images/portrait/small/avatar-s-4.jpg'),
'email': 'alvin@car.com',
'name': 'Alvin Car',
'country': 'Yemen',
'role': 'admin',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 281,
'username': 'renillidae759',
'avatar': require('@/assets/images/portrait/small/avatar-s-16.jpg'),
'email': 'justin@jacquelin.com',
'name': 'Justin Jacquelin',
'country': 'Turkmenistan',
'role': 'user',
'status': 'blocked',
'is_verified': true,
'department': 'management'
},
{
'id': 282,
'username': 'jellylike89',
'avatar': require('@/assets/images/portrait/small/avatar-s-20.jpg'),
'email': 'chloe@tague.com',
'name': 'Chloe Tague',
'country': 'Pakistan',
'role': 'staff',
'status': 'active',
'is_verified': true,
'department': 'development'
},
{
'id': 283,
'username': 'ocular772',
'avatar': require('@/assets/images/portrait/small/avatar-s-6.jpg'),
'email': 'zola@tauarez.com',
'name': 'Zola Tauarez',
'country': 'Dominica',
'role': 'admin',
'status': 'deactivated',
'is_verified': true,
'department': 'sales'
},
{
'id': 284,
'username': 'oxgang923',
'avatar': require('@/assets/images/portrait/small/avatar-s-11.jpg'),
'email': 'wm@cieszynski.com',
'name': 'Wm Cieszynski',
'country': 'South Korea',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 285,
'username': 'ideationally882',
'avatar': require('@/assets/images/portrait/small/avatar-s-1.jpg'),
'email': 'hope@mobus.com',
'name': 'Hope Mobus',
'country': 'United States of America',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 286,
'username': 'cynomorphous587',
'avatar': require('@/assets/images/portrait/small/avatar-s-25.jpg'),
'email': 'lee@wernimont.com',
'name': 'Lee Wernimont',
'country': 'South Africa',
'role': 'admin',
'status': 'active',
'is_verified': true,
'department': 'development'
},
{
'id': 287,
'username': 'windtight501',
'avatar': require('@/assets/images/portrait/small/avatar-s-3.jpg'),
'email': 'myesha@denman.com',
'name': 'Myesha Denman',
'country': 'Cyprus',
'role': 'staff',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 288,
'username': 'strongylate147',
'avatar': require('@/assets/images/portrait/small/avatar-s-21.jpg'),
'email': 'cornell@roszell.com',
'name': 'Cornell Roszell',
'country': 'Algeria',
'role': 'admin',
'status': 'active',
'is_verified': true,
'department': 'development'
},
{
'id': 289,
'username': 'reblade348',
'avatar': require('@/assets/images/portrait/small/avatar-s-6.jpg'),
'email': 'vernon@ogrodowicz.com',
'name': 'Vernon Ogrodowicz',
'country': 'Botswana',
'role': 'admin',
'status': 'deactivated',
'is_verified': true,
'department': 'sales'
},
{
'id': 290,
'username': 'trapping909',
'avatar': require('@/assets/images/portrait/small/avatar-s-26.jpg'),
'email': 'rosy@litza.com',
'name': 'Rosy Litza',
'country': 'Iran',
'role': 'staff',
'status': 'active',
'is_verified': true,
'department': 'development'
},
{
'id': 291,
'username': 'associatedness456',
'avatar': require('@/assets/images/portrait/small/avatar-s-16.jpg'),
'email': 'carl@lano.com',
'name': 'Carl Lano',
'country': 'Japan',
'role': 'user',
'status': 'blocked',
'is_verified': true,
'department': 'sales'
},
{
'id': 292,
'username': 'deformable333',
'avatar': require('@/assets/images/portrait/small/avatar-s-5.jpg'),
'email': 'jamika@overlee.com',
'name': 'Jamika Overlee',
'country': 'Colombia',
'role': 'admin',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 293,
'username': 'abaptiston684',
'avatar': require('@/assets/images/portrait/small/avatar-s-10.jpg'),
'email': 'lyle@pytko.com',
'name': 'Lyle Pytko',
'country': 'Somalia',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'management'
},
{
'id': 294,
'username': 'neglector719',
'avatar': require('@/assets/images/portrait/small/avatar-s-20.jpg'),
'email': 'latoria@josef.com',
'name': 'Latoria Josef',
'country': 'Lithuania',
'role': 'staff',
'status': 'active',
'is_verified': true,
'department': 'development'
},
{
'id': 295,
'username': 'perameloid596',
'avatar': require('@/assets/images/portrait/small/avatar-s-18.jpg'),
'email': 'tennille@draft.com',
'name': 'Tennille Draft',
'country': 'Somalia',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 296,
'username': 'fetoplacental529',
'avatar': require('@/assets/images/portrait/small/avatar-s-20.jpg'),
'email': 'bernadette@ludovici.com',
'name': 'Bernadette Ludovici',
'country': 'Cameroon',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'development'
},
{
'id': 297,
'username': 'interdiffusion271',
'avatar': require('@/assets/images/portrait/small/avatar-s-8.jpg'),
'email': 'mui@melching.com',
'name': 'Mui Melching',
'country': 'Iran',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 298,
'username': 'vernacularize342',
'avatar': require('@/assets/images/portrait/small/avatar-s-18.jpg'),
'email': 'mitsue@houlahan.com',
'name': 'Mitsue Houlahan',
'country': 'Malawi',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 299,
'username': 'sassenach8',
'avatar': require('@/assets/images/portrait/small/avatar-s-6.jpg'),
'email': 'elsa@neubert.com',
'name': 'Elsa Neubert',
'country': 'Togo',
'role': 'staff',
'status': 'deactivated',
'is_verified': true,
'department': 'sales'
},
{
'id': 300,
'username': 'diplantidian91',
'avatar': require('@/assets/images/portrait/small/avatar-s-19.jpg'),
'email': 'kandice@mizelle.com',
'name': 'Kandice Mizelle',
'country': 'Greece',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 301,
'username': 'precognizant796',
'avatar': require('@/assets/images/portrait/small/avatar-s-22.jpg'),
'email': 'damian@hayzlett.com',
'name': 'Damian Hayzlett',
'country': 'St. Lucia',
'role': 'staff',
'status': 'active',
'is_verified': true,
'department': 'management'
},
{
'id': 302,
'username': 'submaster902',
'avatar': require('@/assets/images/portrait/small/avatar-s-16.jpg'),
'email': 'aundrea@stempel.com',
'name': 'Aundrea Stempel',
'country': 'Cyprus',
'role': 'user',
'status': 'blocked',
'is_verified': true,
'department': 'sales'
},
{
'id': 303,
'username': 'ladytide97',
'avatar': require('@/assets/images/portrait/small/avatar-s-21.jpg'),
'email': 'shiloh@spielmaker.com',
'name': 'Shiloh Spielmaker',
'country': 'Palestine',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'development'
},
{
'id': 304,
'username': 'prayingly678',
'avatar': require('@/assets/images/portrait/small/avatar-s-24.jpg'),
'email': 'terese@dyreson.com',
'name': 'Terese Dyreson',
'country': 'Sao Tome and Principe',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'management'
},
{
'id': 305,
'username': 'unclotted302',
'avatar': require('@/assets/images/portrait/small/avatar-s-6.jpg'),
'email': 'vashti@kilton.com',
'name': 'Vashti Kilton',
'country': 'Portugal',
'role': 'user',
'status': 'deactivated',
'is_verified': true,
'department': 'sales'
},
{
'id': 306,
'username': 'unfascinating985',
'avatar': require('@/assets/images/portrait/small/avatar-s-19.jpg'),
'email': 'carter@mendes.com',
'name': 'Carter Mendes',
'country': 'Armenia',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 307,
'username': 'gardenwise712',
'avatar': require('@/assets/images/portrait/small/avatar-s-24.jpg'),
'email': 'helene@madden.com',
'name': 'Helene Madden',
'country': 'Finland',
'role': 'staff',
'status': 'active',
'is_verified': true,
'department': 'development'
},
{
'id': 308,
'username': 'interagree870',
'avatar': require('@/assets/images/portrait/small/avatar-s-13.jpg'),
'email': 'ashton@calderone.com',
'name': 'Ashton Calderone',
'country': 'Italy',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 309,
'username': 'brutification848',
'avatar': require('@/assets/images/portrait/small/avatar-s-14.jpg'),
'email': 'robert@lyster.com',
'name': 'Robert Lyster',
'country': 'Turkey',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 310,
'username': 'unhypocritically536',
'avatar': require('@/assets/images/portrait/small/avatar-s-22.jpg'),
'email': 'delma@mewbourn.com',
'name': 'Delma Mewbourn',
'country': 'Honduras',
'role': 'staff',
'status': 'deactivated',
'is_verified': false,
'department': 'development'
},
{
'id': 311,
'username': 'tarentine951',
'avatar': require('@/assets/images/portrait/small/avatar-s-17.jpg'),
'email': 'ja@alaibilla.com',
'name': 'Ja Alaibilla',
'country': 'Italy',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'sales'
},
{
'id': 312,
'username': 'mountainlike2',
'avatar': require('@/assets/images/portrait/small/avatar-s-22.jpg'),
'email': 'delinda@rosentrance.com',
'name': 'Delinda Rosentrance',
'country': 'Guinea',
'role': 'user',
'status': 'active',
'is_verified': true,
'department': 'development'
},
{
'id': 313,
'username': 'zoetic150',
'avatar': require('@/assets/images/portrait/small/avatar-s-18.jpg'),
'email': 'danae@demeter.com',
'name': 'Danae Demeter',
'country': 'Gambia',
'role': 'user',
'status': 'deactivated',
'is_verified': true,
'department': 'sales'
},
{
'id': 314,
'username': 'addlepate37',
'avatar': require('@/assets/images/portrait/small/avatar-s-14.jpg'),
'email': 'kattie@joffrion.com',
'name': 'Kattie Joffrion',
'country': 'Albania',
'role': 'user',
'status': 'blocked',
'is_verified': true,
'department': 'management'
},
{
'id': 315,
'username': 'pollinate51',
'avatar': require('@/assets/images/portrait/small/avatar-s-19.jpg'),
'email': 'in@stjohns.com',
'name': 'In Stjohns',
'country': 'North Korea',
'role': 'user',
'status': 'active',
'is_verified': false,
'department': 'sales'
},
{
'id': 316,
'username': 'tournefortian626',
'avatar': require('@/assets/images/portrait/small/avatar-s-2.jpg'),
'email': 'van@laferney.com',
'name': 'Van Laferney',
'country': 'Finland',
'role': 'staff',
'status': 'active',
'is_verified': true,
'department': 'development'
},
{
'id': 317,
'username': 'aspersively497',
'avatar': require('@/assets/images/portrait/small/avatar-s-6.jpg'),
'email': 'sylvia@maharrey.com',
'name': 'Sylvia Maharrey',
'country': 'Turkmenistan',
'role': 'staff',
'status': 'deactivated',
'is_verified': true,
'department': 'sales'
}
]
}
mock.onGet('/api/user-management/users').reply(() => {
return [200, JSON.parse(JSON.stringify(data.users)).reverse()]
})
// GET: Fetch Single User Details
mock.onGet(/\/api\/user-management\/users\/\d+/).reply((request) => {
const userId = request.url.substring(request.url.lastIndexOf('/') + 1)
const user = data.users.find((user) => user.id == userId)
return user ? [200, JSON.parse(JSON.stringify(user))] : [404]
})
// // POST : Add new Item
// mock.onPost("/api/data-list/products/").reply((request) => {
// // Get event from post data
// let item = JSON.parse(request.data).item
// const length = data.products.length
// let lastIndex = 0
// if(length){
// lastIndex = data.products[length - 1].id
// }
// item.id = lastIndex + 1
// data.products.push(item)
// return [201, {id: item.id}]
// })
// // Update Product
// mock.onPost(/\/api\/data-list\/products\/\d+/).reply((request) => {
// const itemId = request.url.substring(request.url.lastIndexOf("/")+1)
// let item = data.products.find((item) => item.id == itemId)
// Object.assign(item, JSON.parse(request.data).item)
// return [200, item]
// })
// // DELETE: Remove Item
mock.onDelete(/\/api\/user-management\/users\/\d+/).reply((request) => {
const userId = request.url.substring(request.url.lastIndexOf('/') + 1)
const itemIndex = data.users.findIndex((p) => p.id == userId)
data.users.splice(itemIndex, 1)
return [200]
})
+135
View File
@@ -0,0 +1,135 @@
import mock from '@/fake-db/mock.js'
import jwt from 'jsonwebtoken'
const data = {
checkpointReward: {
userName: 'John',
progress: '57.6%'
},
users: [
{
uid: 34,
displayName: 'Howard Potts',
password: 'adminadmin',
photoURL: require('@/assets/images/portrait/small/avatar-s-5.jpg'),
email: 'admin@admin.com',
phoneNumber: null
}
]
}
const jwtConfig = {
'secret' : 'dd5f3089-40c3-403d-af14-d0c228b05cb4',
'expireTime': 8000
}
mock.onPost('/api/auth/login').reply((request) => {
const {email, password} = JSON.parse(request.data)
let error = 'Something went wrong'
const user = data.users.find(user => user.email === email && user.password === password)
if (user) {
try {
const accessToken = jwt.sign({id: user.uid}, jwtConfig.secret, {expiresIn: jwtConfig.expireTime})
const userData = Object.assign({}, user, {providerId: 'jwt'})
delete userData.password
const response = {
userData,
accessToken
}
return [200, response]
} catch (e) {
error = e
}
} else {
error = 'Email Or Password Invalid'
}
return [200, {error}]
})
mock.onPost('/api/auth/register').reply((request) => {
const {displayName, email, password} = JSON.parse(request.data)
const isEmailAlreadyInUse = data.users.find((user) => user.email === email)
const error = {
email : isEmailAlreadyInUse ? 'This email is already in use.' : null,
displayName: displayName === '' ? 'Please enter your name.' : null
}
if (!error.displayName && !error.email) {
const userData = {
email,
password,
displayName,
photoURL: require('@/assets/images/portrait/small/avatar-s-5.jpg'),
phoneNumber: null
}
// Add user id
const length = data.users.length
let lastIndex = 0
if (length) {
lastIndex = data.users[length - 1].uid
}
userData.uid = lastIndex + 1
data.users.push(userData)
const accessToken = jwt.sign({id: userData.uid}, jwtConfig.secret, {expiresIn: jwtConfig.expireTime})
const user = Object.assign({}, userData)
delete user['password']
const response = {
userData: user,
accessToken
}
return [200, response]
} else {
return [200, {error}]
}
})
mock.onPost('/api/auth/refresh-token').reply((request) => {
const {accessToken} = JSON.parse(request.data)
try {
const {id} = jwt.verify(accessToken, jwtConfig.secret)
const userData = Object.assign({}, data.users.find(user => user.uid === id))
const newAccessToken = jwt.sign({id: userData.uid}, jwtConfig.secret, {expiresIn: jwtConfig.expiresIn})
delete userData['password']
const response = {
userData,
accessToken: newAccessToken
}
return [200, response]
} catch (e) {
const error = 'Invalid access token'
return [401, {error}]
}
})
mock.onGet('/api/user/checkpoint-reward').reply(() => {
return [200, data.checkpointReward]
})