Browse Source

Fixes #5 . Added validation for mandatory params.

master
Radu Liviu Carjan 3 years ago
parent
commit
9d778ef184
  1. 14
      app/SearchDisplace/Searchers/Mapper.php
  2. 3
      app/SearchDisplace/Searchers/SearchersCollection.php
  3. 7
      app/SearchDisplace/Searchers/SearchersStorage.php
  4. 473
      public/js/app.js
  5. 3
      resources/js/app.ts
  6. 9
      resources/js/components/Home/Home.ts
  7. 4
      resources/js/components/ProcessFile/ProcessFile.scss
  8. 14
      resources/js/components/ProcessFile/ProcessFile.ts
  9. 7
      resources/js/components/ProcessFile/ProcessFile.vue
  10. 3
      resources/js/interfaces/Searcher.ts

14
app/SearchDisplace/Searchers/Mapper.php

@ -11,54 +11,67 @@ class Mapper
$this->mapper = [
'amount-of-money' => [
'name' => 'Amount Of Money',
'param' => SearchersCollection::PARAM_REQUIRED
],
'credit-card-number' => [
'name' => 'Credit Card Number',
'param' => SearchersCollection::PARAM_REQUIRED
],
'distance' => [
'name' => 'Distance',
'param' => SearchersCollection::PARAM_REQUIRED
],
'duration' => [
'name' => 'Duration',
'param' => SearchersCollection::PARAM_REQUIRED
],
'email' => [
'name' => 'Email',
'param' => SearchersCollection::PARAM_OPTIONAL
],
'numeral' => [
'name' => 'Numeral',
'param' => SearchersCollection::PARAM_REQUIRED
],
'ordinal' => [
'name' => 'Ordinal',
'param' => SearchersCollection::PARAM_REQUIRED
],
'phone-number' => [
'name' => 'Phone Number',
'param' => SearchersCollection::PARAM_REQUIRED
],
'quantity' => [
'name' => 'Quantity',
'param' => SearchersCollection::PARAM_REQUIRED
],
'temperature' => [
'name' => 'Temperature',
'param' => SearchersCollection::PARAM_REQUIRED
],
'time' => [
'name' => 'Time',
'param' => SearchersCollection::PARAM_REQUIRED
],
'url' => [
'name' => 'URL',
'param' => SearchersCollection::PARAM_REQUIRED
],
'volume' => [
'name' => 'Volume',
'param' => SearchersCollection::PARAM_REQUIRED
],
];
}
@ -76,6 +89,7 @@ class Mapper
$items[$key] = [
'id' => $key,
'name' => $value['name'],
'param' => $value['param']
];
}

3
app/SearchDisplace/Searchers/SearchersCollection.php

@ -4,6 +4,9 @@ namespace App\SearchDisplace\Searchers;
class SearchersCollection
{
const PARAM_REQUIRED = 'required';
const PARAM_OPTIONAL = 'optional';
public function all()
{
$collection = [];

7
app/SearchDisplace/Searchers/SearchersStorage.php

@ -28,6 +28,13 @@ class SearchersStorage
$searchers[$fileName] = [
'id' => $fileName,
'name' => $result[1],
'param' => SearchersCollection::PARAM_REQUIRED
];
} else if (count($result) === 3) {
$searchers[$fileName] = [
'id' => $fileName,
'name' => $result[1],
'param' => $result[2]
];
}
}

473
public/js/app.js

