Subversion Repositories SmartDukaan

Rev

Rev 30680 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 30680 Rev 36421
Line 4... Line 4...
4
    }));
4
    }));
5
    $('input[name="expireSchemeById"]').daterangepicker($.extend(getSingleDatePicker(moment("$scheme.getEndDateTime()")), {
5
    $('input[name="expireSchemeById"]').daterangepicker($.extend(getSingleDatePicker(moment("$scheme.getEndDateTime()")), {
6
        "drops": "up",
6
        "drops": "up",
7
    }));
7
    }));
8
 
8
 
9
    $(".add-scheme").click(function () {
9
    $(document).off('click.addScheme').on('click.addScheme', ".add-scheme", function () {
10
        $("#newItemToSchemeModal").modal({backdrop: false});
10
        $("#newItemToSchemeModal").modal({backdrop: true, show: true});
11
    });
11
    });
12
    $("#newItemToSchemeModal").on('hidden.bs.modal', function () {
12
    $(document).off('hidden.bs.modal.addScheme').on('hidden.bs.modal.addScheme', '#newItemToSchemeModal', function () {
13
        $("#addSchemeForm").trigger("reset");
13
        $("#addSchemeForm").trigger("reset");
14
    });
14
    });
-
 
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
    }
15
</script>
131
</script>
16
<h3 style="padding-left:3%;padding-top:2%;font-weight:bold;">Scheme Id : $scheme.getId()</h3>
132
<h3 style="padding-left:3%;padding-top:2%;font-weight:bold;">Scheme Id : $scheme.getId()</h3>
17
 
133
 
18
<div class="row" style="padding-left:3%;">
134
<div class="row" style="padding-left:3%;">
19
    <div class="col-lg-12">
135
    <div class="col-lg-12">
Line 30... Line 146...
30
                    #end
146
                    #end
31
                </td>
147
                </td>
32
                #if($isAdmin && $fullAccess)
148
                #if($isAdmin && $fullAccess)
33
                    <td>
149
                    <td>
34
                        <button class="btn btn-sm btn-primary add-scheme" data="$scheme.getId()"
150
                        <button class="btn btn-sm btn-primary add-scheme" data="$scheme.getId()"
35
                                style="width:100%;background-color:#007aff;color:white;padding-right: 10px"
151
                                style="width:100%;background-color:#007aff;color:white;padding-right: 10px">Add Item
36
                                data-toggle="modal" data-target="#newItemToSchemeModal">Add Item
-
 
37
                        </button>
152
                        </button>
38
                    </td>
153
                    </td>
39
                #end
154
                #end
40
            <tr>
155
            <tr>
41
        </table>
156
        </table>
42
        <table class="table table-striped table-advance table-hover">
157
        <table class="table table-striped table-advance table-hover">
43
            <tbody>
158
            <tbody>
44
            <tr>
159
            <tr>
45
                <th>Model ID</th>
160
                <th>Model ID</th>
46
                <th>Model Name</th>
161
                <th>Model Name</th>
-
 
162
                <th>Start Date</th>
-
 
163
                <th>End Date</th>
-
 
164
                <th>Updated By</th>
-
 
165
                <th>Updated On</th>
47
                #if($isAdmin && $fullAccess)
166
                #if($isAdmin && $fullAccess)
48
                    <th>Action</th>
167
                    <th>Action</th>
49
                #end
168
                #end
50
            </tr>
169
            </tr>
-
 
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
51
                #if($scheme.getCatalogStringMap().size()>0)
196
                #elseif($scheme.getCatalogStringMap().size()>0)
52
                    #foreach( $catalogIdDescriptionEntry in $scheme.getCatalogStringMap().entrySet())
197
                    #foreach( $catalogIdDescriptionEntry in $scheme.getCatalogStringMap().entrySet())
53
                    <tr data-catalogid="$catalogIdDescriptionEntry.getKey()">
198
                    <tr data-catalogid="$catalogIdDescriptionEntry.getKey()">
54
                        <td>$catalogIdDescriptionEntry.getKey()</td>
199
                        <td>$catalogIdDescriptionEntry.getKey()</td>
55
                        <td>$catalogIdDescriptionEntry.getValue()</td>
200
                        <td>$catalogIdDescriptionEntry.getValue()</td>
