Exemplo n.º 1
0
requireFilter.keys().forEach(fileName => {
  // Get component config
  const filterModule = requireFilter(fileName)

  // Register filter globally
  Vue.filter(filterModule.default.name, filterModule.default.filter)
})
Exemplo n.º 2
0
module.exports = function(){
	var cookieData = {};
	if(typeof $.cookie('newVe')!='undefined'){
		cookieData = JSON.parse($.cookie('newVe'));
	}
	Vue.filter('currencyDisplay', {
		 
		read: function(val) {
			if(val=='T'){
				return false
			}else{
				return true
			}
		},
		write: function(val, oldVal) {
		   	if(val){
				return 'F'
			}else{
				return 'T'
			}
		}
	})
	new  Vue({
		el: '#app',
	  	data: cookieData,
	  	ready: function() {
	  		var that = this;
	  		$.ajax({
				url: '/Manager/TaobaoLastroomOptionList',
				type: 'POST',
				contentType: "application/json",
				data:'{"hotelCode":"'+cookieData.hotelCode+'","hotelGroupCode":"'+cookieData.hotelGroupCode+'","rateplanCode":"'+'LASTROOM'+'"}',
			})
			.done(function(data) {
			
				that.$set('ManualTaobaoLastroomOption', data.resultInfos);	 
			})
	  	},
	  	methods:{
	  		
	  		sail:function(){
	  			
	  			sendRoomOption(this)
	  		},
	  		outAll:function(){
	  			
	  			sendRoomOption(this)
	  			
	  			
	  		}
	  	}

	 })


}
Exemplo n.º 3
0
function fixFilters() {
    // 动态 filter
    Vue.filter('apply', function(value, name) {
        var filter = this.$options.filters[name] || Vue.options.filters[name]
        var args = [value].concat(
            [].slice.call(arguments, 2)
        )
        if (filter) return filter.apply(this, args)
        return value
    })
}
Exemplo n.º 4
0
module.exports = (function() {
	Vue.filter('slug', function(value) {
		return value.replace(' ', '-');
	});
	Vue.filter('deslug', function(value) {
		var v = value.split('-');
		v[0] = v[0].charAt(0).toUpperCase() + v[0].slice(1);
		var str = '';
		for (var i in v){
			var s = v[i];
			str += (s + ' ');
		}
		return str;
	});
	Vue.filter('prettyBytes', function (num) {
		// jacked from: https://github.com/sindresorhus/pretty-bytes
		if (typeof num !== 'number' || isNaN(num)) {
			throw new TypeError('Expected a number');
		}

		var exponent;
		var unit;
		var neg = num < 0;
		var units = ['B', 'kB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'];

		if (neg) {
			num = -num;
		}

		if (num < 1) {
			return (neg ? '-' : '') + num + ' B';
		}

		exponent = Math.min(Math.floor(Math.log(num) / Math.log(1000)), units.length - 1);
		num = (num / Math.pow(1000, exponent)).toFixed(2) * 1;
		unit = units[exponent];

		return (neg ? '-' : '') + num + ' ' + unit;
	});
})();
Exemplo n.º 5
0
Arquivo: filters.js Projeto: KSOra/ink
ink_filters.install = function(vue) {
    Vue.filter("time", function(val, isconcrete) {
        var ms = val * 1000;
        var s = nowms - ms;
        if (!isconcrete) {
            if (s < 86400000) {
                return "今天";
            }
            if (s < 172800000) {
                return "昨天";
            }
            if (s < 900000) {
                return "刚刚";
            }
        }
        var dt = new Date(ms);
        return (dt.getMonth() + 1) + "月" + dt.getDate() + "日";
    })
}
Exemplo n.º 6
0
import Vue from 'vue';
import moment from 'moment';
import {i18n} from './lang';
import {enumText} from './enum';

// enumText
Vue.filter('enumText', function (value, enumType) {
  return enumText(value, enumType);
});

// datetime时间格式化
Vue.filter('dateTime', function (value, format = 'YYYY-MM-DD HH:mm:ss') {
  if (!value)
    return '';
  return moment(value).format(format);
});

// ellipsis
Vue.filter('ellipsis', function (value, length=100, fill="...") {
  if (!value)
    return '';
  if (String(value).length <= length) return value;
  return String(value).substr(0, length) + fill;
});

