fix: creat Vuex

BE.vuex-module
behmaram 4 years ago
parent 68244dabb0
commit 6fe39599a4

@ -0,0 +1,111 @@
<?php
namespace App\Console\Commands;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class Vuex
{
private static bool $isCategory = false;
private static string $module;
private static string $storeModule;
private static bool $replace = false;
private static $instance = null;
private function __construct($arguments, $options)
{
static::$isCategory = $options['category'];
static::$replace = $options['replace'];
static::$module = $arguments['module'];
static::$storeModule = $arguments['store-module'];
}
public static function initialize ($arguments, $options) {
if (!self::$instance) {
self::$instance = new static($arguments, $options);
}
return self::$instance;
}
public function createAllFiles () {
if (static::$storeModule && static::$module) {
static::createStoreFiles();
static::createRepositoryFile();
static::createResourceFile();
if (!static::$isCategory) {
static::createStorageFile();
}
}
}
public static function createStoreFiles () {
$moduleFiles = ['actions', 'mutations', 'state', 'getters'];
$basePath = 'modules/wm-' . static::$module . '/resources/js/store/modules/' . static::$storeModule . '/';
$baseDefaultPath = static::$isCategory ? 'resources/js/Default/store/category/' : 'resources/js/Default/store/store/';
foreach ($moduleFiles as $moduleFile) {
if (static::hasExists($basePath . $moduleFile)) {
$data = Storage::disk('local')->get($baseDefaultPath . $moduleFile . '.text');
$data = static::replacer($data);
Storage::disk('local')->put($basePath . $moduleFile . '.js', $data);
}
}
}
public static function createRepositoryFile () {
$baseRepositoryPath = 'modules/wm-' . static::$module . '/resources/js/abstraction/repositories/' . static::$storeModule . '/' . static::$storeModule . 'Repository.js';
$baseDefaultPath = static::$isCategory ? 'resources/js/Default/abstraction/repositories/categoryRepository.text' : 'resources/js/Default/abstraction/repositories/repository.text';
if (static::hasExists($baseRepositoryPath)) {
$data = Storage::disk('local')->get($baseDefaultPath);
$data = static::replacer($data);
Storage::disk('local')->put($baseRepositoryPath, $data);
}
}
public static function createResourceFile() {
$baseResourcePath = 'modules/wm-' . static::$module . '/resources/js/abstraction/resources/' . static::$storeModule . '/' . static::$storeModule . 'Resource.js';
$baseDefaultPath = static::$isCategory ? 'resources/js/Default/abstraction/resources/categoryResource.text' : 'resources/js/Default/abstraction/resources/resource.text';
if (static::hasExists($baseResourcePath)) {
$data = Storage::disk('local')->get($baseDefaultPath);
$data = static::replacer($data);
Storage::disk('local')->put($baseResourcePath, $data);
}
}
public static function createStorageFile() {
$baseStoragePath = 'modules/wm-' . static::$module . '/resources/js/services/' . static::$storeModule . '.storage.js';
$baseDefaultPath = 'resources/js/Default/services/storage.text';
if (static::hasExists($baseStoragePath)) {
$data = Storage::disk('local')->get($baseDefaultPath);
$data = static::replacer($data);
Storage::disk('local')->put($baseStoragePath, $data);
}
}
private static function hasExists($path) {
$continue = true;
if (Storage::disk('local')->exists($path)) {
$continue = static::$replace;
}
return $continue;
}
private static function replacer($data) {
$data = str_replace('|-module-|', Str::snake(static::$storeModule), $data);
$data = str_replace('|-Module-|', Str::title(static::$storeModule), $data);
$data = str_replace('|-MODULE-|', Str::upper(static::$storeModule), $data);
$data = str_replace('|-BaseModule-|', Str::title(static::$module), $data);
return str_replace('|-baseModule-|', Str::camel(static::$module), $data);
}
}

