From 36a2645d6067665e774fbe89c4512d07a6ad5f44 Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Fri, 24 Oct 2025 14:58:00 +0200 Subject: feat: update notification on ATC error --- forms/dnpm-formulare.osc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/forms/dnpm-formulare.osc b/forms/dnpm-formulare.osc index 1257f6b..fdab23f 100644 --- a/forms/dnpm-formulare.osc +++ b/forms/dnpm-formulare.osc @@ -9245,7 +9245,7 @@ Gemäß DNPM-Datenmodell 2.1 20119 06847050-ff8f-46c4-87b8-9584c0cef990 - 266 + 267 true @@ -9765,7 +9765,7 @@ Gemäß DNPM-Datenmodell 2.1 BOTH false - const availableStore = new Ext.data.ArrayStore({&#10; fields: [&#10; {name: 'code'},&#10; {name: 'name'},&#10; {name: 'system'},&#10; {name: 'version'}&#10; ]&#10;});&#10;&#10;const selectedStore = new Ext.data.ArrayStore({&#10; fields: [&#10; {name: 'code'},&#10; {name: 'name'},&#10; {name: 'system'},&#10; {name: 'version'}&#10; ]&#10;});&#10;&#10;let pluginRequestsDisabled = false;&#10;let available = [];&#10;let selected = [];&#10;let blockIndex = null;&#10;&#10;const findButtonFieldFormInformation = function(context) {&#10; const findElemId = function(elem) {&#10; if (elem.tagName === 'BODY') {&#10; return undefined;&#10; }&#10;&#10; if (elem.tagName === 'TABLE') {&#10; return elem.id;&#10; }&#10;&#10; return findElemId(elem.parentElement);&#10; }&#10;&#10; const formInfo = function(formItem, blockIndex = undefined) {&#10; if (formItem.xtype === 'buttonField') {&#10; return formInfo(formItem.ownerCt, formItem.blockIndex);&#10; }&#10;&#10; if (formItem.xtype === 'panel') {&#10; return formInfo(formItem.ownerCt, blockIndex);&#10; }&#10;&#10; if (formItem.xtype === 'subformField') {&#10; return {&#10; isSubform: true,&#10; formName: formItem.formName,&#10; subformFieldName: formItem.subformName,&#10; blockIndex: blockIndex&#10; };&#10; }&#10;&#10; if (formItem.xtype === 'form') {&#10; return {&#10; isSubform: false,&#10; };&#10; }&#10;&#10; console.warn('No information found!');&#10; return undefined;&#10; }&#10;&#10; if (context.genericEditForm && document.activeElement.tagName === 'BUTTON') {&#10; let elemId = findElemId(document.activeElement);&#10; if (elemId) {&#10; let formItem = context.genericEditForm.down('#'+elemId);&#10; if (formItem) {&#10; return formInfo(formItem);&#10; }&#10; }&#10; }&#10;&#10; return undefined;&#10;}&#10;&#10;const request = function (q) {&#10; if (pluginRequestsDisabled) return;&#10; executePluginMethod(&#10; 'AtcCodesPlugin',&#10; 'query',&#10; {q: q, size: 25},&#10; function (response) {&#10; if (response.status.code < 0) {&#10; onFailure();&#10; return;&#10; }&#10; onSuccess(response.result);&#10; },&#10; false&#10; );&#10;};&#10;&#10;const addItem = function (item) {&#10; selected.push(item);&#10; const extData = selected.map((item) => [item.code, item.name, item.system, item.version]);&#10; selectedStore.loadData(extData);&#10;};&#10;&#10;const removeItem = function (index) {&#10; selected.splice(index, 1);&#10; const extData = selected.map((item) => [item.code, item.name, item.system, item.version]);&#10; selectedStore.loadData(extData);&#10;};&#10;&#10;const save = () => {&#10; const names = selected.map((item) => {&#10; return item.name;&#10; }).join("\n");&#10;&#10; this.getFieldByEntriesArray('wirkstoffe', blockIndex).setValue(names);&#10; this.getFieldByEntriesArray('wirkstoffejson', blockIndex).setValue(JSON.stringify(selected));&#10;};&#10;&#10;const onFailure = function() {&#10; pluginRequestsDisabled = true;&#10; Ext.MessageBox.show({&#10; title: 'Hinweis',&#10; msg: 'Plugin "ATC-Codes und Substanzen" nicht verfügbar. Sie können Substanzen nur über "Aus Suchfeld hinzufügen" hinzufügen.',&#10; buttons: Ext.MessageBox.OKCANCEL&#10; });&#10;};&#10;&#10;const onSuccess = function(d) {&#10; available = d;&#10; const extData = available.map((item) => [item.code, item.name, item.system, item.version]);&#10; availableStore.loadData(extData);&#10;}&#10;&#10;const showDialog = function () {&#10; let selectedItemIndex = -1;&#10; let deselectedItemIndex = -1;&#10; let queryString = '';&#10;&#10; try {&#10; selected = JSON.parse(getFieldValue('wirkstoffejson', blockIndex));&#10; const extData = selected.map((item) => [item.code, item.name, item.system, item.version]);&#10; selectedStore.loadData(extData);&#10; } catch (e) {&#10; selected = [];&#10; const extData = selected.map((item) => [item.code, item.name, item.system, item.version]);&#10; selectedStore.loadData(extData);&#10; }&#10;&#10; const query = new Ext.form.field.Text({&#10; name: 'query',&#10; fieldLabel: 'Suche',&#10; padding: 8,&#10; listeners: {&#10; change: (f) => {&#10; queryString = f.value;&#10; request(f.value);&#10; if (f.value.length > 0) {&#10; Ext.getCmp('btnUnknownAgent').setDisabled(false);&#10; } else {&#10; Ext.getCmp('btnUnknownAgent').setDisabled(true);&#10; }&#10; }&#10; }&#10; });&#10;&#10; const gridColumns = [&#10; {header: 'Code', width: 72, sortable: false, dataIndex: 'code'},&#10; {header: 'Name', width: 300, sortable: false, dataIndex: 'name'},&#10; {header: 'System', width: 72, sortable: false, dataIndex: 'system'},&#10; {header: 'Version', width: 72, sortable: false, dataIndex: 'version'},&#10; ];&#10;&#10; const availableGrid = new Ext.grid.GridPanel({&#10; title: 'Verfügbar',&#10; store: availableStore,&#10; loadMask: true,&#10; border: true,&#10; columns: gridColumns,&#10; flex: 1,&#10; listeners: {&#10; itemclick: (dv, record, item, index) => {&#10; selectedItemIndex = index;&#10; Ext.getCmp('btnAddAgent').setDisabled(false);&#10; },&#10; itemdblclick: (dv, record, item, index) => {&#10; selectedItemIndex = -1&#10; addItem(available[index]);&#10; Ext.getCmp('btnAddAgent').setDisabled(true);&#10; }&#10; }&#10; });&#10;&#10; const selectedGrid = new Ext.grid.GridPanel({&#10; title: 'Ausgewählt',&#10; store: selectedStore,&#10; loadMask: true,&#10; border: true,&#10; columns: gridColumns,&#10; flex: 1,&#10; listeners: {&#10; itemclick: (dv, record, item, index) => {&#10; deselectedItemIndex = index;&#10; Ext.getCmp('btnRmAgent').setDisabled(false);&#10; },&#10; itemdblclick: (dv, record, item, index) => {&#10; deselectedItemIndex = -1&#10; removeItem(index);&#10; Ext.getCmp('btnRmAgent').setDisabled(true);&#10; }&#10; }&#10; });&#10;&#10; const gridLayout = Ext.create('Ext.Panel', {&#10; flex: 1,&#10; layout: {&#10; type: 'hbox',&#10; align: 'stretch'&#10; },&#10; items: [availableGrid, { xtype: 'splitter' }, selectedGrid]&#10; });&#10;&#10; const layout = Ext.create('Ext.Panel', {&#10; flex: 1,&#10; layout: {&#10; type: 'vbox',&#10; align: 'stretch'&#10; },&#10; items: [query, gridLayout]&#10; });&#10;&#10; Ext.create('Ext.window.Window', {&#10; title: 'Substanz auswählen',&#10; height: 600,&#10; width: 1080,&#10; layout: 'fit',&#10; items: [layout],&#10; buttons: [{&#10; id: 'btnAddAgent',&#10; text: 'Hinzufügen',&#10; disabled: true,&#10; handler: () => {&#10; addItem(available[selectedItemIndex]);&#10; Ext.getCmp('btnAddAgent').setDisabled(true);&#10; }&#10; }, {&#10; id: 'btnUnknownAgent',&#10; text: 'Aus Suchfeld hinzufügen',&#10; disabled: true,&#10; handler: () => {&#10; addItem({&#10; code: '',&#10; name: queryString,&#10; system: 'UNREGISTERED'&#10; });&#10; Ext.getCmp('btnUnknownAgent').setDisabled(true);&#10; }&#10; }, {&#10; id: 'btnRmAgent',&#10; text: 'Entfernen',&#10; disabled: true,&#10; handler: () => {&#10; removeItem(deselectedItemIndex);&#10; Ext.getCmp('btnRmAgent').setDisabled(true);&#10; }&#10; }, {&#10; text: 'Übernehmen',&#10; cls: 'onko-btn-cta',&#10; handler: () => {&#10; save();&#10; let win = Ext.WindowManager.getActive();&#10; if (win) {&#10; win.close();&#10; }&#10; }&#10; }]&#10; }).show();&#10;&#10; request('');&#10;};&#10;&#10;let buttonFieldFormInformation = findButtonFieldFormInformation(this);&#10;if (buttonFieldFormInformation && buttonFieldFormInformation.blockIndex) {&#10; blockIndex = buttonFieldFormInformation.blockIndex;&#10;}&#10;&#10;showDialog(); + const availableStore = new Ext.data.ArrayStore({&#10; fields: [&#10; {name: 'code'},&#10; {name: 'name'},&#10; {name: 'system'},&#10; {name: 'version'}&#10; ]&#10;});&#10;&#10;const selectedStore = new Ext.data.ArrayStore({&#10; fields: [&#10; {name: 'code'},&#10; {name: 'name'},&#10; {name: 'system'},&#10; {name: 'version'}&#10; ]&#10;});&#10;&#10;let pluginRequestsDisabled = false;&#10;let available = [];&#10;let selected = [];&#10;let blockIndex = null;&#10;&#10;const findButtonFieldFormInformation = function(context) {&#10; const findElemId = function(elem) {&#10; if (elem.tagName === 'BODY') {&#10; return undefined;&#10; }&#10;&#10; if (elem.tagName === 'TABLE') {&#10; return elem.id;&#10; }&#10;&#10; return findElemId(elem.parentElement);&#10; }&#10;&#10; const formInfo = function(formItem, blockIndex = undefined) {&#10; if (formItem.xtype === 'buttonField') {&#10; return formInfo(formItem.ownerCt, formItem.blockIndex);&#10; }&#10;&#10; if (formItem.xtype === 'panel') {&#10; return formInfo(formItem.ownerCt, blockIndex);&#10; }&#10;&#10; if (formItem.xtype === 'subformField') {&#10; return {&#10; isSubform: true,&#10; formName: formItem.formName,&#10; subformFieldName: formItem.subformName,&#10; blockIndex: blockIndex&#10; };&#10; }&#10;&#10; if (formItem.xtype === 'form') {&#10; return {&#10; isSubform: false,&#10; };&#10; }&#10;&#10; console.warn('No information found!');&#10; return undefined;&#10; }&#10;&#10; if (context.genericEditForm && document.activeElement.tagName === 'BUTTON') {&#10; let elemId = findElemId(document.activeElement);&#10; if (elemId) {&#10; let formItem = context.genericEditForm.down('#'+elemId);&#10; if (formItem) {&#10; return formInfo(formItem);&#10; }&#10; }&#10; }&#10;&#10; return undefined;&#10;}&#10;&#10;const request = function (q) {&#10; if (pluginRequestsDisabled) return;&#10; executePluginMethod(&#10; 'AtcCodesHelper',&#10; 'query',&#10; {q: q, size: 25},&#10; function (response) {&#10; if (response.status.code < 0) {&#10; onFailure();&#10; return;&#10; }&#10; onSuccess(response.result);&#10; },&#10; false&#10; );&#10;};&#10;&#10;const addItem = function (item) {&#10; selected.push(item);&#10; const extData = selected.map((item) => [item.code, item.name, item.system, item.version]);&#10; selectedStore.loadData(extData);&#10;};&#10;&#10;const removeItem = function (index) {&#10; selected.splice(index, 1);&#10; const extData = selected.map((item) => [item.code, item.name, item.system, item.version]);&#10; selectedStore.loadData(extData);&#10;};&#10;&#10;const save = () => {&#10; const names = selected.map((item) => {&#10; return item.name;&#10; }).join('\n');&#10;&#10; this.getFieldByEntriesArray('wirkstoffe', blockIndex).setValue(names);&#10; this.getFieldByEntriesArray('wirkstoffejson', blockIndex).setValue(JSON.stringify(selected));&#10;};&#10;&#10;const onFailure = function() {&#10; pluginRequestsDisabled = true;&#10; Ext.MessageBox.show({&#10; title: 'Hinweis',&#10; msg: 'Kein Zugriff auf ATC-Codes und Substanzen. Sie können Substanzen nur über "Aus Suchfeld hinzufügen" hinzufügen.',&#10; buttons: Ext.MessageBox.OKCANCEL&#10; });&#10;};&#10;&#10;const onSuccess = function(d) {&#10; available = d;&#10; const extData = available.map((item) => [item.code, item.name, item.system, item.version]);&#10; availableStore.loadData(extData);&#10;}&#10;&#10;const showDialog = function () {&#10; let selectedItemIndex = -1;&#10; let deselectedItemIndex = -1;&#10; let queryString = '';&#10;&#10; try {&#10; selected = JSON.parse(getFieldValue('wirkstoffejson', blockIndex));&#10; const extData = selected.map((item) => [item.code, item.name, item.system, item.version]);&#10; selectedStore.loadData(extData);&#10; } catch (e) {&#10; selected = [];&#10; const extData = selected.map((item) => [item.code, item.name, item.system, item.version]);&#10; selectedStore.loadData(extData);&#10; }&#10;&#10; const query = new Ext.form.field.Text({&#10; name: 'query',&#10; fieldLabel: 'Suche',&#10; padding: 8,&#10; listeners: {&#10; change: (f) => {&#10; queryString = f.value;&#10; request(f.value);&#10; if (f.value.length > 0) {&#10; Ext.getCmp('btnUnknownAgent').setDisabled(false);&#10; } else {&#10; Ext.getCmp('btnUnknownAgent').setDisabled(true);&#10; }&#10; }&#10; }&#10; });&#10;&#10; const gridColumns = [&#10; {header: 'Code', width: 72, sortable: false, dataIndex: 'code'},&#10; {header: 'Name', width: 300, sortable: false, dataIndex: 'name'},&#10; {header: 'System', width: 72, sortable: false, dataIndex: 'system'},&#10; {header: 'Version', width: 72, sortable: false, dataIndex: 'version'},&#10; ];&#10;&#10; const availableGrid = new Ext.grid.GridPanel({&#10; title: 'Verfügbar',&#10; store: availableStore,&#10; loadMask: true,&#10; border: true,&#10; columns: gridColumns,&#10; flex: 1,&#10; listeners: {&#10; itemclick: (dv, record, item, index) => {&#10; selectedItemIndex = index;&#10; Ext.getCmp('btnAddAgent').setDisabled(false);&#10; },&#10; itemdblclick: (dv, record, item, index) => {&#10; selectedItemIndex = -1&#10; addItem(available[index]);&#10; Ext.getCmp('btnAddAgent').setDisabled(true);&#10; }&#10; }&#10; });&#10;&#10; const selectedGrid = new Ext.grid.GridPanel({&#10; title: 'Ausgewählt',&#10; store: selectedStore,&#10; loadMask: true,&#10; border: true,&#10; columns: gridColumns,&#10; flex: 1,&#10; listeners: {&#10; itemclick: (dv, record, item, index) => {&#10; deselectedItemIndex = index;&#10; Ext.getCmp('btnRmAgent').setDisabled(false);&#10; },&#10; itemdblclick: (dv, record, item, index) => {&#10; deselectedItemIndex = -1&#10; removeItem(index);&#10; Ext.getCmp('btnRmAgent').setDisabled(true);&#10; }&#10; }&#10; });&#10;&#10; const gridLayout = Ext.create('Ext.Panel', {&#10; flex: 1,&#10; layout: {&#10; type: 'hbox',&#10; align: 'stretch'&#10; },&#10; items: [availableGrid, { xtype: 'splitter' }, selectedGrid]&#10; });&#10;&#10; const layout = Ext.create('Ext.Panel', {&#10; flex: 1,&#10; layout: {&#10; type: 'vbox',&#10; align: 'stretch'&#10; },&#10; items: [query, gridLayout]&#10; });&#10;&#10; Ext.create('Ext.window.Window', {&#10; title: 'Substanz auswählen',&#10; height: 600,&#10; width: 1080,&#10; layout: 'fit',&#10; items: [layout],&#10; buttons: [{&#10; id: 'btnAddAgent',&#10; text: 'Hinzufügen',&#10; disabled: true,&#10; handler: () => {&#10; addItem(available[selectedItemIndex]);&#10; Ext.getCmp('btnAddAgent').setDisabled(true);&#10; }&#10; }, {&#10; id: 'btnUnknownAgent',&#10; text: 'Aus Suchfeld hinzufügen',&#10; disabled: true,&#10; handler: () => {&#10; addItem({&#10; code: '',&#10; name: queryString,&#10; system: 'UNREGISTERED'&#10; });&#10; Ext.getCmp('btnUnknownAgent').setDisabled(true);&#10; }&#10; }, {&#10; id: 'btnRmAgent',&#10; text: 'Entfernen',&#10; disabled: true,&#10; handler: () => {&#10; removeItem(deselectedItemIndex);&#10; Ext.getCmp('btnRmAgent').setDisabled(true);&#10; }&#10; }, {&#10; text: 'Übernehmen',&#10; cls: 'onko-btn-cta',&#10; handler: () => {&#10; save();&#10; let win = Ext.WindowManager.getActive();&#10; if (win) {&#10; win.close();&#10; }&#10; }&#10; }]&#10; }).show();&#10;&#10; request('');&#10;};&#10;&#10;let buttonFieldFormInformation = findButtonFieldFormInformation(this);&#10;if (buttonFieldFormInformation && buttonFieldFormInformation.blockIndex) {&#10; blockIndex = buttonFieldFormInformation.blockIndex;&#10;}&#10;&#10;showDialog(); true @@ -9805,7 +9805,7 @@ Gemäß DNPM-Datenmodell 2.1 0 20119 31b4c59b-b9eb-4383-a8b3-efff9777ab06 - 25 + 26 false false -- cgit v1.2.3