From 87a5bdb619e85e5701b6b8a51870f336fe6134dc Mon Sep 17 00:00:00 2001 From: Andrea Adamczyk Date: Fri, 26 Feb 2021 11:13:40 -0400 Subject: [PATCH 01/19] PMCORE-1192 --- gulliver/js/form/core/form.js | 2 +- gulliver/js/maborak/core/maborak.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gulliver/js/form/core/form.js b/gulliver/js/form/core/form.js index 30878c613..8f2992042 100644 --- a/gulliver/js/form/core/form.js +++ b/gulliver/js/form/core/form.js @@ -1480,7 +1480,7 @@ function G_Text(form, element, name) } } - if (me.browser.name == 'Chrome' || me.browser.name == 'Safari'){ + if (me.browser.name == 'Chrome' || me.browser.name == 'Safari' || me.browser.name == 'Firefox'){ event.returnValue = false; } else{ diff --git a/gulliver/js/maborak/core/maborak.js b/gulliver/js/maborak/core/maborak.js index 324f9723e..e3c7f3d4d 100644 --- a/gulliver/js/maborak/core/maborak.js +++ b/gulliver/js/maborak/core/maborak.js @@ -999,7 +999,7 @@ else{me.applyMask(pressKey);} if(updateOnChange){me.sendOnChange();}} if(me.browser.name=='Firefox'){if(keyCode==0)return true;} if(me.browser.name=='Microsoft Internet Explorer'||me.browser.name=='Netscape'){if(window.event.preventDefault){window.event.preventDefault();}else{window.event.returnValue=false;}} -if(me.browser.name=='Chrome'||me.browser.name=='Safari'){event.returnValue=false;} +if(me.browser.name=='Chrome'||me.browser.name=='Safari'||me.browser.name=='Firefox'){event.returnValue=false;} else{return false;}}};if(this.element){this.element.onblur=function(event) {var evt=event||window.event;var keyPressed=evt.which||evt.keyCode;if((me.mask!='')&&((me.mType=='currency')||(me.mType=='percentage')||((me.validate=="Real")&&(me.mType=='text')))&&(me.mask.indexOf('-')==-1)&&(me.element.value!='')){masks=me.mask;aMasks=masks.split(';');for(m=0;m=0;p--){if(txtRealMask[p]!='#'&&txtRealMask[p]!='%'&&txtRealMask[p]!=' '){separatorField=txtRealMask[p];break;}}} var partsMaskSep=aMasks[m].split(separatorField);if(partsMaskSep.length==2){var countDecimal=0;txtRealMask=aMasks[m].split('');p=txtRealMask.length-1;for(;p>=0;p--){if(txtRealMask[p]=='#'){countDecimal++;} From 83d67e92edbb6fabc7bfea1ae94555833893ef73 Mon Sep 17 00:00:00 2001 From: Henry Jordan Date: Fri, 4 Jun 2021 20:10:12 +0000 Subject: [PATCH 02/19] ENP-13 --- workflow/engine/methods/scheduler/index.php | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/workflow/engine/methods/scheduler/index.php b/workflow/engine/methods/scheduler/index.php index 5691b0f0e..64da599d6 100755 --- a/workflow/engine/methods/scheduler/index.php +++ b/workflow/engine/methods/scheduler/index.php @@ -1,3 +1,7 @@ + Date: Tue, 27 Jul 2021 20:38:26 +0000 Subject: [PATCH 03/19] PMCORE-3067: UI - List Sorting feature --- package-lock.json | 26 +++++++ package.json | 3 + resources/assets/js/api/Config.js | 24 +++++++ resources/assets/js/api/Services.js | 3 +- resources/assets/js/api/index.js | 5 +- .../vuetable/extends/VtSortControl.vue | 17 +++++ resources/assets/js/home/Home.vue | 69 ++++++++++++++++++- resources/assets/js/home/MyCases/MyCases.vue | 39 +++++++++-- resources/assets/js/home/main.js | 7 +- workflow/engine/methods/cases/viena_init.php | 3 +- 10 files changed, 184 insertions(+), 12 deletions(-) create mode 100644 resources/assets/js/api/Config.js create mode 100644 resources/assets/js/components/vuetable/extends/VtSortControl.vue diff --git a/package-lock.json b/package-lock.json index 4236311cd..a60d22b8e 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,12 +11,38 @@ "regenerator-runtime": "^0.13.2" } }, + "@fortawesome/fontawesome-common-types": { + "version": "0.2.35", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.35.tgz", + "integrity": "sha512-IHUfxSEDS9dDGqYwIW7wTN6tn/O8E0n5PcAHz9cAaBoZw6UpG20IG/YM3NNLaGPwPqgjBAFjIURzqoQs3rrtuw==" + }, "@fortawesome/fontawesome-free": { "version": "5.15.1", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-free/-/fontawesome-free-5.15.1.tgz", "integrity": "sha512-OEdH7SyC1suTdhBGW91/zBfR6qaIhThbcN8PUXtXilY4GYnSBbVqOntdHbC1vXwsDnX0Qix2m2+DSU1J51ybOQ==", "dev": true }, + "@fortawesome/fontawesome-svg-core": { + "version": "1.2.35", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-1.2.35.tgz", + "integrity": "sha512-uLEXifXIL7hnh2sNZQrIJWNol7cTVIzwI+4qcBIq9QWaZqUblm0IDrtSqbNg+3SQf8SMGHkiSigD++rHmCHjBg==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.35" + } + }, + "@fortawesome/free-solid-svg-icons": { + "version": "5.15.3", + "resolved": "https://registry.npmjs.org/@fortawesome/free-solid-svg-icons/-/free-solid-svg-icons-5.15.3.tgz", + "integrity": "sha512-XPeeu1IlGYqz4VWGRAT5ukNMd4VHUEEJ7ysZ7pSSgaEtNvSo+FLurybGJVmiqkQdK50OkSja2bfZXOeyMGRD8Q==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.2.35" + } + }, + "@fortawesome/vue-fontawesome": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@fortawesome/vue-fontawesome/-/vue-fontawesome-2.0.2.tgz", + "integrity": "sha512-ecpKSBUWXsxRJVi/dbOds4tkKwEcBQ1JSDZFzE2jTFpF8xIh3OgTX8POIor6bOltjibr3cdEyvnDjecMwUmxhQ==" + }, "@nuxt/opencollective": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/@nuxt/opencollective/-/opencollective-0.3.2.tgz", diff --git a/package.json b/package.json index fc913723a..1eb77f31e 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,9 @@ "vue-template-compiler": "^2.6.10" }, "dependencies": { + "@fortawesome/fontawesome-svg-core": "^1.2.35", + "@fortawesome/free-solid-svg-icons": "^5.15.3", + "@fortawesome/vue-fontawesome": "^2.0.2", "axios": "^0.15.3", "bootstrap": "^4.5.3", "bootstrap-colorpicker": "^3.0.3", diff --git a/resources/assets/js/api/Config.js b/resources/assets/js/api/Config.js new file mode 100644 index 000000000..100bfea92 --- /dev/null +++ b/resources/assets/js/api/Config.js @@ -0,0 +1,24 @@ +import ApiInstance from "./Api.js"; +import Services from "./Services"; +let Api = new ApiInstance( Services ); + +export let config = { + get(data) { + return Api.get({ + service: "CONFIG", + params: data + }); + }, + post(data) { + return Api.post({ + service: "CONFIG", + data: data + }); + }, + put(data) { + return Api.put({ + service: "CONFIG", + data: data + }); + }, +}; diff --git a/resources/assets/js/api/Services.js b/resources/assets/js/api/Services.js index 95bcdcedb..1f9f6737f 100644 --- a/resources/assets/js/api/Services.js +++ b/resources/assets/js/api/Services.js @@ -67,5 +67,6 @@ USERS: "/home/users", TASKS: "/home/tasks", CATEGORIES: "/home/categories", - DEBUG_STATUS: "/home/process-debug-status?processUid={prj_uid}" + DEBUG_STATUS: "/home/process-debug-status?processUid={prj_uid}", + CONFIG: "/home/config" }; \ No newline at end of file diff --git a/resources/assets/js/api/index.js b/resources/assets/js/api/index.js index c4d2b47d6..d6a313f69 100644 --- a/resources/assets/js/api/index.js +++ b/resources/assets/js/api/index.js @@ -1,7 +1,7 @@ import { menu } from "./Menu"; import { cases, casesHeader } from "./Cases"; - +import { config } from "./Config"; import { caseNotes } from "./CaseNotes"; import { process } from "./Process"; import { filters } from "./Filters"; @@ -13,5 +13,6 @@ export default { casesHeader, process, caseNotes, - filters + filters, + config }; \ No newline at end of file diff --git a/resources/assets/js/components/vuetable/extends/VtSortControl.vue b/resources/assets/js/components/vuetable/extends/VtSortControl.vue new file mode 100644 index 000000000..ad6f47149 --- /dev/null +++ b/resources/assets/js/components/vuetable/extends/VtSortControl.vue @@ -0,0 +1,17 @@ + + \ No newline at end of file diff --git a/resources/assets/js/home/Home.vue b/resources/assets/js/home/Home.vue index ce8ab8d90..cb9fc4845 100644 --- a/resources/assets/js/home/Home.vue +++ b/resources/assets/js/home/Home.vue @@ -25,6 +25,7 @@ :pageUri="pageUri" :name="pageName" :defaultOption="defaultOption" + :settings="config[page]" @onSubmitFilter="onSubmitFilter" @onRemoveFilter="onRemoveFilter" @onUpdatePage="onUpdatePage" @@ -32,7 +33,8 @@ @onLastPage="onLastPage" @onUpdateFilters="onUpdateFilters" @cleanDefaultOption="cleanDefaultOption" - > + @updateUserSettings="updateUserSettings" + > @@ -85,6 +87,11 @@ export default { pageName: null, pageUri: null, filters: null, + config: {}, + configParams: { + id: window.config.userId || "1", + name: "home" + }, menuMap: { CASES_MY_CASES: "MyCases", CASES_SENT: "MyCases", @@ -103,6 +110,7 @@ export default { mounted() { this.onResize(); this.getMenu(); + this.getUserSettings(); this.listenerIframe(); window.setInterval( this.setCounter, @@ -148,6 +156,62 @@ export default { console.error(e); }); }, + /** + * Gets the user config + */ + getUserSettings() { + api.config + .get(this.configParams) + .then((response) => { + if (response.data) { + this.config = response.data; + } else { + this.createUserSettings(); + } + }) + .catch((e) => { + console.error(e); + }); + }, + /** + * Creates the user config service + */ + createUserSettings() { + api.config + .post({ + ...this.configParams, + ...{setting: '{}'} + }) + .then((response) => { + if (response.data) { + this.config = response.data; + } + }) + .catch((e) => { + console.error(e); + }); + }, + /** + * Update the user config service + */ + updateUserSettings(prop, data) { + if (!this.config.setting[this.page]) { + this.config.setting[this.page] = {}; + } + this.config.setting[this.page][prop] = data; + api.config + .put(this.config) + .then((response) => { + if (response.data) { + // this.settings = response.data; + console.log("Udated") + console.log(this.config); + } + }) + .catch((e) => { + console.error(e); + }); + }, /** * Set default cases menu option */ @@ -335,7 +399,8 @@ export default { }, onUpdateFilters(filters) { this.filters = filters; - } + }, + } }; diff --git a/resources/assets/js/home/MyCases/MyCases.vue b/resources/assets/js/home/MyCases/MyCases.vue index 612b89513..2778470ce 100644 --- a/resources/assets/js/home/MyCases/MyCases.vue +++ b/resources/assets/js/home/MyCases/MyCases.vue @@ -86,7 +86,7 @@ export default { GroupedCell, ModalComments, }, - props: ["filters", "defaultOption"], + props: ["filters", "defaultOption", "settings"], data() { let that = this; return { @@ -102,6 +102,11 @@ export default { allView: [], filterHeader: "STARTED", headers: [], + columMap: { + case_number: "APP_NUMBER", + case_title: "DEL_TITLE", + process_name: "PRO_TITLE" + }, newCase: { title: this.$i18n.t("ID_NEW_CASE"), class: "btn-success", @@ -151,6 +156,8 @@ export default { selectAllMode: "page", programmatic: false, }, + sortable: ['case_number'], + orderBy: this.settings && this.settings.orderBy ? this.settings.orderBy: {}, requestFunction(data) { return this.$parent.$parent.getCasesForVueTable(data); }, @@ -304,13 +311,14 @@ export default { */ getCasesForVueTable(data) { let that = this, - dt, + dt, paged, limit = data.limit, start = data.page === 1 ? 0 : limit * (data.page - 1), - filters = {}; - paged = start + "," + limit; - + filters = {}, + sort = ""; + paged = start + "," + limit; + debugger; filters = { filter: that.filterHeader, paged: paged, @@ -320,11 +328,20 @@ export default { filters[item.filterVar] = item.value; } }); + sort = that.prepareSortString(data); + if (sort) { + filters["sort"] = sort; + that.$emit("updateUserSettings", "orderBy", { + column: data.orderBy, + ascending: data.ascending === 1 ? true: false + }); + } return new Promise((resolutionFunc, rejectionFunc) => { api.cases .myCases(filters) .then((response) => { dt = that.formatDataResponse(response.data.data); + resolutionFunc({ data: dt, count: response.data.total, @@ -335,6 +352,18 @@ export default { }); }); }, + /** + * Prepare sort string to be sended in the service + * @param {object} data + * @returns {string} + */ + prepareSortString(data){ + let sort = ""; + if (data.orderBy && this.columMap[data.orderBy]) { + sort = `${this.columMap[data.orderBy]},${data.ascending === 1 ? "ASC": "DESC"}`; + } + return sort; + }, /** * Format Response API TODO to grid inbox and columns */ diff --git a/resources/assets/js/home/main.js b/resources/assets/js/home/main.js index ad7208823..e1ace4103 100644 --- a/resources/assets/js/home/main.js +++ b/resources/assets/js/home/main.js @@ -5,6 +5,7 @@ import VueI18n from 'vue-i18n'; import { BootstrapVue, BootstrapVueIcons } from 'bootstrap-vue'; import { ServerTable, Event, ClientTable } from 'vue-tables-2'; import VtTableHeadingCustom from './../components/vuetable/extends/VtTableHeadingCustom'; +import VtSortControl from './../components/vuetable/extends/VtSortControl'; import SettingsPopover from "../components/vuetable/SettingsPopover.vue"; import Sortable from 'sortablejs'; import "@fortawesome/fontawesome-free/css/all.css"; @@ -13,15 +14,19 @@ import 'bootstrap/dist/css/bootstrap-grid.css'; import 'bootstrap/dist/css/bootstrap.min.css' import 'bootstrap-vue/dist/bootstrap-vue.css' +import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome'; + import Home from "./Home"; Vue.use(VueRouter); Vue.use(VueSidebarMenu); Vue.use(BootstrapVue); Vue.use(BootstrapVueIcons); Vue.use(VueI18n); +Vue.component('font-awesome-icon', FontAwesomeIcon); Vue.use(ServerTable, {}, false, 'bootstrap3', { - tableHeading: VtTableHeadingCustom + tableHeading: VtTableHeadingCustom, + sortControl: VtSortControl }); Vue.use(ClientTable, {}, false, 'bootstrap3', {}); Vue.component('settings-popover', SettingsPopover); diff --git a/workflow/engine/methods/cases/viena_init.php b/workflow/engine/methods/cases/viena_init.php index 76822b5d0..99dc21d30 100644 --- a/workflow/engine/methods/cases/viena_init.php +++ b/workflow/engine/methods/cases/viena_init.php @@ -4,6 +4,7 @@ use Eusebiu\JavaScript\Facades\ScriptVariables; use Illuminate\Support\Facades\View; use ProcessMaker\Core\System; use ProcessMaker\Model\Application; +use ProcessMaker\Model\User; $conf = new Configurations(); @@ -127,7 +128,6 @@ $oHeadPublisher->assign('urlProxy', $urlProxy); //sending the urlProxy to make $oHeadPublisher->assign("_nodeId", isset($confDefaultOption) ? $confDefaultOption : "PM_USERS"); //User menu permissions $oHeadPublisher->assign("FORMATS", $conf->getFormats()); - $userCanAccess = 1; global $translation; @@ -142,4 +142,5 @@ ScriptVariables::add('SYS_URI', SYS_URI); ScriptVariables::add('SYS_LANG', SYS_LANG); ScriptVariables::add('TRANSLATIONS', $translation); ScriptVariables::add('FORMATS', $conf->getFormats()); +ScriptVariables::add('userId', User::getId($_SESSION['USER_LOGGED'])); echo View::make('Views::home.home', compact("userCanAccess"))->render(); From d9efa8d1c0d9f6bc852cd5b59099d511de9eedbf Mon Sep 17 00:00:00 2001 From: Rodrigo Quelca Date: Wed, 28 Jul 2021 15:18:49 +0000 Subject: [PATCH 04/19] =?UTF-8?q?=C2=A1improve=20save=20settigs?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/assets/js/home/Home.vue | 4 +++- resources/assets/js/home/MyCases/MyCases.vue | 22 +++++++++++++++----- 2 files changed, 20 insertions(+), 6 deletions(-) diff --git a/resources/assets/js/home/Home.vue b/resources/assets/js/home/Home.vue index cb9fc4845..c7b1216b0 100644 --- a/resources/assets/js/home/Home.vue +++ b/resources/assets/js/home/Home.vue @@ -117,6 +117,7 @@ export default { parseInt(window.config.FORMATS.casesListRefreshTime) * 1000 ); }, + methods: { /** * Listener for iframes childs @@ -199,12 +200,13 @@ export default { this.config.setting[this.page] = {}; } this.config.setting[this.page][prop] = data; + console.log(this.config); api.config .put(this.config) .then((response) => { if (response.data) { // this.settings = response.data; - console.log("Udated") + console.log("Updated") console.log(this.config); } }) diff --git a/resources/assets/js/home/MyCases/MyCases.vue b/resources/assets/js/home/MyCases/MyCases.vue index 2778470ce..212690739 100644 --- a/resources/assets/js/home/MyCases/MyCases.vue +++ b/resources/assets/js/home/MyCases/MyCases.vue @@ -24,6 +24,7 @@ :columns="columns" :options="options" ref="vueTable" + name="mycases" @row-click="onRowClick" :key="random" > @@ -74,6 +75,8 @@ import GroupedCell from "../../components/vuetable/GroupedCell.vue"; import api from "../../api/index"; import utils from "../../utils/utils"; import defaultMixins from "./defaultMixins"; +import { Event } from 'vue-tables-2'; + export default { name: "MyCases", @@ -187,6 +190,7 @@ export default { }; }, mounted() { + let that = this; this.getHeaders(); this.openDefaultCase(); // force to open start cases modal @@ -194,8 +198,19 @@ export default { if (window.config._nodeId === "CASES_START_CASE") { this.$refs["newRequest"].show(); } + // define sort event + Event.$on('vue-tables.mycases.sorted', function (data) { + that.$emit("updateUserSettings", "orderBy", data); + }); + }, + watch: { + columns: function (val) { + this.$emit("updateUserSettings", "columns", val); + }, + filters: function (val) { + this.$emit("updateUserSettings", "filters", val); + }, }, - watch: {}, computed: { /** * Build our ProcessMaker apiClient @@ -331,10 +346,6 @@ export default { sort = that.prepareSortString(data); if (sort) { filters["sort"] = sort; - that.$emit("updateUserSettings", "orderBy", { - column: data.orderBy, - ascending: data.ascending === 1 ? true: false - }); } return new Promise((resolutionFunc, rejectionFunc) => { api.cases @@ -584,6 +595,7 @@ export default { }, onUpdateFilters(data) { this.$emit("onUpdateFilters", data.params); + if (data.refresh) { this.$nextTick(() => { this.$refs["vueTable"].getData(); From 817161c3eefccd6bdfc7c1fdff1615bb7b8cf44b Mon Sep 17 00:00:00 2001 From: Rodrigo Quelca Date: Thu, 29 Jul 2021 20:48:58 +0000 Subject: [PATCH 05/19] =?UTF-8?q?=C2=A1complete=20save=20settings=20for=20?= =?UTF-8?q?all=20lists?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- resources/assets/js/api/Config.js | 4 +- resources/assets/js/api/Services.js | 3 +- .../js/components/search/CasesFilter.vue | 7 +- .../js/home/AdvancedSearch/AdvancedSearch.vue | 15 +- resources/assets/js/home/Draft/Draft.vue | 82 +++++- .../assets/js/home/Draft/defaultMixins.js | 4 +- resources/assets/js/home/Home.vue | 49 ++-- resources/assets/js/home/Inbox/Todo.vue | 80 +++-- .../assets/js/home/Inbox/defaultMixins.js | 4 +- resources/assets/js/home/MyCases/MyCases.vue | 276 ++++++++++-------- resources/assets/js/home/Paused/Paused.vue | 85 +++++- .../assets/js/home/Paused/defaultMixins.js | 6 +- .../assets/js/home/Unassigned/Unassigned.vue | 75 ++++- .../js/home/Unassigned/defaultMixins.js | 4 +- 14 files changed, 472 insertions(+), 222 deletions(-) diff --git a/resources/assets/js/api/Config.js b/resources/assets/js/api/Config.js index 100bfea92..6956b8d56 100644 --- a/resources/assets/js/api/Config.js +++ b/resources/assets/js/api/Config.js @@ -5,8 +5,8 @@ let Api = new ApiInstance( Services ); export let config = { get(data) { return Api.get({ - service: "CONFIG", - params: data + service: "GET_CONFIG", + keys: data }); }, post(data) { diff --git a/resources/assets/js/api/Services.js b/resources/assets/js/api/Services.js index 1f9f6737f..98ec37954 100644 --- a/resources/assets/js/api/Services.js +++ b/resources/assets/js/api/Services.js @@ -68,5 +68,6 @@ TASKS: "/home/tasks", CATEGORIES: "/home/categories", DEBUG_STATUS: "/home/process-debug-status?processUid={prj_uid}", - CONFIG: "/home/config" + CONFIG: "/home/config", + GET_CONFIG: "/home/config/{id}/{name}" }; \ No newline at end of file diff --git a/resources/assets/js/components/search/CasesFilter.vue b/resources/assets/js/components/search/CasesFilter.vue index 18bef4fea..8056e2afe 100644 --- a/resources/assets/js/components/search/CasesFilter.vue +++ b/resources/assets/js/components/search/CasesFilter.vue @@ -232,8 +232,10 @@ export default { if (element) { initialFilters = this.prepareFilterItems(element.items, this.selected, true); } - //adding process name filter - initialFilters =[...new Set([...initialFilters,...this.prepareFilterItems(this.processName.items, self.byProcessName, true)])]; + //adding process name filter + if (self.byProcessName !== "") { + initialFilters =[...new Set([...initialFilters,...this.prepareFilterItems(this.processName.items, self.byProcessName, true)])]; + } this.$emit("onUpdateFilters", {params: initialFilters, refresh: false}); }, /** @@ -348,6 +350,7 @@ export default { * @param {string} tag filter identifier */ updateSearchTag(params) { + debugger; let temp = this.filters.concat(params); temp = [...new Set([...this.filters, ...params])]; this.$emit("onUpdateFilters", { params: temp, refresh: true }); diff --git a/resources/assets/js/home/AdvancedSearch/AdvancedSearch.vue b/resources/assets/js/home/AdvancedSearch/AdvancedSearch.vue index f3d022c3b..a9be8eba0 100644 --- a/resources/assets/js/home/AdvancedSearch/AdvancedSearch.vue +++ b/resources/assets/js/home/AdvancedSearch/AdvancedSearch.vue @@ -169,21 +169,12 @@ export default { selectAllMode: "page", programmatic: false, }, + sortable: [], + orderBy: {}, requestFunction(data) { return this.$parent.$parent.getCasesForVueTable(data); }, - customFilters: ["myfilter"], - settings: { - "actions":{ - class: "fas fa-cog", - id:"pm-dr-column-settings", - events:{ - click(){ - that.$root.$emit('bv::show::popover', 'pm-dr-column-settings') - } - } - } - } + customFilters: ["myfilter"] }, pmDateFormat: window.config.FORMATS.dateFormat, clickCount: 0, diff --git a/resources/assets/js/home/Draft/Draft.vue b/resources/assets/js/home/Draft/Draft.vue index 547def922..9d7a8f28b 100644 --- a/resources/assets/js/home/Draft/Draft.vue +++ b/resources/assets/js/home/Draft/Draft.vue @@ -18,6 +18,7 @@ ref="vueTable" @row-click="onRowClick" :key="random" + name="draft" >
@@ -172,6 +173,7 @@ import VueCardView from "../../components/dataViews/vueCardView/VueCardView.vue" import VueListView from "../../components/dataViews/vueListView/VueListView.vue"; import defaultMixins from "./defaultMixins"; import Ellipsis from '../../components/utils/ellipsis.vue'; +import { Event } from 'vue-tables-2'; export default { name: "Draft", @@ -187,10 +189,15 @@ export default { VueCardView, VueListView }, - props: ["defaultOption", "filters"], + props: ["defaultOption", "settings"], data() { let that = this; return { + columMap: { + case_number: "APP_NUMBER", + case_title: "DEL_TITLE", + process_name: "PRO_TITLE" + }, newCase: { title: this.$i18n.t("ID_NEW_CASE"), class: "btn-success", @@ -198,20 +205,36 @@ export default { this.$refs["newRequest"].show(); }, }, - columns: [ - "detail", - "case_number", - "case_title", - "process_name", - "task", - "priority", - "actions" - ], + // columns: [ + // "detail", + // "case_number", + // "case_title", + // "process_name", + // "task", + // "priority", + // "actions" + // ], + filters: + this.settings && this.settings.filters + ? this.settings.filters + : {}, + columns: + this.settings && this.settings.columns + ? this.settings.columns + : [ + "detail", + "case_number", + "case_title", + "process_name", + "task", + "priority", + "actions" + ], tableData: [], options: { filterable: false, headings: { - detail: "", + detail: this.$i18n.t("ID_DETAIL_CASE"), case_number: this.$i18n.t("ID_MYCASE_NUMBER"), case_title: this.$i18n.t("ID_CASE_TITLE"), process_name: this.$i18n.t("ID_PROCESS_NAME"), @@ -226,6 +249,8 @@ export default { selectAllMode: "page", programmatic: false, }, + sortable: ['case_number'], + orderBy: this.settings && this.settings.orderBy ? this.settings.orderBy: {}, requestFunction(data) { return this.$parent.$parent.getCasesForVueTable(data); }, @@ -270,9 +295,21 @@ export default { this.initFilters(); }, mounted() { + let that = this; this.openDefaultCase(); + // define sort event + Event.$on('vue-tables.draft.sorted', function (data) { + that.$emit("updateUserSettings", "orderBy", data); + }); + }, + watch: { + columns: function (val) { + this.$emit("updateUserSettings", "columns", val); + }, + filters: function (val) { + this.$emit("updateUserSettings", "filters", val); + }, }, - watch: {}, computed: { /** * Build our ProcessMaker apiClient @@ -364,7 +401,8 @@ export default { paged, limit = data.limit, start = data.page === 1 ? 0 : limit * (data.page - 1), - filters = {}; + filters = {}, + sort = ""; paged = start + "," + limit; filters = { @@ -376,6 +414,10 @@ export default { filters[item.filterVar] = item.value; } }); + sort = that.prepareSortString(data); + if (sort) { + filters["sort"] = sort; + } return new Promise((resolutionFunc, rejectionFunc) => { api.cases .draft(filters) @@ -391,6 +433,18 @@ export default { }); }); }, + /** + * Prepare sort string to be sended in the service + * @param {object} data + * @returns {string} + */ + prepareSortString(data){ + let sort = ""; + if (data.orderBy && this.columMap[data.orderBy]) { + sort = `${this.columMap[data.orderBy]},${data.ascending === 1 ? "ASC": "DESC"}`; + } + return sort; + }, /** * Format Response API TODO to grid todo and columns */ @@ -456,7 +510,7 @@ export default { }, onRemoveFilter(data) {}, onUpdateFilters(data) { - this.$emit("onUpdateFilters", data.params); + this.filters = data.params; if (data.refresh) { this.$nextTick(() => { if (this.typeView === "GRID") { diff --git a/resources/assets/js/home/Draft/defaultMixins.js b/resources/assets/js/home/Draft/defaultMixins.js index fa0385111..eb1762c6b 100644 --- a/resources/assets/js/home/Draft/defaultMixins.js +++ b/resources/assets/js/home/Draft/defaultMixins.js @@ -87,7 +87,9 @@ export default { _.forIn(this.filters, function (item, key) { if (item.value && item.value != "") { - filters[item.filterVar] = item.value; + if(filters && item.value) { + filters[item.filterVar] = item.value; + } } }); return new Promise((resolutionFunc, rejectionFunc) => { diff --git a/resources/assets/js/home/Home.vue b/resources/assets/js/home/Home.vue index c7b1216b0..7caff919b 100644 --- a/resources/assets/js/home/Home.vue +++ b/resources/assets/js/home/Home.vue @@ -20,13 +20,13 @@ { if (response.data) { this.config = response.data; @@ -196,23 +199,22 @@ export default { * Update the user config service */ updateUserSettings(prop, data) { - if (!this.config.setting[this.page]) { - this.config.setting[this.page] = {}; + if (this.config.setting) { + if (!this.config.setting[this.page]) { + this.config.setting[this.page] = {}; + } + this.config.setting[this.page][prop] = data; + api.config + .put(this.config) + .then((response) => { + if (response.data) { + //TODO success response + } + }) + .catch((e) => { + console.error(e); + }); } - this.config.setting[this.page][prop] = data; - console.log(this.config); - api.config - .put(this.config) - .then((response) => { - if (response.data) { - // this.settings = response.data; - console.log("Updated") - console.log(this.config); - } - }) - .catch((e) => { - console.error(e); - }); }, /** * Set default cases menu option @@ -274,6 +276,7 @@ export default { this.pageId = item.item.id; this.pageUri = item.item.href; this.pageName = item.item.title; + } else { this.filters = []; this.pageId = null; diff --git a/resources/assets/js/home/Inbox/Todo.vue b/resources/assets/js/home/Inbox/Todo.vue index 5ff1debd1..583344f82 100644 --- a/resources/assets/js/home/Inbox/Todo.vue +++ b/resources/assets/js/home/Inbox/Todo.vue @@ -20,6 +20,7 @@ ref="vueTable" @row-click="onRowClick" :key="random" + name="todo" >
@@ -186,7 +187,7 @@ import defaultMixins from "./defaultMixins"; import Ellipsis from '../../components/utils/ellipsis.vue'; import ModalPauseCase from '../modal/ModalPauseCase.vue'; import ModalReassignCase from '../modal/ModalReassignCase.vue'; - +import { Event } from 'vue-tables-2'; export default { name: "Todo", @@ -204,10 +205,15 @@ export default { ModalPauseCase, ModalReassignCase, }, - props: ["defaultOption", "filters"], + props: ["defaultOption", "settings"], data() { let that = this; return { + columMap: { + case_number: "APP_NUMBER", + case_title: "DEL_TITLE", + process_name: "PRO_TITLE" + }, newCase: { title: this.$i18n.t("ID_NEW_CASE"), class: "btn-success", @@ -215,17 +221,24 @@ export default { this.$refs["newRequest"].show(); }, }, - columns: [ - "detail", - "case_number", - "case_title", - "process_name", - "task", - "due_date", - "delegation_date", - "priority", - "actions" - ], + filters: + this.settings && this.settings.filters + ? this.settings.filters + : {}, + columns: + this.settings && this.settings.columns + ? this.settings.columns + : [ + "detail", + "case_number", + "case_title", + "process_name", + "task", + "due_date", + "delegation_date", + "priority", + "actions" + ], tableData: [], options: { filterable: false, @@ -257,6 +270,8 @@ export default { selectAllMode: "page", programmatic: false, }, + sortable: ['case_number'], + orderBy: this.settings && this.settings.orderBy ? this.settings.orderBy: {}, requestFunction(data) { return this.$parent.$parent.getCasesForVueTable(data); }, @@ -292,10 +307,22 @@ export default { this.initFilters(); }, mounted() { + let that = this; // force to open case this.openDefaultCase(); + // define sort event + Event.$on('vue-tables.todo.sorted', function (data) { + that.$emit("updateUserSettings", "orderBy", data); + }); + }, + watch: { + columns: function (val) { + this.$emit("updateUserSettings", "columns", val); + }, + filters: function (val) { + this.$emit("updateUserSettings", "filters", val); + }, }, - watch: {}, computed: { /** * Build our ProcessMaker apiClient @@ -387,18 +414,23 @@ export default { paged, limit = data.limit, start = data.page === 1 ? 0 : limit * (data.page - 1), - filters = {}; + filters = {}, + sort = ""; paged = start + "," + limit; filters = { paged: paged, - }; - + } + debugger; _.forIn(this.filters, function (item, key) { if(filters && item.value) { filters[item.filterVar] = item.value; } }); + sort = that.prepareSortString(data); + if (sort) { + filters["sort"] = sort; + } return new Promise((resolutionFunc, rejectionFunc) => { api.cases .todo(filters) @@ -414,6 +446,18 @@ export default { }); }); }, + /** + * Prepare sort string to be sended in the service + * @param {object} data + * @returns {string} + */ + prepareSortString(data){ + let sort = ""; + if (data.orderBy && this.columMap[data.orderBy]) { + sort = `${this.columMap[data.orderBy]},${data.ascending === 1 ? "ASC": "DESC"}`; + } + return sort; + }, /** * Format Response API TODO to grid todo and columns */ @@ -491,7 +535,7 @@ export default { }, onRemoveFilter(data) {}, onUpdateFilters(data) { - this.$emit("onUpdateFilters", data.params); + this.filters = data.params; if (data.refresh) { this.$nextTick(() => { if (this.typeView === "GRID") { diff --git a/resources/assets/js/home/Inbox/defaultMixins.js b/resources/assets/js/home/Inbox/defaultMixins.js index 9440d2db8..82a532468 100644 --- a/resources/assets/js/home/Inbox/defaultMixins.js +++ b/resources/assets/js/home/Inbox/defaultMixins.js @@ -120,7 +120,9 @@ export default { paged: paged, }; _.forIn(this.filters, function (item, key) { - filters[item.filterVar] = item.value; + if(filters && item.value) { + filters[item.filterVar] = item.value; + } }); return new Promise((resolutionFunc, rejectionFunc) => { api.cases diff --git a/resources/assets/js/home/MyCases/MyCases.vue b/resources/assets/js/home/MyCases/MyCases.vue index 212690739..6a9abe77b 100644 --- a/resources/assets/js/home/MyCases/MyCases.vue +++ b/resources/assets/js/home/MyCases/MyCases.vue @@ -1,14 +1,14 @@ @@ -75,8 +88,7 @@ import GroupedCell from "../../components/vuetable/GroupedCell.vue"; import api from "../../api/index"; import utils from "../../utils/utils"; import defaultMixins from "./defaultMixins"; -import { Event } from 'vue-tables-2'; - +import { Event } from "vue-tables-2"; export default { name: "MyCases", @@ -89,18 +101,18 @@ export default { GroupedCell, ModalComments, }, - props: ["filters", "defaultOption", "settings"], + props: ["defaultOption", "settings"], data() { let that = this; return { dataAlert: { - dismissSecs: 5, - dismissCountDown: 0, - message: "", - variant: "info" + dismissSecs: 5, + dismissCountDown: 0, + message: "", + variant: "info", }, metrics: [], - title: this.$i18n.t('ID_MY_CASES'), + title: this.$i18n.t("ID_MY_CASES"), filter: "CASES_INBOX", allView: [], filterHeader: "STARTED", @@ -108,7 +120,7 @@ export default { columMap: { case_number: "APP_NUMBER", case_title: "DEL_TITLE", - process_name: "PRO_TITLE" + process_name: "PRO_TITLE", }, newCase: { title: this.$i18n.t("ID_NEW_CASE"), @@ -117,17 +129,24 @@ export default { this.$refs["newRequest"].show(); }, }, - columns: [ - "case_number", - "case_title", - "process_name", - "pending_taks", - "status", - "start_date", - "finish_date", - "duration", - "actions", - ], + filters: + this.settings && this.settings.filters + ? this.settings.filters + : {}, + columns: + this.settings && this.settings.columns + ? this.settings.columns + : [ + "case_number", + "case_title", + "process_name", + "pending_taks", + "status", + "start_date", + "finish_date", + "duration", + "actions", + ], tableData: [], options: { filterable: false, @@ -143,13 +162,13 @@ export default { actions: "", }, texts: { - count:this.$i18n.t("ID_SHOWING_FROM_RECORDS_COUNT"), + count: this.$i18n.t("ID_SHOWING_FROM_RECORDS_COUNT"), first: this.$i18n.t("ID_FIRST"), last: this.$i18n.t("ID_LAST"), filter: this.$i18n.t("ID_FILTER") + ":", limit: this.$i18n.t("ID_RECORDS") + ":", page: this.$i18n.t("ID_PAGE") + ":", - noResults: this.$i18n.t("ID_NO_MATCHING_RECORDS") + noResults: this.$i18n.t("ID_NO_MATCHING_RECORDS"), }, selectable: { mode: "single", @@ -159,34 +178,40 @@ export default { selectAllMode: "page", programmatic: false, }, - sortable: ['case_number'], - orderBy: this.settings && this.settings.orderBy ? this.settings.orderBy: {}, + sortable: ["case_number"], + orderBy: + this.settings && this.settings.orderBy + ? this.settings.orderBy + : {}, requestFunction(data) { return this.$parent.$parent.getCasesForVueTable(data); }, settings: { - "actions":{ + actions: { class: "fas fa-cog", - id:"pm-dr-column-settings", - events:{ - click(){ - that.$root.$emit('bv::show::popover', 'pm-dr-column-settings') - } - } - } - } + id: "pm-dr-column-settings", + events: { + click() { + that.$root.$emit( + "bv::show::popover", + "pm-dr-column-settings" + ); + }, + }, + }, + }, }, translations: null, pmDateFormat: window.config.FORMATS.dateFormat, clickCount: 0, singleClickTimer: null, statusTitle: { - "ON_TIME": this.$i18n.t("ID_IN_PROGRESS"), - "OVERDUE": this.$i18n.t("ID_TASK_OVERDUE"), - "DRAFT": this.$i18n.t("ID_IN_DRAFT"), - "PAUSED": this.$i18n.t("ID_PAUSED"), - "UNASSIGNED": this.$i18n.t("ID_UNASSIGNED") - } + ON_TIME: this.$i18n.t("ID_IN_PROGRESS"), + OVERDUE: this.$i18n.t("ID_TASK_OVERDUE"), + DRAFT: this.$i18n.t("ID_IN_DRAFT"), + PAUSED: this.$i18n.t("ID_PAUSED"), + UNASSIGNED: this.$i18n.t("ID_UNASSIGNED"), + }, }; }, mounted() { @@ -199,15 +224,16 @@ export default { this.$refs["newRequest"].show(); } // define sort event - Event.$on('vue-tables.mycases.sorted', function (data) { + Event.$on("vue-tables.mycases.sorted", function(data) { that.$emit("updateUserSettings", "orderBy", data); }); + // this.columns = this.settings.columns; }, watch: { - columns: function (val) { + columns: function(val) { this.$emit("updateUserSettings", "columns", val); }, - filters: function (val) { + filters: function(val) { this.$emit("updateUserSettings", "filters", val); }, }, @@ -227,12 +253,12 @@ export default { */ openDefaultCase() { let params; - if(this.defaultOption) { + if (this.defaultOption) { params = utils.getAllUrlParams(this.defaultOption); if (params && params.app_uid && params.del_index) { this.openCase({ APP_UID: params.app_uid, - DEL_INDEX: params.del_index + DEL_INDEX: params.del_index, }); this.$emit("cleanDefaultOption"); } @@ -247,7 +273,7 @@ export default { self.clickCount += 1; if (self.clickCount === 1) { self.singleClickTimer = setTimeout(function() { - self.clickCount = 0; + self.clickCount = 0; }, 400); } else if (self.clickCount === 2) { clearTimeout(self.singleClickTimer); @@ -266,7 +292,7 @@ export default { DEL_INDEX: item.DEL_INDEX, PRO_UID: item.PRO_UID, TAS_UID: item.TAS_UID, - ACTION: "todo" + ACTION: "todo", }); this.$emit("onUpdatePage", "XCase"); }, @@ -278,17 +304,22 @@ export default { openCaseDetail(item) { let that = this; api.cases.open(_.extend({ ACTION: "todo" }, item)).then(() => { - api.cases.cases_open(_.extend({ ACTION: "todo" }, item)).then(() => { - that.$emit("onUpdateDataCase", { - APP_UID: item.APP_UID, - DEL_INDEX: item.DEL_INDEX, - PRO_UID: item.PRO_UID, - TAS_UID: item.TAS_UID, - APP_NUMBER: item.CASE_NUMBER, - ACTION: that.filterHeader === "SUPERVISING" ? "to_revise": "todo" + api.cases + .cases_open(_.extend({ ACTION: "todo" }, item)) + .then(() => { + that.$emit("onUpdateDataCase", { + APP_UID: item.APP_UID, + DEL_INDEX: item.DEL_INDEX, + PRO_UID: item.PRO_UID, + TAS_UID: item.TAS_UID, + APP_NUMBER: item.CASE_NUMBER, + ACTION: + that.filterHeader === "SUPERVISING" + ? "to_revise" + : "todo", + }); + that.$emit("onUpdatePage", "case-detail"); }); - that.$emit("onUpdatePage", "case-detail"); - }); }); }, /** @@ -326,27 +357,26 @@ export default { */ getCasesForVueTable(data) { let that = this, - dt, + dt, paged, limit = data.limit, start = data.page === 1 ? 0 : limit * (data.page - 1), filters = {}, sort = ""; paged = start + "," + limit; - debugger; filters = { filter: that.filterHeader, paged: paged, }; - _.forIn(this.filters, function (item, key) { - if(filters && item.value) { + _.forIn(this.filters, function(item, key) { + if (filters && item.value) { filters[item.filterVar] = item.value; } }); sort = that.prepareSortString(data); if (sort) { filters["sort"] = sort; - } + } return new Promise((resolutionFunc, rejectionFunc) => { api.cases .myCases(filters) @@ -368,10 +398,12 @@ export default { * @param {object} data * @returns {string} */ - prepareSortString(data){ + prepareSortString(data) { let sort = ""; if (data.orderBy && this.columMap[data.orderBy]) { - sort = `${this.columMap[data.orderBy]},${data.ascending === 1 ? "ASC": "DESC"}`; + sort = `${this.columMap[data.orderBy]},${ + data.ascending === 1 ? "ASC" : "DESC" + }`; } return sort; }, @@ -389,13 +421,16 @@ export default { STATUS: v.APP_STATUS, START_DATE: v.APP_CREATE_DATE_LABEL || "", FINISH_DATE: v.APP_FINISH_DATE_LABEL || "", - PENDING_TASKS: that.formantPendingTask(v.PENDING, v.APP_STATUS), + PENDING_TASKS: that.formantPendingTask( + v.PENDING, + v.APP_STATUS + ), DURATION: v.DURATION, DEL_INDEX: v.DEL_INDEX, APP_UID: v.APP_UID, PRO_UID: v.PRO_UID, TAS_UID: v.TAS_UID, - MESSAGE_COLOR: v.CASE_NOTES_COUNT > 0 ? "black":"silver" + MESSAGE_COLOR: v.CASE_NOTES_COUNT > 0 ? "black" : "silver", }); }); return data; @@ -409,26 +444,34 @@ export default { dataFormat = []; for (i = 0; i < data.length; i += 1) { userDataFormat = utils.userNameDisplayFormat({ - userName: data[i].user_tooltip.usr_username || "", - firstName: data[i].user_tooltip.usr_firstname || "", - lastName: data[i].user_tooltip.usr_lastname || "", - format: window.config.FORMATS.format || null - }); - dataFormat.push( - { - TAS_NAME: data[i].tas_title, - STATUS: data[i].tas_color, - DELAYED_TITLE: this.delayedTitle(data[i], status), - DELAYED_MSG: data[i].tas_status === "OVERDUE" && status !== "COMPLETED" ? data[i].delay : "", - AVATAR: userDataFormat !== "" ? window.config.SYS_SERVER_AJAX + - window.config.SYS_URI + - `users/users_ViewPhotoGrid?pUID=${data[i].user_id}` : "", - USERNAME: userDataFormat !== "" ? userDataFormat : this.$i18n.t("ID_UNASSIGNED"), - POSITION: data[i].user_tooltip.usr_position, - EMAIL: data[i].user_tooltip.usr_email, - UNASSIGNED: userDataFormat !== "" ? true : false - } - ); + userName: data[i].user_tooltip.usr_username || "", + firstName: data[i].user_tooltip.usr_firstname || "", + lastName: data[i].user_tooltip.usr_lastname || "", + format: window.config.FORMATS.format || null, + }); + dataFormat.push({ + TAS_NAME: data[i].tas_title, + STATUS: data[i].tas_color, + DELAYED_TITLE: this.delayedTitle(data[i], status), + DELAYED_MSG: + data[i].tas_status === "OVERDUE" && + status !== "COMPLETED" + ? data[i].delay + : "", + AVATAR: + userDataFormat !== "" + ? window.config.SYS_SERVER_AJAX + + window.config.SYS_URI + + `users/users_ViewPhotoGrid?pUID=${data[i].user_id}` + : "", + USERNAME: + userDataFormat !== "" + ? userDataFormat + : this.$i18n.t("ID_UNASSIGNED"), + POSITION: data[i].user_tooltip.usr_position, + EMAIL: data[i].user_tooltip.usr_email, + UNASSIGNED: userDataFormat !== "" ? true : false, + }); } return dataFormat; }, @@ -436,16 +479,21 @@ export default { * Prepare the delayed title * @param {object} data * @param {string} status - * @returns {string} + * @returns {string} */ delayedTitle(data, status) { let title = ""; if (status === "COMPLETED") { title = this.$i18n.t("ID_COMPLETED") + ": "; - title += data.tas_status === "ON_TIME" ? this.$i18n.t("ID_ON_TIME"): this.$i18n.t("ID_TASK_OVERDUE"); + title += + data.tas_status === "ON_TIME" + ? this.$i18n.t("ID_ON_TIME") + : this.$i18n.t("ID_TASK_OVERDUE"); } else { - title = data.tas_status === "OVERDUE" ? - this.$i18n.t("ID_DELAYED") + ":" : this.statusTitle[data.tas_status]; + title = + data.tas_status === "OVERDUE" + ? this.$i18n.t("ID_DELAYED") + ":" + : this.statusTitle[data.tas_status]; } return title; }, @@ -562,7 +610,7 @@ export default { }; _.forEach(response, (v) => { //Hack for display the SUPERVISING CARD - if(!(v.id === "SUPERVISING" && v.counter === 0)){ + if (!(v.id === "SUPERVISING" && v.counter === 0)) { data.push({ title: v.title, counter: v.counter, @@ -574,7 +622,7 @@ export default { that.$refs["vueTable"].setPage(1); // Reset the page when change the header filter that.$refs["vueTable"].getData(); }, - class: info[v.id].class + class: info[v.id].class, }); } }); @@ -591,11 +639,11 @@ export default { that.$refs["modal-comments"].show(); }); }, - onRemoveFilter(data) { - }, + onRemoveFilter(data) {}, onUpdateFilters(data) { - this.$emit("onUpdateFilters", data.params); - + debugger; + // this.$emit("onUpdateFilters", data.params); + this.filters = data.params; if (data.refresh) { this.$nextTick(() => { this.$refs["vueTable"].getData(); @@ -614,9 +662,9 @@ export default { * @param {string} type - alert type */ showAlert(message, type) { - this.dataAlert.message = message; - this.dataAlert.variant = type || "info"; - this.dataAlert.dismissCountDown = this.dataAlert.dismissSecs; + this.dataAlert.message = message; + this.dataAlert.variant = type || "info"; + this.dataAlert.dismissCountDown = this.dataAlert.dismissSecs; }, /** * Updates the alert dismiss value to update @@ -624,7 +672,7 @@ export default { * @param {mumber} */ countDownChanged(dismissCountDown) { - this.dataAlert.dismissCountDown = dismissCountDown; + this.dataAlert.dismissCountDown = dismissCountDown; }, }, }; @@ -636,4 +684,4 @@ export default { padding-left: 50px; padding-right: 50px; } - \ No newline at end of file + diff --git a/resources/assets/js/home/Paused/Paused.vue b/resources/assets/js/home/Paused/Paused.vue index 8b284a800..e1b54e5bc 100644 --- a/resources/assets/js/home/Paused/Paused.vue +++ b/resources/assets/js/home/Paused/Paused.vue @@ -19,6 +19,7 @@ ref="vueTable" @row-click="onRowClick" :key="random" + name="paused" >
@@ -186,6 +187,7 @@ import VueListView from "../../components/dataViews/vueListView/VueListView.vue" import defaultMixins from "./defaultMixins"; import Ellipsis from '../../components/utils/ellipsis.vue'; import ModalReassignCase from '../modal/ModalReassignCase.vue'; +import { Event } from 'vue-tables-2'; export default { name: "Paused", @@ -203,10 +205,15 @@ export default { VueListView, ModalReassignCase, }, - props: ["defaultOption", "filters"], + props: ["defaultOption", "settings"], data() { let that = this; return { + columMap: { + case_number: "APP_NUMBER", + case_title: "DEL_TITLE", + process_name: "PRO_TITLE" + }, newCase: { title: this.$i18n.t("ID_NEW_CASE"), class: "btn-success", @@ -214,17 +221,35 @@ export default { this.$refs["newRequest"].show(); }, }, - columns: [ - "detail", - "case_number", - "case_title", - "process_name", - "task", - "due_date", - "delegation_date", - "priority", - "actions", - ], + // columns: [ + // "detail", + // "case_number", + // "case_title", + // "process_name", + // "task", + // "due_date", + // "delegation_date", + // "priority", + // "actions", + // ], + filters: + this.settings && this.settings.filters + ? this.settings.filters + : {}, + columns: + this.settings && this.settings.columns + ? this.settings.columns + : [ + "detail", + "case_number", + "case_title", + "process_name", + "task", + "due_date", + "delegation_date", + "priority", + "actions" + ], tableData: [], options: { filterable: false, @@ -256,6 +281,8 @@ export default { selectAllMode: "page", programmatic: false, }, + sortable: ['case_number'], + orderBy: this.settings && this.settings.orderBy ? this.settings.orderBy: {}, requestFunction(data) { return this.$parent.$parent.getCasesForVueTable(data); }, @@ -291,10 +318,21 @@ export default { this.initFilters(); }, mounted() { + let that = this; // force to open case this.openDefaultCase(); + Event.$on('vue-tables.paused.sorted', function (data) { + that.$emit("updateUserSettings", "orderBy", data); + }); + }, + watch: { + columns: function (val) { + this.$emit("updateUserSettings", "columns", val); + }, + filters: function (val) { + this.$emit("updateUserSettings", "filters", val); + }, }, - watch: {}, computed: { /** * Build our ProcessMaker apiClient @@ -386,7 +424,8 @@ export default { paged, limit = data.limit, start = data.page === 1 ? 0 : limit * (data.page - 1), - filters = {}; + filters = {}, + sort = ""; paged = start + "," + limit; filters = { @@ -398,6 +437,10 @@ export default { filters[item.filterVar] = item.value; } }); + sort = that.prepareSortString(data); + if (sort) { + filters["sort"] = sort; + } return new Promise((resolutionFunc, rejectionFunc) => { api.cases .paused(filters) @@ -413,6 +456,18 @@ export default { }); }); }, + /** + * Prepare sort string to be sended in the service + * @param {object} data + * @returns {string} + */ + prepareSortString(data){ + let sort = ""; + if (data.orderBy && this.columMap[data.orderBy]) { + sort = `${this.columMap[data.orderBy]},${data.ascending === 1 ? "ASC": "DESC"}`; + } + return sort; + }, /** * Format Response API TODO to grid todo and columns */ @@ -489,7 +544,7 @@ export default { }, onRemoveFilter(data) {}, onUpdateFilters(data) { - this.$emit("onUpdateFilters", data.params); + this.filters = data.params; if (data.refresh) { this.$nextTick(() => { if (this.typeView === "GRID") { diff --git a/resources/assets/js/home/Paused/defaultMixins.js b/resources/assets/js/home/Paused/defaultMixins.js index 70ed7e29c..d582a2165 100644 --- a/resources/assets/js/home/Paused/defaultMixins.js +++ b/resources/assets/js/home/Paused/defaultMixins.js @@ -86,9 +86,9 @@ export default { }; _.forIn(this.filters, function (item, key) { - if (item.value && item.value != "") { - filters[item.filterVar] = item.value; - } + if(filters && item.value) { + filters[item.filterVar] = item.value; + } }); return new Promise((resolutionFunc, rejectionFunc) => { api.cases diff --git a/resources/assets/js/home/Unassigned/Unassigned.vue b/resources/assets/js/home/Unassigned/Unassigned.vue index 32a6692f4..708dc3915 100644 --- a/resources/assets/js/home/Unassigned/Unassigned.vue +++ b/resources/assets/js/home/Unassigned/Unassigned.vue @@ -17,6 +17,7 @@ ref="vueTable" @row-click="onRowClick" :key="random" + name="unassigned" >
@@ -181,6 +182,7 @@ import VueCardView from "../../components/dataViews/vueCardView/VueCardView.vue" import VueListView from "../../components/dataViews/vueListView/VueListView.vue"; import defaultMixins from "./defaultMixins"; import ModalPauseCase from '../modal/ModalPauseCase.vue'; +import { Event } from 'vue-tables-2'; export default { name: "Unassigned", @@ -198,10 +200,15 @@ export default { VueListView, ModalPauseCase, }, - props: ["defaultOption", "filters"], + props: ["defaultOption", "settings"], data() { let that = this; return { + columMap: { + case_number: "APP_NUMBER", + case_title: "DEL_TITLE", + process_name: "PRO_TITLE" + }, newCase: { title: this.$i18n.t("ID_NEW_CASE"), class: "btn-success", @@ -209,17 +216,24 @@ export default { this.$refs["newRequest"].show(); }, }, - columns: [ - "detail", - "case_number", - "case_title", - "process_name", - "task", - "due_date", - "delegation_date", - "priority", - "actions", - ], + filters: + this.settings && this.settings.filters + ? this.settings.filters + : {}, + columns: + this.settings && this.settings.columns + ? this.settings.columns + : [ + "detail", + "case_number", + "case_title", + "process_name", + "task", + "due_date", + "delegation_date", + "priority", + "actions" + ], options: { filterable: false, headings: { @@ -250,6 +264,8 @@ export default { selectAllMode: "page", programmatic: false, }, + sortable: ['case_number'], + orderBy: this.settings && this.settings.orderBy ? this.settings.orderBy: {}, requestFunction(data) { return this.$parent.$parent.getCasesForVueTable(data); }, @@ -282,9 +298,21 @@ export default { }; }, mounted() { + let that = this; this.initFilters(); + // define sort event + Event.$on('vue-tables.unassigned.sorted', function (data) { + that.$emit("updateUserSettings", "orderBy", data); + }); + }, + watch: { + columns: function (val) { + this.$emit("updateUserSettings", "columns", val); + }, + filters: function (val) { + this.$emit("updateUserSettings", "filters", val); + }, }, - watch: {}, computed: { /** * Build our ProcessMaker apiClient @@ -350,7 +378,8 @@ export default { paged, limit = data.limit, start = data.page === 1 ? 0 : limit * (data.page - 1), - filters = {}; + filters = {}, + sort = ""; paged = start + "," + limit; filters = { @@ -362,6 +391,10 @@ export default { filters[item.filterVar] = item.value; } }); + sort = that.prepareSortString(data); + if (sort) { + filters["sort"] = sort; + } return new Promise((resolutionFunc, rejectionFunc) => { api.cases .unassigned(filters) @@ -377,6 +410,18 @@ export default { }); }); }, + /** + * Prepare sort string to be sended in the service + * @param {object} data + * @returns {string} + */ + prepareSortString(data){ + let sort = ""; + if (data.orderBy && this.columMap[data.orderBy]) { + sort = `${this.columMap[data.orderBy]},${data.ascending === 1 ? "ASC": "DESC"}`; + } + return sort; + }, /** * Format Response API TODO to grid todo and columns */ @@ -458,7 +503,7 @@ export default { onRemoveFilter(data) {}, onUpdateFilters(data) { if (data.params) { - this.$emit("onUpdateFilters", data.params); + this.filters = data.params; } if (data.refresh) { this.$nextTick(() => { diff --git a/resources/assets/js/home/Unassigned/defaultMixins.js b/resources/assets/js/home/Unassigned/defaultMixins.js index 50292a00f..0c29c1abe 100644 --- a/resources/assets/js/home/Unassigned/defaultMixins.js +++ b/resources/assets/js/home/Unassigned/defaultMixins.js @@ -86,7 +86,9 @@ export default { }; _.forIn(this.filters, function (item, key) { - filters[item.filterVar] = item.value; + if(filters && item.value) { + filters[item.filterVar] = item.value; + } }); return new Promise((resolutionFunc, rejectionFunc) => { api.cases From 17206baa3013dfcc203f4017f94744ee4159856a Mon Sep 17 00:00:00 2001 From: Rodrigo Quelca Date: Thu, 29 Jul 2021 20:54:44 +0000 Subject: [PATCH 06/19] fix code style --- resources/assets/js/components/search/CasesFilter.vue | 1 - resources/assets/js/home/Draft/Draft.vue | 11 +---------- resources/assets/js/home/Home.vue | 2 -- resources/assets/js/home/Inbox/Todo.vue | 1 - resources/assets/js/home/MyCases/MyCases.vue | 2 -- 5 files changed, 1 insertion(+), 16 deletions(-) diff --git a/resources/assets/js/components/search/CasesFilter.vue b/resources/assets/js/components/search/CasesFilter.vue index 8056e2afe..bdf184b4c 100644 --- a/resources/assets/js/components/search/CasesFilter.vue +++ b/resources/assets/js/components/search/CasesFilter.vue @@ -350,7 +350,6 @@ export default { * @param {string} tag filter identifier */ updateSearchTag(params) { - debugger; let temp = this.filters.concat(params); temp = [...new Set([...this.filters, ...params])]; this.$emit("onUpdateFilters", { params: temp, refresh: true }); diff --git a/resources/assets/js/home/Draft/Draft.vue b/resources/assets/js/home/Draft/Draft.vue index 9d7a8f28b..83478934f 100644 --- a/resources/assets/js/home/Draft/Draft.vue +++ b/resources/assets/js/home/Draft/Draft.vue @@ -205,16 +205,7 @@ export default { this.$refs["newRequest"].show(); }, }, - // columns: [ - // "detail", - // "case_number", - // "case_title", - // "process_name", - // "task", - // "priority", - // "actions" - // ], - filters: + filters: this.settings && this.settings.filters ? this.settings.filters : {}, diff --git a/resources/assets/js/home/Home.vue b/resources/assets/js/home/Home.vue index 7caff919b..bb6fe3a8d 100644 --- a/resources/assets/js/home/Home.vue +++ b/resources/assets/js/home/Home.vue @@ -117,7 +117,6 @@ export default { parseInt(window.config.FORMATS.casesListRefreshTime) * 1000 ); }, - methods: { /** * Listener for iframes childs @@ -405,7 +404,6 @@ export default { onUpdateFilters(filters) { this.filters = filters; }, - } }; diff --git a/resources/assets/js/home/Inbox/Todo.vue b/resources/assets/js/home/Inbox/Todo.vue index 583344f82..c8520be2a 100644 --- a/resources/assets/js/home/Inbox/Todo.vue +++ b/resources/assets/js/home/Inbox/Todo.vue @@ -421,7 +421,6 @@ export default { filters = { paged: paged, } - debugger; _.forIn(this.filters, function (item, key) { if(filters && item.value) { filters[item.filterVar] = item.value; diff --git a/resources/assets/js/home/MyCases/MyCases.vue b/resources/assets/js/home/MyCases/MyCases.vue index 6a9abe77b..637f0e05d 100644 --- a/resources/assets/js/home/MyCases/MyCases.vue +++ b/resources/assets/js/home/MyCases/MyCases.vue @@ -641,8 +641,6 @@ export default { }, onRemoveFilter(data) {}, onUpdateFilters(data) { - debugger; - // this.$emit("onUpdateFilters", data.params); this.filters = data.params; if (data.refresh) { this.$nextTick(() => { From 91d342f88daf15ceedf52c6c212813aa51fce5ce Mon Sep 17 00:00:00 2001 From: fabio Date: Thu, 5 Aug 2021 17:32:16 -0400 Subject: [PATCH 07/19] PMCORE-3112:UI - Delete a custom case list --- .../js/admin/Modals/ModalDeleteCaseList.vue | 63 +++++++++++++++++++ .../settings/customCaseList/Api/CaseList.js | 13 ++++ .../admin/settings/customCaseList/Tables.vue | 13 +++- .../translations/english/processmaker.en.po | 12 ++++ workflow/engine/data/mysql/insert.sql | 2 + 5 files changed, 102 insertions(+), 1 deletion(-) create mode 100644 resources/assets/js/admin/Modals/ModalDeleteCaseList.vue diff --git a/resources/assets/js/admin/Modals/ModalDeleteCaseList.vue b/resources/assets/js/admin/Modals/ModalDeleteCaseList.vue new file mode 100644 index 000000000..c88f394e7 --- /dev/null +++ b/resources/assets/js/admin/Modals/ModalDeleteCaseList.vue @@ -0,0 +1,63 @@ + + + \ No newline at end of file diff --git a/resources/assets/js/admin/settings/customCaseList/Api/CaseList.js b/resources/assets/js/admin/settings/customCaseList/Api/CaseList.js index 44f52c64e..c41472048 100644 --- a/resources/assets/js/admin/settings/customCaseList/Api/CaseList.js +++ b/resources/assets/js/admin/settings/customCaseList/Api/CaseList.js @@ -36,6 +36,19 @@ class caseListApi extends Api { keys: {} }); } + deleteCaseList(data) { + return axios.delete( + window.config.SYS_SERVER_API + + '/api/1.0/' + + window.config.SYS_WORKSPACE + + '/caseList/' + data.id, { + headers: { + 'Authorization': 'Bearer ' + window.config.SYS_CREDENTIALS.accessToken, + "Accept-Language": window.config.SYS_LANG + } + } + ); + } } let api = new caseListApi(Services); diff --git a/resources/assets/js/admin/settings/customCaseList/Tables.vue b/resources/assets/js/admin/settings/customCaseList/Tables.vue index 351d1831b..bae054a07 100644 --- a/resources/assets/js/admin/settings/customCaseList/Tables.vue +++ b/resources/assets/js/admin/settings/customCaseList/Tables.vue @@ -1,5 +1,6 @@ + + diff --git a/resources/assets/js/components/iconPicker/assets/_RbtIconPicker.scss b/resources/assets/js/components/iconPicker/assets/_RbtIconPicker.scss new file mode 100644 index 000000000..55bf87426 --- /dev/null +++ b/resources/assets/js/components/iconPicker/assets/_RbtIconPicker.scss @@ -0,0 +1,239 @@ +.rbt-icon-picker { + .icon-preview { + font-size: 22px; + padding: 10px 20px 0; + display: inline-block; + } + .picker-btn { + color: #fff; + background: #339af0; + padding: 12px 25px; + border: 0; + border-radius: 2px; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.02em; + cursor: pointer; + transition: all .25s ease-in; + &:hover { + background: #2c89d6; + } + } +} + +.rip-popup-component { + text-align: center; + z-index: 5999999; + transition: all .2s; + width: 100%; + height: 100%; + position: fixed; + top: 0; + left: 0; + display: -webkit-box; + display: -ms-flexbox; + display: flex; + -webkit-box-align: center; + -ms-flex-align: center; + align-items: center; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + opacity: 1; + .rip-popup-bg { + width: 100%; + background: rgba(0,0,0,.4); + position: absolute; + top: 0; + height: 100%; + z-index: 10; + transition: all .25s ease; + opacity: 1; + left: 0; + } + .rip-popup { + transition: all .2s; + z-index: 100; + margin: 10px; + width: calc(100% - 30px); + height: calc(100% - 30px); + border-radius: 6px; + box-shadow: 0 5px 20px 0 rgba(0,0,0,.1); + background: #f8f9fa; + animation: rebound .3s; + .rip-popup-header { + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + background: rgba(0,0,0,.05); + border-radius: 5px 5px; + position: relative; + h2 { + transition: all .23s ease .1s; + padding: 8px 8px 8px 12px; + font-size: 18px; + text-align: center; + width: 100%; + } + span { + background: #ffffff; + transition: all .23s ease .1s; + position: relative; + padding: 8px; + cursor: pointer; + box-shadow: 0 5px 20px 0 rgba(0,0,0,.1); + border-radius: 5px; + color: rgba(0,0,0,.6); + transform: translate(8px,-8px); + line-height: 16px; + font-size: 30px; + &:hover { + box-shadow: 0 0 0 0 rgba(0,0,0,.1); + transform: translate(5px,-5px); + } + } + } + .rip-popup-content { + padding: 14px; + font-size: 14px; + transition: all .23s ease .1s; + overflow: auto; + max-height: calc(100vh - 100px); + margin-top: 5px; + margin-bottom: 5px; + .rip-search { + .rip-input { + display: flex; + -webkit-box-align: start; + -ms-flex-align: start; + align-items: flex-start; + -webkit-box-orient: vertical; + -webkit-box-direction: normal; + -ms-flex-direction: column; + flex-direction: column; + position: relative; + -webkit-box-pack: center; + -ms-flex-pack: center; + justify-content: center; + padding-bottom: 20px; + border-bottom: 1px dashed #e5e5e5; + margin-bottom: 20px; + input { + width: 100% !important; + transition: all .1s ease-in-out; + padding: 16px 48px 16px 24px; + font-size: 25px; + border: 2px solid #dee2e6; + box-shadow: inset 0 0.25rem 0.125rem 0 rgba(0,0,0,0.05); + color: #495057; + border-radius: 4px; + &::placeholder { + color: #c9cbcd; + } + } + span { + position: absolute; + right: 25px; + font-size: 28px; + color: #caccce; + opacity: 0.4; + } + } + } + .rip-content { + width: 100%; + .rip-not-found { + min-height: 75vh; + display: flex; + align-items: center; + align-self: center; + align-content: center; + min-width: 100%; + text-align: center; + svg { + margin: 0 auto; + font-size: 50px; + color: #adb5bd; + } + } + h4.icon-title { + font-size: 20px; + text-transform: uppercase; + letter-spacing: 0.03em; + margin-bottom: 25px; + } + .rip-row { + width: 100%; + display: flex; + flex-wrap: wrap; + margin: 0; + padding: 0; + .rip-col { + text-align: center; + padding: 0 0 16px; + width: 25%; + list-style: none; + .icon-content { + border-radius: 3px; + transition: all 0.5s cubic-bezier(0.165, 0.84, 0.44, 1); + transform: translateZ(0); + .icon-el { + padding: 8px; + font-size: 35px; + font-weight: 900; + color: #495057; + cursor: pointer; + transition: all ; + border-top-left-radius: 3px; + border-top-right-radius: 3px; + &:hover { + color: #fff; + background: #339af0; + } + } + .icon-title { + padding: 8px 4px; + font-size: 13px; + color: #adb5bd; + &:hover { + color: #495057; + } + } + &:hover { + background: #fff; + box-shadow: 0 0.25rem 0.125rem 0 rgba(0,0,0,0.05); + } + } + + @media (min-width: 576px) { + width: 20%; + } + @media (min-width: 768px) { + width: 16.6667%; + } + @media (min-width: 1200px) { + width: 11.1111%; + } + } + } + } + } + } +} + +@keyframes rebound { + 0% { + -webkit-transform: scale(.9); + transform: scale(.9); + } + + 50% { + -webkit-transform: scale(1.08); + transform: scale(1.08); + } + 100% { + -webkit-transform: scale(1); + transform: scale(1); + } +} diff --git a/resources/assets/js/components/iconPicker/assets/icons/brand.js b/resources/assets/js/components/iconPicker/assets/icons/brand.js new file mode 100644 index 000000000..b1c954385 --- /dev/null +++ b/resources/assets/js/components/iconPicker/assets/icons/brand.js @@ -0,0 +1,437 @@ +const brand = [ + '500px', + 'accessible-icon', + 'accusoft', + 'acquisitions-incorporated', + 'adn', + 'adobe', + 'adversal', + 'affiliatetheme', + 'airbnb', + 'algolia', + 'alipay', + 'amazon', + 'amazon-pay', + 'amilia', + 'android', + 'angellist', + 'angrycreative', + 'angular', + 'app-store', + 'app-store-ios', + 'apper', + 'apple', + 'apple-pay', + 'artstation', + 'asymmetrik', + 'atlassian', + 'audible', + 'autoprefixer', + 'avianex', + 'aviato', + 'aws', + 'bandcamp', + 'battle-net', + 'behance', + 'behance-square', + 'bimobject', + 'bitbucket', + 'bitcoin', + 'bity', + 'black-tie', + 'blackberry', + 'blogger', + 'blogger-b', + 'bluetooth', + 'bluetooth-b', + 'bootstrap', + 'btc', + 'buffer', + 'buromobelexperte', + 'buy-n-large', + 'buysellads', + 'canadian-maple-leaf', + 'cc-amazon-pay', + 'cc-amex', + 'cc-apple-pay', + 'cc-diners-club', + 'cc-discover', + 'cc-jcb', + 'cc-mastercard', + 'cc-paypal', + 'cc-stripe', + 'cc-visa', + 'centercode', + 'centos', + 'chrome', + 'chromecast', + 'cloudscale', + 'cloudsmith', + 'cloudversify', + 'codepen', + 'codiepie', + 'confluence', + 'connectdevelop', + 'contao', + 'cotton-bureau', + 'cpanel', + 'creative-commons', + 'creative-commons-by', + 'creative-commons-nc', + 'creative-commons-nc-eu', + 'creative-commons-nc-jp', + 'creative-commons-nd', + 'creative-commons-pd', + 'creative-commons-pd-alt', + 'creative-commons-remix', + 'creative-commons-sa', + 'creative-commons-sampling', + 'creative-commons-sampling-plus', + 'creative-commons-share', + 'creative-commons-zero', + 'critical-role', + 'css3', + 'css3-alt', + 'cuttlefish', + 'd-and-d', + 'd-and-d-beyond', + 'dashcube', + 'delicious', + 'deploydog', + 'deskpro', + 'dev', + 'deviantart', + 'dhl', + 'diaspora', + 'digg', + 'digital-ocean', + 'discord', + 'discourse', + 'dochub', + 'docker', + 'draft2digital', + 'dribbble', + 'dribbble-square', + 'dropbox', + 'drupal', + 'dyalog', + 'earlybirds', + 'ebay', + 'edge', + 'elementor', + 'ello', + 'ember', + 'empire', + 'envira', + 'erlang', + 'ethereum', + 'etsy', + 'evernote', + 'expeditedssl', + 'facebook', + 'facebook-f', + 'facebook-messenger', + 'facebook-square', + 'fantasy-flight-games', + 'fedex', + 'fedora', + 'figma', + 'firefox', + 'first-order', + 'first-order-alt', + 'firstdraft', + 'flickr', + 'flipboard', + 'fly', + 'font-awesome', + 'font-awesome-alt', + 'font-awesome-flag', + 'fonticons', + 'fonticons-fi', + 'fort-awesome', + 'fort-awesome-alt', + 'forumbee', + 'foursquare', + 'free-code-camp', + 'freebsd', + 'fulcrum', + 'galactic-republic', + 'galactic-senate', + 'get-pocket', + 'gg', + 'gg-circle', + 'git', + 'git-alt', + 'git-square', + 'github', + 'github-alt', + 'github-square', + 'gitkraken', + 'gitlab', + 'gitter', + 'glide', + 'glide-g', + 'gofore', + 'goodreads', + 'goodreads-g', + 'google', + 'google-drive', + 'google-play', + 'google-plus', + 'google-plus-g', + 'google-plus-square', + 'google-wallet', + 'gratipay', + 'grav', + 'gripfire', + 'grunt', + 'gulp', + 'hacker-news', + 'hacker-news-square', + 'hackerrank', + 'hips', + 'hire-a-helper', + 'hooli', + 'hornbill', + 'hotjar', + 'houzz', + 'html5', + 'hubspot', + 'imdb', + 'instagram', + 'intercom', + 'internet-explorer', + 'invision', + 'ioxhost', + 'itch-io', + 'itunes', + 'itunes-note', + 'java', + 'jedi-order', + 'jenkins', + 'jira', + 'joget', + 'joomla', + 'js', + 'js-square', + 'jsfiddle', + 'kaggle', + 'keybase', + 'keycdn', + 'kickstarter', + 'kickstarter-k', + 'korvue', + 'laravel', + 'lastfm', + 'lastfm-square', + 'leanpub', + 'less', + 'line', + 'linkedin', + 'linkedin-in', + 'linode', + 'linux', + 'lyft', + 'magento', + 'mailchimp', + 'mandalorian', + 'markdown', + 'mastodon', + 'maxcdn', + 'mdb', + 'medapps', + 'medium', + 'medium-m', + 'medrt', + 'meetup', + 'megaport', + 'mendeley', + 'microsoft', + 'mix', + 'mixcloud', + 'mizuni', + 'modx', + 'monero', + 'napster', + 'neos', + 'nimblr', + 'node', + 'node-js', + 'npm', + 'ns8', + 'nutritionix', + 'odnoklassniki', + 'odnoklassniki-square', + 'old-republic', + 'opencart', + 'openid', + 'opera', + 'optin-monster', + 'orcid', + 'osi', + 'page4', + 'pagelines', + 'palfed', + 'patreon', + 'paypal', + 'penny-arcade', + 'periscope', + 'phabricator', + 'phoenix-framework', + 'phoenix-squadron', + 'php', + 'pied-piper', + 'pied-piper-alt', + 'pied-piper-hat', + 'pied-piper-pp', + 'pinterest', + 'pinterest-p', + 'pinterest-square', + 'playstation', + 'product-hunt', + 'pushed', + 'python', + 'qq', + 'quinscape', + 'quora', + 'r-project', + 'raspberry-pi', + 'ravelry', + 'react', + 'reacteurope', + 'readme', + 'rebel', + 'red-river', + 'reddit', + 'reddit-alien', + 'reddit-square', + 'redhat', + 'renren', + 'replyd', + 'researchgate', + 'resolving', + 'rev', + 'rocketchat', + 'rockrms', + 'safari', + 'salesforce', + 'sass', + 'schlix', + 'scribd', + 'searchengin', + 'sellcast', + 'sellsy', + 'servicestack', + 'shirtsinbulk', + 'shopware', + 'simplybuilt', + 'sistrix', + 'sith', + 'sketch', + 'skyatlas', + 'skype', + 'slack', + 'slack-hash', + 'slideshare', + 'snapchat', + 'snapchat-ghost', + 'snapchat-square', + 'soundcloud', + 'sourcetree', + 'speakap', + 'speaker-deck', + 'spotify', + 'squarespace', + 'stack-exchange', + 'stack-overflow', + 'stackpath', + 'staylinked', + 'steam', + 'steam-square', + 'steam-symbol', + 'sticker-mule', + 'strava', + 'stripe', + 'stripe-s', + 'studiovinari', + 'stumbleupon', + 'stumbleupon-circle', + 'superpowers', + 'supple', + 'suse', + 'swift', + 'symfony', + 'teamspeak', + 'telegram', + 'telegram-plane', + 'tencent-weibo', + 'the-red-yeti', + 'themeco', + 'themeisle', + 'think-peaks', + 'trade-federation', + 'trello', + 'tripadvisor', + 'tumblr', + 'tumblr-square', + 'twitch', + 'twitter', + 'twitter-square', + 'typo3', + 'uber', + 'ubuntu', + 'uikit', + 'umbraco', + 'uniregistry', + 'untappd', + 'ups', + 'usb', + 'usps', + 'ussunnah', + 'vaadin', + 'viacoin', + 'viadeo', + 'viadeo-square', + 'viber', + 'vimeo', + 'vimeo-square', + 'vimeo-v', + 'vine', + 'vk', + 'vnv', + 'vuejs', + 'waze', + 'weebly', + 'weibo', + 'weixin', + 'whatsapp', + 'whatsapp-square', + 'whmcs', + 'wikipedia-w', + 'windows', + 'wix', + 'wizards-of-the-coast', + 'wolf-pack-battalion', + 'wordpress', + 'wordpress-simple', + 'wpbeginner', + 'wpexplorer', + 'wpforms', + 'wpressr', + 'xbox', + 'xing', + 'xing-square', + 'y-combinator', + 'yahoo', + 'yammer', + 'yandex', + 'yandex-international', + 'yarn', + 'yelp', + 'yoast', + 'youtube', + 'youtube-square', + 'zhihu' +]; + +export default brand; \ No newline at end of file diff --git a/resources/assets/js/components/iconPicker/assets/icons/index.js b/resources/assets/js/components/iconPicker/assets/icons/index.js new file mode 100644 index 000000000..0b9fcd8c2 --- /dev/null +++ b/resources/assets/js/components/iconPicker/assets/icons/index.js @@ -0,0 +1,7 @@ +import solid from "./solid"; +import regular from "./regular"; +import brand from "./brand"; + +const icons = { solid, brand, regular }; + +export default icons; \ No newline at end of file diff --git a/resources/assets/js/components/iconPicker/assets/icons/regular.js b/resources/assets/js/components/iconPicker/assets/icons/regular.js new file mode 100644 index 000000000..70710603b --- /dev/null +++ b/resources/assets/js/components/iconPicker/assets/icons/regular.js @@ -0,0 +1,155 @@ +const regular = [ + 'address-book', + 'address-card', + 'angry', + 'arrow-alt-circle-down', + 'arrow-alt-circle-left', + 'arrow-alt-circle-right', + 'arrow-alt-circle-up', + 'bell', + 'bell-slash', + 'bookmark', + 'building', + 'calendar', + 'calendar-alt', + 'calendar-check', + 'calendar-minus', + 'calendar-plus', + 'calendar-times', + 'caret-square-down', + 'caret-square-left', + 'caret-square-right', + 'caret-square-up', + 'chart-bar', + 'check-circle', + 'check-square', + 'circle', + 'clipboard', + 'clock', + 'clone', + 'closed-captioning', + 'comment', + 'comment-alt', + 'comment-dots', + 'comments', + 'compass', + 'copy', + 'copyright', + 'credit-card', + 'dizzy', + 'dot-circle', + 'edit', + 'envelope', + 'envelope-open', + 'eye', + 'eye-slash', + 'file', + 'file-alt', + 'file-archive', + 'file-audio', + 'file-code', + 'file-excel', + 'file-image', + 'file-pdf', + 'file-powerpoint', + 'file-video', + 'file-word', + 'flag', + 'flushed', + 'folder', + 'folder-open', + 'frown', + 'frown-open', + 'futbol', + 'gem', + 'grimace', + 'grin', + 'grin-alt', + 'grin-beam', + 'grin-beam-sweat', + 'grin-hearts', + 'grin-squint', + 'grin-squint-tears', + 'grin-stars', + 'grin-tears', + 'grin-tongue', + 'grin-tongue-squint', + 'grin-tongue-wink', + 'grin-wink', + 'hand-lizard', + 'hand-paper', + 'hand-peace', + 'hand-point-down', + 'hand-point-left', + 'hand-point-right', + 'hand-point-up', + 'hand-pointer', + 'hand-rock', + 'hand-scissors', + 'hand-spock', + 'handshake', + 'hdd', + 'heart', + 'hospital', + 'hourglass', + 'id-badge', + 'id-card', + 'image', + 'images', + 'keyboard', + 'kiss', + 'kiss-beam', + 'kiss-wink-heart', + 'laugh', + 'laugh-beam', + 'laugh-squint', + 'laugh-wink', + 'lemon', + 'life-ring', + 'lightbulb', + 'list-alt', + 'map', + 'meh', + 'meh-blank', + 'meh-rolling-eyes', + 'minus-square', + 'money-bill-alt', + 'moon', + 'newspaper', + 'object-group', + 'object-ungroup', + 'paper-plane', + 'pause-circle', + 'play-circle', + 'plus-square', + 'question-circle', + 'registered', + 'sad-cry', + 'sad-tear', + 'save', + 'share-square', + 'smile', + 'smile-beam', + 'smile-wink', + 'snowflake', + 'square', + 'star', + 'star-half', + 'sticky-note', + 'stop-circle', + 'sun', + 'surprise', + 'thumbs-down', + 'thumbs-up', + 'times-circle', + 'tired', + 'trash-alt', + 'user', + 'user-circle', + 'window-close', + 'window-maximize', + 'window-minimize', + 'window-restore' +]; + +export default regular; \ No newline at end of file diff --git a/resources/assets/js/components/iconPicker/assets/icons/solid.js b/resources/assets/js/components/iconPicker/assets/icons/solid.js new file mode 100644 index 000000000..5edbf8fd2 --- /dev/null +++ b/resources/assets/js/components/iconPicker/assets/icons/solid.js @@ -0,0 +1,962 @@ +const solid = [ + 'ad', + 'address-book', + 'address-card', + 'adjust', + 'air-freshener', + 'align-center', + 'align-justify', + 'align-left', + 'align-right', + 'allergies', + 'ambulance', + 'american-sign-language-interpreting', + 'anchor', + 'angle-double-down', + 'angle-double-left', + 'angle-double-right', + 'angle-double-up', + 'angle-down', + 'angle-left', + 'angle-right', + 'angle-up', + 'angry', + 'ankh', + 'apple-alt', + 'archive', + 'archway', + 'arrow-alt-circle-down', + 'arrow-alt-circle-left', + 'arrow-alt-circle-right', + 'arrow-alt-circle-up', + 'arrow-circle-down', + 'arrow-circle-left', + 'arrow-circle-right', + 'arrow-circle-up', + 'arrow-down', + 'arrow-left', + 'arrow-right', + 'arrow-up', + 'arrows-alt', + 'arrows-alt-h', + 'arrows-alt-v', + 'assistive-listening-systems', + 'asterisk', + 'at', + 'atlas', + 'atom', + 'audio-description', + 'award', + 'baby', + 'baby-carriage', + 'backspace', + 'backward', + 'bacon', + 'balance-scale', + 'balance-scale-left', + 'balance-scale-right', + 'ban', + 'band-aid', + 'barcode', + 'bars', + 'baseball-ball', + 'basketball-ball', + 'bath', + 'battery-empty', + 'battery-full', + 'battery-half', + 'battery-quarter', + 'battery-three-quarters', + 'bed', + 'beer', + 'bell', + 'bell-slash', + 'bezier-curve', + 'bible', + 'bicycle', + 'biking', + 'binoculars', + 'biohazard', + 'birthday-cake', + 'blender', + 'blender-phone', + 'blind', + 'blog', + 'bold', + 'bolt', + 'bomb', + 'bone', + 'bong', + 'book', + 'book-dead', + 'book-medical', + 'book-open', + 'book-reader', + 'bookmark', + 'border-all', + 'border-none', + 'border-style', + 'bowling-ball', + 'box', + 'box-open', + 'boxes', + 'braille', + 'brain', + 'bread-slice', + 'briefcase', + 'briefcase-medical', + 'broadcast-tower', + 'broom', + 'brush', + 'bug', + 'building', + 'bullhorn', + 'bullseye', + 'burn', + 'bus', + 'bus-alt', + 'business-time', + 'calculator', + 'calendar', + 'calendar-alt', + 'calendar-check', + 'calendar-day', + 'calendar-minus', + 'calendar-plus', + 'calendar-times', + 'calendar-week', + 'camera', + 'camera-retro', + 'campground', + 'candy-cane', + 'cannabis', + 'capsules', + 'car', + 'car-alt', + 'car-battery', + 'car-crash', + 'car-side', + 'caret-down', + 'caret-left', + 'caret-right', + 'caret-square-down', + 'caret-square-left', + 'caret-square-right', + 'caret-square-up', + 'caret-up', + 'carrot', + 'cart-arrow-down', + 'cart-plus', + 'cash-register', + 'cat', + 'certificate', + 'chair', + 'chalkboard', + 'chalkboard-teacher', + 'charging-station', + 'chart-area', + 'chart-bar', + 'chart-line', + 'chart-pie', + 'check', + 'check-circle', + 'check-double', + 'check-square', + 'cheese', + 'chess', + 'chess-bishop', + 'chess-board', + 'chess-king', + 'chess-knight', + 'chess-pawn', + 'chess-queen', + 'chess-rook', + 'chevron-circle-down', + 'chevron-circle-left', + 'chevron-circle-right', + 'chevron-circle-up', + 'chevron-down', + 'chevron-left', + 'chevron-right', + 'chevron-up', + 'child', + 'church', + 'circle', + 'circle-notch', + 'city', + 'clinic-medical', + 'clipboard', + 'clipboard-check', + 'clipboard-list', + 'clock', + 'clone', + 'closed-captioning', + 'cloud', + 'cloud-download-alt', + 'cloud-meatball', + 'cloud-moon', + 'cloud-moon-rain', + 'cloud-rain', + 'cloud-showers-heavy', + 'cloud-sun', + 'cloud-sun-rain', + 'cloud-upload-alt', + 'cocktail', + 'code', + 'code-branch', + 'coffee', + 'cog', + 'cogs', + 'coins', + 'columns', + 'comment', + 'comment-alt', + 'comment-dollar', + 'comment-dots', + 'comment-medical', + 'comment-slash', + 'comments', + 'comments-dollar', + 'compact-disc', + 'compass', + 'compress', + 'compress-arrows-alt', + 'concierge-bell', + 'cookie', + 'cookie-bite', + 'copy', + 'copyright', + 'couch', + 'credit-card', + 'crop', + 'crop-alt', + 'cross', + 'crosshairs', + 'crow', + 'crown', + 'crutch', + 'cube', + 'cubes', + 'cut', + 'database', + 'deaf', + 'democrat', + 'desktop', + 'dharmachakra', + 'diagnoses', + 'dice', + 'dice-d20', + 'dice-d6', + 'dice-five', + 'dice-four', + 'dice-one', + 'dice-six', + 'dice-three', + 'dice-two', + 'digital-tachograph', + 'directions', + 'divide', + 'dizzy', + 'dna', + 'dog', + 'dollar-sign', + 'dolly', + 'dolly-flatbed', + 'donate', + 'door-closed', + 'door-open', + 'dot-circle', + 'dove', + 'download', + 'drafting-compass', + 'dragon', + 'draw-polygon', + 'drum', + 'drum-steelpan', + 'drumstick-bite', + 'dumbbell', + 'dumpster', + 'dumpster-fire', + 'dungeon', + 'edit', + 'egg', + 'eject', + 'ellipsis-h', + 'ellipsis-v', + 'envelope', + 'envelope-open', + 'envelope-open-text', + 'envelope-square', + 'equals', + 'eraser', + 'ethernet', + 'euro-sign', + 'exchange-alt', + 'exclamation', + 'exclamation-circle', + 'exclamation-triangle', + 'expand', + 'expand-arrows-alt', + 'external-link-alt', + 'external-link-square-alt', + 'eye', + 'eye-dropper', + 'eye-slash', + 'fan', + 'fast-backward', + 'fast-forward', + 'fax', + 'feather', + 'feather-alt', + 'female', + 'fighter-jet', + 'file', + 'file-alt', + 'file-archive', + 'file-audio', + 'file-code', + 'file-contract', + 'file-csv', + 'file-download', + 'file-excel', + 'file-export', + 'file-image', + 'file-import', + 'file-invoice', + 'file-invoice-dollar', + 'file-medical', + 'file-medical-alt', + 'file-pdf', + 'file-powerpoint', + 'file-prescription', + 'file-signature', + 'file-upload', + 'file-video', + 'file-word', + 'fill', + 'fill-drip', + 'film', + 'filter', + 'fingerprint', + 'fire', + 'fire-alt', + 'fire-extinguisher', + 'first-aid', + 'fish', + 'fist-raised', + 'flag', + 'flag-checkered', + 'flag-usa', + 'flask', + 'flushed', + 'folder', + 'folder-minus', + 'folder-open', + 'folder-plus', + 'font', + 'football-ball', + 'forward', + 'frog', + 'frown', + 'frown-open', + 'funnel-dollar', + 'futbol', + 'gamepad', + 'gas-pump', + 'gavel', + 'gem', + 'genderless', + 'ghost', + 'gift', + 'gifts', + 'glass-cheers', + 'glass-martini', + 'glass-martini-alt', + 'glass-whiskey', + 'glasses', + 'globe', + 'globe-africa', + 'globe-americas', + 'globe-asia', + 'globe-europe', + 'golf-ball', + 'gopuram', + 'graduation-cap', + 'greater-than', + 'greater-than-equal', + 'grimace', + 'grin', + 'grin-alt', + 'grin-beam', + 'grin-beam-sweat', + 'grin-hearts', + 'grin-squint', + 'grin-squint-tears', + 'grin-stars', + 'grin-tears', + 'grin-tongue', + 'grin-tongue-squint', + 'grin-tongue-wink', + 'grin-wink', + 'grip-horizontal', + 'grip-lines', + 'grip-lines-vertical', + 'grip-vertical', + 'guitar', + 'h-square', + 'hamburger', + 'hammer', + 'hamsa', + 'hand-holding', + 'hand-holding-heart', + 'hand-holding-usd', + 'hand-lizard', + 'hand-middle-finger', + 'hand-paper', + 'hand-peace', + 'hand-point-down', + 'hand-point-left', + 'hand-point-right', + 'hand-point-up', + 'hand-pointer', + 'hand-rock', + 'hand-scissors', + 'hand-spock', + 'hands', + 'hands-helping', + 'handshake', + 'hanukiah', + 'hard-hat', + 'hashtag', + 'hat-cowboy', + 'hat-cowboy-side', + 'hat-wizard', + 'heading', + 'headphones', + 'headphones-alt', + 'headset', + 'heart', + 'heart-broken', + 'heartbeat', + 'helicopter', + 'highlighter', + 'hiking', + 'hippo', + 'history', + 'hockey-puck', + 'holly-berry', + 'home', + 'horse', + 'horse-head', + 'hospital', + 'hospital-alt', + 'hospital-symbol', + 'hot-tub', + 'hotdog', + 'hotel', + 'hourglass', + 'hourglass-end', + 'hourglass-half', + 'hourglass-start', + 'house-damage', + 'hryvnia', + 'i-cursor', + 'ice-cream', + 'icicles', + 'icons', + 'id-badge', + 'id-card', + 'id-card-alt', + 'igloo', + 'image', + 'images', + 'inbox', + 'indent', + 'industry', + 'infinity', + 'info', + 'info-circle', + 'italic', + 'jedi', + 'joint', + 'journal-whills', + 'kaaba', + 'key', + 'keyboard', + 'khanda', + 'kiss', + 'kiss-beam', + 'kiss-wink-heart', + 'kiwi-bird', + 'landmark', + 'language', + 'laptop', + 'laptop-code', + 'laptop-medical', + 'laugh', + 'laugh-beam', + 'laugh-squint', + 'laugh-wink', + 'layer-group', + 'leaf', + 'lemon', + 'less-than', + 'less-than-equal', + 'level-down-alt', + 'level-up-alt', + 'life-ring', + 'lightbulb', + 'link', + 'lira-sign', + 'list', + 'list-alt', + 'list-ol', + 'list-ul', + 'location-arrow', + 'lock', + 'lock-open', + 'long-arrow-alt-down', + 'long-arrow-alt-left', + 'long-arrow-alt-right', + 'long-arrow-alt-up', + 'low-vision', + 'luggage-cart', + 'magic', + 'magnet', + 'mail-bulk', + 'male', + 'map', + 'map-marked', + 'map-marked-alt', + 'map-marker', + 'map-marker-alt', + 'map-pin', + 'map-signs', + 'marker', + 'mars', + 'mars-double', + 'mars-stroke', + 'mars-stroke-h', + 'mars-stroke-v', + 'mask', + 'medal', + 'medkit', + 'meh', + 'meh-blank', + 'meh-rolling-eyes', + 'memory', + 'menorah', + 'mercury', + 'meteor', + 'microchip', + 'microphone', + 'microphone-alt', + 'microphone-alt-slash', + 'microphone-slash', + 'microscope', + 'minus', + 'minus-circle', + 'minus-square', + 'mitten', + 'mobile', + 'mobile-alt', + 'money-bill', + 'money-bill-alt', + 'money-bill-wave', + 'money-bill-wave-alt', + 'money-check', + 'money-check-alt', + 'monument', + 'moon', + 'mortar-pestle', + 'mosque', + 'motorcycle', + 'mountain', + 'mouse', + 'mouse-pointer', + 'mug-hot', + 'music', + 'network-wired', + 'neuter', + 'newspaper', + 'not-equal', + 'notes-medical', + 'object-group', + 'object-ungroup', + 'oil-can', + 'om', + 'otter', + 'outdent', + 'pager', + 'paint-brush', + 'paint-roller', + 'palette', + 'pallet', + 'paper-plane', + 'paperclip', + 'parachute-box', + 'paragraph', + 'parking', + 'passport', + 'pastafarianism', + 'paste', + 'pause', + 'pause-circle', + 'paw', + 'peace', + 'pen', + 'pen-alt', + 'pen-fancy', + 'pen-nib', + 'pen-square', + 'pencil-alt', + 'pencil-ruler', + 'people-carry', + 'pepper-hot', + 'percent', + 'percentage', + 'person-booth', + 'phone', + 'phone-alt', + 'phone-slash', + 'phone-square', + 'phone-square-alt', + 'phone-volume', + 'photo-video', + 'piggy-bank', + 'pills', + 'pizza-slice', + 'place-of-worship', + 'plane', + 'plane-arrival', + 'plane-departure', + 'play', + 'play-circle', + 'plug', + 'plus', + 'plus-circle', + 'plus-square', + 'podcast', + 'poll', + 'poll-h', + 'poo', + 'poo-storm', + 'poop', + 'portrait', + 'pound-sign', + 'power-off', + 'pray', + 'praying-hands', + 'prescription', + 'prescription-bottle', + 'prescription-bottle-alt', + 'print', + 'procedures', + 'project-diagram', + 'puzzle-piece', + 'qrcode', + 'question', + 'question-circle', + 'quidditch', + 'quote-left', + 'quote-right', + 'quran', + 'radiation', + 'radiation-alt', + 'rainbow', + 'random', + 'receipt', + 'record-vinyl', + 'recycle', + 'redo', + 'redo-alt', + 'registered', + 'remove-format', + 'reply', + 'reply-all', + 'republican', + 'restroom', + 'retweet', + 'ribbon', + 'ring', + 'road', + 'robot', + 'rocket', + 'route', + 'rss', + 'rss-square', + 'ruble-sign', + 'ruler', + 'ruler-combined', + 'ruler-horizontal', + 'ruler-vertical', + 'running', + 'rupee-sign', + 'sad-cry', + 'sad-tear', + 'satellite', + 'satellite-dish', + 'save', + 'school', + 'screwdriver', + 'scroll', + 'sd-card', + 'search', + 'search-dollar', + 'search-location', + 'search-minus', + 'search-plus', + 'seedling', + 'server', + 'shapes', + 'share', + 'share-alt', + 'share-alt-square', + 'share-square', + 'shekel-sign', + 'shield-alt', + 'ship', + 'shipping-fast', + 'shoe-prints', + 'shopping-bag', + 'shopping-basket', + 'shopping-cart', + 'shower', + 'shuttle-van', + 'sign', + 'sign-in-alt', + 'sign-language', + 'sign-out-alt', + 'signal', + 'signature', + 'sim-card', + 'sitemap', + 'skating', + 'skiing', + 'skiing-nordic', + 'skull', + 'skull-crossbones', + 'slash', + 'sleigh', + 'sliders-h', + 'smile', + 'smile-beam', + 'smile-wink', + 'smog', + 'smoking', + 'smoking-ban', + 'sms', + 'snowboarding', + 'snowflake', + 'snowman', + 'snowplow', + 'socks', + 'solar-panel', + 'sort', + 'sort-alpha-down', + 'sort-alpha-down-alt', + 'sort-alpha-up', + 'sort-alpha-up-alt', + 'sort-amount-down', + 'sort-amount-down-alt', + 'sort-amount-up', + 'sort-amount-up-alt', + 'sort-down', + 'sort-numeric-down', + 'sort-numeric-down-alt', + 'sort-numeric-up', + 'sort-numeric-up-alt', + 'sort-up', + 'spa', + 'space-shuttle', + 'spell-check', + 'spider', + 'spinner', + 'splotch', + 'spray-can', + 'square', + 'square-full', + 'square-root-alt', + 'stamp', + 'star', + 'star-and-crescent', + 'star-half', + 'star-half-alt', + 'star-of-david', + 'star-of-life', + 'step-backward', + 'step-forward', + 'stethoscope', + 'sticky-note', + 'stop', + 'stop-circle', + 'stopwatch', + 'store', + 'store-alt', + 'stream', + 'street-view', + 'strikethrough', + 'stroopwafel', + 'subscript', + 'subway', + 'suitcase', + 'suitcase-rolling', + 'sun', + 'superscript', + 'surprise', + 'swatchbook', + 'swimmer', + 'swimming-pool', + 'synagogue', + 'sync', + 'sync-alt', + 'syringe', + 'table', + 'table-tennis', + 'tablet', + 'tablet-alt', + 'tablets', + 'tachometer-alt', + 'tag', + 'tags', + 'tape', + 'tasks', + 'taxi', + 'teeth', + 'teeth-open', + 'temperature-high', + 'temperature-low', + 'tenge', + 'terminal', + 'text-height', + 'text-width', + 'th', + 'th-large', + 'th-list', + 'theater-masks', + 'thermometer', + 'thermometer-empty', + 'thermometer-full', + 'thermometer-half', + 'thermometer-quarter', + 'thermometer-three-quarters', + 'thumbs-down', + 'thumbs-up', + 'thumbtack', + 'ticket-alt', + 'times', + 'times-circle', + 'tint', + 'tint-slash', + 'tired', + 'toggle-off', + 'toggle-on', + 'toilet', + 'toilet-paper', + 'toolbox', + 'tools', + 'tooth', + 'torah', + 'torii-gate', + 'tractor', + 'trademark', + 'traffic-light', + 'train', + 'tram', + 'transgender', + 'transgender-alt', + 'trash', + 'trash-alt', + 'trash-restore', + 'trash-restore-alt', + 'tree', + 'trophy', + 'truck', + 'truck-loading', + 'truck-monster', + 'truck-moving', + 'truck-pickup', + 'tshirt', + 'tty', + 'tv', + 'umbrella', + 'umbrella-beach', + 'underline', + 'undo', + 'undo-alt', + 'universal-access', + 'university', + 'unlink', + 'unlock', + 'unlock-alt', + 'upload', + 'user', + 'user-alt', + 'user-alt-slash', + 'user-astronaut', + 'user-check', + 'user-circle', + 'user-clock', + 'user-cog', + 'user-edit', + 'user-friends', + 'user-graduate', + 'user-injured', + 'user-lock', + 'user-md', + 'user-minus', + 'user-ninja', + 'user-nurse', + 'user-plus', + 'user-secret', + 'user-shield', + 'user-slash', + 'user-tag', + 'user-tie', + 'user-times', + 'users', + 'users-cog', + 'utensil-spoon', + 'utensils', + 'vector-square', + 'venus', + 'venus-double', + 'venus-mars', + 'vial', + 'vials', + 'video', + 'video-slash', + 'vihara', + 'voicemail', + 'volleyball-ball', + 'volume-down', + 'volume-mute', + 'volume-off', + 'volume-up', + 'vote-yea', + 'vr-cardboard', + 'walking', + 'wallet', + 'warehouse', + 'water', + 'wave-square', + 'weight', + 'weight-hanging', + 'wheelchair', + 'wifi', + 'wind', + 'window-close', + 'window-maximize', + 'window-minimize', + 'window-restore', + 'wine-bottle', + 'wine-glass', + 'wine-glass-alt', + 'won-sign', + 'wrench', + 'x-ray', + 'yen-sign', + 'yin-yang' +]; + +export default solid; \ No newline at end of file diff --git a/resources/assets/js/utils/utils.js b/resources/assets/js/utils/utils.js index 6349ffd81..5c7e07158 100644 --- a/resources/assets/js/utils/utils.js +++ b/resources/assets/js/utils/utils.js @@ -89,5 +89,359 @@ export default { } return obj; + }, + getData() { + return [{ + code: "ZW", + name: "Zimbabwe", + created_at: "2015-04-24T01:46:50.459583", + updated_at: "2015-04-24T01:46:50.459593", + uri: "http://api.lobbyfacts.eu/api/1/country/245", + id: 245 + }, { + code: "ZM", + name: "Zambia", + created_at: "2015-04-24T01:46:50.457459", + updated_at: "2015-04-24T01:46:50.457468", + uri: "http://api.lobbyfacts.eu/api/1/country/244", + id: 244 + }, { + code: "YE", + name: "Yemen", + created_at: "2015-04-24T01:46:50.454731", + updated_at: "2015-04-24T01:46:50.454741", + uri: "http://api.lobbyfacts.eu/api/1/country/243", + id: 243 + }, { + code: "EH", + name: "Western Sahara", + created_at: "2015-04-24T01:46:50.452002", + updated_at: "2015-04-24T01:46:50.452011", + uri: "http://api.lobbyfacts.eu/api/1/country/242", + id: 242 + }, { + code: "WF", + name: "Wallis & Futuna", + created_at: "2015-04-24T01:46:50.449346", + updated_at: "2015-04-24T01:46:50.449355", + uri: "http://api.lobbyfacts.eu/api/1/country/241", + id: 241 + }, { + code: "VN", + name: "Vietnam", + created_at: "2015-04-24T01:46:50.446644", + updated_at: "2015-04-24T01:46:50.446652", + uri: "http://api.lobbyfacts.eu/api/1/country/240", + id: 240 + }, { + code: "VE", + name: "Venezuela", + created_at: "2015-04-24T01:46:50.444031", + updated_at: "2015-04-24T01:46:50.444040", + uri: "http://api.lobbyfacts.eu/api/1/country/239", + id: 239 + }, { + code: "VU", + name: "Vanuatu", + created_at: "2015-04-24T01:46:50.441423", + updated_at: "2015-04-24T01:46:50.441433", + uri: "http://api.lobbyfacts.eu/api/1/country/238", + id: 238 + }, { + code: "UZ", + name: "Uzbekistan", + created_at: "2015-04-24T01:46:50.438748", + updated_at: "2015-04-24T01:46:50.438757", + uri: "http://api.lobbyfacts.eu/api/1/country/237", + id: 237 + }, { + code: "UY", + name: "Uruguay", + created_at: "2015-04-24T01:46:50.435761", + updated_at: "2015-04-24T01:46:50.435770", + uri: "http://api.lobbyfacts.eu/api/1/country/236", + id: 236 + }, { + code: "VI", + name: "United States Virgin Islands", + created_at: "2015-04-24T01:46:50.433229", + updated_at: "2015-04-24T01:46:50.433238", + uri: "http://api.lobbyfacts.eu/api/1/country/235", + id: 235 + }, { + code: "US", + name: "United States", + created_at: "2015-04-24T01:46:50.430335", + updated_at: "2015-04-24T01:46:50.430340", + uri: "http://api.lobbyfacts.eu/api/1/country/234", + id: 234 + }, { + code: "GB", + name: "United Kingdom", + created_at: "2015-04-24T01:46:50.427956", + updated_at: "2015-04-24T01:46:50.427961", + uri: "http://api.lobbyfacts.eu/api/1/country/233", + id: 233 + }, { + code: "AE", + name: "United Arab Emirates", + created_at: "2015-04-24T01:46:50.425383", + updated_at: "2015-04-24T01:46:50.425392", + uri: "http://api.lobbyfacts.eu/api/1/country/232", + id: 232 + }, { + code: "UA", + name: "Ukraine", + created_at: "2015-04-24T01:46:50.422970", + updated_at: "2015-04-24T01:46:50.422980", + uri: "http://api.lobbyfacts.eu/api/1/country/231", + id: 231 + }, { + code: "UG", + name: "Uganda", + created_at: "2015-04-24T01:46:50.419963", + updated_at: "2015-04-24T01:46:50.419968", + uri: "http://api.lobbyfacts.eu/api/1/country/230", + id: 230 + }, { + code: "TV", + name: "Tuvalu", + created_at: "2015-04-24T01:46:50.417896", + updated_at: "2015-04-24T01:46:50.417906", + uri: "http://api.lobbyfacts.eu/api/1/country/229", + id: 229 + }, { + code: "TC", + name: "Turks & Caicos Islands", + created_at: "2015-04-24T01:46:50.414854", + updated_at: "2015-04-24T01:46:50.414868", + uri: "http://api.lobbyfacts.eu/api/1/country/228", + id: 228 + }, { + code: "TM", + name: "Turkmenistan", + created_at: "2015-04-24T01:46:50.412601", + updated_at: "2015-04-24T01:46:50.412605", + uri: "http://api.lobbyfacts.eu/api/1/country/227", + id: 227 + }, { + code: "TR", + name: "Turkey", + created_at: "2015-04-24T01:46:50.411105", + updated_at: "2015-04-24T01:46:50.411110", + uri: "http://api.lobbyfacts.eu/api/1/country/226", + id: 226 + }, { + code: "TN", + name: "Tunisia", + created_at: "2015-04-24T01:46:50.409535", + updated_at: "2015-04-24T01:46:50.409539", + uri: "http://api.lobbyfacts.eu/api/1/country/225", + id: 225 + }, { + code: "TT", + name: "Trinidad & Tobago", + created_at: "2015-04-24T01:46:50.408030", + updated_at: "2015-04-24T01:46:50.408034", + uri: "http://api.lobbyfacts.eu/api/1/country/224", + id: 224 + }, { + code: "TO", + name: "Tonga", + created_at: "2015-04-24T01:46:50.406306", + updated_at: "2015-04-24T01:46:50.406311", + uri: "http://api.lobbyfacts.eu/api/1/country/223", + id: 223 + }, { + code: "TK", + name: "Tokelau", + created_at: "2015-04-24T01:46:50.404794", + updated_at: "2015-04-24T01:46:50.404799", + uri: "http://api.lobbyfacts.eu/api/1/country/222", + id: 222 + }, { + code: "TG", + name: "Togo", + created_at: "2015-04-24T01:46:50.403306", + updated_at: "2015-04-24T01:46:50.403310", + uri: "http://api.lobbyfacts.eu/api/1/country/221", + id: 221 + }, { + code: "TH", + name: "Thailand", + created_at: "2015-04-24T01:46:50.400840", + updated_at: "2015-04-24T01:46:50.400849", + uri: "http://api.lobbyfacts.eu/api/1/country/220", + id: 220 + }, { + code: "TZ", + name: "Tanzania", + created_at: "2015-04-24T01:46:50.397846", + updated_at: "2015-04-24T01:46:50.397855", + uri: "http://api.lobbyfacts.eu/api/1/country/219", + id: 219 + }, { + code: "TJ", + name: "Tajikistan", + created_at: "2015-04-24T01:46:50.394924", + updated_at: "2015-04-24T01:46:50.394933", + uri: "http://api.lobbyfacts.eu/api/1/country/218", + id: 218 + }, { + code: "TW", + name: "Taiwan", + created_at: "2015-04-24T01:46:50.391969", + updated_at: "2015-04-24T01:46:50.391978", + uri: "http://api.lobbyfacts.eu/api/1/country/217", + id: 217 + }, { + code: "SY", + name: "Syria", + created_at: "2015-04-24T01:46:50.389120", + updated_at: "2015-04-24T01:46:50.389124", + uri: "http://api.lobbyfacts.eu/api/1/country/216", + id: 216 + }, { + code: "CH", + name: "Switzerland", + created_at: "2015-04-24T01:46:50.386939", + updated_at: "2015-04-24T01:46:50.386943", + uri: "http://api.lobbyfacts.eu/api/1/country/215", + id: 215 + }, { + code: "SE", + name: "Sweden", + created_at: "2015-04-24T01:46:50.385345", + updated_at: "2015-04-24T01:46:50.385349", + uri: "http://api.lobbyfacts.eu/api/1/country/214", + id: 214 + }, { + code: "SZ", + name: "Swaziland", + created_at: "2015-04-24T01:46:50.383834", + updated_at: "2015-04-24T01:46:50.383838", + uri: "http://api.lobbyfacts.eu/api/1/country/213", + id: 213 + }, { + code: "SR", + name: "Suriname", + created_at: "2015-04-24T01:46:50.382073", + updated_at: "2015-04-24T01:46:50.382078", + uri: "http://api.lobbyfacts.eu/api/1/country/212", + id: 212 + }, { + code: "SD", + name: "Sudan", + created_at: "2015-04-24T01:46:50.380114", + updated_at: "2015-04-24T01:46:50.380119", + uri: "http://api.lobbyfacts.eu/api/1/country/211", + id: 211 + }, { + code: "LK", + name: "Sri Lanka", + created_at: "2015-04-24T01:46:50.378189", + updated_at: "2015-04-24T01:46:50.378195", + uri: "http://api.lobbyfacts.eu/api/1/country/210", + id: 210 + }, { + code: "ES", + name: "Spain", + created_at: "2015-04-24T01:46:50.376105", + updated_at: "2015-04-24T01:46:50.376109", + uri: "http://api.lobbyfacts.eu/api/1/country/209", + id: 209 + }, { + code: "SS", + name: "South Sudan", + created_at: "2015-04-24T01:46:50.373942", + updated_at: "2015-04-24T01:46:50.373946", + uri: "http://api.lobbyfacts.eu/api/1/country/208", + id: 208 + }, { + code: "KR", + name: "South Korea", + created_at: "2015-04-24T01:46:50.371790", + updated_at: "2015-04-24T01:46:50.371794", + uri: "http://api.lobbyfacts.eu/api/1/country/207", + id: 207 + }, { + code: "GS", + name: "South Georgia & The South Sandwish Islands", + created_at: "2015-04-24T01:46:50.369460", + updated_at: "2015-04-24T01:46:50.369465", + uri: "http://api.lobbyfacts.eu/api/1/country/206", + id: 206 + }, { + code: "ZA", + name: "South Africa", + created_at: "2015-04-24T01:46:50.367247", + updated_at: "2015-04-24T01:46:50.367252", + uri: "http://api.lobbyfacts.eu/api/1/country/205", + id: 205 + }, { + code: "SO", + name: "Somaliland", + created_at: "2015-04-24T01:46:50.362905", + updated_at: "2016-09-18T18:34:35.724427", + uri: "http://api.lobbyfacts.eu/api/1/country/204", + id: 204 + }, { + code: "SB", + name: "Solomon Islands", + created_at: "2015-04-24T01:46:50.360631", + updated_at: "2015-04-24T01:46:50.360635", + uri: "http://api.lobbyfacts.eu/api/1/country/203", + id: 203 + }, { + code: "SI", + name: "Slovenia", + created_at: "2015-04-24T01:46:50.358394", + updated_at: "2015-04-24T01:46:50.358399", + uri: "http://api.lobbyfacts.eu/api/1/country/202", + id: 202 + }, { + code: "SK", + name: "Slovakia", + created_at: "2015-04-24T01:46:50.356154", + updated_at: "2015-04-24T01:46:50.356158", + uri: "http://api.lobbyfacts.eu/api/1/country/201", + id: 201 + }, { + code: "SX", + name: "Sint Maarten", + created_at: "2015-04-24T01:46:50.353807", + updated_at: "2015-04-24T01:46:50.353811", + uri: "http://api.lobbyfacts.eu/api/1/country/200", + id: 200 + }, { + code: "SG", + name: "Singapore", + created_at: "2015-04-24T01:46:50.349354", + updated_at: "2015-04-24T01:46:50.349358", + uri: "http://api.lobbyfacts.eu/api/1/country/199", + id: 199 + }, { + code: "SL", + name: "Sierra Leone", + created_at: "2015-04-24T01:46:50.347186", + updated_at: "2015-04-24T01:46:50.347190", + uri: "http://api.lobbyfacts.eu/api/1/country/198", + id: 198 + }, { + code: "SC", + name: "Seychelles", + created_at: "2015-04-24T01:46:50.344980", + updated_at: "2015-04-24T01:46:50.344984", + uri: "http://api.lobbyfacts.eu/api/1/country/197", + id: 197 + }, { + code: "RS", + name: "Serbia", + created_at: "2015-04-24T01:46:50.342496", + updated_at: "2015-04-24T01:46:50.342501", + uri: "http://api.lobbyfacts.eu/api/1/country/196", + id: 196 + }]; } + } \ No newline at end of file From a7769406113f2ca679b1df67d04b1c5469d63d23 Mon Sep 17 00:00:00 2001 From: Rodrigo Quelca Date: Mon, 9 Aug 2021 13:22:42 +0000 Subject: [PATCH 09/19] restopre maborak --- gulliver/js/form/core/form.js | 2 +- gulliver/js/maborak/core/maborak.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gulliver/js/form/core/form.js b/gulliver/js/form/core/form.js index 8f2992042..30878c613 100644 --- a/gulliver/js/form/core/form.js +++ b/gulliver/js/form/core/form.js @@ -1480,7 +1480,7 @@ function G_Text(form, element, name) } } - if (me.browser.name == 'Chrome' || me.browser.name == 'Safari' || me.browser.name == 'Firefox'){ + if (me.browser.name == 'Chrome' || me.browser.name == 'Safari'){ event.returnValue = false; } else{ diff --git a/gulliver/js/maborak/core/maborak.js b/gulliver/js/maborak/core/maborak.js index e3c7f3d4d..324f9723e 100644 --- a/gulliver/js/maborak/core/maborak.js +++ b/gulliver/js/maborak/core/maborak.js @@ -999,7 +999,7 @@ else{me.applyMask(pressKey);} if(updateOnChange){me.sendOnChange();}} if(me.browser.name=='Firefox'){if(keyCode==0)return true;} if(me.browser.name=='Microsoft Internet Explorer'||me.browser.name=='Netscape'){if(window.event.preventDefault){window.event.preventDefault();}else{window.event.returnValue=false;}} -if(me.browser.name=='Chrome'||me.browser.name=='Safari'||me.browser.name=='Firefox'){event.returnValue=false;} +if(me.browser.name=='Chrome'||me.browser.name=='Safari'){event.returnValue=false;} else{return false;}}};if(this.element){this.element.onblur=function(event) {var evt=event||window.event;var keyPressed=evt.which||evt.keyCode;if((me.mask!='')&&((me.mType=='currency')||(me.mType=='percentage')||((me.validate=="Real")&&(me.mType=='text')))&&(me.mask.indexOf('-')==-1)&&(me.element.value!='')){masks=me.mask;aMasks=masks.split(';');for(m=0;m=0;p--){if(txtRealMask[p]!='#'&&txtRealMask[p]!='%'&&txtRealMask[p]!=' '){separatorField=txtRealMask[p];break;}}} var partsMaskSep=aMasks[m].split(separatorField);if(partsMaskSep.length==2){var countDecimal=0;txtRealMask=aMasks[m].split('');p=txtRealMask.length-1;for(;p>=0;p--){if(txtRealMask[p]=='#'){countDecimal++;} From 9d89103d450a1ebd0607273df962f3e250694906 Mon Sep 17 00:00:00 2001 From: Rodrigo Quelca Date: Mon, 9 Aug 2021 13:24:18 +0000 Subject: [PATCH 10/19] restore scheduler file --- workflow/engine/methods/scheduler/index.php | 4 ---- 1 file changed, 4 deletions(-) diff --git a/workflow/engine/methods/scheduler/index.php b/workflow/engine/methods/scheduler/index.php index e57bbfc40..0b870e7f0 100755 --- a/workflow/engine/methods/scheduler/index.php +++ b/workflow/engine/methods/scheduler/index.php @@ -1,7 +1,3 @@ - Date: Mon, 9 Aug 2021 16:46:56 +0000 Subject: [PATCH 11/19] fix icon picker --- package-lock.json | 15 + package.json | 1 + .../customCaseList/CaseListSketch.vue | 7 +- .../admin/settings/customCaseList/Tables.vue | 4 +- .../js/admin/settings/customCaseList/main.js | 10 +- .../js/components/iconPicker/IconPicker.vue | 401 ++++++++++-------- 6 files changed, 241 insertions(+), 197 deletions(-) diff --git a/package-lock.json b/package-lock.json index a673d6128..ea34e5319 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,6 +11,21 @@ "regenerator-runtime": "^0.13.2" } }, + "@fortawesome/fontawesome": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome/-/fontawesome-1.1.8.tgz", + "integrity": "sha512-c0/MtkPVT0fmiFcCyYoPjkG9PkMOvfrZw2+0BaJ+Rh6UEcK1AR/LaRgrHHjUkbAbs9LXxQJhFS8CJ4uSnK2+JA==", + "requires": { + "@fortawesome/fontawesome-common-types": "^0.1.7" + }, + "dependencies": { + "@fortawesome/fontawesome-common-types": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.1.7.tgz", + "integrity": "sha512-ego8jRVSHfq/iq4KRZJKQeUAdi3ZjGNrqw4oPN3fNdvTBnLCSntwVCnc37bsAJP9UB8MhrTfPnZYxkv2vpS4pg==" + } + } + }, "@fortawesome/fontawesome-common-types": { "version": "0.2.35", "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-0.2.35.tgz", diff --git a/package.json b/package.json index e212a1f75..e9f5bf693 100644 --- a/package.json +++ b/package.json @@ -20,6 +20,7 @@ "vue-template-compiler": "^2.6.10" }, "dependencies": { + "@fortawesome/fontawesome": "^1.1.8", "@rightbraintechbd/vue-awesome-icon-picker": "^1.1.0", "axios": "^0.15.3", "bootstrap": "^4.5.3", diff --git a/resources/assets/js/admin/settings/customCaseList/CaseListSketch.vue b/resources/assets/js/admin/settings/customCaseList/CaseListSketch.vue index 26999e531..6314c5175 100644 --- a/resources/assets/js/admin/settings/customCaseList/CaseListSketch.vue +++ b/resources/assets/js/admin/settings/customCaseList/CaseListSketch.vue @@ -91,7 +91,7 @@ label="Icon " label-for="icon" > - +
- + @@ -156,7 +156,6 @@ export default { return { icon: "fas fa-user-cog", isLoading: false, - menuColor:"#4287f5", pmTablesOptions: [], columns: ['name', 'code', 'uri'], data: utils.getData(), @@ -179,7 +178,7 @@ export default { methods: { onSelectIcon(data){ console.log (data); - + // this.params.iconList = data; }, onChangeColor(color){ console.log(color); diff --git a/resources/assets/js/admin/settings/customCaseList/Tables.vue b/resources/assets/js/admin/settings/customCaseList/Tables.vue index 3da9f4b1c..6490c6138 100644 --- a/resources/assets/js/admin/settings/customCaseList/Tables.vue +++ b/resources/assets/js/admin/settings/customCaseList/Tables.vue @@ -59,8 +59,8 @@ export default { name: "Rocko", description: "algo te texto", tableUid: "1234", - iconList: '', - iconColor: '', + iconList: 'far fa-calendar-alt', + iconColor: '#4287f5', iconColorScreen:'', type: this.module diff --git a/resources/assets/js/admin/settings/customCaseList/main.js b/resources/assets/js/admin/settings/customCaseList/main.js index 74038fec3..f37865be3 100644 --- a/resources/assets/js/admin/settings/customCaseList/main.js +++ b/resources/assets/js/admin/settings/customCaseList/main.js @@ -2,25 +2,25 @@ import Vue from "vue"; import VueRouter from "vue-router"; import VueSidebarMenu from "vue-sidebar-menu"; import VueI18n from 'vue-i18n'; -import { BootstrapVue, BootstrapVueIcons } from 'bootstrap-vue'; +import { BootstrapVue } from 'bootstrap-vue'; import { ServerTable, Event, ClientTable} from 'vue-tables-2'; import Sortable from 'sortablejs'; import "@fortawesome/fontawesome-free/css/all.css"; -import "@fortawesome/fontawesome-free/js/all.js"; import 'bootstrap/dist/css/bootstrap-grid.css'; import 'bootstrap/dist/css/bootstrap.min.css' import 'bootstrap-vue/dist/bootstrap-vue.css' import CustomCaseList from "./CustomCaseList"; - import Verte from 'verte'; import 'verte/dist/verte.css'; +import fontawesome from '@fortawesome/fontawesome' + +fontawesome.config = { autoReplaceSvg: false } // register component globally Vue.component('verte', Verte); -Vue.use(VueRouter); +Vue.use(VueRouter); Vue.use(VueSidebarMenu); Vue.use(BootstrapVue); Vue.use(VueI18n); -Vue.use(BootstrapVueIcons) Vue.use(ServerTable, {}, false, 'bootstrap3', {}); Vue.use(ClientTable, {}, false, 'bootstrap3', {}); window.ProcessMaker = { diff --git a/resources/assets/js/components/iconPicker/IconPicker.vue b/resources/assets/js/components/iconPicker/IconPicker.vue index e77ae6fbd..1ec57175f 100644 --- a/resources/assets/js/components/iconPicker/IconPicker.vue +++ b/resources/assets/js/components/iconPicker/IconPicker.vue @@ -1,210 +1,239 @@ -