123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274 |
- 'use strict'
- import jQuery from 'jquery'
- import _ from 'lodash'
- import Vue from 'vue'
- import VeeValidate from 'vee-validate'
- import axios from 'axios'
- Vue.use(VeeValidate, {
- enableAutoClasses: true,
- classNames: {
- touched: 'is-touched', // the control has been blurred
- untouched: 'is-untouched', // the control hasn't been blurred
- valid: 'is-valid', // model is valid
- invalid: 'is-invalid', // model is invalid
- pristine: 'is-pristine', // control has not been interacted with
- dirty: 'is-dirty' // control has been interacted with
- }
- })
- jQuery(document).ready(function ($) {
- new Vue({ // eslint-disable-line no-new
- el: 'main',
- data: {
- loading: false,
- state: 'welcome',
- syscheck: {
- ok: false,
- error: '',
- results: []
- },
- dbcheck: {
- ok: false,
- error: ''
- },
- gitcheck: {
- ok: false,
- error: ''
- },
- final: {
- ok: false,
- error: '',
- results: []
- },
- conf: {
- title: 'Wiki',
- host: 'http://',
- port: 80,
- lang: 'en',
- db: 'mongodb://localhost:27017/wiki',
- pathData: './data',
- pathRepo: './repo',
- gitUseRemote: true,
- gitUrl: '',
- gitBranch: 'master',
- gitAuthType: 'ssh',
- gitAuthSSHKey: '',
- gitAuthUser: '',
- gitAuthPass: '',
- gitAuthSSL: true,
- gitSignatureName: '',
- gitSignatureEmail: '',
- adminEmail: '',
- adminPassword: '',
- adminPasswordConfirm: ''
- },
- considerations: {
- https: false,
- port: false,
- localhost: false
- }
- },
- computed: {
- currentProgress: function () {
- let perc = '0%'
- switch (this.state) {
- case 'welcome':
- perc = '0%'
- break
- case 'syscheck':
- perc = (this.syscheck.ok) ? '15%' : '5%'
- break
- case 'general':
- perc = '20%'
- break
- case 'considerations':
- perc = '30%'
- break
- case 'db':
- perc = '35%'
- break
- case 'dbcheck':
- perc = (this.dbcheck.ok) ? '50%' : '40%'
- break
- case 'paths':
- perc = '55%'
- break
- case 'git':
- perc = '60%'
- break
- case 'gitcheck':
- perc = (this.gitcheck.ok) ? '75%' : '65%'
- break
- case 'admin':
- perc = '80%'
- break
- }
- return perc
- }
- },
- methods: {
- proceedToWelcome: function (ev) {
- this.state = 'welcome'
- this.loading = false
- },
- proceedToSyscheck: function (ev) {
- let self = this
- this.state = 'syscheck'
- this.loading = true
- self.syscheck = {
- ok: false,
- error: '',
- results: []
- }
- _.delay(() => {
- axios.post('/syscheck').then(resp => {
- if (resp.data.ok === true) {
- self.syscheck.ok = true
- self.syscheck.results = resp.data.results
- } else {
- self.syscheck.ok = false
- self.syscheck.error = resp.data.error
- }
- self.loading = false
- self.$nextTick()
- }).catch(err => {
- window.alert(err.message)
- })
- }, 1000)
- },
- proceedToGeneral: function (ev) {
- let self = this
- self.state = 'general'
- self.loading = false
- self.$nextTick(() => {
- self.$validator.validateAll('general')
- })
- },
- proceedToConsiderations: function (ev) {
- this.considerations = {
- https: !_.startsWith(this.conf.host, 'https'),
- port: false, // TODO
- localhost: _.includes(this.conf.host, 'localhost')
- }
- this.state = 'considerations'
- this.loading = false
- },
- proceedToDb: function (ev) {
- let self = this
- self.state = 'db'
- self.loading = false
- self.$nextTick(() => {
- self.$validator.validateAll('db')
- })
- },
- proceedToDbcheck: function (ev) {
- let self = this
- this.state = 'dbcheck'
- this.loading = true
- self.dbcheck = {
- ok: false,
- error: ''
- }
- _.delay(() => {
- axios.post('/dbcheck', {
- db: self.conf.db
- }).then(resp => {
- if (resp.data.ok === true) {
- self.dbcheck.ok = true
- } else {
- self.dbcheck.ok = false
- self.dbcheck.error = resp.data.error
- }
- self.loading = false
- self.$nextTick()
- }).catch(err => {
- window.alert(err.message)
- })
- }, 1000)
- },
- proceedToPaths: function (ev) {
- let self = this
- self.state = 'paths'
- self.loading = false
- self.$nextTick(() => {
- self.$validator.validateAll('paths')
- })
- },
- proceedToGit: function (ev) {
- let self = this
- self.state = 'git'
- self.loading = false
- self.$nextTick(() => {
- self.$validator.validateAll('git')
- })
- },
- proceedToGitCheck: function (ev) {
- let self = this
- this.state = 'gitcheck'
- this.loading = true
- self.gitcheck = {
- ok: false,
- results: [],
- error: ''
- }
- _.delay(() => {
- axios.post('/gitcheck', self.conf).then(resp => {
- if (resp.data.ok === true) {
- self.gitcheck.ok = true
- self.gitcheck.results = resp.data.results
- } else {
- self.gitcheck.ok = false
- self.gitcheck.error = resp.data.error
- }
- self.loading = false
- self.$nextTick()
- }).catch(err => {
- window.alert(err.message)
- })
- }, 1000)
- },
- proceedToAdmin: function (ev) {
- let self = this
- self.state = 'admin'
- self.loading = false
- self.$nextTick(() => {
- self.$validator.validateAll('admin')
- })
- },
- proceedToFinal: function (ev) {
- let self = this
- self.state = 'final'
- self.loading = true
- self.final = {
- ok: false,
- error: '',
- results: []
- }
- _.delay(() => {
- axios.post('/finalize', self.conf).then(resp => {
- if (resp.data.ok === true) {
- self.final.ok = true
- self.final.results = resp.data.results
- } else {
- self.final.ok = false
- self.final.error = resp.data.error
- }
- self.loading = false
- self.$nextTick()
- }).catch(err => {
- window.alert(err.message)
- })
- }, 1000)
- },
- finish: function (ev) {
- }
- }
- })
- })
|