@ -2,10 +2,9 @@
namespace App\Console\Commands;
use App\Console\Commands\Vuex;
use App\Services\MorphModelFinder;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class VuexBuild extends Command
{
@ -14,14 +13,15 @@ class VuexBuild extends Command
*
* @var string
*/
protected $signature = 'make:vuex {module} {store-module} {--category}';
protected $signature = 'make:vuex {module} {store-module} {--category} {--replace}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Create a vuex modules';
protected $description = 'Create a vuex modules module store-module --category --replace';
/**
* @var MorphModelFinder
@ -46,43 +46,9 @@ class VuexBuild extends Command
*/
public function handle(): void
{
$isCategory = $this->option('category');
$module = $this->argument('module');
$storeModule = $this->argument('store-module');
$moduleFiles = ['actions.js', 'mutations.js', 'state.js', 'getters.js'];
$baseRepositoryPath = 'modules/wm-' . $module . '/resources/js/abstraction/repositories/' . $storeModule;
$baseResourcePath = 'modules/wm-' . $module . '/resources/js/abstraction/resources/' . $storeModule;
$baseActionPath = 'modules/wm-' . $module . '/resources/js/store/modules/' . $storeModule . '/';
$baseDefaultActionPath = 'resources/js/Default/store/store/';
// $name = $this->choice(
// 'file exist, Do yo really Replace File?',
// ['Taylor', 'Dayle'],
// 'Dayle'
// );
if ($storeModule && $module) {
foreach ($moduleFiles as $moduleFile) {
if (Storage::disk('local')->exists($baseActionPath . $moduleFile)) {
if ($this->confirm('file exist, Do yo really Replace File?', true)) {
$data = Storage::disk('local')->get($baseDefaultActionPath . $moduleFile);
$data = str_replace('|-module-|', Str::snake($storeModule), $data);
$data = str_replace('|-Module-|', Str::title($storeModule), $data);
$data = str_replace('|-MODULE-|', Str::upper($storeModule), $data);
$data = str_replace('|-BaseModule-|', Str::title($module), $data);
$data = str_replace('|-baseModule-|', Str::camel($module), $data);
Storage::disk('local')->put($baseActionPath . $moduleFile, $data);
}
}
}
}
Vuex::initialize($this->arguments(), $this->options())->createAllFiles();
$this->info('modules Store Created');
}
}

@ -0,0 +1,54 @@
import {setData, getJson, getArray} from '@|-BaseModule-|/abstraction/resources/productCategory/|-module-|CategoryResource'
import axios from "axios";
import url from "@|-Module-|/router/urls";
export default class |-module-|CategoryRepository {
async index() {
let response = await axios.get(url('url'));
if (response && response.status === 200) {
return getArray(response.data.data);
}
}
async store(data) {
const params = setData(data);
let response = await axios.post(url('url'), params);
if (response && response.status === 201) {
return getJson(response.data.data);
}
}
async update(data) {
const params = setData(data, true);
let response = await axios.post(url('url', {|-module-|Category: data.id}), params);
if (response && response.status === 200) {
return getJson(response.data.data);
}
}
async destroy(dataId) {
let response = await axios.delete(url('url', {|-module-|Category: dataId}));
if (response && response.status === 200) {
return true;
}
}
}

@ -0,0 +1,82 @@
import {setQuery, setData, getJson, getArray} from "@|-BaseModule-|/abstraction/repositories/|-module-|Recource";
import axios from "axios";
import url from "@|-BaseModule-|/router/urls";
export default class |-Module-|Repository {
async index(data) {
const params = setQuery(data);
let response = await axios.get(url('url'), {params});
if (response && response.status === 200) {
return getArray(response.data);
}
}
async store(data) {
const params = setData(data);
let response = await axios.post(url('url'), params);
if (response && response.status === 201) {
return getJson(response.data);
}
}
async update(data) {
const params = setData(data, true);
let response = await axios.post(url('url', {|-module-|: data.id}), params);
if (response && response.status === 200) {
return getJson(response.data.data);
}
}
async show(dataId) {
let response = await axios.get(url('url', {|-module-|: dataId}));
if (response && response.status === 200) {
return getJson(response.data.data);
}
}
async destroy(dataId) {
let response = await axios.delete(url('url', {|-module-|: dataId}));
if (response && response.status === 200) {
return true;
}
}
async destroyList(dataIds) {
let response = await axios.delete(url('url'), {params: {ids: dataIds}});
if (response && response.status === 200) {
return true;
}
}
}