@ -3166,7 +3166,7 @@ AppHeader = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__decorate)([vue_class_compone
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony import */ var _bootstrap__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./bootstrap */ "./resources/js/bootstrap.ts");
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm.js");
/* harmony import */ var vue__WEBPACK_IMPORTED_MODULE_41__ = __webpack_require__(/*! vue */ "./node_modules/vue/dist/vue.esm.js");
/* harmony import */ var primevue_config__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! primevue/config */ "./node_modules/primevue/config/index.js");
/* harmony import */ var primevue_button__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! primevue/button */ "./node_modules/primevue/button/index.js");
/* harmony import */ var primevue_panel__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! primevue/panel */ "./node_modules/primevue/panel/index.js");
@ -3197,15 +3197,16 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var primevue_scrollpanel__WEBPACK_IMPORTED_MODULE_28__ = __webpack_require__(/*! primevue/scrollpanel */ "./node_modules/primevue/scrollpanel/index.js");
/* harmony import */ var primevue_confirmationservice__WEBPACK_IMPORTED_MODULE_29__ = __webpack_require__(/*! primevue/confirmationservice */ "./node_modules/primevue/confirmationservice/index.js");
/* harmony import */ var primevue_confirmdialog__WEBPACK_IMPORTED_MODULE_30__ = __webpack_require__(/*! primevue/confirmdialog */ "./node_modules/primevue/confirmdialog/index.js");
/* harmony import */ var _components_layout_Header_vue__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! ./components/layout/Header.vue */ "./resources/js/components/layout/Header.vue");
/* harmony import */ var _components_layout_Footer_vue__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./components/layout/Footer.vue */ "./resources/js/components/layout/Footer.vue");
/* harmony import */ var _components_Regex_Create_vue__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./components/Regex/Create.vue */ "./resources/js/components/Regex/Create.vue");
/* harmony import */ var _components_Searchers_Index_vue__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./components/Searchers/Index.vue */ "./resources/js/components/Searchers/Index.vue");
/* harmony import */ var _components_Searchers_Create_vue__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./components/Searchers/Create.vue */ "./resources/js/components/Searchers/Create.vue");
/* harmony import */ var _components_Searchers_Show_vue__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./components/Searchers/Show.vue */ "./resources/js/components/Searchers/Show.vue");
/* harmony import */ var _plugins_ApiPlugin__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./plugins/ApiPlugin */ "./resources/js/plugins/ApiPlugin.ts");
/* harmony import */ var _components_Home_Home_vue__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./components/Home/Home.vue */ "./resources/js/components/Home/Home.vue");
/* harmony import */ var _components_ProcessFile_ProcessFile_vue__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./components/ProcessFile/ProcessFile.vue */ "./resources/js/components/ProcessFile/ProcessFile.vue");
/* harmony import */ var primevue_tooltip__WEBPACK_IMPORTED_MODULE_31__ = __webpack_require__(/*! primevue/tooltip */ "./node_modules/primevue/tooltip/index.js");
/* harmony import */ var _components_layout_Header_vue__WEBPACK_IMPORTED_MODULE_32__ = __webpack_require__(/*! ./components/layout/Header.vue */ "./resources/js/components/layout/Header.vue");
/* harmony import */ var _components_layout_Footer_vue__WEBPACK_IMPORTED_MODULE_33__ = __webpack_require__(/*! ./components/layout/Footer.vue */ "./resources/js/components/layout/Footer.vue");
/* harmony import */ var _components_Regex_Create_vue__WEBPACK_IMPORTED_MODULE_34__ = __webpack_require__(/*! ./components/Regex/Create.vue */ "./resources/js/components/Regex/Create.vue");
/* harmony import */ var _components_Searchers_Index_vue__WEBPACK_IMPORTED_MODULE_35__ = __webpack_require__(/*! ./components/Searchers/Index.vue */ "./resources/js/components/Searchers/Index.vue");
/* harmony import */ var _components_Searchers_Create_vue__WEBPACK_IMPORTED_MODULE_36__ = __webpack_require__(/*! ./components/Searchers/Create.vue */ "./resources/js/components/Searchers/Create.vue");
/* harmony import */ var _components_Searchers_Show_vue__WEBPACK_IMPORTED_MODULE_37__ = __webpack_require__(/*! ./components/Searchers/Show.vue */ "./resources/js/components/Searchers/Show.vue");
/* harmony import */ var _plugins_ApiPlugin__WEBPACK_IMPORTED_MODULE_38__ = __webpack_require__(/*! ./plugins/ApiPlugin */ "./resources/js/plugins/ApiPlugin.ts");
/* harmony import */ var _components_Home_Home_vue__WEBPACK_IMPORTED_MODULE_39__ = __webpack_require__(/*! ./components/Home/Home.vue */ "./resources/js/components/Home/Home.vue");
/* harmony import */ var _components_ProcessFile_ProcessFile_vue__WEBPACK_IMPORTED_MODULE_40__ = __webpack_require__(/*! ./components/ProcessFile/ProcessFile.vue */ "./resources/js/components/ProcessFile/ProcessFile.vue");
/**
@ -3239,6 +3240,7 @@ __webpack_require__.r(__webpack_exports__);
// Own components
@ -3252,54 +3254,55 @@ __webpack_require__.r(__webpack_exports__);
vue__WEBPACK_IMPORTED_MODULE_40__.default.use(primevue_config__WEBPACK_IMPORTED_MODULE_1__.default, {
vue__WEBPACK_IMPORTED_MODULE_41__.default.use(primevue_config__WEBPACK_IMPORTED_MODULE_1__.default, {
ripple: true
});
vue__WEBPACK_IMPORTED_MODULE_40__.default.use(primevue_toastservice__WEBPACK_IMPORTED_MODULE_14__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.use(primevue_confirmationservice__WEBPACK_IMPORTED_MODULE_29__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.use(_plugins_ApiPlugin__WEBPACK_IMPORTED_MODULE_37__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Button', primevue_button__WEBPACK_IMPORTED_MODULE_2__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Panel', primevue_panel__WEBPACK_IMPORTED_MODULE_3__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Card', primevue_card__WEBPACK_IMPORTED_MODULE_4__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('FileUpload', primevue_fileupload__WEBPACK_IMPORTED_MODULE_5__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('BlockUI', primevue_blockui__WEBPACK_IMPORTED_MODULE_6__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Sidebar', primevue_sidebar__WEBPACK_IMPORTED_MODULE_7__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('OrderList', primevue_orderlist__WEBPACK_IMPORTED_MODULE_8__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Chip', primevue_chip__WEBPACK_IMPORTED_MODULE_9__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Divider', primevue_divider__WEBPACK_IMPORTED_MODULE_10__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Listbox', primevue_listbox__WEBPACK_IMPORTED_MODULE_11__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Toolbar', primevue_toolbar__WEBPACK_IMPORTED_MODULE_12__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Skeleton', primevue_skeleton__WEBPACK_IMPORTED_MODULE_13__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Toast', primevue_toast__WEBPACK_IMPORTED_MODULE_15__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Dropdown', primevue_dropdown__WEBPACK_IMPORTED_MODULE_17__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Fieldset', primevue_fieldset__WEBPACK_IMPORTED_MODULE_16__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('InputSwitch', primevue_inputswitch__WEBPACK_IMPORTED_MODULE_18__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('DataTable', primevue_datatable__WEBPACK_IMPORTED_MODULE_19__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Column', primevue_column__WEBPACK_IMPORTED_MODULE_20__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('OverlayPanel', primevue_overlaypanel__WEBPACK_IMPORTED_MODULE_21__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Checkbox', primevue_checkbox__WEBPACK_IMPORTED_MODULE_22__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('ProgressSpinner', primevue_progressspinner__WEBPACK_IMPORTED_MODULE_23__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('InputText', primevue_inputtext__WEBPACK_IMPORTED_MODULE_24__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Dialog', primevue_dialog__WEBPACK_IMPORTED_MODULE_25__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Message', primevue_message__WEBPACK_IMPORTED_MODULE_26__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('Timeline', primevue_timeline__WEBPACK_IMPORTED_MODULE_27__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('ScrollPanel', primevue_scrollpanel__WEBPACK_IMPORTED_MODULE_28__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('ConfirmDialog', primevue_confirmdialog__WEBPACK_IMPORTED_MODULE_30__.default); // Layout
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('app-header', _components_layout_Header_vue__WEBPACK_IMPORTED_MODULE_31__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('app-footer', _components_layout_Footer_vue__WEBPACK_IMPORTED_MODULE_32__.default); // Views
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('home', _components_Home_Home_vue__WEBPACK_IMPORTED_MODULE_38__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('regex-create', _components_Regex_Create_vue__WEBPACK_IMPORTED_MODULE_33__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('searchers-index', _components_Searchers_Index_vue__WEBPACK_IMPORTED_MODULE_34__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('searchers-create', _components_Searchers_Create_vue__WEBPACK_IMPORTED_MODULE_35__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('searchers-show', _components_Searchers_Show_vue__WEBPACK_IMPORTED_MODULE_36__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('searchers-index', _components_Searchers_Index_vue__WEBPACK_IMPORTED_MODULE_34__.default); // Includes
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('process-file', _components_ProcessFile_ProcessFile_vue__WEBPACK_IMPORTED_MODULE_39__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('app-header', _components_layout_Header_vue__WEBPACK_IMPORTED_MODULE_31__.default);
vue__WEBPACK_IMPORTED_MODULE_40__.default.component('app-footer', _components_layout_Footer_vue__WEBPACK_IMPORTED_MODULE_32__.default);
new vue__WEBPACK_IMPORTED_MODULE_40__.default({
vue__WEBPACK_IMPORTED_MODULE_41__.default.use(primevue_toastservice__WEBPACK_IMPORTED_MODULE_14__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.use(primevue_confirmationservice__WEBPACK_IMPORTED_MODULE_29__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.use(_plugins_ApiPlugin__WEBPACK_IMPORTED_MODULE_38__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Button', primevue_button__WEBPACK_IMPORTED_MODULE_2__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Panel', primevue_panel__WEBPACK_IMPORTED_MODULE_3__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Card', primevue_card__WEBPACK_IMPORTED_MODULE_4__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('FileUpload', primevue_fileupload__WEBPACK_IMPORTED_MODULE_5__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('BlockUI', primevue_blockui__WEBPACK_IMPORTED_MODULE_6__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Sidebar', primevue_sidebar__WEBPACK_IMPORTED_MODULE_7__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('OrderList', primevue_orderlist__WEBPACK_IMPORTED_MODULE_8__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Chip', primevue_chip__WEBPACK_IMPORTED_MODULE_9__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Divider', primevue_divider__WEBPACK_IMPORTED_MODULE_10__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Listbox', primevue_listbox__WEBPACK_IMPORTED_MODULE_11__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Toolbar', primevue_toolbar__WEBPACK_IMPORTED_MODULE_12__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Skeleton', primevue_skeleton__WEBPACK_IMPORTED_MODULE_13__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Toast', primevue_toast__WEBPACK_IMPORTED_MODULE_15__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Dropdown', primevue_dropdown__WEBPACK_IMPORTED_MODULE_17__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Fieldset', primevue_fieldset__WEBPACK_IMPORTED_MODULE_16__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('InputSwitch', primevue_inputswitch__WEBPACK_IMPORTED_MODULE_18__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('DataTable', primevue_datatable__WEBPACK_IMPORTED_MODULE_19__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Column', primevue_column__WEBPACK_IMPORTED_MODULE_20__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('OverlayPanel', primevue_overlaypanel__WEBPACK_IMPORTED_MODULE_21__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Checkbox', primevue_checkbox__WEBPACK_IMPORTED_MODULE_22__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('ProgressSpinner', primevue_progressspinner__WEBPACK_IMPORTED_MODULE_23__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('InputText', primevue_inputtext__WEBPACK_IMPORTED_MODULE_24__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Dialog', primevue_dialog__WEBPACK_IMPORTED_MODULE_25__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Message', primevue_message__WEBPACK_IMPORTED_MODULE_26__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('Timeline', primevue_timeline__WEBPACK_IMPORTED_MODULE_27__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('ScrollPanel', primevue_scrollpanel__WEBPACK_IMPORTED_MODULE_28__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('ConfirmDialog', primevue_confirmdialog__WEBPACK_IMPORTED_MODULE_30__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.directive('tooltip', primevue_tooltip__WEBPACK_IMPORTED_MODULE_31__.default); // Layout
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('app-header', _components_layout_Header_vue__WEBPACK_IMPORTED_MODULE_32__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('app-footer', _components_layout_Footer_vue__WEBPACK_IMPORTED_MODULE_33__.default); // Views
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('home', _components_Home_Home_vue__WEBPACK_IMPORTED_MODULE_39__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('regex-create', _components_Regex_Create_vue__WEBPACK_IMPORTED_MODULE_34__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('searchers-index', _components_Searchers_Index_vue__WEBPACK_IMPORTED_MODULE_35__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('searchers-create', _components_Searchers_Create_vue__WEBPACK_IMPORTED_MODULE_36__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('searchers-show', _components_Searchers_Show_vue__WEBPACK_IMPORTED_MODULE_37__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('searchers-index', _components_Searchers_Index_vue__WEBPACK_IMPORTED_MODULE_35__.default); // Includes
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('process-file', _components_ProcessFile_ProcessFile_vue__WEBPACK_IMPORTED_MODULE_40__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('app-header', _components_layout_Header_vue__WEBPACK_IMPORTED_MODULE_32__.default);
vue__WEBPACK_IMPORTED_MODULE_41__.default.component('app-footer', _components_layout_Footer_vue__WEBPACK_IMPORTED_MODULE_33__.default);
new vue__WEBPACK_IMPORTED_MODULE_41__.default({
el: '#app'
});
@ -3412,14 +3415,19 @@ var Home = /*#__PURE__*/function (_Vue) {
_this.error = '';
return _this;
}
/**
* A method which uploads the files to the server for processing
*
* @param {any} event The event containing the uploaded files information
*/
_createClass(Home, [{
key: "mounted",
value: function mounted() {
console.log('SEARCHERS: ', this.searchers);
}
/**
* A method which uploads the files to the server for processing
*
* @param {any} event The event containing the uploaded files information
*/
}, {
key: "uploadFile",
value: function () {
var _uploadFile = _asyncToGenerator( /*#__PURE__*/_babel_runtime_regenerator__WEBPACK_IMPORTED_MODULE_0___default().mark(function _callee(event) {
@ -3940,7 +3948,7 @@ var ProcessFile = /*#__PURE__*/function (_Vue) {
}, {
key: "createDiffPreview",
value: function createDiffPreview() {
console.log('CREATING DIFF PREVIEW: ', this.processedFileContent);
// console.log('CREATING DIFF PREVIEW: ', this.processedFileContent);
this.processedFileContentPreview = this.processedFileContent;
var indexes = [];
@ -3994,6 +4002,17 @@ var ProcessFile = /*#__PURE__*/function (_Vue) {
return downloadOdt;
}()
}, {
key: "isValidParam",
value: function isValidParam(paramId, paramType) {
console.log('PARAM: ', paramId, this.searchersOptions[paramId]);
if (paramType === 'required' && (this.searchersOptions[paramId] === '' || this.searchersOptions[paramId] === undefined)) {
return false;
}
return true;
}
/**
* Watch the `showDiffHighlight` property for changes
*
@ -4987,7 +5006,7 @@ __webpack_require__.r(__webpack_exports__);
var ___CSS_LOADER_EXPORT___ = _node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_0___default()(function(i){return i[1]});
// Module
___CSS_LOADER_EXPORT___.push([module.id, ".file-card {\n flex: 0 1 49%;\n}\n.p-overlaypanel {\n min-width: 450px;\n}\n.p-toolbar-group-right button {\n margin-left: 10px;\n}\n.p-sidebar-content .p-toolbar {\n margin-top: 32px;\n}\n.p-card-header .p-toolbar {\n border: unset;\n border-radius: unset;\n border-bottom: 1px solid #dee2e6;\n padding: 0.5rem;\n}\nbutton.add-searchers {\n height: 100%;\n}\n.p-button.sidebar-toggle-button {\n position: absolute;\n left: calc(-16px - 2.357rem);\n top: 50px;\n border-radius: 3px 0 0 3px;\n}\n.p-col.sidebar-title {\n display: flex;\n align-content: flex-start;\n justify-content: flex-start;\n}\nlabel.switch-label {\n padding-right: 10px;\n}\n.md-viewer {\n text-align: start !important;\n}\n.md-viewer h1, .md-viewer h2, .md-viewer h3, .md-viewer h4, .md-viewer h5 {\n font-size: initial;\n}\n@media only screen and (max-width: 1680px) {\n.p-card-header .p-toolbar {\n flex-flow: column;\n align-items: start;\n}\n}", ""]);
___CSS_LOADER_EXPORT___.push([module.id, ".file-card {\n flex: 0 1 49%;\n}\n.p-overlaypanel {\n min-width: 450px;\n}\n.p-toolbar-group-right button {\n margin-left: 10px;\n}\n.p-sidebar-content .p-toolbar {\n margin-top: 32px;\n}\n.p-card-header .p-toolbar {\n border: unset;\n border-radius: unset;\n border-bottom: 1px solid #dee2e6;\n padding: 0.5rem;\n}\nbutton.add-searchers {\n height: 100%;\n}\n.p-button.sidebar-toggle-button {\n position: absolute;\n left: calc(-16px - 2.357rem);\n top: 50px;\n border-radius: 3px 0 0 3px;\n}\n.p-col.sidebar-title {\n display: flex;\n align-content: flex-start;\n justify-content: flex-start;\n}\nlabel.switch-label {\n padding-right: 10px;\n}\n.md-viewer {\n text-align: start !important;\n}\n.md-viewer h1, .md-viewer h2, .md-viewer h3, .md-viewer h4, .md-viewer h5 {\n font-size: initial;\n}\n@media only screen and (max-width: 1680px) {\n.p-card-header .p-toolbar {\n flex-flow: column;\n align-items: start;\n}\n}\n.p-tooltip {\n z-index: 2004 !important;\n}", ""]);
// Exports
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (___CSS_LOADER_EXPORT___);
@ -8536,6 +8555,313 @@ module.exports = __webpack_require__(/*! ./Toolbar.vue */ "./node_modules/primev
/***/ }),
/***/ "./node_modules/primevue/tooltip/Tooltip.js":
/*!**************************************************!*\
!*** ./node_modules/primevue/tooltip/Tooltip.js ***!
\**************************************************/
/***/ ((__unused_webpack_module, exports, __webpack_require__) => {
"use strict";
Object.defineProperty(exports, "__esModule", ({
value: true
}));
exports.default = void 0;
var _UniqueComponentId = _interopRequireDefault(__webpack_require__(/*! ../utils/UniqueComponentId */ "./node_modules/primevue/utils/UniqueComponentId.js"));
var _DomHandler = _interopRequireDefault(__webpack_require__(/*! ../utils/DomHandler */ "./node_modules/primevue/utils/DomHandler.js"));
var _ConnectedOverlayScrollHandler = _interopRequireDefault(__webpack_require__(/*! ../utils/ConnectedOverlayScrollHandler */ "./node_modules/primevue/utils/ConnectedOverlayScrollHandler.js"));
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function bindEvents(el) {
var modifiers = el.$_ptooltipModifiers;
if (modifiers.focus) {
el.addEventListener('focus', onFocus);
el.addEventListener('blur', onBlur);
} else {
el.addEventListener('mouseenter', onMouseEnter);
el.addEventListener('mouseleave', onMouseLeave);
el.addEventListener('click', onClick);
}
}
function unbindEvents(el) {
var modifiers = el.$_ptooltipModifiers;
if (modifiers.focus) {
el.removeEventListener('focus', onFocus);
el.removeEventListener('blur', onBlur);
} else {
el.removeEventListener('mouseenter', onMouseEnter);
el.removeEventListener('mouseleave', onMouseLeave);
el.removeEventListener('click', onClick);
}
}
function bindScrollListener(el) {
if (!el.$_ptooltipScrollHandler) {
el.$_ptooltipScrollHandler = new _ConnectedOverlayScrollHandler.default(el, function () {
hide(el);
});
}
el.$_ptooltipScrollHandler.bindScrollListener();
}
function unbindScrollListener(el) {
if (el.$_ptooltipScrollHandler) {
el.$_ptooltipScrollHandler.unbindScrollListener();
}
}
function onMouseEnter(event) {
show(event.currentTarget);
}
function onMouseLeave(event) {
hide(event.currentTarget);
}
function onFocus(event) {
show(event.currentTarget);
}
function onBlur(event) {
hide(event.currentTarget);
}
function onClick(event) {
hide(event.currentTarget);
}
function show(el) {
if (!el.$_ptooltipValue) {
return;
}
var tooltipElement = create(el);
align(el);
_DomHandler.default.fadeIn(tooltipElement, 250);
tooltipElement.style.zIndex = ++_DomHandler.default.zindex;
window.addEventListener('resize', function onWindowResize() {
hide(el);
this.removeEventListener('resize', onWindowResize);
});
bindScrollListener(el);
}
function hide(el) {
remove(el);
unbindScrollListener(el);
}
function getTooltipElement(el) {
return document.getElementById(el.$_ptooltipId);
}
function create(el) {
var id = (0, _UniqueComponentId.default)() + '_tooltip';
el.$_ptooltipId = id;
var container = document.createElement('div');
container.id = id;
var tooltipArrow = document.createElement('div');
tooltipArrow.className = 'p-tooltip-arrow';
container.appendChild(tooltipArrow);
var tooltipText = document.createElement('div');
tooltipText.className = 'p-tooltip-text';
tooltipText.innerHTML = el.$_ptooltipValue;
container.appendChild(tooltipText);
document.body.appendChild(container);
container.style.display = 'inline-block';
return container;
}
function remove(el) {
if (el) {
var tooltipElement = getTooltipElement(el);
if (tooltipElement && tooltipElement.parentElement) {
document.body.removeChild(tooltipElement);
}
el.$_ptooltipId = null;
}
}
function align(el) {
var modifiers = el.$_ptooltipModifiers;
if (modifiers.top) {
alignTop(el);
if (isOutOfBounds(el)) {
alignBottom(el);
}
} else if (modifiers.left) {
alignLeft(el);
if (isOutOfBounds(el)) {
alignRight(el);
if (isOutOfBounds(el)) {
alignTop(el);
if (isOutOfBounds(el)) {
alignBottom(el);
}
}
}
} else if (modifiers.bottom) {
alignBottom(el);
if (isOutOfBounds(el)) {
alignTop(el);
}
} else {
alignRight(el);
if (isOutOfBounds(el)) {
alignLeft(el);
if (isOutOfBounds(el)) {
alignTop(el);
if (isOutOfBounds(el)) {
alignBottom(el);
}
}
}
}
}
function getHostOffset(el) {
var offset = el.getBoundingClientRect();
var targetLeft = offset.left + _DomHandler.default.getWindowScrollLeft();
var targetTop = offset.top + _DomHandler.default.getWindowScrollTop();
return {
left: targetLeft,
top: targetTop
};
}
function alignRight(el) {
preAlign(el, 'right');
var tooltipElement = getTooltipElement(el);
var hostOffset = getHostOffset(el);
var left = hostOffset.left + _DomHandler.default.getOuterWidth(el);
var top = hostOffset.top + (_DomHandler.default.getOuterHeight(el) - _DomHandler.default.getOuterHeight(tooltipElement)) / 2;
tooltipElement.style.left = left + 'px';
tooltipElement.style.top = top + 'px';
}
function alignLeft(el) {
preAlign(el, 'left');
var tooltipElement = getTooltipElement(el);
var hostOffset = getHostOffset(el);
var left = hostOffset.left - _DomHandler.default.getOuterWidth(tooltipElement);
var top = hostOffset.top + (_DomHandler.default.getOuterHeight(el) - _DomHandler.default.getOuterHeight(tooltipElement)) / 2;
tooltipElement.style.left = left + 'px';
tooltipElement.style.top = top + 'px';
}
function alignTop(el) {
preAlign(el, 'top');
var tooltipElement = getTooltipElement(el);
var hostOffset = getHostOffset(el);
var left = hostOffset.left + (_DomHandler.default.getOuterWidth(el) - _DomHandler.default.getOuterWidth(tooltipElement)) / 2;
var top = hostOffset.top - _DomHandler.default.getOuterHeight(tooltipElement);
tooltipElement.style.left = left + 'px';
tooltipElement.style.top = top + 'px';
}
function alignBottom(el) {
preAlign(el, 'bottom');
var tooltipElement = getTooltipElement(el);
var hostOffset = getHostOffset(el);
var left = hostOffset.left + (_DomHandler.default.getOuterWidth(el) - _DomHandler.default.getOuterWidth(tooltipElement)) / 2;
var top = hostOffset.top + _DomHandler.default.getOuterHeight(el);
tooltipElement.style.left = left + 'px';
tooltipElement.style.top = top + 'px';
}
function preAlign(el, position) {
var tooltipElement = getTooltipElement(el);
tooltipElement.style.left = -999 + 'px';
tooltipElement.style.top = -999 + 'px';
tooltipElement.className = 'p-tooltip p-component p-tooltip-' + position;
}
function isOutOfBounds(el) {
var tooltipElement = getTooltipElement(el);
var offset = tooltipElement.getBoundingClientRect();
var targetTop = offset.top;
var targetLeft = offset.left;
var width = _DomHandler.default.getOuterWidth(tooltipElement);
var height = _DomHandler.default.getOuterHeight(tooltipElement);
var viewport = _DomHandler.default.getViewport();
return targetLeft + width > viewport.width || targetLeft < 0 || targetTop < 0 || targetTop + height > viewport.height;
}
var Tooltip = {
bind: function bind(el, options) {
el.$_ptooltipModifiers = options.modifiers;
el.$_ptooltipValue = options.value;
bindEvents(el);
},
unbind: function unbind(el) {
remove(el);
unbindEvents(el);
if (el.$_ptooltipScrollHandler) {
el.$_ptooltipScrollHandler.destroy();
el.$_ptooltipScrollHandler = null;
}
},
update: function update(el, options) {
el.$_ptooltipModifiers = options.modifiers;
el.$_ptooltipValue = options.value;
}
};
var _default = Tooltip;
exports.default = _default;
/***/ }),
/***/ "./node_modules/primevue/tooltip/index.js":
/*!************************************************!*\
!*** ./node_modules/primevue/tooltip/index.js ***!
\************************************************/
/***/ ((module, __unused_webpack_exports, __webpack_require__) => {
"use strict";
module.exports = __webpack_require__(/*! ./Tooltip.js */ "./node_modules/primevue/tooltip/Tooltip.js");
/***/ }),
/***/ "./node_modules/primevue/utils/ConnectedOverlayScrollHandler.js":
/*!**********************************************************************!*\
!*** ./node_modules/primevue/utils/ConnectedOverlayScrollHandler.js ***!
@ -29241,7 +29567,26 @@ var render = function() {
),
_vm._v(" "),
_c("InputText", {
directives: [
{
name: "tooltip",
rawName: "v-tooltip.top",
value:
slotProps.data.param === "required"
? "This field is required."
: null,
expression:
"\n (slotProps.data.param === 'required') ?\n 'This field is required.' : null\n ",
modifiers: { top: true }
}
],
staticClass: "p-inputtext-sm",
class: {
"p-invalid": !_vm.isValidParam(
slotProps.data.id,
slotProps.data.param
)
},
attrs: {
id: "replace_with__" + slotProps.data.id,
type: "text"

3
resources/js/app.ts

@ -35,6 +35,7 @@ import Timeline from 'primevue/timeline';
import ScrollPanel from 'primevue/scrollpanel';
import ConfirmationService from 'primevue/confirmationservice';
import ConfirmDialog from 'primevue/confirmdialog';
import Tooltip from 'primevue/tooltip';
// Own components
import AppHeader from './components/layout/Header.vue';
@ -83,6 +84,8 @@ Vue.component('Timeline', Timeline);
Vue.component('ScrollPanel', ScrollPanel);
Vue.component('ConfirmDialog', ConfirmDialog);
Vue.directive('tooltip', Tooltip);
// Layout
Vue.component('app-header', AppHeader);
Vue.component('app-footer', AppFooter);

9
resources/js/components/Home/Home.ts

@ -1,10 +1,11 @@
import {Vue, Component, Prop} from 'vue-property-decorator';
import FileUploadResponse from '@/interfaces/responses/FileUploadResponse';
import { Searcher } from '@/interfaces/Searcher';
@Component
export default class Home extends Vue {
@Prop({default: []})
public readonly searchers!: { [key: string]: string; }
public readonly searchers!: Searcher[];
public uiBlocked = false;
public uploading = false;
@ -15,6 +16,12 @@ export default class Home extends Vue {
};
public error: string = '';
public mounted()
{
console.log('SEARCHERS: ', this.searchers);
}
/**
* A method which uploads the files to the server for processing
*

4
resources/js/components/ProcessFile/ProcessFile.scss

@ -63,4 +63,8 @@ label.switch-label {
flex-flow: column;
align-items: start;
}
}
.p-tooltip {
z-index: 2004 !important;
}

14
resources/js/components/ProcessFile/ProcessFile.ts

@ -258,7 +258,7 @@ export default class ProcessFile extends Vue {
* Create the diff preview for the document
*/
private createDiffPreview() {
console.log('CREATING DIFF PREVIEW: ', this.processedFileContent);
// console.log('CREATING DIFF PREVIEW: ', this.processedFileContent);
this.processedFileContentPreview = this.processedFileContent;
let indexes: Array<{ start: number; end: number }> = [];
@ -294,6 +294,18 @@ export default class ProcessFile extends Vue {
window.open(`${window.location.origin}/file/download/` + response.path);
}
private isValidParam(paramId: string, paramType: string): boolean {
console.log('PARAM: ', paramId, this.searchersOptions[paramId]);
if (
paramType === 'required' &&
(this.searchersOptions[paramId] === '' || this.searchersOptions[paramId] === undefined)
) {
return false;
}
return true;
}
/**
* Watch the `showDiffHighlight` property for changes
*

7
resources/js/components/ProcessFile/ProcessFile.vue

@ -209,7 +209,12 @@
:id="`replace_with__${slotProps.data.id}`"
type="text"
class="p-inputtext-sm"
v-model="searchersOptions[slotProps.data.id]"/>
v-model="searchersOptions[slotProps.data.id]"
v-tooltip.top="
(slotProps.data.param === 'required') ?
'This field is required.' : null
"
:class="{'p-invalid': !isValidParam(slotProps.data.id, slotProps.data.param)}"/>
</div>
</div>

3
resources/js/interfaces/Searcher.ts

@ -1,5 +1,6 @@
export interface Searcher {
id: string;
name: string,
description: string,
param: string,
type: string;
}
Loading…
Cancel
Save