-
 
201
                        <td colspan="4">-</td>
56
                        #if($isAdmin && $fullAccess)
202
                        #if($isAdmin && $fullAccess)
57
                        <td>
203
                        <td>
58
                            <button class="btn btn-primary delete-schemes" data-schemeid="$scheme.getId()"
204
                            <button class="btn btn-primary delete-schemes" data-schemeid="$scheme.getId()"
59
                                    data-catalogid="$catalogIdDescriptionEntry.getKey()">Delete
205
                                    data-catalogid="$catalogIdDescriptionEntry.getKey()">Delete
60
                            </button>
206
                            </button>
Line 112... Line 258...
112
                    <br><br>
258
                    <br><br>
113
                #end
259
                #end
114
            #end
260
            #end
115
        #end
261
        #end
116
    </div>
262
    </div>
117
    <div id="newItemToSchemeModal" class="modal" role="dialog">
263
    <div id="newItemToSchemeModal" class="modal fade" role="dialog" tabindex="-1">
118
        <div class="modal-dialog">
264
        <div class="modal-dialog modal-lg">
119
 
-
 
120
            <!-- Modal content-->
-
 
121
            <div class="modal-content">
265
            <div class="modal-content">
122
                <div class="modal-header">
266
                <div class="modal-header">
123
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
267
                    <button type="button" class="close" data-dismiss="modal">&times;</button>
124
                    <h4 class="modal-title"><b>Add Item To Scheme</b></h4>
268
                    <h4 class="modal-title"><b>Add Item To Scheme (ID: $scheme.getId())</b></h4>
125
                </div>
269
                </div>
126
                <div class="modal-body">
270
                <div class="modal-body">
127
                    <form id="addSchemeForm">
271
                    <form id="addSchemeForm">
-
 
272
                        <input type="hidden" value="$scheme.getId()" id="schemeids">
128
                        <div class="form-group row">
273
                        <div class="row">
129
                            <div class="col-lg-4" style="display: none;">
274
                            <div class="col-lg-4">
130
                                <label for="schemeId">SchemeId</label>
275
                                <div class="form-group">
-
 
276
                                    <label><b>Category</b> <span style="color:red">*</span></label>
131
                                <input type="number" class="form-control" value="$scheme.getId()" id="schemeids"
277
                                    <select class="form-control input-sm" id="modal-category-list">
-
 
278
                                        #foreach($category in $categories)
-
 
279
                                            <option value="$category.getId()">$category.getLabel()</option>
132
                                       readonly>
280
                                        #end
-
 
281
                                    </select>
-
 
282
                                </div>
-
 
283
                            </div>
-
 
284
                            <div class="col-lg-4">
-
 
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>
133
                            </div>
289
                            </div>
134
                            <div class="col-lg-4">
290
                            <div class="col-lg-4">
-
 
291
                                <div class="form-group">
-
 
292
                                    <label><b>Models</b> <span style="color:red">*</span></label>
135
                                <label for="ItemId"><b>ItemId</b></label>
293
                                    <div id="modal-models-list">
-
 
294
                                        <select class="form-control modalCatalogItems" multiple="multiple"></select>
-
 
295
                                    </div>
-
 
296
                                </div>
-
 
297
                            </div>
-
 
298
                        </div>
-
 
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>
136
                                <input type="text" class="form-control" id="catalogids" placeholder="Item Id"/>
309
                                    <input type="text" class="form-control" id="addItemEndDate" name="addItemEndDate" placeholder="dd/mm/yyyy"/>
-
 
310
                                </div>
137
                            </div>
311
                            </div>
138
                        </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>
139
                    </form>
317
                    </form>
140
                </div>
318
                </div>
141
                <div class="modal-footer">
319
                <div class="modal-footer">
142
                    <button type="button" class="btn btn-primary add-item">Add-Item</button>
-
 
143
                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
320
                    <button type="button" class="btn btn-default" data-dismiss="modal">Cancel</button>
-
 
321
                    <button type="button" class="btn btn-primary add-item">Add Item</button>
144
                </div>
322
                </div>
145
            </div>
323
            </div>
146
 
-
 
147
        </div>
324
        </div>
148
    </div>
325
    </div>
149
</div>
326
</div>