12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- <template>
- <modal title='Create Community Station'>
- <div slot='body'>
- <!-- validation to check if exists http://bulma.io/documentation/elements/form/ -->
- <label class='label'>Name (unique lowercase station id)</label>
- <p class='control'>
- <input class='input' type='text' placeholder='Name...' v-model='newCommunity.name' autofocus>
- </p>
- <label class='label'>Display Name</label>
- <p class='control'>
- <input class='input' type='text' placeholder='Display name...' v-model='newCommunity.displayName'>
- </p>
- <label class='label'>Description</label>
- <p class='control'>
- <input class='input' type='text' placeholder='Description...' v-model='newCommunity.description' @keyup.enter="submitModal()">
- </p>
- </div>
- <div slot='footer'>
- <a class='button is-primary' @click='submitModal()'>Create</a>
- </div>
- </modal>
- </template>
- <script>
- import { Toast } from 'vue-roaster';
- import Modal from './Modal.vue';
- import io from '../../io';
- import validation from '../../validation';
- export default {
- components: { Modal },
- data() {
- return {
- newCommunity: {
- name: '',
- displayName: '',
- description: ''
- }
- }
- },
- ready: function () {
- let _this = this;
- io.getSocket((socket) => {
- _this.socket = socket;
- });
- },
- methods: {
- toggleModal: function () {
- this.$parent.modals.createCommunityStation = !this.$parent.modals.createCommunityStation;
- },
- submitModal: function () {
- const name = this.newCommunity.name;
- const displayName = this.newCommunity.displayName;
- const description = this.newCommunity.description;
- if (!name || !displayName || !description) return Toast.methods.addToast('Please fill in all fields', 8000);
- if (!validation.isLength(name, 2, 16)) return Toast.methods.addToast('Name must have between 2 and 16 characters.', 8000);
- if (!validation.regex.az09_.test(name)) return Toast.methods.addToast('Invalid name format. Allowed characters: a-z, 0-9 and _.', 8000);
- if (!validation.isLength(displayName, 2, 32)) return Toast.methods.addToast('Display name must have between 2 and 32 characters.', 8000);
- if (!validation.regex.azAZ09_.test(displayName)) return Toast.methods.addToast('Invalid display name format. Allowed characters: a-z, A-Z, 0-9 and _.', 8000);
- if (!validation.isLength(description, 2, 200)) return Toast.methods.addToast('Description must have between 2 and 200 characters.', 8000);
- let characters = description.split("");
- characters = characters.filter(function(character) {
- return character.charCodeAt(0) === 21328;
- });
- if (characters.length !== 0) return Toast.methods.addToast('Invalid description format. Swastika\'s are not allowed.', 8000);
- this.socket.emit('stations.create', {
- name: name,
- type: 'community',
- displayName: displayName,
- description: description
- }, res => {
- if (res.status === 'success') Toast.methods.addToast(`You have added the station successfully`, 4000);
- else Toast.methods.addToast(res.message, 4000);
- });
- this.toggleModal();
- }
- },
- events: {
- closeModal: function() {
- this.$parent.modals.createCommunityStation = !this.$parent.modals.createCommunityStation;
- }
- }
- }
- </script>
|