2015-11-24 14:07:42 +08:00

85 lines
1.7 KiB
JavaScript

/**
* Created by nuintun on 2015/11/20.
*/
'use strict';
var fs = require('fs');
var path = require('path');
var util = require('../../util');
var Vue = require('../../vue/vue');
require('../project-configure');
module.exports = Vue.component('app-main', {
template: fs.readFileSync(path.join(__dirname, 'app-main.html')).toString(),
props: {
activeIndex: {
type: Number,
twoWay: true,
required: true
},
projects: {
type: Array,
twoWay: true,
required: true
},
unique: {
type: Object,
required: true
}
},
data: function (){
return {
showSetting: false,
showMoreCommand: false
};
},
computed: {
project: function (){
return util.clone(this.projects[this.activeIndex]) || {
name: '',
path: '',
env: [],
command: []
};
},
command: function (){
return this.project.command.slice(0, 3);
},
moreCommand: function (){
return this.project.command.slice(3);
}
},
methods: {
setting: function (){
this.showSetting = true;
},
remove: function (){
this.projects.splice(this.activeIndex, 1);
this.activeIndex = 0;
this.$dispatch('save-configure');
}
},
events: {
'setting-toggle': function (state){
this.showSetting = state;
},
edit: function (project){
this.projects.$set(this.activeIndex, project);
this.$dispatch('save-configure');
}
},
created: function (){
var context = this;
document.addEventListener('click', function (event){
var target = event.target;
var trigger = context.$els.expandTrigger;
context.showMoreCommand = !!trigger.contains(target);
});
}
});