Skip to content

Commit b45121f

Browse files
GooDRomkamxsnq
andauthored
Ask confirmation when deleting selector or sitemap (#64)
* Added delete confirmation window. Needed fix bug * Fixed bag * Fixed bag of clicking anywhere outside the modal * Fixed bag of clicking anywhere outside the modal * Changed the appearance and mechanism of the confirm panel * Fixed eng messages * Fixed code style * Fixed style problems and divided showConfirmPanel function on two (show and wait) * added spaces * Fixed styles problems * Bad fix for backdrop click * working example * tried to move i18n keys to view + some renaming * revert to 'Confirm/Подтвердить' for submit label * Fixed confirm and cancel buttons Co-authored-by: Max Varlamov <[email protected]>
1 parent e20d1d0 commit b45121f

File tree

5 files changed

+95
-10
lines changed

5 files changed

+95
-10
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "web-scraper-chrome-extension",
3-
"version": "0.3.617",
3+
"version": "0.3.618",
44
"description": "Web data extraction tool implemented as chrome extension",
55
"scripts": {
66
"lint": "eslint --ext .js src",

src/_locales/en/messages.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -272,5 +272,18 @@
272272
"extension_description": { "message": "Tool for data extraction from websites" },
273273
"browse_data_search": { "message": "Search in scraped data" },
274274
"parent_selector_self_citation": { "message": "The selector cannot only point to itself" },
275-
"sitemap_export_copy_text_button": { "message": "Copy the sitemap to the clipboard" }
275+
"sitemap_export_copy_text_button": { "message": "Copy the sitemap to the clipboard" },
276+
"modal_confirm_action_title_delete_selector": {
277+
"message": "Are you sure you want to delete selector <span id='modal-selector-id'></span>?"
278+
},
279+
"modal_confirm_action_title_delete_sitemap": {
280+
"message": "Are you sure you want to delete sitemap <span id='modal-sitemap-id'></span>?"
281+
},
282+
"modal_confirm_action_message_delete_selector": {
283+
"message": "The selector that is being deleted has child selectors (<span id='modal-child-count'></span> obj), which will be deleted"
284+
},
285+
"modal_confirm_action_submit_delete_selector": { "message": "Confirm" },
286+
"modal_confirm_action_cancel_delete_selector": { "message": "Cancel" },
287+
"modal_confirm_action_submit_delete_sitemap": { "message": "Confirm" },
288+
"modal_confirm_action_cancel_delete_sitemap": { "message": "Cancel" }
276289
}

src/_locales/ru/messages.json

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -304,5 +304,18 @@
304304
"browse_data_search": { "message": "Поиск в собранных данных" },
305305
"content_script_width": { "message": "150px !important" },
306306
"parent_selector_self_citation": { "message": "Селектор не может указывать только на себя" },
307-
"sitemap_export_copy_text_button": { "message": "Скопировать карту обхода в буфер обмена" }
307+
"sitemap_export_copy_text_button": { "message": "Скопировать карту обхода в буфер обмена" },
308+
"modal_confirm_action_title_delete_selector": {
309+
"message": "Вы действительно хотите удалить селектор <span id='modal-selector-id'></span>?"
310+
},
311+
"modal_confirm_action_title_delete_sitemap": {
312+
"message": "Вы действительно хотите удалить карту обхода <span id='modal-sitemap-id'></span>?"
313+
},
314+
"modal_confirm_action_message_delete_selector": {
315+
"message": "У удаляемого селектора имеются дочерние (<span id='modal-child-count'></span> шт.), которые будут удалены"
316+
},
317+
"modal_confirm_action_submit_delete_selector": { "message": "Подтвердить" },
318+
"modal_confirm_action_cancel_delete_selector": { "message": "Отмена" },
319+
"modal_confirm_action_submit_delete_sitemap": { "message": "Подтвердить" },
320+
"modal_confirm_action_cancel_delete_sitemap": { "message": "Отмена" }
308321
}
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
<div class="modal fade" id="confirm-action-modal">
2+
<div class="modal-dialog">
3+
<div class="modal-content">
4+
<div class="modal-header">
5+
<h4
6+
class="modal-title"
7+
id="modal-title"
8+
data-i18n="modal_confirm_action_title_{{action}}"
9+
></h4>
10+
<h5
11+
id="modal-message"
12+
data-i18n="modal_confirm_action_message_{{action}}"
13+
hidden
14+
></h5>
15+
</div>
16+
<div class="modal-footer">
17+
<button
18+
class="btn btn-default"
19+
id="modal-cancel"
20+
data-i18n="modal_confirm_action_cancel_{{action}}"
21+
data-dismiss="modal"
22+
></button>
23+
<button
24+
class="btn btn-primary"
25+
id="modal-submit"
26+
data-i18n="modal_confirm_action_submit_{{action}}"
27+
></button>
28+
</div>
29+
</div>
30+
</div>
31+
</div>

src/scripts/Controller.js

Lines changed: 35 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ export default class SitemapController {
141141
'SitemapSelectorGraph',
142142
'DataPreview',
143143
'ItemCard',
144+
'ActionConfirm',
144145
];
145146

146147
return Promise.all(
@@ -1196,22 +1197,49 @@ export default class SitemapController {
11961197
type: 'SelectorText',
11971198
multiple: false,
11981199
});
1199-
12001200
this._editSelector(selector, sitemap);
12011201
}
12021202

1203+
initConfirmActionPanel(action) {
1204+
$('#confirm-action-modal').remove(); // remove old panel
1205+
$('#viewport').after(ich.ActionConfirm(action));
1206+
Translator.translatePage();
1207+
}
1208+
1209+
showConfirmActionPanel(onConfirm) {
1210+
const $confirmActionModal = $('#confirm-action-modal');
1211+
$('#modal-submit').click(() => {
1212+
$confirmActionModal.modal('hide');
1213+
onConfirm();
1214+
});
1215+
$confirmActionModal.modal('show');
1216+
}
1217+
12031218
async deleteSelector(button) {
1204-
const sitemap = this.state.currentSitemap;
12051219
const selector = $(button).closest('tr').data('selector');
1206-
sitemap.deleteSelector(selector);
1207-
await this.store.saveSitemap(sitemap);
1208-
this.showSitemapSelectorList();
1220+
const sitemap = this.state.currentSitemap;
1221+
const childCount = sitemap.getDirectChildSelectors(selector.id).length;
1222+
this.initConfirmActionPanel({ action: 'delete_selector' });
1223+
$('#modal-selector-id').text(selector.id);
1224+
if (childCount) {
1225+
$('#modal-child-count').text(childCount);
1226+
$('#modal-message').show();
1227+
}
1228+
this.showConfirmActionPanel(async () => {
1229+
sitemap.deleteSelector(selector);
1230+
await this.store.saveSitemap(sitemap);
1231+
this.showSitemapSelectorList();
1232+
});
12091233
}
12101234

12111235
async deleteSitemap(button) {
12121236
const sitemap = $(button).closest('tr').data('sitemap');
1213-
await this.store.deleteSitemap(sitemap);
1214-
await this.showSitemaps();
1237+
this.initConfirmActionPanel({ action: 'delete_sitemap' });
1238+
$('#modal-sitemap-id').text(sitemap._id);
1239+
this.showConfirmActionPanel(async () => {
1240+
await this.store.deleteSitemap(sitemap);
1241+
await this.showSitemaps();
1242+
});
12151243
}
12161244

12171245
initScrapeSitemapConfigValidation() {

0 commit comments

Comments
 (0)