Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
19 commits
Select commit Hold shift + click to select a range
49eb569
ref: extract vocabularies schema URL logic into a separate method in …
devmiguelangel Jun 16, 2026
11327d2
feat: implement getVocabulariesSchema method to streamline vocabulari…
devmiguelangel Jun 16, 2026
249c77b
test: add unit tests for setVocabulariesSchemaUrl and VocabulariesSch…
devmiguelangel Jun 16, 2026
bbea888
Merge pull request #1915 from ProcessMaker/FOUR-31894
caleeli Jun 18, 2026
f879594
feat: enhance caching behavior in getDataSource method to respect cac…
devmiguelangel Jun 24, 2026
fd96616
test: add mock data source responses for select list tests
devmiguelangel Jun 26, 2026
883ae07
Merge pull request #1916 from ProcessMaker/FOUR-31978
caleeli Jun 29, 2026
c02e435
Update JavaScript Dependencies
nolanpro Jul 7, 2026
c05acc5
3.8.35-branch-c02e435a
nolanpro Jul 7, 2026
9f96bb4
Conflicts with develop
pmPaulis Aug 5, 2026
b17af7a
Merge remote-tracking branch 'origin/develop' into feature/FOUR-30918
devmiguelangel Oct 6, 2026
bb70220
Merge branch 'feature/FOUR-30918' of github.com:ProcessMaker/screen-b…
devmiguelangel Oct 6, 2026
50ab4cf
fix:(sq) refactor getVocabulariesSchema function to use optional chai…
devmiguelangel Oct 6, 2026
5932fbd
Update JavaScript Dependencies
nolanpro Oct 20, 2026
f6a3454
3.8.43-branch-5932fbd7
nolanpro Oct 20, 2026
1ed1d56
Update JavaScript Dependencies
nolanpro Oct 20, 2026
68e3758
3.8.43-branch-1ed1d56b
nolanpro Oct 20, 2026
290641f
Update JavaScript Dependencies
nolanpro Oct 20, 2026
f93ebbf
3.8.43-branch-290641fe
nolanpro Oct 20, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 11 additions & 11 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 7 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "@processmaker/screen-builder",
"version": "3.8.43",
"version": "3.8.43-branch-290641fe",
"scripts": {
"dev": "VITE_COVERAGE=true vite",
"build": "vite build",
Expand Down Expand Up @@ -61,8 +61,8 @@
"@fortawesome/fontawesome-free": "^5.6.1",
"@originjs/vite-plugin-commonjs": "^1.0.3",
"@panter/vue-i18next": "^0.15.2",
"@processmaker/vue-form-elements": "0.65.11",
"@processmaker/vue-multiselect": "2.3.2",
"@processmaker/vue-form-elements": "0.65.11-branch-2c6a640",
"@processmaker/vue-multiselect": "2.3.3",
"@storybook/addon-essentials": "^7.6.13",
"@storybook/addon-interactions": "^7.6.13",
"@storybook/addon-links": "^7.6.13",
Expand Down Expand Up @@ -125,7 +125,7 @@
},
"peerDependencies": {
"@panter/vue-i18next": "^0.15.0",
"@processmaker/vue-form-elements": "0.65.11",
"@processmaker/vue-form-elements": "0.65.11-branch-2c6a640",
"i18next": "^15.0.8",
"vue": "^2.6.12",
"vuex": "^3.1.1"
Expand Down Expand Up @@ -156,6 +156,8 @@
]
},
"processmaker": {
"downstream": ["modeler"]
"downstream": [
"modeler"
]
}
}
2 changes: 2 additions & 0 deletions src/DataProvider.js
Original file line number Diff line number Diff line change
Expand Up @@ -228,6 +228,7 @@ export default {
const normalizedDataSourceId = normalizeDataSourceId(dataSourceId);
// keep backwards compatibility
if (
!params.cache &&
!window.ProcessMaker.screen.cacheEnabled &&
!window.ProcessMaker.screen.cacheTimeout
) {
Expand All @@ -242,6 +243,7 @@ export default {
url += this.authQueryString();
return this.get(url, {
useCache: window.ProcessMaker.screen.cacheEnabled,
cache: params.cache,
params: {
pmds_config: JSON.stringify(params.config),
pmds_data: JSON.stringify(params.data)
Expand Down
18 changes: 14 additions & 4 deletions src/components/task.vue
Original file line number Diff line number Diff line change
Expand Up @@ -283,10 +283,7 @@ export default {
url += `&screen_version=${this.screenVersion}`;
}

// For Vocabularies
if (window.ProcessMaker && window.ProcessMaker.packages && window.ProcessMaker.packages.includes('package-vocabularies')) {
window.ProcessMaker.VocabulariesSchemaUrl = `vocabularies/task_schema/${this.taskId}`;
}
this.setVocabulariesSchemaUrl();

return this.beforeLoadTask(this.taskId, this.nodeId).then(() => {
this.$dataProvider
Expand Down Expand Up @@ -704,6 +701,19 @@ export default {

return this.$dataProvider.getTasks(`?${queryString}`);
},
setVocabulariesSchemaUrl() {
if (
window.ProcessMaker
&& window.ProcessMaker.packages
&& window.ProcessMaker.packages.includes("package-vocabularies")
) {
const schemaUrl = `vocabularies/task_schema/${this.taskId}`;
if (window.ProcessMaker.VocabulariesSchemaUrl !== schemaUrl) {
window.ProcessMaker.VocabulariesSchemaCache = null;
}
window.ProcessMaker.VocabulariesSchemaUrl = schemaUrl;
}
},
/**
* Parses a JSON string and returns the result.
* @param {string} jsonString - The JSON string to parse.
Expand Down
11 changes: 11 additions & 0 deletions src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -203,6 +203,17 @@ window.ProcessMaker = {
}
}
});
} else if (url === "/requests/data_sources/1/resources/list/data") {
resolve({
data: {
response: [
{ value: 1, content: "James" },
{ value: 2, content: "John" },
{ value: 3, content: "Mary" },
{ value: 4, content: "Patricia" }
]
}
});
} else if (url === "/data_sources") {
resolve({
data: {
Expand Down
59 changes: 43 additions & 16 deletions src/mixins/ScreenBase.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,25 +10,52 @@ import { findRootScreen } from "./DataReference";
const stringFormats = ['string', 'datetime', 'date', 'password'];
const parentReference = [];

const getVocabulariesSchema = () => {
if (window.ProcessMaker?.packages?.includes("package-vocabularies")) {
if (window.ProcessMaker.VocabulariesSchemaUrl) {
const schemaUrl = window.ProcessMaker.VocabulariesSchemaUrl;
const cache = window.ProcessMaker.VocabulariesSchemaCache;

if (cache && cache.url === schemaUrl) {
return cache.promise || cache.data;
}

const promise = window.ProcessMaker.apiClient
.get(schemaUrl)
.then((response) => {
if (window.ProcessMaker.VocabulariesSchemaUrl === schemaUrl) {
window.ProcessMaker.VocabulariesSchemaCache = {
url: schemaUrl,
data: response.data
};
}
return response.data;
})
.catch((error) => {
if (window.ProcessMaker.VocabulariesSchemaCache?.url === schemaUrl) {
window.ProcessMaker.VocabulariesSchemaCache = null;
}
throw error;
});

window.ProcessMaker.VocabulariesSchemaCache = {
url: schemaUrl,
promise
};

return promise;
}
if (window.ProcessMaker.VocabulariesPreview) {
return window.ProcessMaker.VocabulariesPreview;
}
}
return {};
};

export default {
name: "ScreenContent",
mixins: [DataReference, computedFields, VariablesToSubmitFilter],
schema: [
function() {
if (window.ProcessMaker && window.ProcessMaker.packages && window.ProcessMaker.packages.includes('package-vocabularies')) {
if (window.ProcessMaker.VocabulariesSchemaUrl) {
let response = window.ProcessMaker.apiClient.get(window.ProcessMaker.VocabulariesSchemaUrl);
return response.then(response => {
return response.data;
});
}
if (window.ProcessMaker.VocabulariesPreview) {
return window.ProcessMaker.VocabulariesPreview;
}
}
return {};
},
],
schema: [getVocabulariesSchema],
data() {
return {
ValidationRules__: {},
Expand Down
141 changes: 74 additions & 67 deletions tests/e2e/specs/SelectListCollection.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,80 +3,87 @@ describe("select list mustache", () => {
beforeEach(() => {
cy.clearLocalStorage();
cy.clearCookies();
cy.intercept(
"POST",
"/api/1.0/requests/data_sources/2",
JSON.stringify({
status: 200,
response: {
data: [
{
id: 1,
created_by_id: 2,
updated_by_id: 2,
created_at: "2021-11-08 10:29:56",
updated_at: "2021-11-08 10:29:56",
data: {
dni: "1234",
name: {
last: "Smith",
first: "Oliver"
},
id: 1
const dataSourceResponse = {
status: 200,
response: {
data: [
{
id: 1,
created_by_id: 2,
updated_by_id: 2,
created_at: "2021-11-08 10:29:56",
updated_at: "2021-11-08 10:29:56",
data: {
dni: "1234",
name: {
last: "Smith",
first: "Oliver"
},
collection_id: 1,
title: "1",
created_by: {
id: 2,
email: "admin@processmaker.com"
},
updated_by: {
id: 2,
email: "admin@processmaker.com"
}
id: 1
},
{
collection_id: 1,
title: "1",
created_by: {
id: 2,
created_by_id: 2,
updated_by_id: 2,
created_at: "2021-11-08 10:29:56",
updated_at: "2021-11-08 10:29:56",
data: {
dni: "5678",
name: {
last: "Doe",
first: "John"
},
id: 2
},
collection_id: 1,
title: "2",
created_by: {
id: 2,
email: "admin@processmaker.com"
email: "admin@processmaker.com"
},
updated_by: {
id: 2,
email: "admin@processmaker.com"
}
},
{
id: 2,
created_by_id: 2,
updated_by_id: 2,
created_at: "2021-11-08 10:29:56",
updated_at: "2021-11-08 10:29:56",
data: {
dni: "5678",
name: {
last: "Doe",
first: "John"
},
updated_by: {
id: 2,
email: "admin@processmaker.com"
}
id: 2
},
collection_id: 1,
title: "2",
created_by: {
id: 2,
email: "admin@processmaker.com"
},
updated_by: {
id: 2,
email: "admin@processmaker.com"
}
],
meta: {
filter: "",
sort_by: "",
sort_order: "",
count: 2,
total_pages: 1,
current_page: 1,
from: 1,
last_page: 1,
path: "/api/1.0/collections/1/records",
per_page: 9223372036854775807,
to: 2,
total: 2
}
],
meta: {
filter: "",
sort_by: "",
sort_order: "",
count: 2,
total_pages: 1,
current_page: 1,
from: 1,
last_page: 1,
path: "/api/1.0/collections/1/records",
per_page: 9223372036854775807,
to: 2,
total: 2
}
})
}
};

cy.intercept(
"POST",
"/api/1.0/requests/data_sources/2",
JSON.stringify(dataSourceResponse)
).as("executeScript");
cy.intercept(
"GET",
"/api/1.0/requests/data_sources/2/resources/ListAll/data*",
JSON.stringify(dataSourceResponse)
).as("executeScript");
cy.visit("/");
});
Expand Down
4 changes: 2 additions & 2 deletions tests/e2e/specs/SelectListDataSource.spec.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ describe("Select List with DataSource", () => {
beforeEach(() => {
cy.visit("/");
cy.intercept(
"POST",
"/api/1.0/requests/data_sources/2",
"GET",
"/api/1.0/requests/data_sources/2/resources/ListAll/data*",
JSON.stringify({
status: 200,
response: {
Expand Down
Loading