dynamicsmobile
Version:
Allows development of off-line mobile and web business apps over the Dynamics Mobile platform. More info on https://www.dynamicsmobile.com
261 lines • 14.8 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.BackendDmsTask = void 0;
const tslib_1 = require("tslib");
const task_1 = require("../lib-core/task");
const dms_root_container_1 = require("../ioc/dms-root-container");
const context_service_1 = require("../lib-core/context-service");
const device_service_1 = require("../lib-core/device-service");
const files_service_base_1 = require("../lib-core/files-service-base");
const userinterface_service_1 = require("../lib-core/userinterface-service");
const syncpacket_service_1 = require("../lib-core/syncpacket-service");
const docseries_service_1 = require("../lib-core/docseries-service");
const decorators_service_1 = require("../lib-core/decorators-service");
const application_context_service_1 = require("../lib-core/application-context-service");
const configuration_service_1 = require("../lib-core/configuration-service");
const print_service_1 = require("../lib-core/print-service");
const sql_query_service_1 = require("../lib-core/sql-query-service");
const backend_ui_service_1 = require("./backend-ui-service");
const backend_configuration_service_1 = require("./backend-configuration-service");
const backend_applicationcontext_service_1 = require("./backend-applicationcontext-service");
const backend_context_service_1 = require("./backend-context-service");
const backend_files_service_1 = require("./backend-files-service");
const backend_device_service_1 = require("./backend-device-service");
const backend_print_service_1 = require("./backend-print-service");
const backend_sqlquery_service_1 = require("./backend-sqlquery-service");
const backend_syncpacket_service_1 = require("./backend-syncpacket-service");
const backend_docseries_service_1 = require("./backend-docseries-service");
const metadata_service_1 = require("../lib-core/metadata-service");
const backend_metadata_service_1 = require("./backend-metadata-service");
const jquery_1 = tslib_1.__importDefault(require("jquery"));
require("./datatables-import");
const querystring_1 = require("querystring");
const backend_keyvalue_service_1 = require("./backend-keyvalue-service");
const keyvalue_service_1 = require("../lib-core/keyvalue-service");
class BackendDmsTask extends task_1.DmsTask {
setupInjectableServices() {
this.domManager = jquery_1.default;
this.dms = new backend_applicationcontext_service_1.BackendDmsApplicationService(this._appCode, "1.0", this._taskId);
BackendDmsTask._setupInjectableServices(this.dms);
}
static _setupInjectableServices(dms) {
dms_root_container_1.RootDIContainer.addProvider({ provide: application_context_service_1.DmsApplicationService, useValue: dms });
dms_root_container_1.RootDIContainer.addProvider({ provide: context_service_1.ContextService, useClass: backend_context_service_1.BackendContextService, singleton: true });
dms_root_container_1.RootDIContainer.addProvider({ provide: print_service_1.PrintService, useClass: backend_print_service_1.BackendPrintService, singleton: true });
dms_root_container_1.RootDIContainer.addProvider({ provide: device_service_1.DeviceService, useClass: backend_device_service_1.BackendDeviceService, singleton: true });
dms_root_container_1.RootDIContainer.addProvider({ provide: configuration_service_1.ConfigurationService, useClass: backend_configuration_service_1.BackendConfigurationService, singleton: true });
dms_root_container_1.RootDIContainer.addProvider({ provide: files_service_base_1.FileService, useClass: backend_files_service_1.BackendFileService, singleton: true });
dms_root_container_1.RootDIContainer.addProvider({ provide: userinterface_service_1.UserInterfaceService, useClass: backend_ui_service_1.BackendUserInterfaceService, singleton: true });
dms_root_container_1.RootDIContainer.addProvider({ provide: sql_query_service_1.SqlQueryService, useClass: backend_sqlquery_service_1.BackendSqlQueryService, singleton: true });
dms_root_container_1.RootDIContainer.addProvider({ provide: syncpacket_service_1.SyncPacketService, useClass: backend_syncpacket_service_1.BackendSyncPacketService, singleton: true });
dms_root_container_1.RootDIContainer.addProvider({ provide: docseries_service_1.DocumentSeriesService, useClass: backend_docseries_service_1.BackendDocumentSeriesService, singleton: true });
dms_root_container_1.RootDIContainer.addProvider({ provide: decorators_service_1.DecoratorsManager, useClass: decorators_service_1.DecoratorsManager, singleton: true });
dms_root_container_1.RootDIContainer.addProvider({ provide: metadata_service_1.MetadataService, useClass: backend_metadata_service_1.BackendMetadataService, singleton: true });
dms_root_container_1.RootDIContainer.addProvider({ provide: context_service_1.ContextPersister, useClass: backend_context_service_1.BackendContextPersister, singleton: true });
dms_root_container_1.RootDIContainer.addProvider({ provide: keyvalue_service_1.KeyValueService, useClass: backend_keyvalue_service_1.BackendKeyValueService, singleton: true });
}
receiveParentMessage(event) {
const me = this;
const data = event.data;
switch (data.type) {
case "launchtask":
if (data.data.taskId) {
dms_root_container_1.RootDIContainer.inject(userinterface_service_1.UserInterfaceService).launchTask(data.data.taskId);
}
else if (data.data.routeId) {
dms_root_container_1.RootDIContainer.inject(userinterface_service_1.UserInterfaceService).navigate(data.data.routeId);
}
else if (data.data.docId) {
//$dms.uiManager.internalLaunchDoc(data.data);
}
break;
case "cancel":
dms_root_container_1.RootDIContainer.inject(userinterface_service_1.UserInterfaceService).cancel();
break;
case "handleEsc":
dms_root_container_1.RootDIContainer.inject(userinterface_service_1.UserInterfaceService).navigate('prior');
break;
case "modalCallback":
//handleModalCallback(data.confirm, data.callbackId);
break;
}
}
resizePage() {
// var navBar = $(".topbar").height();
// var windowHeight = $("body").height();
// $('.page-wrapper').css("min-height", (windowHeight - navBar) + "px");
// $('.page-wrapper').css("height", (windowHeight - navBar) + "px");
}
// private keyPresslisten(e) {
// let evObj = window.event ? event : e;
// if (evObj.keyCode == 90 && evObj.ctrlKey || evObj.keyCode == 114) {
// var searchBox = $(this).parent().find('.search-box'),
// btnOffset = $(this).offset(),
// pageWidth = $(document).width(),
// searchBoxes = $(document).find('.search-input .search-box');
// searchBoxes.each(function (index) {
// $(this).addClass('hide');
// });
// if ((btnOffset.left + searchBox.width()) > pageWidth) {
// searchBox.addClass('left');
// } else {
// searchBox.addClass('right');
// }
// if (searchBox.hasClass('hide')) {
// searchBox.removeClass('hide');
// }
// }
// }
onSelectDataTableRow() {
//$('.action-btn').removeClass('d-none').removeClass('active');
}
onDeselectDataTableRow() {
//$('.action-btn').addClass('d-none');
//$('.action-menu').hide();
}
initializeUIFramework({ theme, allTaskRoutes }) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
const me = this;
window.addEventListener("message", me.receiveParentMessage, false);
(0, jquery_1.default)(document).on('click', '.accordion .toggle', function (e) {
e.preventDefault();
var $this = (0, jquery_1.default)(this);
if ($this.next().hasClass('show')) {
$this.next().removeClass('show');
$this.next().slideUp(350);
$this.removeClass('active');
}
else {
$this.parent().parent().find('.accordion-header').removeClass('active');
$this.addClass('active');
$this.parent().parent().find('.inner').removeClass('show');
$this.parent().parent().find('.inner').slideUp(350);
$this.next().toggleClass('show');
$this.next().slideToggle(350);
}
});
(0, jquery_1.default)(document).on('click', '.main-nav .dropdown', function () {
(0, jquery_1.default)('.main-nav').toggleClass('selected-item');
(0, jquery_1.default)(this).parent().toggleClass('active');
return false;
});
(0, jquery_1.default)(document).on('click', '.dropdown-submenu .back', function () {
(0, jquery_1.default)('.main-nav').toggleClass('selected-item');
(0, jquery_1.default)(this).closest('.active').removeClass();
});
// $('.action-nav .action-btn').on('click', function () {
// $(this).toggleClass('active');
// $(".action-menu").toggle("fast");
// });
(0, jquery_1.default)('.dashboard-views .elements, .dashboard-views .close-btn').on('click', function () {
(0, jquery_1.default)(this).closest('.dashboard-views').toggleClass('open');
});
(0, jquery_1.default)(window).on('resize', () => {
this.resizePage();
});
//shows the record-related green drop-down Action button
(0, jquery_1.default)(document).on('select.dt deselect.dt', '.dms-table', (event, dt) => {
if (dt.rows({ selected: true }).data().length > 0) {
this.onSelectDataTableRow();
}
else {
this.onDeselectDataTableRow();
}
});
//hides the record-related green drop-down Action button
(0, jquery_1.default)(document).on('click', (event) => {
if (!(0, jquery_1.default)(event.target).closest(".dms-table, .navbar, .modal").length) {
// even programmatic selection changes will trigger the above handler
(0, jquery_1.default)('.dms-table').each((index, element) => {
try {
const dt = (0, jquery_1.default)(element).DataTable({ retrieve: true });
const rows = dt.rows();
if (rows.deselect) {
rows.deselect();
}
}
catch (err) {
//console.error('deselect err ', err);
}
});
}
});
this.resizePage();
const cfg = dms_root_container_1.RootDIContainer.inject(configuration_service_1.ConfigurationService);
cfg.synchronize();
});
}
applyColorTheme() {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
//return;
});
}
applyPlatformTheme() {
return '';
}
internalNavigate(routeObect) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
if (this._isTestMode)
return;
const ui = dms_root_container_1.RootDIContainer.inject(userinterface_service_1.UserInterfaceService);
const allowed = yield ui.isTaskAllowed(this._taskId);
if (!allowed) {
ui.showError(`Task ${this._taskId} is blocked by the system administrator!`);
return;
}
//$('.action-btn').addClass('d-none');
(0, jquery_1.default)('.action-menu').hide();
let isValid = true;
const currentViewInstance = this.dms.app.data["_currentViewInstance"];
if (currentViewInstance) {
isValid = yield this.validateView(currentViewInstance, routeObect);
}
if (isValid) {
const viewId = routeObect.pageName.replace(/\//g, '');
const page = { el: this.domManager(`#${viewId}`) };
yield dms_root_container_1.RootDIContainer.inject(configuration_service_1.ConfigurationService).setNavigationState({
LastTaskId: this._taskId,
LastStepId: page.el.id ? page.el.id : this.domManager(page.el).attr("id")
});
//hide pervious
this.domManager('[data-role=page]').removeClass('onScreen').addClass('offScreen');
this.domManager(`#${viewId}`).removeClass('offScreen').addClass('onScreen');
const ui = dms_root_container_1.RootDIContainer.inject(userinterface_service_1.UserInterfaceService);
yield ui.hideLoading();
//run current view
this.domManager(`#${viewId}page-preloader`).show();
this.domManager(`#${viewId}subcontent`).hide();
yield this.doCreateView(page, this.dms);
this.domManager(`#${viewId}subcontent`).show(600);
this.domManager(`#${viewId}page-preloader`).hide();
}
});
}
findRoute(stepId, routeId) {
const viewClass = this.findViewClassByViewId(stepId);
const name = `${stepId.name ? stepId.name : stepId}${routeId ? routeId : ''}`;
let foundRoute = null;
viewClass.__routes.forEach(r => {
if (r.name == name)
foundRoute = r;
});
return foundRoute;
}
run(isTestMode) {
return tslib_1.__awaiter(this, void 0, void 0, function* () {
(0, jquery_1.default)(document).ready(() => {
let language = 'en';
const urlTokens = window.parent ? window.parent.location.href.split('?') : window.location.href.split('?');
if (urlTokens.length > 1) {
const lngTokens = urlTokens[1].split('#');
const parsed = (0, querystring_1.parse)(lngTokens[0]);
language = parsed && parsed.language ? parsed.language : 'en';
}
sessionStorage.setItem('language', language);
this.internalRun(isTestMode);
});
});
}
}
exports.BackendDmsTask = BackendDmsTask;
//# sourceMappingURL=backend-task.js.map