// date时间格式化
Vue.filter('date', function (value, format = 'YYYY-MM-DD') {
  if (!value)
    return '';
  return moment(value).format(format);
});
Exemplo n.º 7
0
// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
import router from './router'
import VueMarkdown from 'vue-markdown'
import VueResource from 'vue-resource'

Vue.config.productionTip = false

Vue.use(VueResource)

/* eslint-disable no-new */
Vue.component('vue-markdown', VueMarkdown)

Vue.filter('timeStr', (dt) => {
	dt = new Date(dt)
	let year = dt.getFullYear()
	let month = dt.getMonth() + 1
	let day = dt.getDate()
	return `${year}-${month}-${day}`
})

new Vue({
  el: '#app',
  router,
  template: '<App/>',
  components: { App }
})
Exemplo n.º 8
0
import App from './App'
import './assets/styles/root.scss'
import '../node_modules/animate.css/animate.min.css'

Vue.use(VueRouter)

// 图片懒加载
Vue.use(lazyload, {
  error: '/static/error.jpg',
  loading: '/static/loading.gif',
  try: 1 // default 1
})

// 自定义过滤器
Vue.filter('moment', function(value) {
    return moment(value)
})
Vue.filter('commentDate', function(value) {
    return new Date(value * 1000).toLocaleString()
})
// filter(Vue)
// router
const router = new VueRouter({
	routes: Router.routes
})
router.beforeEach((to, from, next) => {
  next()
})

sync(store, router)
// Start
Exemplo n.º 9
0
import Vue from 'vue'
import VueRouter from 'vue-router'

Vue.use(VueRouter)

var Router = new VueRouter({
    hashbang: false,
    history: true,
    saveScrollPosition: true
})

Router.map({
    '/': {
        name     : 'home',
        component: require('./views/home.vue')
    },
})


var filters = require('./filters');

for(var filter in filters) {
    Vue.filter(filter, filters[filter]);
}

