diff --git a/config/filesystems.php b/config/filesystems.php index 01c7684..5d67f20 100644 --- a/config/filesystems.php +++ b/config/filesystems.php @@ -45,7 +45,7 @@ return [ 'local' => [ 'driver' => 'local', - 'root' => storage_path('app'), + 'root' => base_path('/'), ], 'public' => [ diff --git a/config/medialibrary.php b/config/medialibrary.php index d9c3dd3..8386825 100644 --- a/config/medialibrary.php +++ b/config/medialibrary.php @@ -129,7 +129,7 @@ return [ * The engine that should perform the image conversions. * Should be either `gd` or `imagick`. */ - 'image_driver' => 'imagick', + 'image_driver' => env( 'IMAGE_DRIVER','imagick'), /* * FFMPEG & FFProbe binaries paths, only used if you try to generate video diff --git a/resources/js/Global/components/Blocks/Info.vue b/resources/js/Global/components/Blocks/Info.vue index 8adf2c2..a0ff776 100644 --- a/resources/js/Global/components/Blocks/Info.vue +++ b/resources/js/Global/components/Blocks/Info.vue @@ -1,7 +1,9 @@ @@ -10,7 +12,9 @@ export default { props: { icon: String, label: { default: " عنوان " }, - value: { default: "" }, + value: String, + secondValue: String, + link: String, direction: { default: '' }, valueClass: { default: '' }, }, @@ -19,8 +23,7 @@ export default { diff --git a/resources/js/Global/components/Inputs/Quantity-Select.vue b/resources/js/Global/components/Inputs/Quantity-Select.vue index 301c69a..9a6a26d 100644 --- a/resources/js/Global/components/Inputs/Quantity-Select.vue +++ b/resources/js/Global/components/Inputs/Quantity-Select.vue @@ -1,17 +1,20 @@ @@ -19,9 +22,11 @@ @@ -55,6 +60,10 @@ .quantity-select .v-icon:hover { opacity: 1; } + .top-label { + border-radius: 5px; + margin-bottom: 3px; + } .quantity-select .controls .add { display: block; diff --git a/resources/js/Global/components/Inputs/RadioGroup.vue b/resources/js/Global/components/Inputs/RadioGroup.vue index a0191ef..b1cb88d 100644 --- a/resources/js/Global/components/Inputs/RadioGroup.vue +++ b/resources/js/Global/components/Inputs/RadioGroup.vue @@ -3,7 +3,7 @@
-
+
WMi-{{ item[itemIcon] }}
@@ -184,12 +184,10 @@ border-radius: 10px; border: 1px solid; } - .bubble.fa-only .text { - margin-right: 5px; - } .bubble.fa-only .v-icon { font-size: 20px !important; line-height: 20px; + margin-left: 5px; } .bubble.fa-only .Fa { font-size: 14px !important; diff --git a/resources/js/Global/components/Misc/End-Rows.vue b/resources/js/Global/components/Misc/End-Rows.vue new file mode 100644 index 0000000..6679c3a --- /dev/null +++ b/resources/js/Global/components/Misc/End-Rows.vue @@ -0,0 +1,31 @@ + + + diff --git a/resources/js/Global/components/Tiles/Back-Tile.vue b/resources/js/Global/components/Tiles/Back-Tile.vue index db77651..cc7ab60 100644 --- a/resources/js/Global/components/Tiles/Back-Tile.vue +++ b/resources/js/Global/components/Tiles/Back-Tile.vue @@ -30,7 +30,7 @@ export default { width: 110px; height: 100%; position: absolute; - padding: 10px; + padding: 5px; right: 0px; top: 0px; border: 1px solid transparent; diff --git a/resources/js/Global/components/Tiles/Icon-Tile.vue b/resources/js/Global/components/Tiles/Icon-Tile.vue index d650901..1401943 100644 --- a/resources/js/Global/components/Tiles/Icon-Tile.vue +++ b/resources/js/Global/components/Tiles/Icon-Tile.vue @@ -68,11 +68,15 @@ export default { + diff --git a/resources/js/Global/plugins/chart/apexWrapper.js b/resources/js/Global/plugins/chart/apexWrapper.js new file mode 100644 index 0000000..fc7e703 --- /dev/null +++ b/resources/js/Global/plugins/chart/apexWrapper.js @@ -0,0 +1,19 @@ +import Pie from "./apexhart/type/pie"; +import Bar from "./apexhart/type/bar"; +import Linear from "./apexhart/type/linear"; + +export default class { + + constructor(typeChart, options) { + switch (typeChart) { + case 'pie': + return new Pie(options); + case 'bar': + return new Bar(options); + case 'linear': + return new Linear(options); + default: + throw new Error("The Type Chart is Not Support!"); + } + } +} diff --git a/resources/js/Global/plugins/chart/apexhart/chart.js b/resources/js/Global/plugins/chart/apexhart/chart.js new file mode 100644 index 0000000..21463ac --- /dev/null +++ b/resources/js/Global/plugins/chart/apexhart/chart.js @@ -0,0 +1,23 @@ +import axios from 'axios'; + +export default class { + + constructor({url, params}) { + this.url = url; + this.params = params; + this.isLoadRequest = false; + this.responseChart = null; + } + + async request() { + if (!this.isLoadRequest) { + let response = await axios.get(this.url, {params: this.params}); + if (response && response.status === 200) { + this.responseChart = response.data; + this.isLoadRequest = true; + } + } + return this.responseChart; + } + +} diff --git a/resources/js/Global/plugins/chart/apexhart/type/bar.js b/resources/js/Global/plugins/chart/apexhart/type/bar.js new file mode 100644 index 0000000..1e8be62 --- /dev/null +++ b/resources/js/Global/plugins/chart/apexhart/type/bar.js @@ -0,0 +1,68 @@ +import chart from "../chart"; + +export default class extends chart { + + constructor(options) { + super(options); + this.type = options.type ? options.type : 'daily'; + + this.options = { + fill: { + colors: ["#e6e6e6"] + }, + chart: { + id: "lineChart", + fontFamily: '"iranyekan-regular-en-num", "Montserrat-Regular"' + }, + xaxis: { + categories: [] + }, + dataLabels: { + style: { + colors: ["#000", "#000", "#000"] + } + }, + series: [ + { + name: "bar chart", + data: [] + } + ] + }; + + } + + async getOptions() { + await this.request(); + this.setOptions(); + return this.options; + } + + setOptions() { + switch (this.type) { + case 'weekly': + return this.setWeekly(); + case 'monthly': + return this.setMonthly(); + case 'daily': + return this.setDaily(); + } + } + + setWeekly() { + this.options.series[0].data = this.responseChart.map(x => x.count); + this.options.xaxis.categories = this.responseChart.map(x => x.week); + } + + setMonthly() { + this.options.series[0].data = this.responseChart.map(x => x.count); + this.options.xaxis.categories = this.responseChart.map(x => x.month + ' ' + x.year.substring(2) ); + } + + setDaily() { + this.options.series[0].data = this.responseChart.map(x => x.count); + this.options.xaxis.categories = this.responseChart.map(x => x.date); + } + + +} diff --git a/resources/js/Global/plugins/chart/apexhart/type/linear.js b/resources/js/Global/plugins/chart/apexhart/type/linear.js new file mode 100644 index 0000000..18409d9 --- /dev/null +++ b/resources/js/Global/plugins/chart/apexhart/type/linear.js @@ -0,0 +1,20 @@ +import chart from "../chart"; + +export default class extends chart { + + constructor(options) { + super(options); + } + + + async getOptions() { + await this.request(this.setOptions); + return this.options; + } + + setOptions(self) { + self.options.series[0].data = self.responseChart.map(x => x.user_count); + self.options.xaxis.categories = self.responseChart.map(x => x.week); + } + +} diff --git a/resources/js/Global/plugins/chart/apexhart/type/pie.js b/resources/js/Global/plugins/chart/apexhart/type/pie.js new file mode 100644 index 0000000..5987ea1 --- /dev/null +++ b/resources/js/Global/plugins/chart/apexhart/type/pie.js @@ -0,0 +1,45 @@ +import chart from "../chart"; + +export default class extends chart { + + constructor(options) { + super(options); + this.options = { + chart: { + type: "donut", + id: "pieChart", + fontFamily: '"iranyekan-regular-en-num", "Montserrat-Regular"' + }, + fill: { + label: [], + }, + dataLabels: { + enabled: true, + formatter: function (val, opt) { + return Math.round(val * 10) / 10 + '% ' + opt.w.globals.labels[opt.seriesIndex] + }, + }, + series: [], + labels: [], + legend: { + fontSize: "16px" + } + }; + } + + + async getOptions() { + await this.request(); + this.setOptions(); + return this.options; + } + + setOptions() { + this.options.series = this.responseChart.map(x => x.count); + this.options.labels = this.responseChart.map(x => x.category); + this.options.fill.labels = this.responseChart.map(x => x.category); + // this.options.labels = this.responseChart.map(x => x.category.name); + // this.options.fill.label = this.responseChart.map(x => x.category.name); + // this.options['colors'] = this.responseChart.map( x => x.category.color ? x.category.color : "#fff"); + } +} diff --git a/resources/js/Global/scss/Colors.scss b/resources/js/Global/scss/Colors.scss index 35347e9..3bc1717 100644 --- a/resources/js/Global/scss/Colors.scss +++ b/resources/js/Global/scss/Colors.scss @@ -21,50 +21,6 @@ $Value in $colors { } -/* -------------------------------------------------------- - Steps : Colors --------------------------------------------------------- */ - -@each $color, -$value in $colors { - //-------------------Active State----------------------------- - .v-stepper.we-stepper .v-stepper__step.theme-#{$color}.active .v-stepper__label { - color: #fff; - } - .v-stepper.we-stepper .v-stepper__step.theme-#{$color}.active .v-stepper__step__step { - color: #fff; - } - .v-stepper.we-stepper .v-stepper__step.theme-#{$color}.active { - background-color: $value; - } - - //-------------------Passed State----------------------------- - .v-stepper.we-stepper .v-stepper__step.theme-#{$color}.passed .v-stepper__label { - color: $value; - } - .v-stepper.we-stepper .v-stepper__step.theme-#{$color}.passed .v-stepper__step__step { - color: $value - } - - //-------------------Current Step----------------------------- - .order-status .current-status.theme-#{$color} { - border: 2px solid $value; - } - .order-status .current-status.theme-#{$color} .symbol .v-icon { - color: $value - } - - -} -@each $backgroundColor, -$value in $backgrounds { - .v-stepper.we-stepper .v-stepper__step.theme-#{$backgroundColor}.passed { - background-color: $value; - } - .bg-#{$backgroundColor} { - background-color: $value; - } -} .text-gradient.orange-purple { diff --git a/resources/js/Global/scss/Misc.scss b/resources/js/Global/scss/Misc.scss index 545b68e..3bd2a2a 100644 --- a/resources/js/Global/scss/Misc.scss +++ b/resources/js/Global/scss/Misc.scss @@ -348,6 +348,9 @@ $Value in $colors { border-radius: 8px; margin-left: 8px; } +.v-application .white.color-square { + border: 1px solid #000 !important; +} .image-square { width: 32px; @@ -405,6 +408,9 @@ $Value in $colors { .mt--8 { margin-top: -8px; } +.mr--3 { + margin-right: -3px; +} /* -------------------------------------------------------- masonry :: End @@ -654,7 +660,6 @@ $value in $backgrounds { margin: 0px -20px; padding: 5px 20px; background-color: #f9f9f9; - margin-bottom: 20px; } .full-row.mr-ml--30 { margin: 0px -30px; @@ -709,6 +714,10 @@ $value in $colors { padding-bottom: 2px; padding-top: 2px; } +.row.cols-pt-pb-2 .col { + padding-bottom: 4px; + padding-top: 4px; +} /*---------------------------------------------------------------*/ @@ -729,7 +738,7 @@ $value in $colors { /*---------------------------------------------------------------*/ -/* hidden states :: Begin +/* disable states :: Begin /*---------------------------------------------------------------*/ .hidden-by-height { max-height: 0px; @@ -742,6 +751,25 @@ $value in $colors { opacity: 1; } +.disable-by-gray-scale:not(.active) { + filter: grayscale(100%); + transition: 0.3s; + cursor: not-allowed; + } +.disable-by-gray-scale:not(.active) > * { + pointer-events: none; +} + + +.disable-by-opacity:not(.active) { + opacity: 0.5; + transition: 0.3s; + cursor: not-allowed; +} +.disable-by-opacity:not(.active) > * { + pointer-events: none; +} + /*---------------------------------------------------------------*/ /* home Tiles :: Begin /*---------------------------------------------------------------*/ diff --git a/resources/js/Global/scss/Modify.scss b/resources/js/Global/scss/Modify.scss index ad59007..6e737b0 100644 --- a/resources/js/Global/scss/Modify.scss +++ b/resources/js/Global/scss/Modify.scss @@ -591,11 +591,9 @@ $Value in $Shadows { justify-content: center; } .v-stepper.we-stepper .v-stepper__step .v-stepper__label { - color: #32c5d2; text-align: right; } .v-stepper.we-stepper .v-stepper__step .v-stepper__step__step { - color: #32c5d2; border-radius: 0px; height: auto; min-width: auto; @@ -612,29 +610,6 @@ $Value in $Shadows { color: rgba(0,0,0,.38); } -.v-stepper.we-stepper .v-stepper__label .Fa { - font-size: 18px; -} -.v-stepper.we-stepper .v-stepper__label .En { - font-size: 12px; - margin-top: 5px; - text-transform: uppercase; - letter-spacing: 3px; -} - -//------------------------------------------------------ -// Theme Gray -//------------------------------------------------------ -.v-stepper.we-stepper .v-stepper__step.v-stepper__step--inactive { - //border-right: 2px solid #00000061; - background-color: transparent; -} -.v-stepper.we-stepper .v-stepper__step.v-stepper__step--inactive .v-stepper__label { - color: #00000061; -} -.v-stepper.we-stepper .v-stepper__step.v-stepper__step--inactive .v-stepper__step__step { - color: #00000061; -} //------------------------------------------------------ diff --git a/resources/js/Global/utils/module-color/moduleColor.js b/resources/js/Global/utils/module-color/moduleColor.js index 6e2d21e..fedaa17 100644 --- a/resources/js/Global/utils/module-color/moduleColor.js +++ b/resources/js/Global/utils/module-color/moduleColor.js @@ -43,7 +43,7 @@ export default { // -------------------------- // Products // -------------------------- - product : 'cyan', + product : 'red', translation : 'blue', pricing_method: 'purple', product_option: 'gold', @@ -53,7 +53,7 @@ export default { // -------------------------- // Service // -------------------------- - service : 'cyan', + service : 'orange', // -------------------------- // Store @@ -86,6 +86,11 @@ export default { gallery : 'black', + // -------------------------- + // Finance + // -------------------------- + expense : 'red', +