@ -0,0 +1,32 @@
import {SetQueries} from "@Global/utils/common/CreateQueriesObject";
import {objectToFormData} from "@Global/utils/object-to-formdata";
import {addToTags} from "@Global/utils/common/addToTags";
const getJson = (data) => {
return {
...data,
};
};
const getArray = (data) => {
return data.map((Item) => (getJson(Item)));
};
const setQuery = (data) => {
return SetQueries(data);
};
const setData = (data, hasUpdate = false) => {
//data = addToTags(data, ['name', 'name_en']);
return objectToFormData(
{
...data,
_method: hasUpdate ? 'put' : 'post'
}
);
};
export {setData, setQuery, getArray, getJson};

@ -0,0 +1,32 @@
import {SetQueries, SetPagination} from "@Global/utils/common/CreateQueriesObject";
import {objectToFormData} from "@Global/utils/object-to-formdata";
const getJson = (data) => {
return {
...data,
};
};
const getArray = ({data, meta}) => {
const pagination = SetPagination(meta);
data = data.map((Item) => (getJson(Item)));
return {data, pagination};
};
const setQuery = (data) => {
return SetQueries(data);
};
const setData = (data, hasUpdate = false) => {
return objectToFormData(
{
...data,
_method: hasUpdate ? 'put' : 'post'
}
);
};
export {setData, setQuery, getArray, getJson};

@ -0,0 +1,42 @@
import { Paginate, Sort } from '@Global/services/storage.|-module-|';
const |-MODULE-| = '|-module-|';
const |-Module-|Paginate = {
get() {
return Paginate.get(|-MODULE-|);
},
getWithDefault() {
if(this.get()) {
return this.get();
}
return {
page: 1,
pageCount: 1,
pageStart: 1,
pageStop: 1,
itemsLength: 1,
itemsPerPage: 12,
};
},
save(paginate) {
return Paginate.save(|-MODULE-|, paginate);
},
remove() {
return Paginate.remove(|-MODULE-|);
},
}
const SortPaginate = {
get() {
return Sort.get(|-MODULE-|);
},
save() {
return Sort.save(|-MODULE-|);
},
remove() {
return Sort.remove(|-MODULE-|);
},
}
export { |-Module-|Paginate, SortPaginate }

