Subversion Repositories SmartDukaan

Rev

Rev 30680 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
23914 govind 1
<script type="text/javascript">
30601 amit.gupta 2
    $('input[name="extendSchemeById"]').daterangepicker($.extend(getSingleDatePicker(), {
30017 amit.gupta 3
        "drops": "up",
30601 amit.gupta 4
    }));
30680 amit.gupta 5
    $('input[name="expireSchemeById"]').daterangepicker($.extend(getSingleDatePicker(moment("$scheme.getEndDateTime()")), {
30601 amit.gupta 6
        "drops": "up",
7
    }));
30017 amit.gupta 8
 
36421 amit 9
    $(document).off('click.addScheme').on('click.addScheme', ".add-scheme", function () {
10
        $("#newItemToSchemeModal").modal({backdrop: true, show: true});
23914 govind 11
    });
36421 amit 12
    $(document).off('hidden.bs.modal.addScheme').on('hidden.bs.modal.addScheme', '#newItemToSchemeModal', function () {
30017 amit.gupta 13
        $("#addSchemeForm").trigger("reset");
14
    });
36421 amit 15
 
16
    // Edit scheme item date window
17
    $(document).on('click', '.edit-item-dates', function () {
18
        var row = $(this).closest('tr');
19
        row.find('.date-display').hide();
20
        row.find('.date-edit').show();
21
        row.find('.edit-item-dates').hide();
22
        row.find('.save-item-dates, .cancel-item-dates').show();
23
 
24
        // Initialize daterangepicker on the inline inputs
25
        var startInput = row.find('.edit-start-date');
26
        var endInput = row.find('.edit-end-date');
27
        if (!startInput.data('daterangepicker')) {
28
            var startVal = startInput.val() ? moment(startInput.val(), 'DD/MM/YYYY') : moment("$scheme.getStartDateTime()");
29
            var endVal = endInput.val() ? moment(endInput.val(), 'DD/MM/YYYY') : moment("$scheme.getEndDateTime()");
30
            startInput.daterangepicker($.extend(getSingleDatePicker(startVal), {"drops": "down"}));
31
            endInput.daterangepicker($.extend(getSingleDatePicker(endVal), {"drops": "down"}));
32
        }
33
    });
34
 
35
    $(document).on('click', '.cancel-item-dates', function () {
36
        var row = $(this).closest('tr');
37
        row.find('.date-display').show();
38
        row.find('.date-edit').hide();
39
        row.find('.edit-item-dates').show();
40
        row.find('.save-item-dates, .cancel-item-dates').hide();
41
    });
42
 
43
    // Convert DD/MM/YYYY to ISO LocalDateTime format for the server
44
    function toIsoDateTime(ddmmyyyy, endOfDay) {
45
        var parts = ddmmyyyy.split('/');
46
        if (parts.length !== 3) return ddmmyyyy;
47
        var isoDate = parts[2] + '-' + parts[1] + '-' + parts[0];
48
        return isoDate + (endOfDay ? 'T23:59:59' : 'T00:00:00');
49
    }
50
 
51
    $(document).on('click', '.save-item-dates', function () {
52
        var row = $(this).closest('tr');
53
        var itemId = row.data('schemeitemid');
54
        var startDate = row.find('.edit-start-date').val();
55
        var endDate = row.find('.edit-end-date').val();
56
        if (!startDate || !endDate) {
57
            alert('Both start date and end date are required');
58
            return;
59
        }
60
        var isoStart = toIsoDateTime(startDate, false);
61
        var isoEnd = toIsoDateTime(endDate, true);
62
        doPutAjaxRequestHandler('/scheme/item/window?schemeItemId=' + itemId
63
            + '&startDate=' + encodeURIComponent(isoStart)
64
            + '&endDate=' + encodeURIComponent(isoEnd),
65
            function (response) {
66
                loadSchemeDetails($scheme.getId(), "scheme-details-container");
67
            });
68
    });
69
 
70
    // Modal: category -> brand -> model cascade