Router.start(Vue.extend(require('./views/app.vue')), '#app')
Exemplo n.º 10
0
define(function(require){
	'use strict'
	var Vue = require("Vue")
	var utils = require("utils")
	var Promise = require("Promise")
	var Dialog = require("Dialog")
	Vue.filter("netFault",function(code,list){
		return list.filter(function(row){
			return row.code===code
		}).map(function(row){
			return row.name
		}).join("")
	})
	/*
	任务格式如下:
	{
		title : "查询用户终端状态是否正常",
		code : "checkUserDeviceStatu",
		statu : "question",
		methods : ["开机","关机"],
		method : ""
	}
	title:任务标题
	code:任务编号
	statu:任务状态
	method:任务可能存在的操作
	method:用户已经选择的操作
	任务状态可能值枚举:
		init:初始化
		pending:正在查询
		question:正在等待用户交互
		resolve:任务状态成功
		failed:任务状态失败

	新任务向flow数组压入一条数据,任务状态改变时只需要修改这条数据
	*/
	return Vue.extend({
		props : {
			locate : Object,
			form : Object
		},
		data : function(){
			return {
				flow : [],//存放任务队列
				statu : "init",//存放全局状态
				result : ""//存放全局任务结果
			}
		},
		compiled : function(){
			this.address = this.$route.query.address
			var title = "自助报障"
			this.$dispatch("init",{
				title : title
			})
			this.init()
		},
		methods : {
			//检查BSS状态
			checkBssStatu : function(){
				var task = {
					title : "检查BSS状态是否异常",
					code : "checkBssStatu",
					statu : "pending",
					methods : [],
					method : ""
				}
				this.flow.push(task)
				return utils.sleep(0.5)
					.then(function(){
						//throw("您好!您的手机已欠费,请您及时进行充值")
						task.statu = "resolve"
						return 123
					})
					.catch(function(error){
						task.statu = "failed"
						throw(error)
					})
			},
			//检查HSS状态
			checkHssStatu : function(){
				var task = {
					title : "检查HSS状态是否异常",
					code : "checkHssStatu",
					statu : "pending",
					methods : [],
					method : ""
				}
				this.flow.push(task)
				return utils.sleep(0.5)
					.then(function(){
						//throw("您好!您的手机已欠费,请您及时进行充值")
						task.statu = "resolve"
						return 123
					})
					.catch(function(error){
						task.statu = "failed"
						throw(error)
					})
			},
			//查询用户终端状态
			checkUserDeviceStatu : function(){
				var task = {
					title : "查询用户终端状态是否正常",
					code : "checkUserDeviceStatu",
					statu : "question",
					methods : ["开机","关机"],
					method : ""
				}
				this.flow.push(task)
				return utils.sleep(0.1)
			},
			//根据用户选择启动流程
			checkFlow : function(index){
				this.statu = "pending"
				var task = {
					title : "loading",
					code : "checkFlow0",
					statu : "pending",
					methods : [],
					method : ""
				}
				this.flow.push(task)
				return utils.sleep(0.5)
					.then(function(){
						task.statu = "question"
						task.title = "查询信号不好是否所有地点"+index
						task.methods = ["个别地点","所有地点"]
					})
					.catch(function(error){
						task.statu = "failed"
						this.throwCheckResult(error)
					}.bind(this))
			},
			//修改任务状态
			toggleTaskMethod : function(method,task,index){
				if(task.method===method)return false
				this.clearCheckResult()
				if(task.code==="checkUserDeviceStatu"){
					this.clearChildTasks(index)
					if(method==="关机"){
						task.statu = "failed"
						this.throwCheckResult("用户已关机")
					}
					if(method==="开机"){
						task.statu = "resolve"
						this.clearCheckResult()
						this.checkFlow(index)
					}
				}else if(index===5){
					//完成流程
					this.statu = "resolve"
					task.statu = "resolve"
				}else{
					this.clearChildTasks(index)
					task.statu = "resolve"
					this.checkFlow(index)
				}
				task.method = method
			},
			//清除所有子任务
			clearChildTasks : function(index){
				var childLength = this.flow.length - index - 1
				//清除所有子任务
				if(childLength){
					new Array(childLength).fill("0").forEach(function(){
						this.flow.pop()
					}.bind(this))
				}
			},
			//清除检查结果
			clearCheckResult : function(){
				this.result = ""
			},
			//抛出检查结果
			throwCheckResult : function(result){
				this.result = result
			},
			init : function(){
				this.form.pending = true
				this.checkBssStatu()
					.then(function(statu){
						return this.checkHssStatu()
					}.bind(this))
					.then(function(statu){
						return this.checkUserDeviceStatu()
					}.bind(this))
					.then(function(statu){
					}.bind(this))
					.catch(function(error){
						this.throwCheckResult(error)
					}.bind(this))
					.finally(function(){
						this.form.pending = false
					}.bind(this))
			},
			back : function(){
				history.go(-1)
			}
		},
		template : utils.template(function(){/*
			<div>
				<style>
					.card .table-view-check{
						border-top:1px solid #ddd;
					}
					.table-view-check li{
						padding: 5px 10px;
					}
					.check-item{padding:5px 11px;color:#444;}
					.check-item .task-body{margin-left:20px}
					.check-item.resolve i{color:#5CB85C}
					.check-item.reject i{color:#999}
					.check-item.failed i{color:#D9534F}
					.check-item.warning i{color:#F0AD4E}
					.check-item .btn{margin:0 5px 0 0}
				</style>
				<div class="card">
					<div style="padding:10px">
						<p style="float:right">
							<button class="btn" @click="back">更改查询条件</button>
						</p>
						<p>手机号码:{{form.callNumber}}</p>
						<p>网络类型:{{form.netType}}</p>
						<p>障碍现象:{{form.netFault|netFault form.causelist}}</p>
						<p>报障地址:{{form.locate.result}}</p>
					</div>
					<div class="flow">
						<ul class="table-view table-view-check">
							<li v-for="(index,task) in flow" class="table-view-cell check-item" :class="task.statu">
								<div class="pull-left">
									<i class="fa fa-question" v-if="'question'===task.statu"></i>
									<i class="fa fa-check" v-if="'resolve'===task.statu"></i>
									<i class="fa fa-close" v-if="'failed'===task.statu"></i>
									<i class="fa fa-spinner fa-spin" v-if="'pending'===task.statu"></i>
								</div>
								<div class="task-body">
									<p>{{task.title}}</p>
									<div v-if="task.methods.length">
										<button class="btn" 
											v-for="method in task.methods" 
											@click="toggleTaskMethod(method,task,index)">
											{{method}}
											<i class="fa fa-check" v-if="method===task.method"></i>
										</button>
									</div>
								</div>
							</li>
						</ul>
					</div>
				</div>
				<div style="padding:10px" class="card" v-if="result">
					<h4>检查结果</h4>
					<p>{{result}}</p>
				</div>
				<div style="padding:10px;text-align:right;" v-if="statu==='resolve'">
					<button class="btn">在线归档</button>
					<button class="btn btn-positive">下一步</button>
				</div>
			</div>
		*/}),
		components : {
			pending : require("Components/Common/Pending")
		}
	})
})
Exemplo n.º 11
0
import 'babel-polyfill'
import Vue from 'vue'
import App from './components/App.vue'
import store from './store'
import { getAllMessages } from './store/actions'

