This is an automated email from the ASF dual-hosted git repository. marat pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-karavan.git
commit e8f9274c34a81dbc2230e20dd10d9fe3c3f2e300 Author: Marat Gubaidullin <[email protected]> AuthorDate: Thu Sep 12 10:57:49 2024 -0400 Fixed #1402 --- .../webui/src/designer/property/PropertyStore.ts | 42 ++++++++++++++++++++++ .../designer/property/property/PropertyUtil.tsx | 40 +++++++++++++++++++++ .../src/designer/property/PropertyStore.ts | 42 ++++++++++++++++++++++ .../designer/property/property/PropertyUtil.tsx | 40 +++++++++++++++++++++ 4 files changed, 164 insertions(+) diff --git a/karavan-app/src/main/webui/src/designer/property/PropertyStore.ts b/karavan-app/src/main/webui/src/designer/property/PropertyStore.ts new file mode 100644 index 00000000..b9d0e511 --- /dev/null +++ b/karavan-app/src/main/webui/src/designer/property/PropertyStore.ts @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import {createWithEqualityFn} from "zustand/traditional"; +import {shallow} from "zustand/shallow"; + +interface PropertiesState { + propertyFilter: string; + setPropertyFilter: (propertyFilter: string) => void + requiredOnly: boolean; + setRequiredOnly: (requiredOnly: boolean) => void + changedOnly: boolean; + setChangedOnly: (changedOnly: boolean) => void +} + +export const usePropertiesStore = createWithEqualityFn<PropertiesState>((set, get) => ({ + requiredOnly: false, + changedOnly: false, + propertyFilter: '', + setPropertyFilter: (propertyFilter: string) => { + set({propertyFilter: propertyFilter}); + }, + setRequiredOnly: (requiredOnly: boolean) => { + set({requiredOnly: requiredOnly}); + }, + setChangedOnly: (changedOnly: boolean) => { + set({changedOnly: changedOnly}); + }, +}), shallow) diff --git a/karavan-app/src/main/webui/src/designer/property/property/PropertyUtil.tsx b/karavan-app/src/main/webui/src/designer/property/property/PropertyUtil.tsx new file mode 100644 index 00000000..57ba1a3c --- /dev/null +++ b/karavan-app/src/main/webui/src/designer/property/property/PropertyUtil.tsx @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import {PropertyMeta} from "karavan-core/lib/model/CamelMetadata"; +import {ComponentProperty} from "karavan-core/lib/model/ComponentModels"; +import {Property} from "karavan-core/lib/model/KameletModels"; + +export class PropertyUtil { + + static hasDslPropertyValueChanged(property: PropertyMeta, value: any): boolean { + const isSet = value !== undefined && !['id', 'uri', 'nodePrefixId'].includes(property.name); + const isDefault = property.defaultValue !== undefined && value?.toString() === property.defaultValue?.toString(); + return isSet && !isDefault; + } + + static hasComponentPropertyValueChanged(property: ComponentProperty, value: any): boolean { + const isSet = value !== undefined; + const isDefault = property.defaultValue !== undefined && value?.toString() === property.defaultValue?.toString(); + return isSet && !isDefault; + } + + static hasKameletPropertyValueChanged(property: Property, value: any): boolean { + const isSet = value !== undefined; + const isDefault = property.default !== undefined && value?.toString() === property.default?.toString(); + return isSet && !isDefault; + } +} \ No newline at end of file diff --git a/karavan-space/src/designer/property/PropertyStore.ts b/karavan-space/src/designer/property/PropertyStore.ts new file mode 100644 index 00000000..b9d0e511 --- /dev/null +++ b/karavan-space/src/designer/property/PropertyStore.ts @@ -0,0 +1,42 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import {createWithEqualityFn} from "zustand/traditional"; +import {shallow} from "zustand/shallow"; + +interface PropertiesState { + propertyFilter: string; + setPropertyFilter: (propertyFilter: string) => void + requiredOnly: boolean; + setRequiredOnly: (requiredOnly: boolean) => void + changedOnly: boolean; + setChangedOnly: (changedOnly: boolean) => void +} + +export const usePropertiesStore = createWithEqualityFn<PropertiesState>((set, get) => ({ + requiredOnly: false, + changedOnly: false, + propertyFilter: '', + setPropertyFilter: (propertyFilter: string) => { + set({propertyFilter: propertyFilter}); + }, + setRequiredOnly: (requiredOnly: boolean) => { + set({requiredOnly: requiredOnly}); + }, + setChangedOnly: (changedOnly: boolean) => { + set({changedOnly: changedOnly}); + }, +}), shallow) diff --git a/karavan-space/src/designer/property/property/PropertyUtil.tsx b/karavan-space/src/designer/property/property/PropertyUtil.tsx new file mode 100644 index 00000000..57ba1a3c --- /dev/null +++ b/karavan-space/src/designer/property/property/PropertyUtil.tsx @@ -0,0 +1,40 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +import {PropertyMeta} from "karavan-core/lib/model/CamelMetadata"; +import {ComponentProperty} from "karavan-core/lib/model/ComponentModels"; +import {Property} from "karavan-core/lib/model/KameletModels"; + +export class PropertyUtil { + + static hasDslPropertyValueChanged(property: PropertyMeta, value: any): boolean { + const isSet = value !== undefined && !['id', 'uri', 'nodePrefixId'].includes(property.name); + const isDefault = property.defaultValue !== undefined && value?.toString() === property.defaultValue?.toString(); + return isSet && !isDefault; + } + + static hasComponentPropertyValueChanged(property: ComponentProperty, value: any): boolean { + const isSet = value !== undefined; + const isDefault = property.defaultValue !== undefined && value?.toString() === property.defaultValue?.toString(); + return isSet && !isDefault; + } + + static hasKameletPropertyValueChanged(property: Property, value: any): boolean { + const isSet = value !== undefined; + const isDefault = property.default !== undefined && value?.toString() === property.default?.toString(); + return isSet && !isDefault; + } +} \ No newline at end of file