71
    $('#newItemToSchemeModal').on('shown.bs.modal', function () {
72
        $('input[name="addItemStartDate"]').daterangepicker($.extend(getSingleDatePicker(moment("$scheme.getStartDateTime()")), {
73
            "drops": "down",
74
        }));
75
        $('input[name="addItemEndDate"]').daterangepicker($.extend(getSingleDatePicker(moment("$scheme.getEndDateTime()")), {
76
            "drops": "down",
77
        }));
78
 
79
        // Load brands for default category
80
        var catId = $('#modal-category-list').val();
81
        if (catId) loadModalBrands(catId);
82
    });
83
 
84
    $('#modal-category-list').on('change', function () {
85
        var catId = $(this).val();
86
        if (catId) loadModalBrands(catId);
87
    });
88
 
89
    function loadModalBrands(categoryId) {
90
        doGetAjaxRequestHandler(context + '/getBrandsByCategory?categoryId=' + categoryId, function (response) {
91
            $('#modal-brand-list').html(response);
92
            // Re-id the select so it doesn't clash with create-scheme page
93
            $('#modal-brand-list select').attr('id', 'modal-tag-listing-brands');
94
            $('#modal-tag-listing-brands').multiselect({
95
                includeSelectAllOption: true,
96
                multiple: true,
97
                maxHeight: 200,
98
                buttonWidth: '180px',
99
                numberDisplayed: 1,
100
                nonSelectedText: 'Brands',
101
                nSelectedText: ' - Brands Selected',
102
                allSelectedText: 'All Brands',
103
                enableFiltering: true,
104
                enableCaseInsensitiveFiltering: true
105
            });
106
            $('#modal-tag-listing-brands').on('change', function () {
107
                var brands = $(this).val();
108
                if (brands) loadModalModels(categoryId, brands);
109
            });
110
        });
111
    }
112
 
113
    function loadModalModels(categoryId, brands) {
114
        var brandsString = brands.join(',');
115
        doGetAjaxRequestHandler(context + '/getCatalogDescriptionByBrands?categoryId=' + categoryId + '&brands=' + brandsString, function (response) {
116
            $('#modal-models-list').html(response);
117
            $('#modal-models-list select').addClass('modalCatalogItems');
118
            $('.modalCatalogItems').multiselect({
119
                includeSelectAllOption: true,
120
                maxHeight: 200,
121
                buttonWidth: '220px',
122
                numberDisplayed: 1,
123
                nonSelectedText: 'Models',
124
                nSelectedText: ' - Models Selected',
125
                allSelectedText: 'All Models',
126
                enableFiltering: true,
127
                enableCaseInsensitiveFiltering: true
128
            });
129
        });
130
    }
30017 amit.gupta 131
</script>
22860 ashik.ali 132
<h3 style="padding-left:3%;padding-top:2%;font-weight:bold;">Scheme Id : $scheme.getId()</h3>
23914 govind 133
 
22860 ashik.ali 134
<div class="row" style="padding-left:3%;">
30122 amit.gupta 135
    <div class="col-lg-12">
30017 amit.gupta 136
        <table>
137
            <tr>
138
                <td>
139
                    #if($scheme.getActiveTimestamp())
140
                        <span>Activated On : $scheme.getFormattedActiveTimestamp()</span>
141
                        <p></p>
142
                    #end
143
                    #if($scheme.getExpireTimestamp())
144
                        <span>Expired On : $scheme.getFormattedExpireTimestamp()</span>
145
                        <p></p>
146
                    #end
147
                </td>
148
                #if($isAdmin && $fullAccess)
149
                    <td>
150
                        <button class="btn btn-sm btn-primary add-scheme" data="$scheme.getId()"
36421 amit 151
                                style="width:100%;background-color:#007aff;color:white;padding-right: 10px">Add Item
30017 amit.gupta 152
                        </button>
153
                    </td>
154
                #end
155
            <tr>
156
        </table>
157
        <table class="table table-striped table-advance table-hover">
158
            <tbody>
159
            <tr>
30122 amit.gupta 160
                <th>Model ID</th>
161
                <th>Model Name</th>
36421 amit 162
                <th>Start Date</th>
163
                <th>End Date</th>
164
                <th>Updated By</th>
165
                <th>Updated On</th>
30017 amit.gupta 166
                #if($isAdmin && $fullAccess)
30122 amit.gupta 167
                    <th>Action</th>
30017 amit.gupta 168
                #end
169
            </tr>
36421 amit 170
                #if($schemeItems && $schemeItems.size()>0)
171
                    #foreach( $item in $schemeItems)