// Vue.config.debug = true

Vue.filter('time',timestamp => {
	return new Date(timestamp).toLocaleTimeString()
})

new Vue({
	el:'#app',
	store,
	render:h => h(App)
})

getAllMessages(store)
Exemplo n.º 12
0
import router from './router'
import { store } from './store'
import DateFilter from './filters/dataf'
import AlertCmp from './components/Shared/Alert.vue'
import EditMeetingDetailsDialog from './components/Meeting/Edit/EditMeetingDetailsDialog.vue'
import EditMeetingDataDialog from './components/Meeting/Edit/EditMeetingDataDialog.vue'
import EditMeetingTimeDialog from './components/Meeting/Edit/EditMeetingTimeDialog.vue'
import FullCalendar from 'vue-full-calendar'
import vmodal from 'vue-js-modal'

window.jQuery = window.$ = require('jquery')
Vue.use(vmodal)
Vue.use(Vuetify)
Vue.config.productionTip = false
Vue.use(FullCalendar)
Vue.filter('dataf', DateFilter)
Vue.component('app-alert', AlertCmp)
Vue.component('app-edit-meeting-details-dialog', EditMeetingDetailsDialog)
Vue.component('app-edit-meeting-data-dialog', EditMeetingDataDialog)
Vue.component('app-edit-meeting-time-dialog', EditMeetingTimeDialog)