@ -4,11 +4,13 @@ let repository = new |-Module-|Repository();
export default {
async load|-Module-|({ commit, state }) {
if () {
}
try {
commit("SET_LOADING", true);
const |-module-| = await repository.index({pagination: state.pagination, filters: state.filters});
commit("SET_|-MODULE-|", |-module-|.data);
commit("SET_|-MODULE-|_PAGINATION", |-module-|.pagination);
const |-module-| = await repository.index();
commit("SET_|-MODULE-|", |-module-|);
return |-module-|;
} catch (e) {
return e;
@ -16,13 +18,6 @@ export default {
commit("SET_LOADING", false);
}
},
async show|-Module-|({}, |-module-|Id) {
try {
return await repository.show(|-module-|Id);
} catch (e) {
return e;
}
},
async store|-Module-|({ commit }, data) {
try {
const |-module-| = await repository.store(data);

@ -0,0 +1,14 @@
export default {
getList|-Module-|: state => {
if (state.has_filter) {
return state.filtered_|-module-|;
}
return state.|-module-|;
},
get|-Module-|: state => state.|-module-|,
isFilter|-Module-|: state =>state.has_filter,
getFilter|-Module-|: state =>state.filter,
get|-Module-|Loading: state => state.loading,
get|-Module-|Selected: state => state.selected,
};

@ -1,20 +1,15 @@
import Vue from 'vue';
//import { |-module-|Paginate } from "@|-BaseModule-|/services/localStorage/|-module-|.storage"
import {addIndexTreeToList} from '@Global/utils/common/ProcessTreeArray';
export default {
SET_|-MODULE-|(state, |-module-|) {
Vue.set(state, '|-module-|', |-module-|);
Vue.set(state, '|-module-|', addIndexTreeToList(|-module-|));
},
UPDATE_|-MODULE-|(state, |-module-|) {
const index = state.|-module-|.findIndex(x => x.id === |-module-|.id);
|-module-| = {...state.|-module-|[index], ...|-module-|};
Vue.set(state.|-module-|, index, |-module-|);
},
SET_|-MODULE-|_PAGINATION(state, pagination) {
Vue.set(state, "pagination", pagination);
//|-module-|Paginate.save(pagination);
Vue.set(state.|-module-|, index, |-module-|);
Vue.set(state, '|-module-|', addIndexTreeToList(state.|-module-|));
},
REMOVE_|-MODULE-|(state, id) {
@ -22,15 +17,12 @@ export default {
const selectedIndex = state.|-module-|_selected.findIndex(x => x.id === id);
Vue.delete(state.|-module-|, Index);
Vue.delete(state.|-module-|_selected, selectedIndex);
Vue.set(state.pagination, 'itemsLength', state.pagination.itemsLength - 1);
Vue.set(state.pagination, 'pageStop', state.pagination.pageStop - 1);
Vue.set(state, '|-module-|', addIndexTreeToList(state.|-module-|));
},
ADD_|-MODULE-|(state, |-module-|) {
state.|-module-|.unshift(|-module-|);
Vue.set(state, '|-module-|', state.|-module-|);
Vue.set(state.pagination, 'itemsLength', state.pagination.itemsLength + 1);
Vue.set(state.pagination, 'pageStop', state.pagination.pageStop + 1);
Vue.set(state.|-module-|, state.|-module-|.length, |-module-|);
Vue.set(state, '|-module-|', addIndexTreeToList(state.|-module-|))
},
ADD_|-MODULE-|_SELECTED(state, |-module-|Id) {
@ -39,10 +31,15 @@ export default {
},
SET_FILTER_|-MODULE-|(state, value) {
state.filters = value;
Vue.set(state, 'filtered_|-module-|', value);
Vue.set(state, 'has_filter', true);
},
RESET_FILTERED_|-MODULE-|(state, value) {
Vue.set(state, 'filtered_|-module-|', [value]);
Vue.set(state, 'has_filter', false);
},
SET_LOADING(state, value) {
state.loading = value;
}
},
};

@ -0,0 +1,19 @@
export default {
module_info:{
name: '|-module-|',
module: '|-baseModule-|',
},
filter: [],
has_filter: false,
|-module-|: [],
filtered_|-module-|: [],
|-module-|_selected: [],
loading: false,
default_category: {
id: null,
name: "بدون دسته بندی",
name_en: "No Category",
type: "default"
}
};

@ -1,7 +0,0 @@
export default {
get|-Module-|: state => state.|-module-|,
get|-Module-|Loading: state => state.loading,
get|-Module-|Pagination: state => state.pagination,
get|-Module-|Selected: state => state.selected,
};

@ -1,14 +0,0 @@
//import { |-module-|Paginate } from "@|-BaseModule-|/services/localStorage/|-module-|.storage";
export default {
module_info:{
name: '|-module-|',
module: '|-baseModule-|',
},
|-module-|: [],
|-module-|_selected: [],
//pagination: newsPaginate.getWithDefault(),
loading: false,
filters:{},
};
Loading…
Cancel
Save