172
                    <tr data-schemeitemid="$item.getId()" data-catalogid="$item.getCatalogId()">
173
                        <td>$item.getCatalogId()</td>
174
                        <td>#if($scheme.getCatalogStringMap().containsKey($item.getCatalogId()))$scheme.getCatalogStringMap().get($item.getCatalogId())#else-#end</td>
175
                        <td>
176
                            <span class="date-display">#if($item.getStartDate())$dateFormatter.format($item.getStartDate())#else-#end</span>
177
                            <input type="text" class="form-control date-edit edit-start-date" style="display:none; width:160px" value="#if($item.getStartDate())$dateFormatter.format($item.getStartDate())#end">
178
                        </td>
179
                        <td>
180
                            <span class="date-display">#if($item.getEndDate())$dateFormatter.format($item.getEndDate())#else-#end</span>
181
                            <input type="text" class="form-control date-edit edit-end-date" style="display:none; width:160px" value="#if($item.getEndDate())$dateFormatter.format($item.getEndDate())#end">
182
                        </td>
183
                        <td>#if($item.getUpdatedBy())$item.getUpdatedBy()#else-#end</td>
184
                        <td>#if($item.getUpdatedOn())$dateTimeFormatter.format($item.getUpdatedOn())#else-#end</td>
185
                        #if($isAdmin && $fullAccess)
186
                        <td>
187
                            <button class="btn btn-xs btn-info edit-item-dates">Edit</button>
188
                            <button class="btn btn-xs btn-success save-item-dates" style="display:none">Save</button>
189
                            <button class="btn btn-xs btn-default cancel-item-dates" style="display:none">Cancel</button>
190
                            <button class="btn btn-xs btn-danger delete-schemes" data-schemeid="$scheme.getId()"
191
                                    data-catalogid="$item.getCatalogId()">Delete</button>
192
                        </td>
193
                        #end
194
                    </tr>
195
                    #end
196
                #elseif($scheme.getCatalogStringMap().size()>0)
30122 amit.gupta 197
                    #foreach( $catalogIdDescriptionEntry in $scheme.getCatalogStringMap().entrySet())
198
                    <tr data-catalogid="$catalogIdDescriptionEntry.getKey()">
199
                        <td>$catalogIdDescriptionEntry.getKey()</td>
30144 amit.gupta 200
                        <td>$catalogIdDescriptionEntry.getValue()</td>
36421 amit 201
                        <td colspan="4">-</td>
30017 amit.gupta 202
                        #if($isAdmin && $fullAccess)
203
                        <td>
204
                            <button class="btn btn-primary delete-schemes" data-schemeid="$scheme.getId()"
30122 amit.gupta 205
                                    data-catalogid="$catalogIdDescriptionEntry.getKey()">Delete
30017 amit.gupta 206
                            </button>
207
                        #end
208
                    </tr>
209
                    #end
210
                #else
211
                <tr>
212
                    <td colspan="12" style="text-align:center;">NO ITEM FOUND FOR SCHEME</td>
213
                </tr>
214
                #end
215
            </tbody>
216
        </table>
217
        <p></p>
29899 tejbeer 218
        #if($isAdmin && $fullAccess)
30017 amit.gupta 219
            <span>Created By : $scheme.getCreatedBy()</span>
220
            <p></p>
221
            #if((!$scheme.getActiveTimestamp()) && (!$scheme.getExpireTimestamp()))
222
                <div class="btn-group" style="width:40%">
223
                    <button class="btn active-scheme" data="$scheme.getId()"
224
                            style="width:100%;background-color:#e98c8f;color:white;">Active
225
                    </button>
226
                </div>
227
            #else
228
                #if(($scheme.getActiveTimestamp()) && (!$scheme.getExpireTimestamp()))
229
                    <table>
230
                        <td>
231
                            <div class="scheme-extend">
232
                                <div class="row">
233
                                    <div class="col-lg-12">
234
                                        <div class="input-group" style="width:80%">
235
                                            <input type="hidden" value="$scheme.getId()" id="schemeId">
30601 amit.gupta 236
                                            <input placeholder="Extend Date Time" id="extendSchemeById" type="text"
237
                                                   class="form-control" name="extendSchemeById">
238
                                            <span class="input-group-btn"> <button
239
                                                    class="btn btn-primary extendSchemeById"
