diff --git a/src/components/on-demand/wt-save-failed-popup/__tests__/WtPopup.spec.js b/src/components/on-demand/wt-save-failed-popup/__tests__/WtPopup.spec.js
new file mode 100644
index 00000000..c1692b30
--- /dev/null
+++ b/src/components/on-demand/wt-save-failed-popup/__tests__/WtPopup.spec.js
@@ -0,0 +1,9 @@
+import { shallowMount } from '@vue/test-utils';
+import WtSaveFailedPopup from '../wt-save-failed-popup.vue';
+
+describe('WtSaveFailedPopup', () => {
+ it('renders a component', () => {
+ const wrapper = shallowMount(WtSaveFailedPopup);
+ expect(wrapper.classes('wt-save-failed-popup')).toBe(true);
+ });
+});
diff --git a/src/components/on-demand/wt-save-failed-popup/wt-save-failed-popup.vue b/src/components/on-demand/wt-save-failed-popup/wt-save-failed-popup.vue
new file mode 100644
index 00000000..1f15e5c7
--- /dev/null
+++ b/src/components/on-demand/wt-save-failed-popup/wt-save-failed-popup.vue
@@ -0,0 +1,70 @@
+
+
+
+
+
+
+
diff --git a/src/locale/en/en.js b/src/locale/en/en.js
index add0f664..fd7f6f58 100644
--- a/src/locale/en/en.js
+++ b/src/locale/en/en.js
@@ -359,5 +359,10 @@ export default {
message: 'The limit for agents to take a pause has been exceeded. The pause is unavailable right now.',
},
},
+ saveFailedPopup: {
+ title: 'Save failed',
+ label: 'Something went wrong, please try again',
+ exportToJson: 'Export to JSON',
+ },
},
};
diff --git a/src/locale/kz/kz.js b/src/locale/kz/kz.js
index d35dbed6..8b9ffccc 100644
--- a/src/locale/kz/kz.js
+++ b/src/locale/kz/kz.js
@@ -322,5 +322,10 @@ export default {
unlimited: 'Шексіз',
},
},
+ saveFailedPopup: {
+ title: 'Қатені сақтау',
+ label: 'Бірдеңе дұрыс болмады.',
+ exportToJson: 'JSON файлына экспорттау',
+ },
},
};
diff --git a/src/locale/ru/ru.js b/src/locale/ru/ru.js
index e22b5ed1..0d5986a9 100644
--- a/src/locale/ru/ru.js
+++ b/src/locale/ru/ru.js
@@ -357,5 +357,10 @@ export default {
message: 'Лимит операторов в паузе превышен. Перерыв сейчас недоступен.',
},
},
+ saveFailedPopup: {
+ title: 'Ошибка сохранения',
+ label: 'Что-то пошло не так. Пожалуйста, попробуйте еще раз',
+ exportToJson: 'Экспортировать в JSON',
+ },
},
};
diff --git a/src/locale/ua/ua.js b/src/locale/ua/ua.js
index 922632d5..5c95a6e2 100644
--- a/src/locale/ua/ua.js
+++ b/src/locale/ua/ua.js
@@ -357,5 +357,10 @@ export default {
message: 'Ліміт операторів в паузі перевищено. Перерва наразі недоступна.',
},
},
+ saveFailedPopup: {
+ title: 'Помилка збереження',
+ label: 'Щось пішло не так. Будь ласка, спробуйте ще раз',
+ exportToJson: 'Експортувати в JSON',
+ },
},
};
diff --git a/src/scripts/saveAsJSON.js b/src/scripts/saveAsJSON.js
new file mode 100644
index 00000000..5237e5a2
--- /dev/null
+++ b/src/scripts/saveAsJSON.js
@@ -0,0 +1,7 @@
+import { saveAs } from 'file-saver';
+
+export const saveAsJSON = (name, content) => {
+ const fileName = name.replace(/[ ,]+/g, '-');
+ const file = new Blob([JSON.stringify(content, null, 4)], { type: 'application/json' });
+ saveAs(file, fileName);
+};