/* eslint-disable no-new */
new Vue({
  el: '#app',
  router,
  store,
  render: h => h(App),
  created () {
    firebase.initializeApp({
      apiKey: 'AIzaSyCty7m0AIV4SsBhCGlx7ryaGctx6Ddd7fE',
      authDomain: 'amiscout-190313.firebaseapp.com',
Exemplo n.º 13
0
import Vue from 'vue';
import { domain, fromNow } from './filters';
import App from './components/App.vue';
import AppCNHK from './components/AppCNHK.vue';

// register filters globally
Vue.filter('domain', domain);
Vue.filter('fromNow', fromNow);

new Vue({
  el: 'body',
  components: {
    App, // 普通电子票
    AppCNHK // 中港通电子票
  }
});
Exemplo n.º 14
0
        return value
    },
    sanitize: function (value) {
        return value.replace(/^[^a-z]+|[^\w-]+/gi, "");
    },
    parseObj: function (value) {
        var parts = value.split(';')
        if (parts.length > 1) {
            var type = parts[0] && parts[0].toString().charAt(0).toUpperCase() + parts[0].toString().slice(1);
            var name = parts[1]
            return name
            //return type + ': ' + name
        } else {
            return value
        }
    },
    objLength: function (value) {
        return Object.keys(value).length
    },
    prettyNewLine: function (value) {
        if (value == '-') {
            return '-'
        }
        return value.length > 0 ? value.split(',').join('\n') : '-'
    }
};

for (var f in Filters) {
    Vue.filter(f, Filters[f])
}
Exemplo n.º 15
0
Object.keys(filters).forEach(k => Vue.filter(k, filters[k]))
Exemplo n.º 16
0
Arquivo: vue.js Projeto: wyrover/admin
import markdown from './filters/markdown'
import filesize from './filters/filesize'
import firstname from './filters/firstname'

/**
 * Configure Vue plugins
 */
Vue.use(Router)
Vue.use(AsyncData)
Vue.use(Draggable)
// Vue.use(HTTP)

/**
 * Configure Vue filters
 */
Vue.filter('slug', slug)
Vue.filter('default', defaults)
Vue.filter('markdown', markdown)
Vue.filter('filesize', filesize)
Vue.filter('firstname', firstname)
Vue.filter('link_assets', assets)

/**
 * Set development mode
 */
if (config.env === 'development') {
	Vue.config.debug = true
}

/**
 * Export `Vue`
Exemplo n.º 17
0
Object.keys(filters).forEach(filterName => Vue.filter(filterName, filters[filterName]))
Exemplo n.º 18
0
import Vue from 'vue'
import VueResource from 'vue-resource'
import VueTap from './plugins/vue-tap.js'
import Moment from 'moment'

Moment.locale('zh-cn')

Vue.use(VueResource)
Vue.use(VueTap)
Vue.config.debug=true
Vue.http.options.headers = {
	'Content-Type': 'application/x-www-form-urlencoded; charset=utf-8'
}
Vue.http.options.emulateJSON = true

Vue.filter('moment', function(datetime) {
	return Moment(datetime).fromNow();
});
const app=Vue.extend(require("./app.vue"))

new app({
	el: '#app'
})
Exemplo n.º 19
0
import Vue from 'vue'
import VueResource from 'vue-resource'
import VueRouter from 'vue-router'
import Init from '../views/Init.vue'
import {configRouter} from './route-config'
import {API_URL} from '../config'

Vue.use(VueResource);
Vue.use(VueRouter);
// 2016/07/10 格式的时间
Vue.filter('date',date=>{
    let d = new Date(date);
    let year = d.getFullYear();
    let month = d.getMonth() > 8 ? d.getMonth() + 1 : '0' + (d.getMonth() + 1);
    let da = d.getDate() > 9 ? d.getDate() : '0' + d.getDate();
    return year + '/' + month + '/' + da;
});
// 2016/07/10 xx:xx:xx格式的时间
Vue.filter('dateWithSecond',date=>{
    let d = new Date(date);
    let year = d.getFullYear();
    let month = d.getMonth() > 8 ? d.getMonth() + 1 : '0' + (d.getMonth() + 1);
    let da = d.getDate() > 9 ? d.getDate() : '0' + d.getDate();
    let hour = d.getHours() > 9 ? d.getHours() : '0' + d.getHours();
    let min = d.getMinutes() > 9 ? d.getMinutes() : '0' + d.getMinutes();
    let sec = d.getSeconds() > 9 ? d.getSeconds() : '0' + d.getSeconds();
    return year + '-' + month + '-' + da + ' ' + hour + ':' + min + ':' + sec;
});

Vue.http.headers.common['Authorization'] = sessionStorage.getItem('user');
//const app=Vue.extend({});
Exemplo n.º 20
0
import Vue from 'vue';
import VueResource from 'vue-resource';
import {addClass} from './utils/filters.js';
import App from './components/App';

require('./styles/app.scss');

// open debug mode in dev mode
/* eslint-disable no-undef */
if (__DEV__) {
  Vue.config.debug = true;
}
// use vue-resource to load async data
Vue.use(VueResource);
// add vue filter
Vue.filter('addClass', addClass);

/* eslint-disable no-new */
new Vue({
  el: 'body',
  components: {
    'app': App
  }
});
Exemplo n.º 21
0
Arquivo: main.js Projeto: megos/asagao
import log4js from 'log4js'
import * as VOns from './vue-onsen-components'

import App from './App'
import router from './router'
import store from './store'

import TwitterClient from './modules/twitter'

Vue.config.productionTip = false

Vue.prototype.$twitter = TwitterClient
Vue.prototype.$logger = log4js.getLogger()
Vue.prototype.$logger.level = 'info'

Vue.use($ons)
Object.values(VOns).forEach(comp => Vue.component(comp.name, comp))

Vue.use(FormTextarea)

Vue.filter('toSSL', (value) => {
  if (!value) return ''
  return value.replace(/^http:/, 'https:')
})

new Vue({
  router,
  store,
  render: h => h(App),
}).$mount('#app')
Exemplo n.º 22
0
import Vue from 'vue';
import { sync } from 'vuex-router-sync';

// Filters
import * as filters from './filters';
for (const k in filters) {
  Vue.filter(k, filters[k]);
}

// Injections
import './components/commons';
import SlimkitBootstrapUiKit from 'simkit-bootstrap-ui-kit';
Vue.use(SlimkitBootstrapUiKit);

import router from './router';
import store from './store';
sync(store, router);


// Root component
import App from './App';

new Vue({
  router,
  store,
  el: '#app',
  render: h => h(App),
});
Exemplo n.º 23
0
Vue.use(VueResource);

Vue.http.options.root = '/data/';
Vue.http.options.emulateJSON = true;

// Router
Vue.use(VueRouter);

const router = new VueRouter({
    hashbang: true,
    saveScrollPosition: true,
    suppressTransitionError: true
});

routerConfig(router);

router.start({}, 'body');

// Validator
Vue.use(VueValidator);
Vue.validator('username', val => !!val.trim().length || /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i.test(val) || /^(13[0-9]{9}|15[012356789][0-9]{8}|18[0123456789][0-9]{8}|147[0-9]{8}|170[0-9]{8}|177[0-9]{8})$/i.test(val));
Vue.validator('email', val => /^[a-z0-9!#$%&'*+\/=?^_`{|}~.-]+@[a-z0-9]([a-z0-9-]*[a-z0-9])?(\.[a-z0-9]([a-z0-9-]*[a-z0-9])?)*$/i.test(val));
Vue.validator('phone', val => /^(13[0-9]{9}|15[012356789][0-9]{8}|18[0123456789][0-9]{8}|147[0-9]{8}|170[0-9]{8}|177[0-9]{8})$/i.test(val));
Vue.validator('captcha_code', val => /^[\d]{6}$/i.test(val));

// Filters
Vue.filter('date', filters.dateFilter);
Vue.filter('category', filters.categoryFilter);
Vue.filter('department', filters.departmentFilter);
Vue.filter('city', filters.cityFilter);
Exemplo n.º 24
0
import Vue from 'vue';
import VueResource from 'vue-resource';
import _ from 'underscore';

Vue.use(VueResource);

Vue.config.debug = true;

/**
 * Datetime filter
 */
Vue.filter('moment', function (value, format) {
    return moment(value).format(format);
});

/**
 * TODO: Member search dropdown status message, image upload
 */
new Vue({
    el: '#squad-form',

    data: {
        squad: {
            id: null,
            name: null,
            description: null,
            gameId: null,
            image: null,
            roster: []
        },
        games: _page.games,
Exemplo n.º 25
0
Object.keys(filters).forEach(x => Vue.filter(x, filters[x])); // 注册filter
Exemplo n.º 26
0
import Vue from 'vue';
import Container from './components/Container.vue'
import './app.css';

Vue.filter('date', function (value) {
  return new Date(value).toLocaleString();
})
new Vue({
	el: '#vue',
	data: {
		message: 'Hello Vue.js!'
	},
    components: {
        'container': Container
    }
})
Exemplo n.º 27
0
import timeago from 'timeago.js';
import axios from 'axios';
import Vue from 'vue';
import VueMaterial from 'vue-material';
import './assets/material.css';

import InstallerIssues from './components/InstallerIssues';

Vue.config.productionTip = false;
Vue.use(VueMaterial);

function formatTimeAgo(date) {
  if (!date) {
    return '';
  }
  return timeago().format(new Date(date));
}
Vue.filter('formatTimeAgo', formatTimeAgo);

if (process.env.NODE_ENV === 'development') {
  axios.defaults.baseURL = 'http://localhost:8000';
} else {
  axios.defaults.baseURL = 'https://lutris.net';
}

/* eslint-disable no-new */
new Vue({
  el: '#issues',
  components: { InstallerIssues },
});
Exemplo n.º 28
0
Object.keys(filters).forEach(key => {
  Vue.filter(key, filters[key])
})
Exemplo n.º 29
0
Object.keys(filter).forEach(function(k) {
  Vue.filter(k, filter[k])
});
Exemplo n.º 30
0
import Vue from 'vue'
import moment from 'moment'


Vue.filter('date-moment', {
    read(value) {
        if (value === null) return null
        const date = value.toDate()
        let year   = '0000' + date.getFullYear()
        year       = year.substring(year.length - 4)
        let month  = '00' + (date.getMonth() + 1)
        month      = month.substring(month.length - 2)
        let day    = '00' + date.getDate()
        day        = day.substring(day.length - 2)
        return year + '-' + month + '-' + day
    },
    write(value) {
        return moment(value)
    },
})