240
                                                    id="extendScheme-button"
241
                                                    type="button">Extend</button></span>
30017 amit.gupta 242
                                        </div>
243
                                    </div>
244
                                </div>
245
                            </div>
246
                        </td>
247
                        <td>
248
                            <div class="input-group" style="width:80%">
249
                                <input type="hidden" value="$scheme.getId()" id="schemeId">
30601 amit.gupta 250
                                <input placeholder="Expire Time" type="text"
251
                                       class="form-control expireTime" id="exprireScheme" name="expireSchemeById">
30017 amit.gupta 252
                                <span class="input-group-btn">
25069 amit.gupta 253
								<button class="btn btn-primary expire-scheme" data="$scheme.getId()">Expire</button>
25068 amit.gupta 254
							</span>
30017 amit.gupta 255
                            </div>
256
                        </td>
257
                    </table>
258
                    <br><br>
259
                #end
260
            #end
261
        #end
262
    </div>
36421 amit 263
    <div id="newItemToSchemeModal" class="modal fade" role="dialog" tabindex="-1">
264
        <div class="modal-dialog modal-lg">
30017 amit.gupta 265
            <div class="modal-content">
266
                <div class="modal-header">
267
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
36421 amit 268
                    <h4 class="modal-title"><b>Add Item To Scheme (ID: $scheme.getId())</b></h4>
30017 amit.gupta 269
                </div>
270
                <div class="modal-body">
271
                    <form id="addSchemeForm">
36421 amit 272
                        <input type="hidden" value="$scheme.getId()" id="schemeids">
273
                        <div class="row">
274
                            <div class="col-lg-4">
275
                                <div class="form-group">
276
                                    <label><b>Category</b> <span style="color:red">*</span></label>
277
                                    <select class="form-control input-sm" id="modal-category-list">
278
                                        #foreach($category in $categories)
279
                                            <option value="$category.getId()">$category.getLabel()</option>
280
                                        #end
281
                                    </select>
282
                                </div>
30017 amit.gupta 283
                            </div>
284
                            <div class="col-lg-4">
36421 amit 285
                                <div class="form-group">
286
                                    <label><b>Brands</b> <span style="color:red">*</span></label>
287
                                    <div id="modal-brand-list"></div>
288
                                </div>
30017 amit.gupta 289
                            </div>
36421 amit 290
                            <div class="col-lg-4">
291
                                <div class="form-group">
292
                                    <label><b>Models</b> <span style="color:red">*</span></label>
293
                                    <div id="modal-models-list">
294
                                        <select class="form-control modalCatalogItems" multiple="multiple"></select>
295
                                    </div>
296
                                </div>
297
                            </div>
30017 amit.gupta 298
                        </div>
36421 amit 299
                        <div class="row">
300
                            <div class="col-lg-6">
301
                                <div class="form-group">
302
                                    <label><b>Start Date</b> <small>(optional, defaults to scheme start: $dateFormatter.format($scheme.getStartDateTime()))</small></label>
303
                                    <input type="text" class="form-control" id="addItemStartDate" name="addItemStartDate" placeholder="dd/mm/yyyy"/>
304
                                </div>
305
                            </div>
306
                            <div class="col-lg-6">
307
                                <div class="form-group">
308
                                    <label><b>End Date</b> <small>(optional, defaults to scheme end: $dateFormatter.format($scheme.getEndDateTime()))</small></label>
309
                                    <input type="text" class="form-control" id="addItemEndDate" name="addItemEndDate" placeholder="dd/mm/yyyy"/>
310
                                </div>
311
                            </div>
312
                        </div>
313
                        <div class="alert alert-info" style="margin-top:5px; padding:8px;">
314
                            Item dates must be within scheme window: <b>$dateFormatter.format($scheme.getStartDateTime())</b> to <b>$dateFormatter.format($scheme.getEndDateTime())</b>.
315
                            Non-overlapping windows are enforced per model within this scheme.
316
                        </div>
30017 amit.gupta 317
                    </form>
318
                </div>
319
                <div class="modal-footer">
320
                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
36421 amit 321
                    <button type="button" class="btn btn-primary add-item">Add Item</button>
30017 amit.gupta 322
                </div>
323
            </div>
324
        </div>
325
    </div>
22860 ashik.ali 326
</div>