@neogrup/nc-zone-map
Version:
Polymer component to display the zone map
129 lines (108 loc) • 5.01 kB
JavaScript
import { PolymerElement, html } from '@polymer/polymer/polymer-element.js';
import '@polymer/paper-dialog/paper-dialog.js';
import '@polymer/paper-dialog-scrollable/paper-dialog-scrollable.js';
import '@polymer/iron-icons/iron-icons.js';
import '@polymer/neon-animation/neon-animation.js';
import '@polymer/paper-button/paper-button.js';
import '@polymer/paper-icon-button/paper-icon-button.js';
import { dom } from '@polymer/polymer/lib/legacy/polymer.dom.js';
import { AppLocalizeBehavior } from '@polymer/app-localize-behavior/app-localize-behavior.js';
import { mixinBehaviors } from '@polymer/polymer/lib/legacy/class.js';
import { MixinZone } from './nc-zone-behavior.js';
class NcZoneElementSelectDocDialog extends mixinBehaviors([AppLocalizeBehavior], MixinZone(PolymerElement)) {
static get template() {
return html`
<style>
</style>
<paper-dialog id="selectDocDialog" class="modalNoApp" modal entry-animation="scale-up-animation" dialog>
<div class="header">
<iron-icon icon="content-copy"></iron-icon><h3>{{localize('ELEMENT_SELECT_DOC_DIALOG_TITLE')}}</h3>
</div>
<paper-dialog-scrollable>
<div class="actions-list">
<template is="dom-repeat" items="{{elementData.docs}}" as="doc">
<div class="line">
<div class="line-container" on-tap="_docSelected">
<div class="line-doc-id" hidden\$="{{_hideDiv('DOCID', spotsViewMode)}}">#{{doc.id}}</div>
<div class="line-doc-id" hidden\$="{{_hideDiv('ORDERID', spotsViewMode)}}">#[[_getOrderIDSel(doc, doc.idOrder)]]</div>
<div class="line-doc-edited">{{_formatTime(doc.edited)}}</div>
<div class="line-doc-amount">[[_formatPriceCur(doc.totalAmount, doc.currencySymbol)]]</div>
</div>
<div class="line-actions">
<paper-icon-button icon="open-with" drawer-toggle hidden$="{{hideMoveDocButton}}" on-tap="_moveDoc"></paper-icon-button>
<paper-icon-button icon="print" drawer-toggle hidden$="{{!showPrintTicketButton}}" on-tap="_printDoc"></paper-icon-button>
</div>
</div>
</template>
</div>
</paper-dialog-scrollable>
<div class="buttons">
<paper-button raised on-tap="_newDoc"><iron-icon icon="add"></iron-icon>{{localize('BUTTON_NEW')}}</paper-button>
<paper-button raised class="delete" dialog-dismiss>{{localize('BUTTON_CLOSE')}}</paper-button>
</div>
</paper-dialog>
`;
}
static get properties() {
return {
language: String,
elementConf: Object,
elementData: Object,
mapViewMode: {
type: String
},
spotsViewMode: {
type: String,
value: ''
},
hideMoveDocButton: Boolean
}
}
static get importMeta() {
return import.meta;
}
connectedCallback(){
super.connectedCallback();
this.useKeyIfMissing = true;
this.loadResources(this.resolveUrl('./static/translations.json'));
}
open(){
/* Fix Modal paper-dialog appears behind its backdrop */
var app = document.querySelector('body').firstElementChild.shadowRoot;
dom(app).appendChild(this.$.selectDocDialog);
this.hideMoveDocButton = (this.mapViewMode === 'MAPSELECTOR') ? true : false;
this.$.selectDocDialog.open();
}
_newDoc(e){
this.dispatchEvent(new CustomEvent('element-selected', {detail: {elementConf: this.elementConf}, bubbles: true, composed: true }));
this.elementConf = {};
this.elementData = {};
this.$.selectDocDialog.close();
}
_docSelected(e){
this.dispatchEvent(new CustomEvent('element-selected', {detail: {elementConf: this.elementConf, elementData: e.model.doc, ticketId: e.model.doc.id}, bubbles: true, composed: true }));
this.elementConf = {};
this.elementData = {};
this.$.selectDocDialog.close();
}
_moveDoc(e){
this.dispatchEvent(new CustomEvent('element-selected-to-move', {detail: {elementConf: this.elementConf, ticketId: e.model.doc.id}, bubbles: true, composed: true }));
this.elementConf = {};
this.elementData = {};
this.$.selectDocDialog.close();
}
_printDoc(e){
this.dispatchEvent(new CustomEvent('element-selected-to-print', {detail: {elementConf: this.elementConf, ticketId: e.model.doc.id}, bubbles: true, composed: true }));
this.elementConf = {};
this.elementData = {};
this.$.selectDocDialog.close();
}
_getOrderIDSel(elem) { // cannot be the same as in behaviour, struct is diferrent
let v = elem.id;
if (typeof elem.idOrder != 'undefined') {
v = elem.idOrder;
}
return v;
}
}
window.customElements.define('nc-zone-element-select-doc-dialog', NcZoneElementSelectDocDialog);