diff --git a/package.json b/package.json index 03c39808..ac267909 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "web-scraper-chrome-extension", - "version": "0.5.1", + "version": "0.5.2", "description": "Web data extraction tool implemented as chrome extension", "scripts": { "lint": "eslint --ext .js src", diff --git a/src/_locales/en/messages.json b/src/_locales/en/messages.json index 2f4b4c65..c09b2640 100644 --- a/src/_locales/en/messages.json +++ b/src/_locales/en/messages.json @@ -355,13 +355,25 @@ "modal_confirm_action_title_delete_selector": { "message": "Are you sure you want to delete selector ?" }, + "modal_confirm_action_title_update_selector": { + "message": "The new selector type does not support additional selectors. Remove additional child selectors?" + }, + "modal_confirm_action_title_update_selector_can_have_child": { + "message": "The new selector type supports child selectors. Remove or keep existing child selectors?" + }, "modal_confirm_action_title_delete_sitemap": { "message": "Are you sure you want to delete sitemap ?" }, "modal_confirm_action_message_delete_selector": { "message": "The following selectors will be removed ( obj):" }, + "modal_confirm_action_message_update_selector": { + "message": "Child selectors ( obj):" + }, "modal_confirm_action_submit_delete_selector": { "message": "Confirm" }, + "modal_confirm_action_submit_update_selector": { "message": "Delete selectors" }, + "modal_confirm_action_submit_update_save_selector": { "message": "Save selectors" }, + "modal_confirm_action_cancel_update_selector": { "message": "Cancel" }, "modal_confirm_action_cancel_delete_selector": { "message": "Cancel" }, "modal_confirm_action_submit_delete_sitemap": { "message": "Confirm" }, "modal_confirm_action_cancel_delete_sitemap": { "message": "Cancel" }, diff --git a/src/_locales/ru/messages.json b/src/_locales/ru/messages.json index 6fad9f6e..748d6721 100644 --- a/src/_locales/ru/messages.json +++ b/src/_locales/ru/messages.json @@ -395,6 +395,19 @@ "modal_confirm_action_message_delete_selector": { "message": "Будут удалены следующие селекторы ( шт.):" }, + "modal_confirm_action_message_update_selector": { + "message": "Дочерние селекторы ( obj):" + }, + "modal_confirm_action_title_update_selector": { + "message": "Новый тип селектора не поддерживает дочерние селекторы. Удалить существующие дочерние селекторы?" + }, + "modal_confirm_action_title_update_selector_can_have_child": { + "message": "Новый тип селектора поддерживает дочерние селекторы. Удалить или сохранить существующие дочерние селекторы?" + }, + "modal_confirm_action_submit_update_selector": { "message": "Удалить селекторы" }, + "modal_confirm_action_submit_update_save_selector": { "message": "Сохранить селекторы" }, + "modal_confirm_action_cancel_update_selector": { "message": "Отмена" }, + "modal_confirm_action_submit_delete_selector": { "message": "Подтвердить" }, "modal_confirm_action_cancel_delete_selector": { "message": "Отмена" }, "modal_confirm_action_submit_delete_sitemap": { "message": "Подтвердить" }, diff --git a/src/scripts/Controller.js b/src/scripts/Controller.js index c6847156..fc7e3bbf 100644 --- a/src/scripts/Controller.js +++ b/src/scripts/Controller.js @@ -204,6 +204,12 @@ export default class SitemapController { '.delete_selector_submit': { click: this.confirmDeleteSelector, }, + '.update_selector_submit': { + click: this.confirmDeleteChildSelectors, + }, + '#modal-save-child-selectors': { + click: this.confirmSaveChildSelectors, + }, '.delete_sitemap_submit': { click: this.confirmDeleteSitemap, }, @@ -1401,7 +1407,38 @@ export default class SitemapController { const newSelector = this.getCurrentlyEditedSelector(); const validator = this.getFormValidator(); validator.revalidateField('id'); - // cancel submit if invalid form + if (selector.type !== newSelector.type) { + const children = sitemap.selectors.filter(selectorFromList => + selectorFromList.parentSelectors.includes(selector.uuid) + ); + if (children.length > 0) { + this.initConfirmActionPanel({ action: 'update_selector' }); + if (newSelector.canHaveChildSelectors()) { + const saveSelectorsBtn = $('