{"version":3,"file":"onepoint-yap-dashboard-widgets-widget-tile.mjs","sources":["../../../../projects/onepoint-yap/dashboard/widgets/widget-tile/style/css.component.ts","../../../../projects/onepoint-yap/dashboard/widgets/widget-tile/component/widget-tile.component.ts","../../../../projects/onepoint-yap/dashboard/widgets/widget-tile/component/widget-tile.component.html","../../../../projects/onepoint-yap/dashboard/widgets/widget-tile/i18n/en.translations.ts","../../../../projects/onepoint-yap/dashboard/widgets/widget-tile/i18n/fr.translations.ts","../../../../projects/onepoint-yap/dashboard/widgets/widget-tile/widget-tile.module.ts","../../../../projects/onepoint-yap/dashboard/widgets/widget-tile/onepoint-yap-dashboard-widgets-widget-tile.ts"],"sourcesContent":["import { Component, ViewEncapsulation } from '@angular/core';\n\n@Component({\n  selector: 'yap-widget-tile-css',\n  template: '',\n  styleUrls: ['./_o-widget-tile.scss'],\n  encapsulation: ViewEncapsulation.None\n})\nexport class YapWidgetTileCssComponent {}\n","import { Component, ElementRef } from '@angular/core';\nimport { Store } from '@ngrx/store';\nimport {\n  AttributeSimpleValue,\n  Class,\n  ClassSelectors,\n  ConfigSelectors,\n  ContextMenuActions,\n  DashboardActions,\n  DashboardSelectors,\n  DataWidgetComponent,\n  Field,\n  FieldSelectors,\n  FieldType,\n  Item,\n  ItemUtils,\n  ResultSet,\n  TileWidgetOptions,\n  WIDGET_HEADER_HEIGHT\n} from '@onepoint-yap/dashboard';\nimport { combineLatest, Observable } from 'rxjs';\nimport { filter, map } from 'rxjs/operators';\n\n@Component({\n  selector: 'yap-widget-tile',\n  templateUrl: './widget-tile.component.html'\n})\nexport class WidgetTileComponent extends DataWidgetComponent {\n  options$: Observable<TileWidgetOptions>;\n  items$: Observable<Item[]>;\n  selectedIds$: Observable<any>;\n  maps: boolean[] = [];\n  mapManifest = {\n    type: 'map',\n    header: false,\n    layout: { x: 1, y: 1, width: 1, height: 1 },\n    options: { layers: [{ type: 'marker' }], fit: true }\n  };\n  classes$: Observable<Class[]>;\n  optionsCopy: TileWidgetOptions = {};\n  WIDGET_HEADER_HEIGHT = WIDGET_HEADER_HEIGHT;\n  propertiesToDisplay$: Observable<{ [p: string]: string[] } | undefined>;\n  fields: Field[] = [];\n  classes: Class[] = [];\n\n  constructor(store: Store<any>, el: ElementRef) {\n    super(store, el);\n    this.options$ = this.manifest$.pipe(map((manifest) => manifest.options as TileWidgetOptions));\n    this.subscriptions.add(\n      this.options$.pipe(filter((opt) => !!opt)).subscribe((options) => {\n        this.optionsCopy = { ...(JSON.parse(JSON.stringify(options)) as TileWidgetOptions) };\n      })\n    );\n    this.items$ = combineLatest([\n      this.resultSet$.pipe(map((rs) => Object.values(rs.items).reduce((p, c) => [...p, ...c], []))),\n      this.options$\n    ]).pipe(\n      map(([items, options]) =>\n        items.filter(\n          (item) => !options.classes || options.classes.length === 0 || options.classes.includes(item.oClass)\n        )\n      )\n    );\n    this.selectedIds$ = this.store.select(DashboardSelectors.selectedItemIds);\n    this.classes$ = this.store.select(ClassSelectors.classes);\n    this.propertiesToDisplay$ = combineLatest([\n      this.classes$,\n      this.store.select(ConfigSelectors.tileAttributesDefinitions),\n      this.store.select(ConfigSelectors.maxAttributesInTiles)\n    ]).pipe(\n      map(([classes, tileDefs, maxTilesAttributes]) => ({\n        ...classes\n          .map((clazz) => ({\n            [clazz.id]: [...clazz.attributes.map((attr) => attr.name).filter((_, i) => i < maxTilesAttributes)]\n          }))\n          .reduce((p, c) => ({ ...p, ...c }), {}),\n        ...tileDefs\n      }))\n    );\n    this.subscriptions.add(this.store.select(FieldSelectors.fields).subscribe((fields) => (this.fields = fields)));\n    this.subscriptions.add(this.classes$.subscribe((classes) => (this.classes = classes)));\n  }\n\n  contextMenu($event: MouseEvent, item: Item) {\n    if (this.manifest.contextMenu !== false) {\n      $event.stopPropagation();\n      $event.preventDefault();\n      this.store.dispatch(\n        ContextMenuActions.open({\n          itemId: item.id,\n          clientX: $event.clientX,\n          clientY: $event.clientY,\n          from: 'tile'\n        })\n      );\n    }\n  }\n\n  select($event: MouseEvent, item: Item) {\n    $event.stopPropagation();\n    $event.preventDefault();\n    this.store.dispatch(DashboardActions.select({ id: item.id, cumulative: !$event.shiftKey }));\n  }\n\n  toggleMap(index: number) {\n    this.maps[index] = !this.maps[index];\n  }\n\n  resultSetWithItem(item: Item): ResultSet {\n    return { items: { [item.oClass]: [item] }, relations: [] };\n  }\n\n  emitManifest() {\n    this.manifestModified.emit({\n      widgetIndex: this.widgetIndex,\n      manifest: {\n        ...this.manifest,\n        options: this.optionsCopy\n      }\n    });\n  }\n\n  changeClasses($event: any) {\n    this.optionsCopy.classes = $event;\n  }\n\n  getValue(item: Item, property: string): AttributeSimpleValue[] {\n    const value = ItemUtils.getAttributeValue(item, property);\n    return Array.isArray(value) ? value : [value];\n  }\n\n  isRaw(property: string, classId: string): boolean {\n    const clazz = this.classes.find((clazz) => clazz.id === classId);\n    if (!!clazz) {\n      const prop = clazz.attributes.find((attr) => attr.name === property);\n      if (!!prop) {\n        const field = this.fields.find((field) => field.id === prop.field);\n        if (!!field) {\n          return field.type === FieldType.RAW;\n        }\n      }\n    }\n    return false;\n  }\n\n  hasMetadata(value: AttributeSimpleValue | Item) {\n    return Object.keys(value?.metadata ?? {}).length > 0;\n  }\n}\n","<yap-widget-tile-css></yap-widget-tile-css>\n<div class=\"o-widget o-widget--tile\">\n  <yap-widget-header\n    [datasourceIds$]=\"datasourceIds$\"\n    *ngIf=\"displayHeader$ | async\"\n    [widgetIndex]=\"widgetIndex\"\n    [manifest]=\"manifest\"\n    (manifestModified)=\"manifestModified.emit($event)\"\n    [headerOptions]=\"(displayHeader$ | async) ?? {}\"\n    #header\n  >\n    <yap-settings\n      (saveTriggered)=\"emitManifest()\"\n      [headerPresent]=\"displayHeader$ | async\"\n      [widgetIndex]=\"widgetIndex\"\n      [header]=\"header\"\n      [open$]=\"open$\"\n      class=\"o-settings\"\n    >\n      <div class=\"m-form-label-field\">\n        <label class=\"a-label\" for=\"tile_classes\">{{ '@yap.widget.tile.classes' | i18n }}</label>\n        <yap-select\n          (ngModelChange)=\"changeClasses($event)\"\n          [itemsAsOption]=\"true\"\n          [items]=\"classes$ | async\"\n          [multiple]=\"true\"\n          [ngModel]=\"optionsCopy.classes\"\n          bindLabel=\"name\"\n          bindValue=\"id\"\n          class=\"a-yap-select\"\n          id=\"tile_classes\"\n        ></yap-select>\n      </div>\n    </yap-settings>\n  </yap-widget-header>\n  <div class=\"o-widget--tile-wrapper\" [style.top]=\"(displayHeader$ | async) ? WIDGET_HEADER_HEIGHT + 'px' : 0\">\n    <div class=\"no-result\" *ngIf=\"(items$ | async)?.length === 0\">\n      <img\n        class=\"no-result__search\"\n        src=\"../../../assets/svgs/yap_recherche_pas_de_resultat.svg\"\n        alt=\"{{ '@yap.widget.tile.empty' | i18n }}\"\n        aria-hidden=\"true\"\n      />\n      <span class=\"no-result__text\">{{ '@yap.widget.tile.empty' | i18n }}</span>\n    </div>\n    <ul class=\"o-widget--tile__list\">\n      <li\n        class=\"o-widget--tile__list__item\"\n        *ngFor=\"let item of items$ | async; let index = index\"\n        (contextmenu)=\"contextMenu($event, item)\"\n      >\n        <div class=\"o-widget--tile__list__item__header\">\n          <img\n            [height]=\"25\"\n            [width]=\"25\"\n            [src]=\"item | translateItemToSymbol | async\"\n            [alt]=\"item.oClass | translateId : { type: 'class', output: 'name' } | async\"\n          />\n          <h3 class=\"o-widget--tile__list__item__header__title\">\n            {{\n              item.oClass\n                | translateId\n                  : {\n                      type: 'class',\n                      output: 'name'\n                    }\n                | async\n            }}\n          </h3>\n          <yap-checkbox\n            [ngModel]=\"(selectedIds$ | async).includes(item.id)\"\n            (click)=\"select($event, item)\"\n          ></yap-checkbox>\n        </div>\n        <div class=\"o-properties\">\n          <ul class=\"o-properties__list\">\n            <ng-container *ngFor=\"let property of (propertiesToDisplay$ | async)![item.oClass]\">\n              <li\n                *ngFor=\"let value of getValue(item, property); let i = index; let c = count\"\n                class=\"o-properties__list__item\"\n              >\n                <p class=\"o-properties__list__item__label\" *ngIf=\"i === 0\">{{ property }}:</p>\n                <p class=\"o-properties__list__item__value\" *ngIf=\"!isRaw(property, item.oClass)\">{{ value?.value }}</p>\n                <p class=\"o-properties__list__item__raw\" *ngIf=\"isRaw(property, item.oClass)\">\n                  <yap-vizualize-raw [item]=\"item\" [propertyName]=\"property\"></yap-vizualize-raw>\n                </p>\n                <ng-container *ngIf=\"hasMetadata(value)\">\n                  <yap-metadata [item]=\"value\"></yap-metadata>\n                </ng-container>\n              </li>\n            </ng-container>\n          </ul>\n        </div>\n        <div (click)=\"toggleMap(index)\" class=\"o-widget--tile__list__item__footer\">\n          <button\n            type=\"button\"\n            class=\"a-btn a-btn--icon-text -link-like\"\n            aria-controls=\"tile-map-xxx\"\n            aria-expanded=\"false\"\n          >\n            {{ '@yap.widget.tile.map' | i18n }}\n          </button>\n        </div>\n        <div class=\"o-widget--tile__list__item__map\" *ngIf=\"maps[index]\" id=\"tile-map-xxx\">\n          <yap-widget-map [staticManifest]=\"mapManifest\" [staticResultSet]=\"resultSetWithItem(item)\"></yap-widget-map>\n        </div>\n      </li>\n    </ul>\n  </div>\n</div>\n","export const enTranslations = {\n  '@yap': {\n    widget: {\n      tile: {\n        map: 'Display map',\n        classes: 'Classes to display',\n        metadata: 'Metadata',\n        empty: 'No data to display'\n      }\n    }\n  }\n};\n","export const frTranslations = {\n  '@yap': {\n    widget: {\n      tile: {\n        map: 'Afficher la carte',\n        classes: 'Classes à afficher',\n        metadata: 'Metadonnée',\n        empty: 'Aucune donnée à afficher'\n      }\n    }\n  }\n};\n","import { OverlayModule } from '@angular/cdk/overlay';\nimport { CommonModule } from '@angular/common';\nimport { NgModule, Type } from '@angular/core';\nimport { FormsModule } from '@angular/forms';\nimport {\n  BaseWidgetComponent,\n  BaseWidgetModule,\n  YapCoreModule,\n  YapDashboardModule,\n  YapIconModule,\n  YapSelectModule,\n  YapToggleModule,\n  YapI18nModule,\n  YapI18nService\n} from '@onepoint-yap/dashboard';\nimport { YapCheckboxModule } from '@onepoint-yap/dashboard/components/checkbox';\nimport { WidgetDetailModule } from '@onepoint-yap/dashboard/widgets/widget-detail';\nimport { WidgetMapModule } from '@onepoint-yap/dashboard/widgets/widget-map';\nimport { WidgetTileComponent } from './component/widget-tile.component';\nimport { enTranslations } from './i18n/en.translations';\nimport { frTranslations } from './i18n/fr.translations';\nimport { YapWidgetTileCssComponent } from './style/css.component';\n\n@NgModule({\n  declarations: [WidgetTileComponent, YapWidgetTileCssComponent],\n  imports: [\n    CommonModule,\n    FormsModule,\n    OverlayModule,\n    YapCoreModule,\n    YapDashboardModule,\n    YapSelectModule,\n    YapIconModule,\n    YapCheckboxModule,\n    YapToggleModule,\n    WidgetDetailModule,\n    WidgetMapModule,\n    YapI18nModule\n  ],\n  exports: [WidgetTileComponent]\n})\nexport class WidgetTileModule extends BaseWidgetModule {\n  constructor(private yapTranslateService: YapI18nService) {\n    super();\n    this.yapTranslateService.addLangObject('fr', 'widget-tile', frTranslations);\n    this.yapTranslateService.addLangObject('en', 'widget-tile', enTranslations);\n  }\n\n  override getComponent() {\n    return WidgetTileComponent as Type<BaseWidgetComponent>;\n  }\n}\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i7.YapWidgetTileCssComponent","i1"],"mappings":"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"}