Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 | 300x 300x 498x 498x 498x 497x 497x 497x 497x 497x 994x 994x 497x 497x 4x 4x 4x 497x 497x 497x 497x 491x 497x 497x | /* * This module renders a dropdown list that allows the user to change the * display type for a grid. * * @author Tamara Robichet <tamara.robichet@akeneo.com> * @copyright 2017 Akeneo SAS (http://www.akeneo.com) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ define([ 'jquery', 'underscore', 'backbone', 'oro/translator', 'pim/form', 'pim/template/datagrid/display-selector', 'pim/router' ], function ( $, _, Backbone, __, BaseForm, template, Routing ) { return BaseForm.extend({ className: 'AknDropdown AknDropdown--left AknTitleContainer-displaySelector', gridName: null, template: _.template(template), events: { 'click .display-selector-item': 'setDisplayType' }, /** * @inheritDoc */ initialize(options) { this.gridName = options.config.gridName; Iif (null === this.gridName) { new Error('You must specify gridName for the display-selector'); } return BaseForm.prototype.initialize.apply(this, arguments); }, /** * @inheritDoc */ configure() { this.listenTo(this.getRoot(), 'grid_load:start', this.collectDisplayOptions.bind(this)); return BaseForm.prototype.configure.apply(this, arguments); }, /** * Receives the grid displayTypes config from the gridView and * renders them (with translated labels); * * @param {Backbone.Collection} collection The datagrid collection * @param {Backbone.View} gridView The datagrid view */ collectDisplayOptions(collection, gridView) { const displayTypes = gridView.options.displayTypes; Iif (undefined === displayTypes) { return; } for (let display in displayTypes) { const type = displayTypes[display]; type.label = __(type.label); } this.renderDisplayTypes(displayTypes); }, /** * Returns the display type stored for a grid name * @return {String} The name of the display type e.g. thumbnail */ getStoredType() { return localStorage.getItem(`display-selector:${this.gridName}`); }, /** * Gets the name of the display type from the event target and * puts it in localStorage using the gridName as the key. * * @param {jQuery.Event} event The dropdown item click event */ setDisplayType(event) { const type = this.$(event.target).data('type'); localStorage.setItem(`display-selector:${this.gridName}`, type); return Routing.reloadPage(); }, /** * Renders the dropdown list to show the display types * * @param {Object} types A config object containing the display types * @return {Function} */ renderDisplayTypes(types) { const firstType = Object.keys(types)[0]; let selectedType = this.getStoredType(); const displayLabel = __('pim_datagrid.display_selector.label'); if (undefined === types[selectedType]) { selectedType = firstType; } this.$el.html(this.template({ displayLabel, types, selectedType })); return BaseForm.prototype.render.apply(this, arguments); } }); }); |